%!PS-Adobe-2.0
%%Creator: dvips 5.47 Copyright 1986-91 Radical Eye Software
%%Title: hlfsd.dvi
%%Pages: 15 1
%%BoundingBox: 0 0 612 792
%%EndComments
%%BeginProcSet: /usr/local/lib/tex/ps/psfig.pro
/TeXscale { 65536 div } def
/DocumentInitState [ matrix currentmatrix currentlinewidth currentlinecap
currentlinejoin currentdash currentgray currentmiterlimit ] cvx def
/startTexFig {
/SavedState save def
userdict maxlength dict begin
currentpoint transform
DocumentInitState setmiterlimit setgray setdash setlinejoin setlinecap
setlinewidth setmatrix
itransform moveto
/ury exch TeXscale def
/urx exch TeXscale def
/lly exch TeXscale def
/llx exch TeXscale def
/y exch TeXscale def
/x exch TeXscale def
currentpoint /cy exch def /cx exch def
/sx x urx llx sub div def % scaling for x
/sy y ury lly sub div def % scaling for y
sx sy scale % scale by (sx,sy)
cx sx div llx sub
cy sy div ury sub translate
/DefFigCTM matrix currentmatrix def
/initmatrix {
DefFigCTM setmatrix
} def
/defaultmatrix {
DefFigCTM exch copy
} def
/initgraphics {
DocumentInitState setmiterlimit setgray setdash
setlinejoin setlinecap setlinewidth setmatrix
DefFigCTM setmatrix
} def
/showpage {
initgraphics
} def
/erasepage {
initgraphics
} def
/copypage {} def
} def
/clipFig {
currentpoint 6 2 roll
newpath 4 copy
4 2 roll moveto
6 -1 roll exch lineto
exch lineto
exch lineto
closepath clip
newpath
moveto
} def
/doclip { llx lly urx ury clipFig } def
/endTexFig {
end SavedState restore
} def
%%EndProcSet
%%BeginProcSet: tex.pro
/TeXDict 200 dict def TeXDict begin /N /def load def /B{bind def}N /S /exch
load def /X{S N}B /TR /translate load N /isls false N /vsize 10 N /@rigin{
isls{[0 1 -1 0 0 0]concat}if 72 Resolution div 72 VResolution div neg scale
Resolution VResolution vsize neg mul TR matrix currentmatrix dup dup 4 get
round 4 exch put dup dup 5 get round 5 exch put setmatrix}N /@letter{/vsize 10
N}B /@landscape{/isls true N /vsize -1 N}B /@a4{/vsize 10.6929133858 N}B /@a3{
/vsize 15.5531 N}B /@ledger{/vsize 16 N}B /@legal{/vsize 13 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 add]{ch-image}
imagemask restore}B /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}N /eop{clear SI restore
showpage userdict /eop-hook known{eop-hook}if}N /@start{userdict /start-hook
known{start-hook}if /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}N /p /show load 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 statusdict begin /product where{pop product dup length 7 ge{0
7 getinterval(Display)eq}{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 /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{clear SS restore}B end
%%EndProcSet
%%BeginProcSet: special.pro
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 false N /BBcalc false N
/p 3 def}B /@scaleunit 100 N /@hscale{@scaleunit div /hsc X}B /@vscale{
@scaleunit div /vsc X}B /@hsize{/hs X /CLIP true N}B /@vsize{/vs X /CLIP true
N}B /@hoffset{/ho X}B /@voffset{/vo X}B /@angle{/ang X}B /@rwi{10 div /rwi X}
B /@llx{/llx X}B /@lly{/lly X}B /@urx{/urx X}B /@ury{/ury X /BBcalc true N}B
/magscale true def end /@MacSetUp{userdict /md known{userdict /md get type
/dicttype eq{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}N /psfts{S 65536 div N}N /startTexFig{/psf$SavedState save
N userdict maxlength dict begin /magscale false 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}N /@setspecial{CLIP{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 BBcalc{rwi urx llx sub div dup scale llx neg lly neg
TR}if /showpage{}N /erasepage{}N /copypage{}N newpath}N /@endspecial{grestore
clear SpecialSave restore end}N /@defspecial{SDict begin}N /@fedspecial{end}B
/li{lineto}B /rl{rlineto}B /rc{rcurveto}B /np{/SaveX currentpoint /SaveY X N 1
setlinecap newpath}N /st{stroke SaveX SaveY moveto}N /fil{fill SaveX SaveY
moveto}N /ellipse{/endangle X /startangle X /yrad X /xrad X /savematrix matrix
currentmatrix N TR xrad yrad scale 0 0 1 startangle endangle arc savematrix
setmatrix}N end
%%EndProcSet
TeXDict begin 1000 300 300 @start /Fa 2 117 df<3E0006000C000C000C000C00180019
E01E30183038303030303030306060606460C460C4C0C8C0700E147E9313>104
D<02000600060006000C00FF800C000C001800180018001800300031003100320032001C000912
7F910D>116 D E /Fb 5 116 df<001FC0001FC0001FC00001C00001C00001C00001C00001C000
01C001F1C007FDC00FFFC01E0FC03C07C07803C07001C0E001C0E001C0E001C0E001C0E001C0E0
01C0E001C07003C07003C03807C03E0FC01FFFFC07FDFC01F1FC161E7E9D1A>100
D<0007E0001FF0003FF800787800F03000E00000E00000E00000E0007FFFF0FFFFF0FFFFF000E0
0000E00000E00000E00000E00000E00000E00000E00000E00000E00000E00000E00000E00000E0
0000E0003FFF807FFFC03FFF80151E7F9D1A>102 D<FE0000FE0000FE00000E00000E00000E00
000E00000E00000E00000E3E000EFF800FFFC00FC1C00F80E00F00E00E00E00E00E00E00E00E00
E00E00E00E00E00E00E00E00E00E00E00E00E00E00E00E00E0FFE3FEFFE7FEFFE3FE171E7F9D1A
>104 D<FFE000FFE000FFE00000E00000E00000E00000E00000E00000E00000E00000E00000E0
0000E00000E00000E00000E00000E00000E00000E00000E00000E00000E00000E00000E00000E0
0000E00000E000FFFFE0FFFFE0FFFFE0131E7D9D1A>108 D<07FB801FFF807FFF80780780E003
80E00380E003807800007FC0003FFC0007FE00003F800007806001C0E001C0E001C0F003C0FC07
80FFFF00EFFE00E3F80012157C941A>115 D E /Fc 13 118 df<000180000180000380000380
000780000780000B800013800013800023C00021C00041C000C1C00081C00101C001FFC00201C0
0201C00401C00801C00801C01801C0FE0FF815177E961A>65 D<03FFFE00E00E00E00400E00400
E00401C00401C00401C10001C10003820003820003FE000386000704000704080704080700100E
00100E00300E00200E00601C01C0FFFFC017177E9618>69 D<03F0003F8000F000780000B80078
0000B800B80000B80138000138017000013802700001380270000138047000023808E000021C08
E000021C10E000021C10E000041C21C000041C41C000041C41C000041C81C000081D038000081D
038000080E038000080E038000180C070000FE083FE00021177E9620>77
D<03F00FE000F0030000F0020000B8020000B80200011C0400011C0400011C0400010E0400020E
0800020E080002070800020708000403900004039000040390000401D0000801E0000800E00008
00E0000800E00018004000FE0040001B177E961A>I<03FFE000E03800E01C00E01C00E01C01C0
1C01C01C01C01C01C0380380700381C003FF000381800700C00700E00700E00700E00E01C00E01
C00E01C20E01C21C00C4FF807817177E961A>82 D<007C400182800301800601800601800C0100
0C01000C00000E00000FC00007F80003FC00007C00000E00000E00000600200600400C00400C00
600800601000D8600087C00012177D9614>I<7FC1FC1C00601C00401C00401C00403800803800
80380080380080700100700100700100700100E00200E00200E00200E00200E00400E00800E008
006030003040001F8000161779961A>85 D<007C00180018001800180030003000300030076008
E018E0306030C060C060C060C0C180C188C1884388659038E00E177C9612>100
D<030706000000000000384C4C4C8C18181830326262243808177D960B>105
D<078018C0304060606060C060C060C06080C080C08180C10046003C000B0E7B8D12>111
D<38F04518463846308C000C000C000C001800180018001800300030000D0E7D8D0F>114
D<07800C4018E018E038001E001F8007C000C060C0E0C0C180C3003E000B0E7D8D0F>I<1C0826
184618461886300C300C300C30186018621862186208E407380F0E7D8D13>117
D E /Fd 25 127 df<60F0F0600404798312>46 D<0018003800380070007000E000E001C001C0
01C003800380070007000E000E001C001C001C003800380070007000E000E000C0000D1A7E9612
>I<07C00FE01C703838701C701CE00EE00EE00EE00EE00EE00EE00EE01E701C701C38381C700F
E007C00F147F9312>I<FFFEFFFE7FFE0000000000007FFEFFFEFFFE0F097F8E12>61
D<3F807FC070E0207000700FF03FF07870E070E070E07070F03FFE1F3E0F0E7E8D12>97
D<F800F80038003800380038003BE03FF03C38381C380C380E380E380E380E380C381C3C383FF0
1BC00F147F9312>I<07F01FF8383870106000E000E000E000E0006000703838381FF007E00D0E
7E8D12>I<00F800F8003800380038003807B81FF8387870386038E038E038E038E03860387078
38781FFE0FBE0F147F9312>I<07801FE0387070706038E038FFF8FFF8E0006000703838381FF0
07C00D0E7E8D12>I<007E00FF01C70382038003807FFEFFFE0380038003800380038003800380
0380038003803FF83FF81014809312>I<F800F800380038003800380039E03FF03E383C383838
3838383838383838383838383838FE3EFE3E0F147F9312>104 D<06000F000F00060000000000
0000FF00FF000700070007000700070007000700070007000700FFF0FFF00C157D9412>I<F800
F80038003800380038003BFC3BFC38F039E03BC03F803F803FC03DE038E038703838FC7EFC7E0F
147F9312>107 D<FF00FF00070007000700070007000700070007000700070007000700070007
0007000700FFF8FFF80D147E9312>I<F71C00FFBE0079E70079E70071C70071C70071C70071C7
0071C70071C70071C70071C700F9E780F8E380110E808D12>I<F9E0FFF03E383C383838383838
3838383838383838383838FE3EFE3E0F0E7F8D12>I<0F803FE038E07070E038E038E038E038E0
38F078707038E03FE00F800D0E7E8D12>I<FBE0FFF03C38381C380C380E380E380E380E380C38
1C3C383FF03BC038003800380038003800FE00FE000F157F8D12>I<FCF8FDFC1F1C1E081E001C
001C001C001C001C001C001C00FFC0FFC00E0E7E8D12>114 D<1FF03FF06070C070E0007F003F
E00FF000786018E018F030FFE0DFC00D0E7E8D12>I<06000E000E000E007FF8FFF80E000E000E
000E000E000E000E000E380E380E3807F003C00D127F9112>I<F8F8F8F8383838383838383838
38383838383838383838781FFE0FBE0F0E7F8D12>I<FC7EFC7E38383C781C701C701C700EE00E
E00EE006C007C007C003800F0E7F8D12>I<3FFC7FFC7038707000E001C0038007000E001C1C38
1C701CFFFCFFFC0E0E7F8D12>122 D<18403CE0E78043000B047D9312>126
D E /Fe 64 125 df<00FCF807839C0E079C1C07081C07001C07001C07001C07001C0700FFFFE0
1C07001C07001C07001C07001C07001C07001C07001C07001C07001C07001C07001C0700FF1FE0
1617809615>11 D<00FC000782000E07001C07001C02001C00001C00001C00001C0000FFFF001C
07001C07001C07001C07001C07001C07001C07001C07001C07001C07001C07001C0700FF1FE013
17809614>I<00FC7E000703C1000E0783801C0703801C0701001C0700001C0700001C0700001C
070000FFFFFF801C0703801C0703801C0703801C0703801C0703801C0703801C0703801C070380
1C0703801C0703801C0703801C070380FF1FCFF01C1780961D>14 D<60F0F07010102020404004
0A7D960A>39 D<0102040C1818303070606060E0E0E0E0E0E0E0E0E0E060606070303018180C04
020108227D980E>I<8040203018180C0C0E060606070707070707070707070606060E0C0C1818
3020408008227E980E>I<60F0F070101020204040040A7D830A>44 D<FF80FF80090280870C>I<
60F0F06004047D830A>I<0008001800300030003000600060006000C000C000C0018001800180
030003000600060006000C000C000C00180018001800300030003000600060006000C000C0000D
217E9812>I<03000700FF00070007000700070007000700070007000700070007000700070007
000700070007007FF00C157E9412>49 D<0F8030E040708030C038E03840380038007000700060
00C00180030006000C08080810183FF07FF0FFF00D157E9412>I<0FE030306018701C701C001C
00180038006007E000300018000C000E000EE00EE00EC00C401830300FE00F157F9412>I<0030
0030007000F001F001700270047008701870107020704070C070FFFE0070007000700070007003
FE0F157F9412>I<01F00608080C181C301C70006000E000E3E0EC30F018F00CE00EE00EE00E60
0E600E300C3018183007C00F157F9412>54 D<40007FFE7FFC7FF8C00880108020004000800080
0100010003000200060006000E000E000E000E000E0004000F167E9512>I<07E018302018600C
600C700C78183E101F600FC00FF018F8607C601EC00EC006C006C004600C38300FE00F157F9412
>I<07C0183030186018E00CE00CE00EE00EE00E601E301E186E0F8E000E000C001C7018701860
3020C01F800F157F9412>I<60F0F06000000000000060F0F07010102020404004147D8D0A>59
D<001000003800003800003800005C00005C00005C00008E00008E00008E000107000107000307
8002038002038007FFC00401C00401C00800E00800E01800E03800F0FE03FE17177F961A>65
D<FFFE001C03801C00E01C00601C00701C00701C00701C00701C00E01C01C01FFF801FFFC01C00
E01C00701C00301C00381C00381C00381C00381C00701C00E01C01C0FFFF0015177F9619>I<00
FC100383300E00B01C0070380030300030700010600010E00010E00000E00000E00000E00000E0
0000E000106000107000103000203800201C00400E008003830000FC0014177E9619>I<FFFF00
1C01C01C00E01C00301C00381C00181C001C1C000C1C000E1C000E1C000E1C000E1C000E1C000E
1C000E1C000C1C001C1C001C1C00381C00301C00601C01C0FFFF0017177F961B>I<FFFFE01C00
E01C00601C00201C00101C00101C00101C04001C04001C04001C0C001FFC001C0C001C04001C04
001C04001C00001C00001C00001C00001C00001C0000FFC00014177F9617>70
D<FF83FE1C00701C00701C00701C00701C00701C00701C00701C00701C00701C00701FFFF01C00
701C00701C00701C00701C00701C00701C00701C00701C00701C0070FF83FE17177F961A>72
D<FFE00E000E000E000E000E000E000E000E000E000E000E000E000E000E000E000E000E000E00
0E000E000E00FFE00B177F960D>I<FFC0001C00001C00001C00001C00001C00001C00001C0000
1C00001C00001C00001C00001C00001C00001C00201C00201C00201C00601C00601C00401C00C0
1C03C0FFFFC013177F9616>76 D<FE0003F81E0003C0170005C0170005C0170005C0138009C013
8009C011C011C011C011C011C011C010E021C010E021C0107041C0107041C0107041C0103881C0
103881C0101D01C0101D01C0100E01C0100E01C0380E01C0FE040FF81D177F9620>I<FC00FE1E
00381F001017001013801011C01011C01010E010107010103810103810101C10100E10100F1010
07101003901001D01001D01000F0100070100030380030FE001017177F961A>I<00FC00030300
0E01C01C00E0380070300030700038600018E0001CE0001CE0001CE0001CE0001CE0001CE0001C
7000387000383000303800701C00E00E01C003030000FC0016177E961B>I<FFFE001C03801C00
C01C00601C00701C00701C00701C00701C00601C00C01C03801FFE001C00001C00001C00001C00
001C00001C00001C00001C00001C00001C0000FF800014177F9618>I<FFFC001C03801C00C01C
00E01C00701C00701C00701C00701C00E01C00C01C03801FFE001C07801C01C01C00E01C00E01C
00E01C00E01C00E01C00E11C00E11C0072FF803C18177F961A>82 D<0FC4302C601C400CC004C0
04C004E00070007F003FE00FF801FC001C000E0006800680068006C004E008D81087E00F177E96
14>I<7FFFF8603818403808403808803804803804803804003800003800003800003800003800
00380000380000380000380000380000380000380000380000380000380007FFC016177F9619>
I<FF80FE1C00381C00101C00101C00101C00101C00101C00101C00101C00101C00101C00101C00
101C00101C00101C00101C00101C00100E0020060020030040018180007E0017177F961A>I<FF
80FE3C00381C00101C00100E00200E002007004007004007004003808003808003C18001C10001
C10000E20000E20000F60000740000740000380000380000380000100017177F961A>I<FF83FC
1F01E00E008007008007810003820001C20001E40000E800007800007800003800007C00005E00
008E000187000107800203800601C00401E00C00E01C00F0FF03FE17177F961A>88
D<FCFCC0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0FCFC06217D980A
>91 D<FCFC0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0CFCFC062180
980A>93 D<1FC0386038301038003803F81E3830387038E039E039E07970FF1F1E100E7F8D12>
97 D<FC00001C00001C00001C00001C00001C00001C00001C00001C00001CF8001F06001C0300
1C03801C01801C01C01C01C01C01C01C01C01C01801C03801C03001B0E0010F8001217809614>
I<07F01838303870106000E000E000E000E000600070083008183007C00D0E7F8D10>I<007E00
000E00000E00000E00000E00000E00000E00000E00000E0007CE001C3E00300E00700E00600E00
E00E00E00E00E00E00E00E00600E00700E00301E00182E0007CFC012177F9614>I<0FC0186030
307038E018FFF8E000E000E000600070083010183007C00D0E7F8D10>I<03E006700E701C201C
001C001C001C001C00FF801C001C001C001C001C001C001C001C001C001C001C001C00FF800C17
80960B>I<0F9E18E33060707070707070306018C02F80200060003FE03FF83FFC600EC006C006
C006600C38380FE010157F8D12>I<FC00001C00001C00001C00001C00001C00001C00001C0000
1C00001C7C001D8E001E07001C07001C07001C07001C07001C07001C07001C07001C07001C0700
1C0700FF9FE01317809614>I<183C3C1800000000007C1C1C1C1C1C1C1C1C1C1C1C1CFF081780
960A>I<FC00001C00001C00001C00001C00001C00001C00001C00001C00001C3F801C1C001C18
001C20001C40001CC0001FE0001CF0001C70001C78001C3C001C1E001C1E00FF3FC01217809613
>107 D<FC001C001C001C001C001C001C001C001C001C001C001C001C001C001C001C001C001C
001C001C001C001C00FF80091780960A>I<FC7C1F001D8E63801E0781C01C0701C01C0701C01C
0701C01C0701C01C0701C01C0701C01C0701C01C0701C01C0701C01C0701C0FF9FE7F81D0E808D
1E>I<FC7C001D8E001E07001C07001C07001C07001C07001C07001C07001C07001C07001C0700
1C0700FF9FE0130E808D14>I<07C018303018600C600CE00EE00EE00EE00EE00E701C30181830
07C00F0E7F8D12>I<FCF8001F0E001C03001C03801C01801C01C01C01C01C01C01C01C01C0180
1C03801C07001F0E001CF8001C00001C00001C00001C00001C0000FF80001214808D14>I<07C2
001C2600381E00700E00600E00E00E00E00E00E00E00E00E00600E00700E00301E001C2E0007CE
00000E00000E00000E00000E00000E00007FC012147F8D13>I<FCF01D381E381C101C001C001C
001C001C001C001C001C001C00FF800D0E808D0E>I<1F4060C0C040C040E000FF007F801FC001
E080608060C060E0C09F000B0E7F8D0E>I<080008000800180018003800FF8038003800380038
0038003800380038403840384038401C800F000A147F930E>I<FC3F001C07001C07001C07001C
07001C07001C07001C07001C07001C07001C07001C0F000E170003E7E0130E808D14>I<FE1F3C
0E3C0C1C081C080E100E100720072003C003C003C001800180100E7F8D13>I<FCFE7C38383838
38101C3C201C3C201C4C200E4E400E4E400E8640078780078780070380030300030300160E7F8D
19>I<FE3F3C181C100E20074007C0038001C002E004F008701838383CFC7F100E7F8D13>I<FE1F
3C0E3C0C1C081C080E100E100720072003C003C003C00180018001000100E200E200A400780010
147F8D13>I<FFFFFFFFC02201808823>124 D E /Ff 10 58 df<1F00318060C04040C060C060
C060C060C060C060C060C060404060C031801F000B107F8F0F>48 D<0C003C00CC000C000C000C
000C000C000C000C000C000C000C000C000C00FF8009107E8F0F>I<1F00618040C08060C06000
60006000C00180030006000C00102020207FC0FFC00B107F8F0F>I<1F00218060C060C000C000
8001800F00008000400060C060C060804060801F000B107F8F0F>I<0300030007000F000B0013
00330023004300C300FFE003000300030003001FE00B107F8F0F>I<20803F002C002000200020
002F0030802040006000600060C06080C061801F000B107F8F0F>I<0780184030C060C06000C0
00CF00F080E040C060C060C060406060C030801F000B107F8F0F>I<40007FE07FC08080808001
000200040004000C0008000800180018001800180018000B117E900F>I<1F00318060C060C060
C071803F000F00338061C0C060C060C060404060801F000B107F8F0F>I<1F00318060C0C040C0
60C060C06040E021E01E600060004060C0608043003E000B107F8F0F>I
E /Fg 10 58 df<0F0030C0606060604020C030C030C030C030C030C030C030C030C030402060
60606030C00F000C137E9211>48 D<0C001C00EC000C000C000C000C000C000C000C000C000C00
0C000C000C000C000C000C00FFC00A137D9211>I<1F0060C06060F070F0306030007000700060
00C001C00180020004000810101020207FE0FFE00C137E9211>I<0FC030707038703870380038
003000E00FC0007000380018001C601CF01CF018E03860701FC00E137F9211>I<006000E000E0
0160026006600C600860106020606060C060FFFC0060006000600060006003FC0E137F9211>I<
60607FC07F8044004000400040004F0070C040E0006000700070E070E070E06040E021C01F000C
137E9211>I<07C00C201070207060006000C000CF00D0C0E060C020C030C030C0304030602020
6010C00F000C137E9211>I<40007FFC7FF8401080108020004000800100010003000200060006
000E000E000E000E000E0004000E147E9311>I<0FC0107020186018601870183C303F600F800F
E031F06078C01CC00CC00CC00C601830300FC00E137F9211>I<0F00308060404060C020C030C0
30C0304030607030B00F30003000200060E040E08041003E000C137E9211>I
E /Fh 59 122 df<183C3C3C0404080810204080060C779C0D>39 D<1838783808081010204040
80050C7D830D>44 D<FFC0FFC0FFC00A037D890F>I<3078F06005047C830D>I<003C0000C60001
83000303000603000603800E03800C03801C03801C0300380700380700380700380700700E0070
0E00700E00700E00E01C00E01C00E01C00E03800E03800E03000C06000E0600060C0007180001E
0000111D7B9B15>48 D<00020006000C001C007C039C0038003800380038007000700070007000
E000E000E000E001C001C001C001C003800380038003800780FFF00F1C7C9B15>I<003C0000C3
000101800201800201C00441C00441C00841C00841C00841C01083801083801107000E0600000C
0000180000300000C0000100000600000800001001001002002002004006007E0C00C7F80083F8
0080E000121D7C9B15>I<0001800001C000038000038000038000030000070000070000060000
0E00000C00001C0000180000180000300000300000600000400000C600018E00010E00020E0006
1C000C1C00181C003F1C0040F800803F0000380000380000700000700000700000700000E00000
600012247E9B15>52 D<00C06000FFC001FF8001FE000100000100000200000200000200000200
00047800058C00060600040600080600000700000700000600000E00000E00700E00700C00E01C
0080180080380040300040600021C0001F0000131D7C9B15>I<09C04017E0801FE0803C610030
2700601A00400600400400800C0080080000180000100000300000600000600000600000C00000
C00001C0000180000380000380000300000700000700000700000E00000E00000C0000121D799B
15>55 D<001E000061000081800180800300C00300C006018006018006018007030007860003CC
0003F00001F000037800063C00081E00180E00300E00600600600600600600C00C00C00C00C018
0060100060200030C0000F0000121D7C9B15>I<003C0000C6000183000303000603000E03000C
03801C03801C03001C0300380700380700380700380F00380E00181E00181E000C6C00079C0000
1C00001800003800003000006000E0C000E0C0008180008600007C0000111D7B9B15>I<060F0F
06000000000000000000003078F06008127C910D>I<0000180000001800000038000000380000
007800000078000000B8000001B800000138000002380000023C0000041C0000041C0000081C00
00181C0000101C0000201C0000201C00007FFC0000401C0000801C0001801C0001001C0002001C
0002001C0004000E000C000E001C001E00FF00FFC01A1D7E9C1F>65 D<01FFFE00003C07800038
03C0003801C0003801C0003801C0007001C0007003C0007003C00070078000E0070000E00E0000
E03C0000FFF80001C01C0001C00E0001C00F0001C00F0003800F0003800F0003800F0003800F00
07001E0007001C0007003C00070078000E01E000FFFF80001A1C7D9B1D>I<0003F020001E0C60
003002E000E003C001C001C0038001C0070000C00E0000801E0000801C0000803C0000803C0000
00780000007800000078000000F0000000F0000000F0000000F0000000F0000400F0000400F000
0400F0000800700008007000100038002000180040000C0180000706000001F800001B1E7A9C1E
>I<01FFFE00003C0780003801C0003801C0003800E0003800E0007000F0007000700070007000
7000F000E000F000E000F000E000F000E000F001C001E001C001E001C001E001C001C0038003C0
03800380038007800380070007000E0007001C0007003800070070000E01C000FFFF00001C1C7D
9B1F>I<01FFFFE0003C00E0003800600038004000380040003800400070004000700040007020
400070200000E0400000E0400000E0C00000FFC00001C0800001C0800001C0800001C080000381
0100038001000380020003800200070004000700040007000C00070018000E007800FFFFF0001B
1C7D9B1C>I<01FFFFC0003C01C0003800C0003800800038008000380080007000800070008000
7020800070200000E0400000E0400000E0C00000FFC00001C0800001C0800001C0800001C08000
03810000038000000380000003800000070000000700000007000000070000000F000000FFF000
001A1C7D9B1B>I<0003F020001E0C60003002E000E003C001C001C0038001C0070000C00E0000
801E0000801C0000803C0000803C000000780000007800000078000000F0000000F0000000F001
FFC0F0001E00F0001C00F0001C00F0001C00F0001C00700038007000380038003800180078000C
0090000707100001F800001B1E7A9C20>I<01FFCFFE003C01E0003801C0003801C0003801C000
3801C00070038000700380007003800070038000E0070000E0070000E0070000FFFF0001C00E00
01C00E0001C00E0001C00E0003801C0003801C0003801C0003801C000700380007003800070038
00070038000F007800FFE7FF001F1C7D9B1F>I<01FFC0003C0000380000380000380000380000
700000700000700000700000E00000E00000E00000E00001C00001C00001C00001C00003800003
80000380000380000700000700000700000700000F0000FFE000121C7E9B10>I<007FF0000780
000700000700000700000700000E00000E00000E00000E00001C00001C00001C00001C00003800
00380000380000380000700000700000700000700060E000E0E000C0C00081C000838000470000
3C0000141D7B9B16>I<01FFC0FF003C003C003800300038004000380080003801000070020000
700400007010000070200000E0400000E0C00000E1C00000E5C00001C8E00001D0E00001E0E000
01C07000038070000380700003803800038038000700380007001C0007001C0007001C000F001E
00FFE0FF80201C7D9B20>I<01FFE0003C00003800003800003800003800007000007000007000
00700000E00000E00000E00000E00001C00001C00001C00001C000038008038008038008038010
0700100700300700600700E00E03C0FFFFC0151C7D9B1A>I<01FE0007F8003E000780002E000F
00002E001700002E001700002E002700004E002E00004E004E00004E004E00004E008E00008E01
1C00008E011C00008E021C00008E021C0001070438000107043800010708380001071038000207
107000020720700002072070000207407000040740E000040780E000040700E0000C0700E0001C
0601E000FF861FFC00251C7D9B25>I<01FC03FE001C0070003C0060002E0040002E0040002E00
40004700800047008000470080004380800083810000838100008181000081C1000101C2000101
C2000100E2000100E2000200E4000200740002007400020074000400380004003800040038000C
0018001C001000FF8010001F1C7D9B1F>I<0007F000001C1C0000700E0000E0070001C0038003
800380070003800E0003C01E0003C01C0003C03C0003C03C0003C0780003C0780003C0780003C0
F0000780F0000780F0000780F0000F00F0000F00F0000E00F0001E00F0003C0070003800700070
007800E0003801C0001C0380000E0E000003F800001A1E7A9C20>I<01FFFC00003C0700003803
80003801C0003801C0003801C0007003C0007003C0007003C00070038000E0078000E0070000E0
0E0000E0380001FFE00001C0000001C0000001C000000380000003800000038000000380000007
0000000700000007000000070000000F000000FFE000001A1C7D9B1C>I<01FFF800003C0E0000
38070000380380003803800038038000700780007007800070078000700F0000E00E0000E01C00
00E0700000FFC00001C0C00001C0600001C0700001C07000038070000380700003807000038070
000700F0000700F0400700F0400700F0800F007880FFE0790000001E001A1D7D9B1E>82
D<000F8400304C00403C00801801001803001803001806001006001006000007000007000003E0
0003FC0001FF00007F800007C00001C00001C00000C00000C02000C02000C06001806001806003
00600200F00400CC180083E000161E7D9C17>I<1FFFFFC01C0701C0300E00C0200E0080600E00
80400E0080401C0080801C0080801C0080001C0000003800000038000000380000003800000070
000000700000007000000070000000E0000000E0000000E0000000E0000001C0000001C0000001
C0000001C0000003C000007FFE00001A1C799B1E>I<7FF0FF800F001C000E0018000E0010000E
0010000E0010001C0020001C0020001C0020001C00200038004000380040003800400038004000
70008000700080007000800070008000E0010000E0010000E0010000E0020000E0020000E00400
00E00400006008000030300000104000000F800000191D779B1F>I<FF83FF0FF03C007001C038
007001803800F001003800F0020038017002003801700400380270040038027008001C04700800
1C047010001C087010001C087020001C107020001C107040001C207040001C207080001C407180
001C407100001C807200001D807200001D007400001E007400001E007800001C007800001C0070
0000180070000018006000001000600000241D779B29>87 D<01FF81FE001E00F0001C0060001E
0080000E0180000E0100000F02000007040000070800000790000003A0000003C0000001C00000
01C0000001E0000002E0000004E0000008F0000010700000207000006038000040380000803C00
01001C0002001C0006001E001E001E00FF80FFC01F1C7E9B1F>I<00FFFF8000F0070001C00E00
01801E0001001C0001003800020070000200E0000201C0000001C0000003800000070000000E00
00001C0000001C0000003800000070000000E0080001C0100001C0100003801000070020000E00
20001C0060003C00C0003801C00070078000FFFF8000191C7D9B19>90 D<03CC063C0C3C181C38
38303870387038E070E070E070E070E0E2C0E2C0E261E462643C380F127B9115>97
D<3F00070007000E000E000E000E001C001C001C001C0039C03E60383038307038703870387038
E070E070E070E060E0E0C0C0C1C0618063003C000D1D7B9C13>I<01F007080C08181C38383000
70007000E000E000E000E000E000E008E010602030C01F000E127B9113>I<001F800003800003
80000700000700000700000700000E00000E00000E00000E0003DC00063C000C3C00181C003838
00303800703800703800E07000E07000E07000E07000E0E200C0E200C0E20061E4006264003C38
00111D7B9C15>I<01E007100C1018083810701070607F80E000E000E000E000E000E008601060
2030C01F000D127B9113>I<0003C0000670000C70001C60001C00001C00003800003800003800
00380000380003FF8000700000700000700000700000700000E00000E00000E00000E00000E000
01C00001C00001C00001C00001C000038000038000038000030000030000070000C60000E60000
CC00007800001425819C0D>I<00F3018F030F06070E0E0C0E1C0E1C0E381C381C381C381C3838
30383038187818F00F700070007000E000E0C0C0E1C0C3007E00101A7D9113>I<0FC00001C000
01C0000380000380000380000380000700000700000700000700000E78000E8C000F0E000E0E00
1C0E001C0E001C0E001C0E00381C00381C00381C00383800703880703880707080707100E03200
601C00111D7D9C15>I<01800380010000000000000000000000000000001C002600470047008E
008E000E001C001C001C0038003800710071007100720072003C00091C7C9B0D>I<0FC00001C0
0001C0000380000380000380000380000700000700000700000700000E0F000E11000E23800E43
801C83001C80001D00001E00003F800039C00038E00038E00070E20070E20070E20070E400E064
00603800111D7D9C13>107 D<1F800380038007000700070007000E000E000E000E001C001C00
1C001C0038003800380038007000700070007000E400E400E400E40068003800091D7C9C0B>I<
3C1E0780266318C04683A0E04703C0E08E0380E08E0380E00E0380E00E0380E01C0701C01C0701
C01C0701C01C070380380E0388380E0388380E0708380E0710701C0320300C01C01D127C9122>
I<3C3C002646004687004707008E07008E07000E07000E07001C0E001C0E001C0E001C1C00381C
40381C40383840383880701900300E0012127C9117>I<01E007180C0C180C380C300E700E700E
E01CE01CE01CE018E038E030E06060C031801E000F127B9115>I<07870004D98008E0C008E0C0
11C0E011C0E001C0E001C0E00381C00381C00381C00381800703800703000707000706000E8C00
0E70000E00000E00001C00001C00001C00001C00003C0000FF8000131A7F9115>I<3C3C26C246
8747078E068E000E000E001C001C001C001C0038003800380038007000300010127C9112>114
D<01F006080C080C1C18181C001F001FC00FF007F0007800386030E030C030806060C01F000E12
7D9111>I<00C001C001C001C00380038003800380FFE00700070007000E000E000E000E001C00
1C001C001C00384038403840388019000E000B1A7D990E>I<1E0300270700470700470700870E
00870E000E0E000E0E001C1C001C1C001C1C001C1C003838803838801838801839001C5900078E
0011127C9116>I<1E06270E470E4706870287020E020E021C041C041C041C0818083808181018
200C4007800F127C9113>I<1E01832703874703874703838707018707010E07010E07011C0E02
1C0E021C0E021C0E04180C04181C04181C081C1C100C263007C3C018127C911C>I<070E001991
0010E38020E38041C30041C00001C00001C000038000038000038000038000070200670200E704
00CB04008B080070F00011127D9113>I<1E03270747074707870E870E0E0E0E0E1C1C1C1C1C1C
1C1C38383838183818381C7007F00070007000E0E0C0E1C0818047003C00101A7C9114>I
E /Fi 5 104 df<03C00FF01FF83FFC7FFE7FFEFFFFFFFFFFFFFFFF7FFE7FFE3FFC1FF80FF003
C010107E9115>15 D<0000030000000003000000000180000000018000000000C0000000006000
7FFFFFF000FFFFFFF8000000000E00000000070000000001E0000000007800000001E000000003
8000000006000000001C00FFFFFFF8007FFFFFF0000000006000000000C0000000018000000001
80000000030000000003000025187E952A>41 D<0000600000600000C00000C000018000018000
0180000300000300000600000600000C00000C0000180000180000180000300000300000600000
600000C00000C0000180000180000300000300000300000600000600000C00000C000018000018
0000300000300000300000600000600000C0000040000013287A9D00>54
D<003C00E001C00180038003800380038003800380038003800380038003800380038003000700
1C00F0001C00070003000380038003800380038003800380038003800380038003800380018001
C000E0003C0E297D9E15>102 D<F0001C00070003000380038003800380038003800380038003
800380038003800380018001C000E0003C00E001C0018003800380038003800380038003800380
03800380038003800380030007001C00F0000E297D9E15>I E /Fj 57 123
df<3803807C07C0FE0FE0FF0FF0FF0FF07F07F03B03B00300300300300700700600600600600C
00C01C01C018018070070020020014117EA21D>34 D<387CFEFFFF7F3B03030706060C1C187020
08117C8610>44 D<FFFCFFFCFFFCFFFC0E047F8C13>I<387CFEFEFE7C3807077C8610>I<00FE00
07FFC00F83E01F01F03E00F83E00F87C007C7C007C7C007CFC007CFC007EFC007EFC007EFC007E
FC007EFC007EFC007EFC007EFC007EFC007EFC007EFC007EFC007E7C007C7C007C7C007C3E00F8
3E00F81F01F00F83E007FFC000FE0017207E9F1C>48 D<00180000780001F800FFF800FFF80001
F80001F80001F80001F80001F80001F80001F80001F80001F80001F80001F80001F80001F80001
F80001F80001F80001F80001F80001F80001F80001F80001F80001F80001F80001F8007FFFE07F
FFE013207C9F1C>I<03FC000FFF003C1FC07007E07C07F0FE03F0FE03F8FE03F8FE01F87C01F8
3803F80003F80003F00003F00007E00007C0000F80001F00003E0000380000700000E01801C018
0380180700180E00380FFFF01FFFF03FFFF07FFFF0FFFFF0FFFFF015207D9F1C>I<00FE0007FF
C00F07E01E03F03F03F03F81F83F81F83F81F81F03F81F03F00003F00003E00007C0001F8001FE
0001FF000007C00001F00001F80000FC0000FC3C00FE7E00FEFF00FEFF00FEFF00FEFF00FC7E01
FC7801F81E07F00FFFC001FE0017207E9F1C>I<0000E00001E00003E00003E00007E0000FE000
1FE0001FE00037E00077E000E7E001C7E00187E00307E00707E00E07E00C07E01807E03807E070
07E0E007E0FFFFFEFFFFFE0007E00007E00007E00007E00007E00007E00007E000FFFE00FFFE17
207E9F1C>I<1000201E01E01FFFC01FFF801FFF001FFE001FF8001BC000180000180000180000
18000019FC001FFF001E0FC01807E01803E00003F00003F00003F80003F83803F87C03F8FE03F8
FE03F8FC03F0FC03F07007E03007C01C1F800FFF0003F80015207D9F1C>I<001F8000FFE003F0
7007C0F00F01F81F01F83E01F83E01F87E00F07C00007C0000FC0800FC7FC0FCFFE0FD80F0FF00
F8FE007CFE007CFC007EFC007EFC007EFC007E7C007E7C007E7C007E3C007C3E007C1E00F80F00
F00783E003FFC000FF0017207E9F1C>I<6000007800007FFFFE7FFFFE7FFFFC7FFFF87FFFF87F
FFF0E00060E000C0C00180C00300C00300000600000C00001C0000180000380000780000780000
F00000F00000F00001F00001F00001F00003F00003F00003F00003F00003F00003F00003F00001
E00017227DA11C>I<00FE0003FFC00703E00E00F01C00F01C00783C00783E00783F00783F8078
3FE0F01FF9E01FFFC00FFF8007FFC003FFE007FFF01E7FF83C1FFC7807FC7801FEF000FEF0003E
F0001EF0001EF0001CF8001C7800383C00381F01F00FFFC001FF0017207E9F1C>I<01FE0007FF
800F83E01E01F03E00F07C00F87C0078FC007CFC007CFC007CFC007EFC007EFC007EFC007E7C00
FE7C00FE3E01FE1E037E0FFE7E07FC7E00207E00007C00007C1E007C3F00F83F00F83F00F03F01
E01E03C01C0F800FFE0003F80017207E9F1C>I<07FC001FFF00380F807007C0F807E0FC07E0FC
07E0FC07E07807E0000FC0001F80001F00003C0000780000700000E00000E00000C00000C00000
C00000C00000C00000C00000000000000000000000000000000001C00003E00007F00007F00007
F00003E00001C00013237DA21A>63 D<000070000000007000000000F800000000F800000000F8
00000001FC00000001FC00000003FE00000003FE00000003FE00000006FF000000067F0000000E
7F8000000C3F8000000C3F800000183FC00000181FC00000381FE00000300FE00000300FE00000
600FF000006007F00000E007F80000FFFFF80000FFFFF800018001FC00018001FC00038001FE00
030000FE00030000FE000600007F000600007F00FFE00FFFF8FFE00FFFF825227EA12A>65
D<FFFFFF8000FFFFFFE00007F001F80007F000FC0007F0007E0007F0007E0007F0007F0007F000
7F0007F0007F0007F0007F0007F0007F0007F0007E0007F000FE0007F000FC0007F003F80007FF
FFF00007FFFFF00007F001FC0007F0007E0007F0003F0007F0003F8007F0001F8007F0001FC007
F0001FC007F0001FC007F0001FC007F0001FC007F0001FC007F0003F8007F0003F8007F0007F00
07F001FE00FFFFFFF800FFFFFFC00022227EA128>I<0003FE0080001FFF818000FF01E38001F8
003F8003E0001F8007C0000F800F800007801F800007803F000003803F000003807F000001807E
000001807E00000180FE00000000FE00000000FE00000000FE00000000FE00000000FE00000000
FE00000000FE000000007E000000007E000001807F000001803F000001803F000003801F800003
000F8000030007C000060003F0000C0001F800380000FF00F000001FFFC0000003FE000021227D
A128>I<FFFFFF8000FFFFFFF00007F003FC0007F0007E0007F0003F0007F0001F8007F0000FC0
07F00007E007F00007E007F00007F007F00003F007F00003F007F00003F007F00003F807F00003
F807F00003F807F00003F807F00003F807F00003F807F00003F807F00003F807F00003F807F000
03F007F00003F007F00003F007F00007E007F00007E007F0000FC007F0001F8007F0003F0007F0
007E0007F003FC00FFFFFFF000FFFFFF800025227EA12B>I<FFFFFFFCFFFFFFFC07F000FC07F0
003C07F0001C07F0000C07F0000E07F0000E07F0000607F0180607F0180607F0180607F0180007
F0380007F0780007FFF80007FFF80007F0780007F0380007F0180007F0180007F0180307F01803
07F0000307F0000607F0000607F0000607F0000E07F0000E07F0001E07F0003E07F001FCFFFFFF
FCFFFFFFFC20227EA125>I<FFFFFFF8FFFFFFF807F001F807F0007807F0003807F0001807F000
1C07F0001C07F0000C07F0000C07F0180C07F0180C07F0180007F0180007F0380007F0780007FF
F80007FFF80007F0780007F0380007F0180007F0180007F0180007F0180007F0000007F0000007
F0000007F0000007F0000007F0000007F0000007F00000FFFFE000FFFFE0001E227EA123>I<FF
FF83FFFEFFFF83FFFE07F0001FC007F0001FC007F0001FC007F0001FC007F0001FC007F0001FC0
07F0001FC007F0001FC007F0001FC007F0001FC007F0001FC007F0001FC007F0001FC007FFFFFF
C007FFFFFFC007F0001FC007F0001FC007F0001FC007F0001FC007F0001FC007F0001FC007F000
1FC007F0001FC007F0001FC007F0001FC007F0001FC007F0001FC007F0001FC007F0001FC007F0
001FC0FFFF83FFFEFFFF83FFFE27227EA12C>72 D<FFFFE0FFFFE003F80003F80003F80003F800
03F80003F80003F80003F80003F80003F80003F80003F80003F80003F80003F80003F80003F800
03F80003F80003F80003F80003F80003F80003F80003F80003F80003F80003F80003F80003F800
FFFFE0FFFFE013227FA115>I<FFFFE000FFFFE00007F0000007F0000007F0000007F0000007F0
000007F0000007F0000007F0000007F0000007F0000007F0000007F0000007F0000007F0000007
F0000007F0000007F0000007F0000007F0000007F0001807F0001807F0001807F0001807F00038
07F0003807F0007007F0007007F000F007F001F007F007F0FFFFFFF0FFFFFFF01D227EA122>76
D<FFF000000FFFFFF800001FFF07F800001FE006FC000037E006FC000037E006FC000037E0067E
000067E0067E000067E0063F0000C7E0063F0000C7E0061F800187E0061F800187E0060FC00307
E0060FC00307E0060FC00307E00607E00607E00607E00607E00603F00C07E00603F00C07E00601
F81807E00601F81807E00601F81807E00600FC3007E00600FC3007E006007E6007E006007E6007
E006003FC007E006003FC007E006001F8007E006001F8007E006001F8007E006000F0007E0FFF0
0F00FFFFFFF00600FFFF30227EA135>I<0007FC0000003FFF800000FC07E00003F001F80007E0
00FC000FC0007E001F80003F001F80003F003F00001F803F00001F807F00001FC07E00000FC07E
00000FC0FE00000FE0FE00000FE0FE00000FE0FE00000FE0FE00000FE0FE00000FE0FE00000FE0
FE00000FE0FE00000FE07E00000FC07F00001FC07F00001FC03F00001F803F80003F801F80003F
000FC0007E0007E000FC0003F001F80000FC07E000003FFF80000007FC000023227DA12A>79
D<FFFFFF00FFFFFFE007F007F007F001FC07F000FC07F0007E07F0007E07F0007F07F0007F07F0
007F07F0007F07F0007F07F0007E07F0007E07F000FC07F001FC07F007F007FFFFE007FFFF0007
F0000007F0000007F0000007F0000007F0000007F0000007F0000007F0000007F0000007F00000
07F0000007F0000007F00000FFFF8000FFFF800020227EA126>I<FFFFFE0000FFFFFFC00007F0
07F00007F001F80007F000FC0007F0007E0007F0007F0007F0007F0007F0007F0007F0007F0007
F0007F0007F0007F0007F0007E0007F000FC0007F001F80007F007F00007FFFFC00007FFFF8000
07F00FE00007F007F00007F003F80007F001FC0007F001FC0007F001FC0007F001FC0007F001FC
0007F001FC0007F001FC0007F001FC0007F001FC0607F000FE0607F000FF0CFFFF803FF8FFFF80
0FF027227EA12A>82 D<01FC0407FF8C1F03FC3C007C7C003C78001C78001CF8000CF8000CFC00
0CFC0000FF0000FFE0007FFF007FFFC03FFFF01FFFF80FFFFC03FFFE003FFE0003FF00007F0000
3F00003FC0001FC0001FC0001FE0001EE0001EF0003CFC003CFF00F8C7FFE080FF8018227DA11F
>I<7FFFFFFF807FFFFFFF807E03F80F807803F807807003F803806003F80180E003F801C0E003
F801C0C003F800C0C003F800C0C003F800C0C003F800C00003F800000003F800000003F8000000
03F800000003F800000003F800000003F800000003F800000003F800000003F800000003F80000
0003F800000003F800000003F800000003F800000003F800000003F800000003F800000003F800
000003F8000003FFFFF80003FFFFF80022227EA127>I<FFFF803FFCFFFF803FFC07F000018007
F000018007F000018007F000018007F000018007F000018007F000018007F000018007F0000180
07F000018007F000018007F000018007F000018007F000018007F000018007F000018007F00001
8007F000018007F000018007F000018007F000018007F000018007F000018007F000018003F000
030003F800030001F800060000FC000E00007E001C00003F80F800000FFFE0000001FF00002622
7EA12B>I<FFFF0FFFF01FFEFFFF0FFFF01FFE0FF000FF0000E007F0007F0000C007F0007F0000
C003F8007F80018003F8003F80018003FC003F80038001FC003FC0030001FC003FC0030000FE00
7FE0060000FE006FE0060000FF006FE00600007F00C7F00C00007F00C7F00C00007F80C7F81C00
003F8183F81800003F8183F81800001FC383FC3000001FC301FC3000001FE301FC3000000FE600
FE6000000FE600FE6000000FF600FFE0000007FC007FC0000007FC007FC0000003FC007F800000
03F8003F80000003F8003F80000001F0001F00000001F0001F00000000F0001E00000000E0000E
00000000E0000E000037227FA13A>87 D<0400400E00E0180180380380300300600600600600E0
0E00C00C00C00C00DC0DC0FE0FE0FF0FF0FF0FF07F07F03E03E01C01C014117AA21D>92
D<07FC001FFF803F07C03F03E03F01E03F01F01E01F00001F00001F0003FF003FDF01FC1F03F01
F07E01F0FC01F0FC01F0FC01F0FC01F07E02F07E0CF81FF87F07E03F18167E951B>97
D<FF000000FF0000001F0000001F0000001F0000001F0000001F0000001F0000001F0000001F00
00001F0000001F0000001F0000001F0FE0001F3FF8001FF07C001F801E001F001F001F000F801F
000F801F000FC01F000FC01F000FC01F000FC01F000FC01F000FC01F000FC01F000FC01F000F80
1F001F801F801F001FC03E001EE07C001C3FF800180FC0001A237EA21F>I<00FF8007FFE00F83
F01F03F03E03F07E03F07C01E07C0000FC0000FC0000FC0000FC0000FC0000FC00007C00007E00
007E00003E00301F00600FC0E007FF8000FE0014167E9519>I<0001FE000001FE0000003E0000
003E0000003E0000003E0000003E0000003E0000003E0000003E0000003E0000003E0000003E00
01FC3E0007FFBE000F81FE001F007E003E003E007E003E007C003E00FC003E00FC003E00FC003E
00FC003E00FC003E00FC003E00FC003E00FC003E007C003E007C003E003E007E001E00FE000F83
BE0007FF3FC001FC3FC01A237EA21F>I<00FE0007FF800F87C01E01E03E01F07C00F07C00F8FC
00F8FC00F8FFFFF8FFFFF8FC0000FC0000FC00007C00007C00007E00003E00181F00300FC07003
FFC000FF0015167E951A>I<003F8000FFC001E3E003C7E007C7E00F87E00F83C00F80000F8000
0F80000F80000F80000F8000FFFC00FFFC000F80000F80000F80000F80000F80000F80000F8000
0F80000F80000F80000F80000F80000F80000F80000F80000F80000F80000F80007FF8007FF800
13237FA211>I<03FC1E0FFF7F1F0F8F3E07CF3C03C07C03E07C03E07C03E07C03E07C03E03C03
C03E07C01F0F801FFF0013FC003000003000003800003FFF801FFFF00FFFF81FFFFC3800FC7000
3EF0001EF0001EF0001EF0001E78003C7C007C3F01F80FFFE001FF0018217E951C>I<FF000000
FF0000001F0000001F0000001F0000001F0000001F0000001F0000001F0000001F0000001F0000
001F0000001F0000001F07E0001F1FF8001F307C001F403C001F803E001F803E001F003E001F00
3E001F003E001F003E001F003E001F003E001F003E001F003E001F003E001F003E001F003E001F
003E001F003E001F003E00FFE1FFC0FFE1FFC01A237EA21F>I<1C003E007F007F007F003E001C
000000000000000000000000000000FF00FF001F001F001F001F001F001F001F001F001F001F00
1F001F001F001F001F001F001F001F00FFE0FFE00B247EA310>I<FF000000FF0000001F000000
1F0000001F0000001F0000001F0000001F0000001F0000001F0000001F0000001F0000001F0000
001F00FF801F00FF801F0038001F0060001F01C0001F0380001F0700001F0E00001F1C00001F7E
00001FFF00001FCF00001F0F80001F07C0001F03E0001F01E0001F01F0001F00F8001F007C001F
003C00FFE0FFC0FFE0FFC01A237EA21E>107 D<FF00FF001F001F001F001F001F001F001F001F
001F001F001F001F001F001F001F001F001F001F001F001F001F001F001F001F001F001F001F00
1F001F001F001F00FFE0FFE00B237EA210>I<FF07F007F000FF1FFC1FFC001F303E303E001F40
3E403E001F801F801F001F801F801F001F001F001F001F001F001F001F001F001F001F001F001F
001F001F001F001F001F001F001F001F001F001F001F001F001F001F001F001F001F001F001F00
1F001F001F001F001F001F001F001F001F001F001F00FFE0FFE0FFE0FFE0FFE0FFE02B167E9530
>I<FF07E000FF1FF8001F307C001F403C001F803E001F803E001F003E001F003E001F003E001F
003E001F003E001F003E001F003E001F003E001F003E001F003E001F003E001F003E001F003E00
1F003E00FFE1FFC0FFE1FFC01A167E951F>I<00FE0007FFC00F83E01E00F03E00F87C007C7C00
7C7C007CFC007EFC007EFC007EFC007EFC007EFC007EFC007E7C007C7C007C3E00F81F01F00F83
E007FFC000FE0017167E951C>I<FF0FE000FF3FF8001FF07C001F803E001F001F001F001F801F
001F801F000FC01F000FC01F000FC01F000FC01F000FC01F000FC01F000FC01F000FC01F001F80
1F001F801F803F001FC03E001FE0FC001F3FF8001F0FC0001F0000001F0000001F0000001F0000
001F0000001F0000001F0000001F000000FFE00000FFE000001A207E951F>I<FE1F00FE3FC01E
67E01EC7E01E87E01E87E01F83C01F00001F00001F00001F00001F00001F00001F00001F00001F
00001F00001F00001F00001F0000FFF000FFF00013167E9517>114 D<0FF3003FFF00781F0060
0700E00300E00300F00300FC00007FE0007FF8003FFE000FFF0001FF00000F80C00780C00380E0
0380E00380F00700FC0E00EFFC00C7F00011167E9516>I<018000018000018000018000038000
0380000780000780000F80003F8000FFFF00FFFF000F80000F80000F80000F80000F80000F8000
0F80000F80000F80000F80000F80000F81800F81800F81800F81800F81800F830007C30003FE00
00F80011207F9F16>I<FF01FE00FF01FE001F003E001F003E001F003E001F003E001F003E001F
003E001F003E001F003E001F003E001F003E001F003E001F003E001F003E001F003E001F003E00
1F007E001F00FE000F81BE0007FF3FC001FC3FC01A167E951F>I<FFE01FE0FFE01FE00F800600
0F8006000FC00E0007C00C0007E01C0003E0180003E0180001F0300001F0300000F8600000F860
00007CC000007CC000007FC000003F8000003F8000001F0000001F0000000E0000000E00001B16
7F951E>I<FFE7FF07F8FFE7FF07F81F007800C00F807801800F807C01800F807C018007C07E03
0007C0DE030007E0DE070003E0DF060003E18F060001F18F0C0001F38F8C0001FB079C0000FB07
D80000FE03D800007E03F000007E03F000007C01F000003C01E000003800E000001800C0002516
7F9528>I<FFE07FC0FFE07FC00F801C0007C0380003E0700003F0600001F8C00000F98000007F
8000003F0000001F0000001F8000003FC0000037C0000063E00000C1F00001C0F8000380FC0007
007E000E003E00FF80FFE0FF80FFE01B167F951E>I<FFE01FE0FFE01FE00F8006000F8006000F
C00E0007C00C0007E01C0003E0180003E0180001F0300001F0300000F8600000F86000007CC000
007CC000007FC000003F8000003F8000001F0000001F0000000E0000000E0000000C0000000C00
000018000078180000FC380000FC300000FC60000069C000007F8000001F0000001B207F951E>
I<7FFFF07FFFF07C03E07007C0600FC0E01F80C01F00C03E00C07E0000FC0000F80001F00003F0
3007E03007C0300F80701F80703F00603E00E07C03E0FFFFE0FFFFE014167E9519>I
E /Fk 44 127 df<E038F078F078F078F078F078F078F078E038E03860300D0B7C9816>34
D<00C00001C00001C00001C00007F0001FFC003FFE007DCF0071C780E1C380E1C780E1C780F1C3
0079C0003FC0001FF00007FC0001FE0001CF0001C70061C380F1C380F1C380E1C38071C70079DF
003FFE001FF80007E00001C00001C00000C00011207E9C16>36 D<00E001E0038007000E001C00
1C0038003800700070007000E000E000E000E000E000E000E000E000E000700070007000380038
001C001C000E000700038001E000E00B217A9C16>40 D<C000E000700038001C000E000E000700
070003800380038001C001C001C001C001C001C001C001C001C0038003800380070007000E000E
001C0038007000E000C0000A217B9C16>I<FFFF80FFFF80FFFF8011037E8D16>45
D<70F8F8F8700505788416>I<000180000380000380000700000700000E00000E00001C00001C
0000380000380000700000700000E00000E00001C00001C0000380000380000700000700000E00
000E00001C00001C0000380000380000700000700000E00000E00000C0000011207E9C16>I<03
E0000FF8001FFC001E3C00380E00780F00700700700700E00380E00380E00380E00380E00380E0
0380E00380E00380F00780700700700700780F003C1E001E3C001FFC000FF80003E00011197E98
16>I<70F8F8F870000000000000000070F8F8F8700512789116>58 D<7FFF00FFFF80FFFF8000
0000000000000000000000000000FFFF80FFFF807FFF00110B7E9116>61
D<00F80003FC0007FE000F07001C3F80387F8078FF8071C3C071C3C0E381C0E381C0E381C0E381
C0E381C0E381C0E381C071C38071C38078FF00387E001C3C000F03C007FFC003FF0000FC001219
7E9816>64 D<00E00001F00001F00001B00001B00003B80003B80003B800031800071C00071C00
071C00071C00071C000E0E000E0E000FFE000FFE001FFF001C07001C07001C07007F1FC0FF1FE0
7F1FC013197F9816>I<7FFFC0FFFFC07FFFC01C01C01C01C01C01C01C01C01C00001C00001C1C
001C1C001FFC001FFC001FFC001C1C001C1C001C00001C00E01C00E01C00E01C00E01C00E07FFF
E0FFFFE07FFFE013197F9816>69 D<7F1FC0FFBFE07F1FC01C07001C07001C07001C07001C0700
1C07001C07001FFF001FFF001FFF001C07001C07001C07001C07001C07001C07001C07001C0700
1C07007F1FC0FFBFE07F1FC013197F9816>72 D<FC07E0FE0FE0FE0FE03A0B803B1B803B1B803B
1B803B1B803B1B803BBB8039B38039B38039B38039B38039F38038E38038E38038038038038038
0380380380380380FE0FE0FE0FE0FE0FE013197F9816>77 D<7FE000FFF8007FFC001C1E001C0F
001C07001C07001C07001C07001C0F001C1E001FFC001FF8001FFC001C1C001C0E001C0E001C0E
001C0E001C0E201C0E701C0E707F07E0FF87E07F03C014197F9816>82 D<07E3001FFF003FFF00
781F00F00700E00700E00700E00000F000007800003F80001FF00007FC0000FE00000F00000700
000380000380600380E00380E00700F80F00FFFE00FFFC00C7F00011197E9816>I<7F07F0FF8F
F87F07F01C01C01C01C01C01C01C01C01C01C01C01C01C01C01C01C01C01C01C01C01C01C01C01
C01C01C01C01C01C01C01C01C00E03800E038007070007FF0003FE0000F8001519809816>85
D<FE0FE0FF1FE0FE0FE01C07001C07000E0E000E0E00071C00071C00071C0003B80003B80001F0
0001F00000E00000E00000E00000E00000E00000E00000E00000E00003F80007FC0003F8001319
7F9816>89 D<1FE0003FF0007FF800783C00300E00000E00000E0003FE001FFE003E0E00700E00
E00E00E00E00E00E00783E007FFFE03FE7E00F83E013127E9116>97 D<7E0000FE00007E00000E
00000E00000E00000E00000E3E000EFF000FFF800F83C00F00E00E00E00E00700E00700E00700E
00700E00700E00700E00E00F01E00F83C00FFF800EFF00063C001419809816>I<03F80FFC1FFE
3C1E780C7000E000E000E000E000E000F000700778073E0E1FFC0FF803F010127D9116>I<003F
00007F00003F0000070000070000070000070003C7000FF7001FFF003C1F00780F00700700E007
00E00700E00700E00700E00700E00700700F00700F003C1F001FFFE00FE7F007C7E014197F9816
>I<03E00FF81FFC3C1E780E7007E007FFFFFFFFFFFFE000E000700778073C0F1FFE0FFC03F010
127D9116>I<001F00007F8000FF8001E78001C30001C00001C0007FFF00FFFF00FFFF0001C000
01C00001C00001C00001C00001C00001C00001C00001C00001C00001C00001C0003FFE007FFF00
3FFE0011197F9816>I<03E3C007F7E00FFFE01C1CC0380E00380E00380E00380E00380E001C1C
000FF8001FF0001BE0003800001800001FFC001FFF003FFF807803C0E000E0E000E0E000E0E000
E07001C07C07C03FFF800FFE0003F800131C7F9116>I<7E0000FE00007E00000E00000E00000E
00000E00000E3C000EFE000FFF000F87800F03800E03800E03800E03800E03800E03800E03800E
03800E03800E03800E03807FC7F0FFE7F87FC7F01519809816>I<018003C003C0018000000000
000000007FC07FC07FC001C001C001C001C001C001C001C001C001C001C001C001C07FFFFFFF7F
FF101A7D9916>I<7E0000FE00007E00000E00000E00000E00000E00000E7FE00E7FE00E7FE00E
0F000E1E000E3C000E78000EF0000FF0000FF8000FBC000F1E000E0E000E07000E07807F87F0FF
CFF07F87F01419809816>107 D<FFC000FFC000FFC00001C00001C00001C00001C00001C00001
C00001C00001C00001C00001C00001C00001C00001C00001C00001C00001C00001C00001C00001
C000FFFF80FFFF80FFFF8011197E9816>I<F9C380FFEFC0FFFFE03C78E03C78E03870E03870E0
3870E03870E03870E03870E03870E03870E03870E03870E0FE7CF8FE7CF8FE3C781512809116>
I<7E3C00FEFE007FFF000F87800F03800E03800E03800E03800E03800E03800E03800E03800E03
800E03800E03807FC7F0FFE7F87FC7F01512809116>I<03E0000FF8001FFC003C1E00780F0070
0700E00380E00380E00380E00380E00380F00780700700780F003C1E001FFC000FF80003E00011
127E9116>I<7E3E00FEFF007FFF800F83C00F00E00E00E00E00700E00700E00700E00700E0070
0E00700E00E00F01E00F83C00FFF800EFF000E3C000E00000E00000E00000E00000E00000E0000
7FC000FFE0007FC000141B809116>I<FF0FC0FF3FE0FF7FE007F04007C0000780000780000700
00070000070000070000070000070000070000070000FFFC00FFFC00FFFC0013127F9116>114
D<0FEC3FFC7FFCF03CE01CE01C70007F801FF007F8003C600EE00EF00EF81EFFFCFFF8C7E00F12
7D9116>I<0300000700000700000700000700007FFF00FFFF00FFFF0007000007000007000007
000007000007000007000007010007038007038007038007870003FE0001FC0000F80011177F96
16>I<7E1F80FE3F807E1F800E03800E03800E03800E03800E03800E03800E03800E03800E0380
0E03800E03800E0F800FFFF007FBF803E3F01512809116>I<7F1FC0FF1FE07F1FC01C07001E0F
000E0E000E0E000E0E00071C00071C00071C00071C0003B80003B80003B80001F00001F00000E0
0013127F9116>I<FF1FE0FFBFE0FF1FE038038038038038038038038038E38019F30019F30019
B3001DB7001DB7001DB7001DB7000F1E000F1E000F1E0013127F9116>I<7F1FC07F3FC07F1FC0
0F1C00073C0003B80003F00001F00000E00001E00001F00003B800073C00071C000E0E007F1FC0
FF3FE07F1FC013127F9116>I<7F1FC0FF9FE07F1FC01C07000E07000E0E000E0E00070E00071C
00071C00039C00039C0003980001B80001B80000F00000F00000F00000E00000E00000E00001C0
0079C0007BC0007F80003F00003C0000131B7F9116>I<3FFFC07FFFC07FFFC0700780700F0070
1E00003C0000780001F00003E0000780000F00001E01C03C01C07801C0FFFFC0FFFFC0FFFFC012
127F9116>I<1C303F78FFF8F7E061C00D057C9816>126 D E /Fl 86 125
df<007E1F0001C1B1800303E3C00703C3C00E03C1800E01C0000E01C0000E01C0000E01C0000E
01C0000E01C000FFFFFC000E01C0000E01C0000E01C0000E01C0000E01C0000E01C0000E01C000
0E01C0000E01C0000E01C0000E01C0000E01C0000E01C0000E01C0000E01C0000E01C0007F87FC
001A1D809C18>11 D<007E0001C1800301800703C00E03C00E01800E00000E00000E00000E0000
0E0000FFFFC00E01C00E01C00E01C00E01C00E01C00E01C00E01C00E01C00E01C00E01C00E01C0
0E01C00E01C00E01C00E01C00E01C07F87F8151D809C17>I<007FC001C1C00303C00703C00E01
C00E01C00E01C00E01C00E01C00E01C00E01C0FFFFC00E01C00E01C00E01C00E01C00E01C00E01
C00E01C00E01C00E01C00E01C00E01C00E01C00E01C00E01C00E01C00E01C07FCFF8151D809C17
>I<003F07E00001C09C18000380F018000701F03C000E01E03C000E00E018000E00E000000E00
E000000E00E000000E00E000000E00E00000FFFFFFFC000E00E01C000E00E01C000E00E01C000E
00E01C000E00E01C000E00E01C000E00E01C000E00E01C000E00E01C000E00E01C000E00E01C00
0E00E01C000E00E01C000E00E01C000E00E01C000E00E01C007FC7FCFF80211D809C23>I<C0C0
61803F000C000A047B9915>20 D<60F0F0F0F0F0F0F06060606060606060606060606000000000
0060F0F060041E7C9D0C>33 D<6060F0F0F8F86868080808080808101010102020404080800D0C
7F9C15>I<0080008007E01898308460824081C087C08FC08FC086E080F0807E803FC01FF00FF8
03FC00BE008E00876087F083F083E0838082408240842088189007E00080008010217E9E15>36
D<00E0000001900000030800000308000007080000070800000708000007080000071000000710
0000072000000740000003C03FE003800F00038006000380040005C0040009C0080010E0100030
E010006070200060702000E0384000E03C4000E01C8000E00F0020E0070020700780403009C040
1830E18007C03E001B1F7E9D20>38 D<60F0F8680808081010204080050C7C9C0C>I<00400080
0100020006000C000C0018001800300030007000600060006000E000E000E000E000E000E000E0
00E000E000E000E000E000600060006000700030003000180018000C000C000600020001000080
00400A2A7D9E10>I<800040002000100018000C000C0006000600030003000380018001800180
01C001C001C001C001C001C001C001C001C001C001C001C0018001800180038003000300060006
000C000C00180010002000400080000A2A7E9E10>I<60F0F0701010101020204080040C7C830C>
44 D<FFE0FFE00B0280890E>I<60F0F06004047C830C>I<00010003000600060006000C000C00
0C0018001800180030003000300060006000C000C000C001800180018003000300030006000600
0C000C000C00180018001800300030003000600060006000C000C00010297E9E15>I<03C00C30
1818300C300C700E60066006E007E007E007E007E007E007E007E007E007E007E007E007E00760
066006700E300C300C18180C3007E0101D7E9B15>I<030007003F00C700070007000700070007
00070007000700070007000700070007000700070007000700070007000700070007000F80FFF8
0D1C7C9B15>I<07C01830201C400C400EF00FF80FF807F8077007000F000E000E001C001C0038
0070006000C00180030006010C01180110023FFE7FFEFFFE101C7E9B15>I<07E01830201C201C
781E780E781E381E001C001C00180030006007E00030001C001C000E000F000F700FF80FF80FF8
0FF00E401C201C183007E0101D7E9B15>I<000C00000C00001C00003C00003C00005C0000DC00
009C00011C00031C00021C00041C000C1C00081C00101C00301C00201C00401C00C01C00FFFFC0
001C00001C00001C00001C00001C00001C00001C0001FFC0121C7F9B15>I<300C3FF83FF03FC0
20002000200020002000200023E024302818301C200E000E000F000F000F600FF00FF00FF00F80
0E401E401C2038187007C0101D7E9B15>I<00F0030C06040C0E181E301E300C700070006000E3
E0E430E818F00CF00EE006E007E007E007E007E007600760077006300E300C18180C3003E0101D
7E9B15>I<4000007FFF807FFF007FFF0040020080040080040080080000100000100000200000
600000400000C00000C00001C00001800001800003800003800003800003800007800007800007
8000078000078000078000030000111D7E9B15>I<03E00C301008200C20066006600660067006
780C3E083FB01FE007F007F818FC307E601E600FC007C003C003C003C00360026004300C1C1007
E0101D7E9B15>I<03C00C301818300C700C600EE006E006E007E007E007E007E0076007700F30
0F18170C2707C700060006000E300C780C78187010203030C00F80101D7E9B15>I<60F0F06000
00000000000000000060F0F06004127C910C>I<60F0F0600000000000000000000060F0F07010
10101020204080041A7C910C>I<7FFFFFC0FFFFFFE00000000000000000000000000000000000
000000000000000000000000000000FFFFFFE07FFFFFC01B0C7E8F20>61
D<003F800000C0600003001800040004000800020010000100201F00802070808040E0404040C0
384041C038408180382083803820838038208380382083803820838038208180382041C0382040
C0384040E0784020709880201F0F00100000000800000004000000030001E000C01F80003FF000
1B1D7E9C20>64 D<000600000006000000060000000F0000000F0000000F000000178000001780
00001780000023C0000023C0000023C0000041E0000041E0000041E0000080F0000080F0000180
F8000100780001FFF80003007C0002003C0002003C0006003E0004001E0004001E000C001F001E
001F00FF80FFF01C1D7F9C1F>I<FFFFC00F00F00F00380F003C0F001C0F001E0F001E0F001E0F
001E0F001C0F003C0F00780F01F00FFFE00F00780F003C0F001E0F000E0F000F0F000F0F000F0F
000F0F000F0F001E0F001E0F003C0F0078FFFFE0181C7E9B1D>I<001F808000E0618001801980
070007800E0003801C0003801C00018038000180780000807800008070000080F0000000F00000
00F0000000F0000000F0000000F0000000F0000000F00000007000008078000080780000803800
00801C0001001C0001000E000200070004000180080000E03000001FC000191E7E9C1E>I<FFFF
C0000F00F0000F003C000F000E000F0007000F0007000F0003800F0003C00F0001C00F0001C00F
0001E00F0001E00F0001E00F0001E00F0001E00F0001E00F0001E00F0001E00F0001C00F0001C0
0F0003C00F0003800F0007800F0007000F000E000F001C000F007000FFFFC0001B1C7E9B20>I<
FFFFFC0F003C0F000C0F00040F00040F00060F00020F00020F02020F02000F02000F02000F0600
0FFE000F06000F02000F02000F02000F02010F00010F00020F00020F00020F00060F00060F000C
0F003CFFFFFC181C7E9B1C>I<FFFFF80F00780F00180F00080F00080F000C0F00040F00040F02
040F02000F02000F02000F06000FFE000F06000F02000F02000F02000F02000F00000F00000F00
000F00000F00000F00000F00000F8000FFF800161C7E9B1B>I<001F808000E061800180198007
0007800E0003801C0003801C00018038000180780000807800008070000080F0000000F0000000
F0000000F0000000F0000000F0000000F000FFF0F0000F80700007807800078078000780380007
801C0007801C0007800E00078007000B800180118000E06080001F80001C1E7E9C21>I<FFF3FF
C00F003C000F003C000F003C000F003C000F003C000F003C000F003C000F003C000F003C000F00
3C000F003C000F003C000FFFFC000F003C000F003C000F003C000F003C000F003C000F003C000F
003C000F003C000F003C000F003C000F003C000F003C000F003C00FFF3FFC01A1C7E9B1F>I<FF
F00F000F000F000F000F000F000F000F000F000F000F000F000F000F000F000F000F000F000F00
0F000F000F000F000F000F000F00FFF00C1C7F9B0F>I<1FFF00F8007800780078007800780078
00780078007800780078007800780078007800780078007800787078F878F878F878F0F040E021
C01F00101D7F9B15>I<FFF03FE00F000F000F000C000F0008000F0010000F0020000F0040000F
0080000F0100000F0200000F0400000F0E00000F1F00000F2F00000F2780000F4780000F83C000
0F01E0000F01E0000F00F0000F00F8000F0078000F003C000F003C000F001E000F001F000F001F
80FFF07FF01C1C7E9B20>I<FFF8000F80000F00000F00000F00000F00000F00000F00000F0000
0F00000F00000F00000F00000F00000F00000F00000F00000F00000F00080F00080F00080F0018
0F00180F00100F00300F00700F01F0FFFFF0151C7E9B1A>I<FF8000FF800F8000F8000F8000F8
000BC00178000BC00178000BC001780009E002780009E002780008F004780008F004780008F004
7800087808780008780878000878087800083C107800083C107800083C107800081E207800081E
207800081E207800080F407800080F40780008078078000807807800080780780008030078001C
03007800FF8307FF80211C7E9B26>I<FF007FC00F800E000F8004000BC0040009E0040009E004
0008F0040008F8040008780400083C0400083C0400081E0400080F0400080F0400080784000807
C4000803C4000801E4000801E4000800F40008007C0008007C0008003C0008003C0008001C0008
000C001C000C00FF8004001A1C7E9B1F>I<003F800000E0E0000380380007001C000E000E001C
0007003C00078038000380780003C0780003C0700001C0F00001E0F00001E0F00001E0F00001E0
F00001E0F00001E0F00001E0F00001E0700001C0780003C0780003C0380003803C0007801C0007
000E000E0007001C000380380000E0E000003F80001B1E7E9C20>I<FFFF800F00E00F00780F00
3C0F001C0F001E0F001E0F001E0F001E0F001E0F001C0F003C0F00780F00E00FFF800F00000F00
000F00000F00000F00000F00000F00000F00000F00000F00000F00000F0000FFF000171C7E9B1C
>I<FFFF00000F01E0000F0078000F003C000F001C000F001E000F001E000F001E000F001E000F
001C000F003C000F0078000F01E0000FFF00000F03C0000F00E0000F00F0000F0078000F007800
0F0078000F0078000F0078000F0078000F0078100F0078100F0038100F003C20FFF01C20000007
C01C1D7E9B1F>82 D<07E0801C1980300580700380600180E00180E00080E00080E00080F00000
F800007C00007FC0003FF8001FFE0007FF0000FF80000F800007C00003C00001C08001C08001C0
8001C0C00180C00180E00300D00200CC0C0083F800121E7E9C17>I<7FFFFFC0700F01C0600F00
C0400F0040400F0040C00F0020800F0020800F0020800F0020000F0000000F0000000F0000000F
0000000F0000000F0000000F0000000F0000000F0000000F0000000F0000000F0000000F000000
0F0000000F0000000F0000000F0000001F800003FFFC001B1C7F9B1E>I<FFF07FC00F000E000F
0004000F0004000F0004000F0004000F0004000F0004000F0004000F0004000F0004000F000400
0F0004000F0004000F0004000F0004000F0004000F0004000F0004000F0004000F0004000F0004
000700080007800800038010000180100000C020000070C000001F00001A1D7E9B1F>I<FFE00F
F01F0003C00F0001800F0001000F800300078002000780020003C0040003C0040003C0040001E0
080001E0080001F0080000F0100000F0100000F830000078200000782000003C4000003C400000
3C4000001E8000001E8000001F8000000F0000000F00000006000000060000000600001C1D7F9B
1F>I<FFE0FFE0FF1F001F003C1E001E00180F001F00100F001F00100F001F001007801F002007
80278020078027802003C027804003C043C04003C043C04003E043C04001E081E08001E081E080
01E081E08000F100F10000F100F10000F100F100007900FA00007A007A00007A007A00003E007C
00003C003C00003C003C00003C003C00001800180000180018000018001800281D7F9B2B>I<7F
F0FFC00FC03E000780180003C0180003E0100001E0200001F0600000F0400000788000007D8000
003D0000001E0000001F0000000F0000000F8000000F80000013C0000023E0000021E0000041F0
0000C0F8000080780001007C0003003C0002001E0006001F001F003F80FFC0FFF01C1C7F9B1F>
I<FFF007FC0F8001E00780008007C0018003C0010003E0020001F0020000F0040000F804000078
0800007C1800003C1000001E2000001F2000000F4000000FC00000078000000780000007800000
07800000078000000780000007800000078000000780000007800000078000007FF8001E1C809B
1F>I<7FFFF07C01F07001E06003C06003C0400780400F80400F00401E00001E00003C00007C00
00780000F00000F00001E00003E00003C0100780100780100F00101F00301E00203C00203C0060
7800E0F803E0FFFFE0141C7E9B19>I<FEFEC0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0
C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0FEFE07297C9E0C>I<0808101020204040404080808080
8080B0B0F8F8787830300D0C7A9C15>I<FEFE0606060606060606060606060606060606060606
0606060606060606060606060606060606FEFE0729809E0C>I<1FC000307000783800781C0030
1C00001C00001C0001FC000F1C00381C00701C00601C00E01C40E01C40E01C40603C40304E801F
870012127E9115>97 D<FC00001C00001C00001C00001C00001C00001C00001C00001C00001C00
001C00001C7C001D86001E03001C01801C01C01C00C01C00E01C00E01C00E01C00E01C00E01C00
E01C00C01C01C01C01801E030019060010F800131D7F9C17>I<07E00C301878307870306000E0
00E000E000E000E000E00060007004300418080C3007C00E127E9112>I<003F00000700000700
00070000070000070000070000070000070000070000070003E7000C1700180F00300700700700
600700E00700E00700E00700E00700E00700E00700600700700700300700180F000C370007C7E0
131D7E9C17>I<03E00C301818300C700E6006E006FFFEE000E000E000E0006000700230021804
0C1803E00F127F9112>I<00F8018C071E061E0E0C0E000E000E000E000E000E00FFE00E000E00
0E000E000E000E000E000E000E000E000E000E000E000E000E000E007FE00F1D809C0D>I<0003
8003C4C00C38C01C3880181800381C00381C00381C00381C001818001C38000C300013C0001000
003000001800001FF8001FFF001FFF803003806001C0C000C0C000C0C000C06001803003001C0E
0007F800121C7F9215>I<FC00001C00001C00001C00001C00001C00001C00001C00001C00001C
00001C00001C7C001C87001D03001E03801C03801C03801C03801C03801C03801C03801C03801C
03801C03801C03801C03801C03801C0380FF9FF0141D7F9C17>I<18003C003C00180000000000
00000000000000000000FC001C001C001C001C001C001C001C001C001C001C001C001C001C001C
001C001C00FF80091D7F9C0C>I<00C001E001E000C000000000000000000000000000000FE000
E000E000E000E000E000E000E000E000E000E000E000E000E000E000E000E000E000E000E000E0
60E0F0C0F1C061803E000B25839C0D>I<FC00001C00001C00001C00001C00001C00001C00001C
00001C00001C00001C00001C3FC01C0F001C0C001C08001C10001C20001C40001CE0001DE0001E
70001C78001C38001C3C001C1C001C0E001C0F001C0F80FF9FE0131D7F9C16>I<FC001C001C00
1C001C001C001C001C001C001C001C001C001C001C001C001C001C001C001C001C001C001C001C
001C001C001C001C001C00FF80091D7F9C0C>I<FC7E07E0001C838838001D019018001E01E01C
001C01C01C001C01C01C001C01C01C001C01C01C001C01C01C001C01C01C001C01C01C001C01C0
1C001C01C01C001C01C01C001C01C01C001C01C01C001C01C01C00FF8FF8FF8021127F9124>I<
FC7C001C87001D03001E03801C03801C03801C03801C03801C03801C03801C03801C03801C0380
1C03801C03801C03801C0380FF9FF014127F9117>I<03F0000E1C001806003003007003806001
80E001C0E001C0E001C0E001C0E001C0E001C06001807003803003001806000E1C0003F0001212
7F9115>I<FC7C001D86001E03001C01801C01C01C00C01C00E01C00E01C00E01C00E01C00E01C
00E01C01C01C01C01C01801E03001D06001CF8001C00001C00001C00001C00001C00001C00001C
0000FF8000131A7F9117>I<03C1000C3300180B00300F00700700700700E00700E00700E00700
E00700E00700E00700600700700700300F00180F000C370007C700000700000700000700000700
000700000700000700003FE0131A7E9116>I<FCE01D301E781E781C301C001C001C001C001C00
1C001C001C001C001C001C001C00FFC00D127F9110>I<1F9030704030C010C010E010F8007F80
3FE00FF000F880388018C018C018E010D0608FC00D127F9110>I<04000400040004000C000C00
1C003C00FFE01C001C001C001C001C001C001C001C001C001C101C101C101C101C100C100E2003
C00C1A7F9910>I<FC1F801C03801C03801C03801C03801C03801C03801C03801C03801C03801C
03801C03801C03801C03801C07800C07800E1B8003E3F014127F9117>I<FF07E03C03801C0100
1C01000E02000E020007040007040007040003880003880003D80001D00001D00000E00000E000
00E00000400013127F9116>I<FF3FCFE03C0F03801C0701801C0701001C0B01000E0B82000E0B
82000E1182000711C4000711C4000720C40003A0E80003A0E80003C0680001C0700001C0700001
803000008020001B127F911E>I<7F8FF00F03800F030007020003840001C80001D80000F00000
700000780000F800009C00010E00020E000607000403801E07C0FF0FF81512809116>I<FF07E0
3C03801C01001C01000E02000E020007040007040007040003880003880003D80001D00001D000
00E00000E00000E000004000004000008000008000F08000F10000F300006600003C0000131A7F
9116>I<7FFC70386038407040F040E041C003C0038007000F040E041C043C0C380870087038FF
F80E127F9112>I<FFFFF01401808B15>I<FFFFFFFFFF802901808B2A>I
E /Fm 42 127 df<00C00000C00007F0001FFC003CCE0070C30060C300E0C780E0CF80E0CF80F0
CF80F8C700FEC0007FE0007FF8003FFC001FFE000FFF0003FF0000DF8020CF8070C780F8C380F8
C380F0C380C0C30060C70070C60038DE001FF80007E00000C00000C00011217D9E18>36
D<FFE0FFE0FFE0FFE00B047F8A10>45 D<000180000380000380000700000700000700000E0000
0E00001C00001C00001C0000380000380000380000700000700000E00000E00000E00001C00001
C00001C0000380000380000380000700000700000E00000E00000E00001C00001C00001C000038
0000380000700000700000700000E00000E00000C0000011297D9E18>47
D<00600001E0000FE000FFE000F3E00003E00003E00003E00003E00003E00003E00003E00003E0
0003E00003E00003E00003E00003E00003E00003E00003E00003E00003E00003E00003E0007FFF
807FFF80111B7D9A18>49 D<00038000000380000007C0000007C0000007C000000FE000000FE0
00001FF000001BF000001BF0000031F8000031F8000061FC000060FC0000E0FE0000C07E0000C0
7E0001803F0001FFFF0003FFFF8003001F8003001F8006000FC006000FC00E000FE00C0007E0FF
C07FFEFFC07FFE1F1C7E9B24>65 D<FFFFF800FFFFFF000FC01F800FC00FC00FC007C00FC007E0
0FC007E00FC007E00FC007E00FC007E00FC007C00FC00F800FC03F000FFFFE000FC00F800FC007
C00FC007E00FC003E00FC003F00FC003F00FC003F00FC003F00FC003F00FC007E00FC007E00FC0
1FC0FFFFFF00FFFFFC001C1C7E9B22>I<001FE02000FFF8E003F80FE007C003E00F8001E01F00
00E03E0000E03E0000607E0000607C000060FC000000FC000000FC000000FC000000FC000000FC
000000FC000000FC0000007C0000607E0000603E0000603E0000C01F0000C00F80018007C00300
03F80E0000FFFC00001FE0001B1C7D9B22>I<FFFFF800FFFFFF000FC01FC00FC007E00FC001F0
0FC001F80FC000F80FC000FC0FC0007C0FC0007C0FC0007E0FC0007E0FC0007E0FC0007E0FC000
7E0FC0007E0FC0007E0FC0007E0FC0007C0FC0007C0FC0007C0FC000F80FC000F80FC001F00FC0
07E00FC01FC0FFFFFF00FFFFF8001F1C7E9B25>I<FFFFFF00FFFFFF000FC01F000FC007000FC0
03000FC003800FC003800FC181800FC181800FC181800FC180000FC380000FFF80000FFF80000F
C380000FC180000FC180000FC180600FC180600FC000E00FC000C00FC000C00FC001C00FC001C0
0FC003C00FC00F80FFFFFF80FFFFFF801B1C7E9B1F>I<FFFFFFFF07E007E007E007E007E007E0
07E007E007E007E007E007E007E007E007E007E007E007E007E007E007E007E007E007E0FFFFFF
FF101C7F9B12>73 D<FFFF00FFFF000FC0000FC0000FC0000FC0000FC0000FC0000FC0000FC000
0FC0000FC0000FC0000FC0000FC0000FC0000FC0000FC0030FC0030FC0030FC0070FC0070FC006
0FC00E0FC01E0FC07EFFFFFEFFFFFE181C7E9B1D>76 D<FFC00003FFFFE00007FF0FE00007F00D
F0000DF00DF0000DF00DF0000DF00CF80019F00CF80019F00C7C0031F00C7C0031F00C3E0061F0
0C3E0061F00C1F00C1F00C1F00C1F00C1F00C1F00C0F8181F00C0F8181F00C07C301F00C07C301
F00C03E601F00C03E601F00C01FC01F00C01FC01F00C01FC01F00C00F801F00C00F801F0FFC070
1FFFFFC0701FFF281C7E9B2D>I<FFFFF800FFFFFE000FC03F800FC00F800FC007C00FC007E00F
C007E00FC007E00FC007E00FC007E00FC007C00FC007C00FC00F800FC03F000FFFFC000FC00000
0FC000000FC000000FC000000FC000000FC000000FC000000FC000000FC000000FC000000FC000
00FFFC0000FFFC00001B1C7E9B21>80 D<FFFFF00000FFFFFE00000FC03F00000FC00F80000FC0
07C0000FC007E0000FC007E0000FC007E0000FC007E0000FC007E0000FC007C0000FC00F80000F
C03E00000FFFF000000FC07C00000FC03E00000FC03F00000FC01F80000FC01F80000FC01F8000
0FC01F80000FC01F80000FC01F80000FC01F81800FC01F81800FC00FC180FFFC07C300FFFC01FE
00211C7E9B24>82 D<07F8201FFEE03C07E07801E07000E0F000E0F00060F00060F80000FE0000
FFE0007FFE003FFF003FFF800FFFC007FFE0007FE00003F00001F00000F0C000F0C000F0C000E0
E000E0F001C0FC03C0EFFF0083FC00141C7D9B1B>I<7FFFFFE07FFFFFE0781F81E0701F80E060
1F8060E01F8070C01F8030C01F8030C01F8030C01F8030001F8000001F8000001F8000001F8000
001F8000001F8000001F8000001F8000001F8000001F8000001F8000001F8000001F8000001F80
00001F8000001F800007FFFE0007FFFE001C1C7E9B21>I<FFFC01FF80FFFC01FF800FC0001800
07E000300007E000300007F000700003F000600003F800E00001F800C00001FC00C00000FC0180
0000FC018000007E030000007E030000007F070000003F060000003F8E0000001F8C0000001FCC
0000000FD80000000FD800000007F000000007F000000007F000000003E000000003E000000001
C000000001C00000211C7F9B24>86 D<7FFFFC7FFFFC7E01F87803F87003F0E007E0E007E0C00F
C0C01FC0C01F80003F00007F00007E0000FC0000FC0001F80003F80603F00607E0060FE0060FC0
0E1F800E1F801C3F001C7F003C7E00FCFFFFFCFFFFFC171C7D9B1D>90 D<0FF8001C1E003E0F80
3E07803E07C01C07C00007C0007FC007E7C01F07C03C07C07C07C0F807C0F807C0F807C0780BC0
3E13F80FE1F815127F9117>97 D<FF0000FF00001F00001F00001F00001F00001F00001F00001F
00001F00001F00001F3F801FE1E01F80701F00781F003C1F003C1F003E1F003E1F003E1F003E1F
003E1F003E1F003C1F003C1F00781F80701EC1E01C3F00171D7F9C1B>I<03FC000E0E001C1F00
3C1F00781F00780E00F80000F80000F80000F80000F80000F800007800007801803C01801C0300
0E0E0003F80011127E9115>I<000FF0000FF00001F00001F00001F00001F00001F00001F00001
F00001F00001F001F9F00F07F01C03F03C01F07801F07801F0F801F0F801F0F801F0F801F0F801
F0F801F07801F07801F03C01F01C03F00F0FFE03F9FE171D7E9C1B>I<01FC000F07001C03803C
01C07801C07801E0F801E0F801E0FFFFE0F80000F80000F800007800007C00603C00601E00C00F
038001FC0013127F9116>I<007F0001E38003C7C00787C00F87C00F83800F80000F80000F8000
0F80000F8000FFF800FFF8000F80000F80000F80000F80000F80000F80000F80000F80000F8000
0F80000F80000F80000F80000F80007FF8007FF800121D809C0F>I<03F8F00E0F381E0F381C07
303C07803C07803C07803C07801C07001E0F000E0E001BF8001000001800001800001FFF001FFF
C00FFFE01FFFF07801F8F00078F00078F000787000707800F01E03C007FF00151B7F9118>I<FF
0000FF00001F00001F00001F00001F00001F00001F00001F00001F00001F00001F0FC01F31E01F
40F01F80F81F80F81F00F81F00F81F00F81F00F81F00F81F00F81F00F81F00F81F00F81F00F81F
00F8FFE7FFFFE7FF181D7F9C1B>I<1E003F003F003F003F001E00000000000000000000000000
FF00FF001F001F001F001F001F001F001F001F001F001F001F001F001F001F00FFE0FFE00B1E7F
9D0E>I<FF0000FF00001F00001F00001F00001F00001F00001F00001F00001F00001F00001F0F
F81F0FF81F03801F07001F0C001F18001F70001FF8001FFC001FBC001F3E001F1F001F0F001F0F
801F07C01F03E0FFC7FCFFC7FC161D7F9C19>107 D<FF00FF001F001F001F001F001F001F001F
001F001F001F001F001F001F001F001F001F001F001F001F001F001F001F001F001F001F00FFE0
FFE00B1D7F9C0E>I<FF0FC07E00FF31E18F001F40F207801F80FC07C01F80FC07C01F00F807C0
1F00F807C01F00F807C01F00F807C01F00F807C01F00F807C01F00F807C01F00F807C01F00F807
C01F00F807C01F00F807C0FFE7FF3FF8FFE7FF3FF825127F9128>I<FF0FC0FF31E01F40F01F80
F81F80F81F00F81F00F81F00F81F00F81F00F81F00F81F00F81F00F81F00F81F00F81F00F8FFE7
FFFFE7FF18127F911B>I<01FC000F07801C01C03C01E07800F07800F0F800F8F800F8F800F8F8
00F8F800F8F800F87800F07800F03C01E01E03C00F078001FC0015127F9118>I<FF3F80FFE1E0
1F80F01F00781F007C1F003C1F003E1F003E1F003E1F003E1F003E1F003E1F003C1F007C1F0078
1F80F01FC1E01F3F001F00001F00001F00001F00001F00001F0000FFE000FFE000171A7F911B>
I<FE3E00FE47001E8F801E8F801E8F801F07001F00001F00001F00001F00001F00001F00001F00
001F00001F00001F0000FFF000FFF00011127F9114>114 D<1FD830786018E018E018F000FF80
7FE07FF01FF807FC007CC01CC01CE01CE018F830CFC00E127E9113>I<03000300030003000700
07000F000F003FFCFFFC1F001F001F001F001F001F001F001F001F001F0C1F0C1F0C1F0C0F0807
9803F00E1A7F9913>I<FF07F8FF07F81F00F81F00F81F00F81F00F81F00F81F00F81F00F81F00
F81F00F81F00F81F00F81F00F81F01F80F01F80786FF01F8FF18127F911B>I<FFC1FCFFC1FC1F
00601F80E00F80C00FC0C007C18007C18003E30003E30001F60001F60001FE0000FC0000FC0000
780000780000300016127F9119>I<FFC7FCFFC7FC1F81800F838007C70003EE0001FC0001F800
00F800007C0000FE0001DF00039F00070F800607C00C03E0FF07FCFF07FC16127F9119>120
D<FFC1FCFFC1FC1F00601F80E00F80C00FC0C007C18007C18003E30003E30001F70001F60000FE
0000FC0000FC00007800007800003000003000007000706000F86000F8C000F980007300003E00
00161A7F9119>I<3FFF803C1F00303F00303E00607C0060FC0060F80001F00003F00007E00007
C1800F81801F81801F03803E03007E07007C0F00FFFF0011127F9115>I<1E023FFC7FF880F00F
047C9C18>126 D E /Fn 32 123 df<0E1E1E1E1E02020404080810204080070F7D840F>44
D<0000030000000300000007000000070000000F0000000F0000001F0000002F0000002F000000
4F0000004F80000087800000878000010780000207800002078000040780000407800008078000
080780001007800030078000200780007FFF80004007C0008007C0008003C0010003C0030003C0
020003C0040003C0040003C00C0003C03C0007C0FF003FFC1E237DA224>65
D<00007F00800003808100000E00630000380027000070001F0000E0000E0001C0000E00038000
0E000700000E000F000004000E000004001E000004003C000004003C0000080078000000007800
0000007800000000F000000000F000000000F000000000F000000000F000000000E000000000E0
00002000E000002000E000004000E000004000F000008000700000800070000100003800020000
18000400001C0008000006003000000381C0000000FE000000212479A223>67
D<00FFFFF000000F003C00000F000E00000F000700001E000380001E000380001E0001C0001E00
01C0003C0001C0003C0001E0003C0001E0003C0001E000780001E000780001E000780001E00078
0001E000F00003C000F00003C000F00003C000F00003C001E000078001E000078001E000070001
E0000F0003C0000E0003C0001C0003C0003C0003C00038000780007000078000E000078001C000
07800700000F801C0000FFFFF0000023227DA125>I<00FFFFFF80000F000780000F000180000F
000180001E000180001E000180001E000100001E000100003C000100003C000100003C01010000
3C01000000780200000078020000007806000000780E000000FFFC000000F00C000000F00C0000
00F00C000001E008000001E008000001E008040001E000080003C000080003C000080003C00010
0003C000100007800020000780006000078000C000078001C0000F8007C000FFFFFF800021227D
A121>I<00FF800007FC000F80000F80000F80001780000F80001780001780002F000013C0002F
000013C0004F000013C0008F000023C0009E000023C0011E000023C0011E000023C0021E000043
C0043C000043C0043C000043C0083C000041E0083C000081E01078000081E02078000081E02078
000081E04078000101E040F0000101E080F0000101E100F0000101E100F0000200F201E0000200
F201E0000200F401E0000200F801E0000400F803C0000400F003C0000400F003C0000C00E003C0
001E00C007C000FFC0C07FFC002E227DA12C>77 D<00FFFFC0000F0070000F003C000F001C001E
000E001E000E001E000F001E000F003C001E003C001E003C001E003C003C007800380078007000
7801E00078078000FFFC0000F00E0000F0070000F0038001E003C001E003C001E003C001E003C0
03C0078003C0078003C0078003C0078007800F0007800F0107800F01078007020F800702FFF803
8C000000F020237DA124>82 D<0001F020000E0C40001802C0003001C0006001C000E0018000C0
018001C0018001C0018003C0010003C0010003C0000003C0000003E0000001F8000001FF000000
FFE000007FF000001FF8000003FC0000007C0000003C0000001E0000001E0000001E0020001C00
20001C0020001C00200018006000380060003000700060007000C000C8018000C607000081FC00
001B247DA21B>I<1FFFFFF81E03C0381803C0183003C018200780182007801840078010400780
10400F0010800F0010800F0010000F0000001E0000001E0000001E0000001E0000003C0000003C
0000003C0000003C00000078000000780000007800000078000000F0000000F0000000F0000000
F0000001E0000001E0000001E0000001E0000003E00000FFFF00001D2277A123>I<3FFE03FF03
C0007803C0006003C00020078000400780004007800040078000400F0000800F0000800F000080
0F0000801E0001001E0001001E0001001E0001003C0002003C0002003C0002003C000200780004
0078000400780004007800040070000800F0000800F00010007000100070002000700040003000
400038018000180200000E0C000003F00000202377A124>I<007FFFFE007E001E0078003C0060
007800C000F000C001E0008003E0008003C00100078001000F0001001E0000003C0000007C0000
0078000000F0000001E0000003C00000078000000F8000000F0000001E0000003C004000780040
00F0008001F0008001E0008003C00100078001000F0003001E0006001E0006003C001E0078007C
00FFFFFC001F227DA11E>90 D<00F8C00185C00705C00E03800E03801C03803C03803807007807
00780700780700F00E00F00E00F00E00F00E10F01C20701C20703C20305C40308C400F07801415
7B9419>97 D<03C03F8003800380038007000700070007000E000E000E000E001C001CF81D0C1E
0E3C0638073807380F700F700F700F700FE01EE01EE01EE03CE038E038607060E031C01F001023
7BA216>I<007E0001C1000301800703800E07801C07803C0000380000780000780000780000F0
0000F00000F00000F00000F00100700100700200300C001830000FC00011157B9416>I<00003C
0003F80000380000380000380000700000700000700000700000E00000E00000E00000E00001C0
00F9C00185C00705C00E03800E03801C03803C0380380700780700780700780700F00E00F00E00
F00E00F00E10F01C20701C20703C20305C40308C400F078016237BA219>I<00F803840E021C02
3C0238027804F018FFE0F000F000E000E000E000E000E002E0026004701830600F800F157A9416
>I<001F180030B800E0B801C07001C0700380700780700700E00F00E00F00E00F00E01E01C01E
01C01E01C01E01C01E03800E03800E0780060B8006170001E700000700000700000E00000E0000
0E00701C00F01800F0300060E0003F8000151F7E9416>103 D<00C001E001C001C00000000000
00000000000000000000001C002300430043008700870087000E000E001C001C001C0038003800
3840708070807080710032001C000B217BA00F>105 D<00F0000FE00000E00000E00000E00001
C00001C00001C00001C0000380000380000380000380000700000701E0070210070C700E10F00E
10F00E20600E40001D80001E00001FC0001C7000383800383800381C00381C2070384070384070
3840701880E01880600F0014237DA216>107 D<01E01FC001C001C001C0038003800380038007
000700070007000E000E000E000E001C001C001C001C0038003800380038007000700070007100
E200E200E200E200640038000B237CA20C>I<1C0F80F8002610C10C0047606606008780780700
8780780700870070070087007007000E00E00E000E00E00E000E00E00E000E00E00E001C01C01C
001C01C01C001C01C01C001C01C038203803803840380380704038038070803803803080700700
31003003001E0023157B9428>I<1C0F002631C04740C08780E08780E08700E08700E00E01C00E
01C00E01C00E01C01C03801C03801C03801C0704380708380E08380E103806107006203003C016
157B941B>I<007E0001C3000381800701C00E01C01C01E03C01E03801E07801E07801E07801E0
F003C0F003C0F00380F00780700700700E00700C0030180018700007C00013157B9419>I<01C1
F002621804741C08780C08700E08700E08701E00E01E00E01E00E01E00E01E01C03C01C03C01C0
3C01C07803807003807003C0E003C1C0072380071E000700000700000E00000E00000E00000E00
001C00001C00001C0000FFC000171F7F9419>I<1C1F002620804741C08783C08703C087018087
00000E00000E00000E00000E00001C00001C00001C00001C000038000038000038000038000070
000030000012157B9415>114 D<00FC000183000200800401800C03800C03000C00000F00000F
F00007FC0003FE00003E00000F00000700700700F00600F00600E004004008002030001FC00011
157D9414>I<00C001C001C001C001C003800380038003800700FFF8070007000E000E000E000E
001C001C001C001C003800380038003810702070207040708031001E000D1F7C9E10>I<1E0060
2300E04380E04381C08381C08701C08701C00703800E03800E03800E03801C07001C07001C0700
1C07081C0E10180E101C0E101C1E200C262007C3C015157B941A>I<1E03802307C04387C04383
C08381C08700C08700C00700800E00800E00800E00801C01001C01001C01001C02001C02001C04
001C08001C08000C300003C00012157B9416>I<03C1E0046210083470103CF02038F020386020
380000700000700000700000700000E00000E00000E00000E02061C040F1C040F1C080E2C10044
6200383C0014157D9416>120 D<1E00302300704380704380E08380E08700E08700E00701C00E
01C00E01C00E01C01C03801C03801C03801C03801C07001C07001C07001C0F000C3E0003CE0000
0E00000E00001C00601C00F03800F03000E0600080C0004380003E0000141F7B9418>I<01E020
03F06007F8C0041F80080100080200000400000800001000002000004000008000010000020000
0400800801001003003F060061FC0040F80080700013157D9414>I E /Fo
23 119 df<00038000000380000003800000038000001FF00000FFFE0003FFFF0007E38FC00F03
83E01E0380F03C0380703C038038780380F8780381FCF80383FCF80387FCF80387FCFC0387FCFC
0387FCFE0383F8FF0381F0FFC380007FFB80007FFFC0003FFFF8003FFFFE001FFFFF000FFFFF80
07FFFFC003FFFFE001FFFFF0007FFFF0000FFFF80003FFF800038FF8000383FC3E0381FC7F0380
FCFF8380FCFF83807CFF83807CFF83807CFF03807CFE0380787C038078700380F8780380F03803
80E01C0381E00F0387C007E39F8003FFFF0000FFFC00001FE00000038000000380000003800000
0380001E3A7BB529>36 D<1F003F807FC0FFE0FFE0FFE0FFE0FFE07FC03F801F00000000000000
00000000000000000000000000001F003F807FC0FFE0FFE0FFE0FFE0FFE07FC03F801F000B207A
9F17>58 D<FFFFFFFFF00000FFFFFFFFFF0000FFFFFFFFFFC00000FFC000FFF00000FFC0000FFC
0000FFC00007FE0000FFC00001FF0000FFC00000FF8000FFC000007FC000FFC000003FE000FFC0
00003FE000FFC000001FF000FFC000001FF000FFC000001FF800FFC000000FF800FFC000000FFC
00FFC000000FFC00FFC000000FFC00FFC000000FFC00FFC000000FFE00FFC000000FFE00FFC000
000FFE00FFC000000FFE00FFC000000FFE00FFC000000FFE00FFC000000FFE00FFC000000FFE00
FFC000000FFE00FFC000000FFE00FFC000000FFE00FFC000000FFC00FFC000000FFC00FFC00000
0FFC00FFC000000FFC00FFC000000FF800FFC000001FF800FFC000001FF800FFC000001FF000FF
C000003FE000FFC000003FE000FFC000007FC000FFC00000FF8000FFC00001FF0000FFC00003FE
0000FFC0000FFC0000FFC0007FF000FFFFFFFFFFE000FFFFFFFFFF0000FFFFFFFFF0000037317E
B03F>68 D<FFFFFFFFFFF000FFFFFFFFFFF000FFFFFFFFFFF00000FFC0003FF00000FFC00007F8
0000FFC00003F80000FFC00000F80000FFC00000F80000FFC00000780000FFC00000780000FFC0
0000380000FFC00000380000FFC00000380000FFC000001C0000FFC007001C0000FFC007001C00
00FFC007001C0000FFC00700000000FFC00700000000FFC00F00000000FFC01F00000000FFC03F
00000000FFFFFF00000000FFFFFF00000000FFFFFF00000000FFC03F00000000FFC01F00000000
FFC00F00000000FFC00700000000FFC00700000000FFC00700038000FFC00700038000FFC00700
038000FFC00000070000FFC00000070000FFC00000070000FFC00000070000FFC000000F0000FF
C000000F0000FFC000001E0000FFC000001E0000FFC000003E0000FFC000007E0000FFC00000FE
0000FFC00003FE0000FFC0001FFE00FFFFFFFFFFFC00FFFFFFFFFFFC00FFFFFFFFFFFC0031317E
B036>I<FFFFFFFFFFF0FFFFFFFFFFF0FFFFFFFFFFF000FFC0003FF000FFC00007F800FFC00003
F800FFC00000F800FFC00000F800FFC000007800FFC000007800FFC000003800FFC000003800FF
C000003800FFC000001C00FFC000001C00FFC007001C00FFC007001C00FFC007000000FFC00700
0000FFC007000000FFC00F000000FFC01F000000FFC03F000000FFFFFF000000FFFFFF000000FF
FFFF000000FFC03F000000FFC01F000000FFC00F000000FFC007000000FFC007000000FFC00700
0000FFC007000000FFC007000000FFC000000000FFC000000000FFC000000000FFC000000000FF
C000000000FFC000000000FFC000000000FFC000000000FFC000000000FFC000000000FFC00000
0000FFC0000000FFFFFFF00000FFFFFFF00000FFFFFFF000002E317EB034>I<FFFFFFC03FFFFF
F0FFFFFFC03FFFFFF0FFFFFFC03FFFFFF000FFC000003FF00000FFC000003FF00000FFC000003F
F00000FFC000003FF00000FFC000003FF00000FFC000003FF00000FFC000003FF00000FFC00000
3FF00000FFC000003FF00000FFC000003FF00000FFC000003FF00000FFC000003FF00000FFC000
003FF00000FFC000003FF00000FFC000003FF00000FFC000003FF00000FFC000003FF00000FFC0
00003FF00000FFC000003FF00000FFFFFFFFFFF00000FFFFFFFFFFF00000FFFFFFFFFFF00000FF
C000003FF00000FFC000003FF00000FFC000003FF00000FFC000003FF00000FFC000003FF00000
FFC000003FF00000FFC000003FF00000FFC000003FF00000FFC000003FF00000FFC000003FF000
00FFC000003FF00000FFC000003FF00000FFC000003FF00000FFC000003FF00000FFC000003FF0
0000FFC000003FF00000FFC000003FF00000FFC000003FF00000FFC000003FF00000FFC000003F
F00000FFC000003FF000FFFFFFC03FFFFFF0FFFFFFC03FFFFFF0FFFFFFC03FFFFFF03C317EB041
>72 D<FFFFFFF00000FFFFFFF00000FFFFFFF0000000FFC000000000FFC000000000FFC0000000
00FFC000000000FFC000000000FFC000000000FFC000000000FFC000000000FFC000000000FFC0
00000000FFC000000000FFC000000000FFC000000000FFC000000000FFC000000000FFC0000000
00FFC000000000FFC000000000FFC000000000FFC000000000FFC000000000FFC000000000FFC0
00000000FFC000000000FFC000000000FFC000000000FFC000000000FFC000007000FFC0000070
00FFC000007000FFC00000F000FFC00000F000FFC00000E000FFC00000E000FFC00001E000FFC0
0001E000FFC00003E000FFC00003E000FFC00007E000FFC0000FE000FFC0001FE000FFC0007FC0
00FFC003FFC0FFFFFFFFFFC0FFFFFFFFFFC0FFFFFFFFFFC02C317EB032>76
D<FFFF8000000001FFFF80FFFFC000000003FFFF80FFFFE000000007FFFF8000FFE000000007FF
800000EFF00000000EFF800000EFF00000000EFF800000EFF00000000EFF800000E7F80000001C
FF800000E7F80000001CFF800000E3FC00000038FF800000E3FC00000038FF800000E1FE000000
70FF800000E1FE00000070FF800000E0FF000000E0FF800000E0FF000000E0FF800000E07F8000
01C0FF800000E07F800001C0FF800000E03FC0000380FF800000E03FC0000380FF800000E03FC0
000380FF800000E01FE0000700FF800000E01FE0000700FF800000E00FF0000E00FF800000E00F
F0000E00FF800000E007F8001C00FF800000E007F8001C00FF800000E003FC003800FF800000E0
03FC003800FF800000E001FE007000FF800000E001FE007000FF800000E000FF00E000FF800000
E000FF00E000FF800000E000FF00E000FF800000E0007F81C000FF800000E0007F81C000FF8000
00E0003FC38000FF800000E0003FC38000FF800000E0001FE70000FF800000E0001FE70000FF80
0000E0000FFE0000FF800000E0000FFE0000FF800000E00007FC0000FF800000E00007FC0000FF
800000E00007FC0000FF800000E00003F80000FF800001F00003F80000FF8000FFFFE001F000FF
FFFF80FFFFE001F000FFFFFF80FFFFE000E000FFFFFF8049317EB04E>I<00000FFE0000000000
FFFFE000000007FFFFFC0000001FFC07FF0000003FE000FF800000FF80003FE00001FF00001FF0
0003FE00000FF80007FC000007FC0007FC000007FC000FF8000003FE001FF8000003FF001FF000
0001FF003FF0000001FF803FF0000001FF803FF0000001FF807FE0000000FFC07FE0000000FFC0
7FE0000000FFC0FFE0000000FFE0FFE0000000FFE0FFE0000000FFE0FFE0000000FFE0FFE00000
00FFE0FFE0000000FFE0FFE0000000FFE0FFE0000000FFE0FFE0000000FFE0FFE0000000FFE0FF
E0000000FFE07FE0000000FFC07FE0000000FFC07FF0000001FFC07FF0000001FFC03FF0000001
FF803FF0000001FF801FF8000003FF001FF8000003FF000FFC000007FE000FFC000007FE0007FE
00000FFC0003FF00001FF80001FF80003FF00000FFC0007FE000003FE000FF8000001FFC07FF00
000007FFFFFC00000000FFFFE0000000000FFE00000033317BB03E>79 D<001FF0018000FFFF03
8003FFFFC78007F00FFF800F8001FF801F00007F803F00001F803E00000F807E00000F807E0000
0780FE00000780FE00000780FE00000380FF00000380FF00000380FF80000000FFE00000007FFC
0000007FFFE000007FFFFE00003FFFFFC0001FFFFFF0001FFFFFF8000FFFFFFC0003FFFFFE0001
FFFFFF00007FFFFF80001FFFFF800000FFFFC0000007FFC0000000FFE00000003FE00000003FE0
0000001FE06000001FE0E000000FE0E000000FE0E000000FE0E000000FC0F000000FC0F000000F
C0F800001F80FC00001F80FF00003F00FFC0007E00FFFC01FC00F1FFFFF800E03FFFE000C007FF
000023317BB02E>83 D<FFFFFF0000FFFF80FFFFFF0000FFFF80FFFFFF0000FFFF8003FFC00000
0FF00001FFE0000007C00000FFE000000F800000FFF000000F8000007FF800001F0000003FF800
001E0000001FFC00003E0000001FFE00007C0000000FFE00007800000007FF0000F800000007FF
8001F000000003FF8001E000000001FFC003E000000001FFE007C000000000FFF0078000000000
7FF00F80000000007FF81F00000000003FFC1E00000000001FFC3E00000000001FFE7C00000000
000FFF78000000000007FFF8000000000007FFF0000000000003FFF0000000000001FFE0000000
000001FFC0000000000000FFC0000000000000FFC0000000000000FFC0000000000000FFC00000
00000000FFC0000000000000FFC0000000000000FFC0000000000000FFC0000000000000FFC000
0000000000FFC0000000000000FFC0000000000000FFC0000000000000FFC0000000000000FFC0
000000000000FFC0000000000000FFC0000000000000FFC00000000000FFFFFF8000000000FFFF
FF8000000000FFFFFF80000039317EB03E>89 D<007FF8000003FFFF000007FFFFC0000FE01FE0
001FF007F0001FF003F8001FF003FC001FF001FE000FE001FE0007C001FE00010001FE00000001
FE00000001FE000001FFFE00003FFFFE0001FFF1FE0007FE01FE000FF001FE001FC001FE003F80
01FE007F8001FE00FF0001FE00FF0001FE00FF0001FE00FF0001FE00FF0003FE007F8003FE007F
C00EFE003FF03CFF000FFFF87FF807FFF03FF800FF800FF825207E9F28>97
D<0007FC0000003FFF800000FFFFE00003FC07F00007F801F8000FE000FC001FE0007E003FC000
7E003FC0003F007FC0003F007F80003F007F80003F80FF80003F80FF80003F80FFFFFFFF80FFFF
FFFF80FFFFFFFF80FF80000000FF80000000FF800000007F800000007F800000003FC00000003F
C00003801FC00003801FE00007800FF0000F0007F8001E0003FE00FC0000FFFFF800003FFFE000
0003FF000021207E9F26>101 D<001FF007E000FFFE3FF001FFFF7FF807F83FF1F80FE00FE1F8
0FE00FE0F01FC007F0601FC007F0003FC007F8003FC007F8003FC007F8003FC007F8003FC007F8
001FC007F0001FC007F0000FE00FE0000FE00FE00007F83FC00007FFFF000006FFFE00000E1FF0
00000E000000001E000000001E000000001F000000001F800000001FFFFFC0000FFFFFF8000FFF
FFFE0007FFFFFF0003FFFFFF8007FFFFFFC01FFFFFFFE03F00007FE07E00000FF0FC000007F0FC
000003F0FC000003F0FC000003F0FC000003F07E000007E03F00000FC01FC0003F800FF801FF00
07FFFFFE0000FFFFF000001FFF8000252F7E9F29>103 D<01C00007F0000FF8000FF8001FFC00
1FFC001FFC000FF8000FF80007F00001C000000000000000000000000000000000000000000000
00000001F800FFF800FFF800FFF8000FF80007F80007F80007F80007F80007F80007F80007F800
07F80007F80007F80007F80007F80007F80007F80007F80007F80007F80007F80007F80007F800
07F80007F80007F80007F800FFFF80FFFF80FFFF8011337DB217>105 D<01F800FFF800FFF800
FFF8000FF80007F80007F80007F80007F80007F80007F80007F80007F80007F80007F80007F800
07F80007F80007F80007F80007F80007F80007F80007F80007F80007F80007F80007F80007F800
07F80007F80007F80007F80007F80007F80007F80007F80007F80007F80007F80007F80007F800
07F80007F80007F80007F80007F800FFFFC0FFFFC0FFFFC012327DB117>108
D<03F007F8000FF000FFF03FFF007FFE00FFF07FFF80FFFF00FFF0F03FC1E07F800FF1C01FE380
3FC007F3000FE6001FC007F6000FFC001FE007FE000FFC001FE007FC000FF8001FE007FC000FF8
001FE007F8000FF0001FE007F8000FF0001FE007F8000FF0001FE007F8000FF0001FE007F8000F
F0001FE007F8000FF0001FE007F8000FF0001FE007F8000FF0001FE007F8000FF0001FE007F800
0FF0001FE007F8000FF0001FE007F8000FF0001FE007F8000FF0001FE007F8000FF0001FE007F8
000FF0001FE007F8000FF0001FE007F8000FF0001FE007F8000FF0001FE007F8000FF0001FE0FF
FFC1FFFF83FFFFFFFFC1FFFF83FFFFFFFFC1FFFF83FFFF40207D9F45>I<03F007F80000FFF03F
FF0000FFF07FFF8000FFF0F03FC0000FF1C01FE00007F3000FE00007F6000FF00007FE000FF000
07FC000FF00007FC000FF00007F8000FF00007F8000FF00007F8000FF00007F8000FF00007F800
0FF00007F8000FF00007F8000FF00007F8000FF00007F8000FF00007F8000FF00007F8000FF000
07F8000FF00007F8000FF00007F8000FF00007F8000FF00007F8000FF00007F8000FF00007F800
0FF00007F8000FF000FFFFC1FFFF80FFFFC1FFFF80FFFFC1FFFF8029207D9F2E>I<0007FE0000
003FFFC00000FFFFF00003FC03FC0007F000FE000FE0007F001FC0003F803FC0003FC03FC0003F
C07F80001FE07F80001FE07F80001FE0FF80001FF0FF80001FF0FF80001FF0FF80001FF0FF8000
1FF0FF80001FF0FF80001FF0FF80001FF07F80001FE07F80001FE07F80001FE03FC0003FC03FC0
003FC01FE0007F800FE0007F0007F801FE0003FE07FC0001FFFFF800003FFFC0000007FE000024
207E9F29>I<03F03F00FFF07FC0FFF1FFE0FFF3C7F00FF38FF807F70FF807F60FF807FE0FF807
FC07F007FC03E007FC008007F8000007F8000007F8000007F8000007F8000007F8000007F80000
07F8000007F8000007F8000007F8000007F8000007F8000007F8000007F8000007F8000007F800
0007F80000FFFFE000FFFFE000FFFFE0001D207E9F22>114 D<00380000380000380000380000
380000780000780000780000F80000F80001F80003F80007F8001FF800FFFFFEFFFFFEFFFFFE07
F80007F80007F80007F80007F80007F80007F80007F80007F80007F80007F80007F80007F80007
F80007F80007F80007F80707F80707F80707F80707F80707F80707F80703F80E03FC0E01FE1C00
FFF8007FF0000FE0182E7EAD20>116 D<01F80003F000FFF801FFF000FFF801FFF000FFF801FF
F0000FF8001FF00007F8000FF00007F8000FF00007F8000FF00007F8000FF00007F8000FF00007
F8000FF00007F8000FF00007F8000FF00007F8000FF00007F8000FF00007F8000FF00007F8000F
F00007F8000FF00007F8000FF00007F8000FF00007F8000FF00007F8000FF00007F8000FF00007
F8000FF00007F8001FF00007F8001FF00003F8003FF00003F8006FF00001FE03CFF80000FFFF8F
FF80007FFF0FFF80000FFC0FFF8029207D9F2E>I<FFFF801FFEFFFF801FFEFFFF801FFE07F800
03E007F80001C007FC0003C003FC00038003FE00078001FE00070001FF000F0000FF000E0000FF
801E00007F801C00007FC03C00003FC03800003FE03800001FE07000001FE07000000FF0E00000
0FF0E000000FF9E0000007F9C0000007FFC0000003FF80000003FF80000001FF00000001FF0000
0000FE00000000FE000000007C000000007C0000000038000027207E9F2C>I
E end
%%EndProlog
%%BeginSetup
%%Feature: *Resolution 300
TeXDict begin
%%EndSetup
%%Page: 1 1
bop 193 216 a Fo(HLFSD:)26 b(Deliv)n(ering)h(Email)g(to)h(Y)-7
b(our)28 b($HOME)280 336 y Fn(Er)n(ez)17 b(Zadok,)g(Computer)h(Scienc)n(e)h
(Dep)n(artment,)e(Columbia)h(University)482 394 y(A)o(lexander)h(Dupuy,)e
(System)h(Management)h(AR)l(TS)841 541 y Fm(ABSTRA)o(CT)241
628 y Fl(W)m(e)12 b(consider)h(the)g(problem)e(of)h(enabling)g(users)i(to)e
(access)i(their)f(mailb)q(o)o(x)d(\014les)i(from)f(an)o(y)h(host)179
678 y(on)k(our)h(lo)q(cal)f(net)o(w)o(ork,)h(and)f(not)h(only)f(on)g(one)h
(designated)g(\\home)f(mac)o(hine".)25 b(W)m(e)16 b(require)h(a)179
728 y(solution)11 b(whic)o(h)g(will)f(not)i(in)o(tro)q(duce)g(an)o(y)f(new)h
(single)g(p)q(oin)o(ts)f(of)g(failure,)g(force)h(us)g(to)g(mo)q(dify)d(mail)
179 778 y(transfer)16 b(agen)o(ts)f(and)g(user)i(agen)o(ts,)e(or)g(require)h
(c)o(hanges)g(to)f(the)h(op)q(erating)f(system)g(k)o(ernels.)22
b(In)179 828 y(other)15 b(w)o(ords,)g(minim)o(ize)e(the)i(amoun)o(t)e(of)h(w)
o(ork)h(needed)h(b)o(y)e(system-administrators)g(and)g(users.)179
877 y(Our)i(solution)e(is)h(to)h(deliv)o(er)f(mail)e(in)o(to)h(the)i(users')h
(home)d(directories,)i(whic)o(h)g(are)f(exp)q(orted)i(via)179
927 y(NFS[20)o(,)g(25])f(to)i(all)e(of)h(the)h(mac)o(hines)e(on)h(our)h(net)o
(w)o(ork.)29 b(W)m(e)17 b(wrote)h(a)f(small)e(user-lev)o(el)j(NFS)179
977 y(serv)o(er)d(implemen)o(ting)c(a)j(single)f(sym)o(b)q(olic)f(link)h
(that)h(references)j(the)e(home)e(directory)h(of)g(a)g(user,)179
1027 y(either)h(the)g(one)g(who)f(accessed)j(it,)c(or)i(b)o(y)f(name,)f(with)
h(a)g(fallbac)o(k)f(reference)k(in)d(case)h(of)f(failures.)179
1077 y(This)d(enables)h(electronic)g(mail)d(to)i(b)q(e)h(deliv)o(ered)g
(directly)g(in)o(to)e(the)i(user's)g(home)f(directory)m(,)g(whic)o(h)179
1126 y(is)f(already)h(accessible)h(from)d(an)o(y)h(mac)o(hine)g(on)h(the)g
(net)o(w)o(ork.)17 b(Although)10 b(w)o(e)i(ha)o(v)o(e)e(used)i(our)f(serv)o
(er)179 1176 y(primarily)f(for)i(mail)e(deliv)o(ery)j(redirection,)g(it)f
(can)h(b)q(e)g(used)h(to)e(redirect)i(sp)q(o)q(oled)f(faxes,)g(access)h(to)
179 1226 y Fk(/tmp)p Fl(,)e(etc.)75 1345 y Fj(1)56 b(In)n(tro)r(duction)175
1420 y Fl(Electronic)16 b(mail)e(has)i(b)q(ecome)g(one)g(of)f(the)i(ma)r(jor)
d(applications)h(for)h(man)o(y)e(computer)i(net)o(w)o(orks,)g(and)75
1470 y(use)k(of)f(this)g(service)h(is)f(exp)q(ected)j(to)d(increase)h(o)o(v)o
(er)f(time,)g(as)g(net)o(w)o(orks)h(proliferate)f(and)g(b)q(ecome)g(faster.)
75 1520 y(Pro)o(viding)10 b(a)h(con)o(v)o(enien)o(t)h(en)o(vironmen)o(t)f
(for)g(users)i(to)e(read,)h(comp)q(ose,)f(and)g(send)h(electronic)h(mail)c
(has)i(b)q(ecome)75 1570 y(a)j(requiremen)o(t)f(for)h(systems)g
(administrators)e(\(SAs\).)175 1644 y(Widely)j(used)j(metho)q(ds)d(for)i
(handling)e(mail)f(usually)h(require)j(users)f(to)g(b)q(e)g(logged)e(in)o(to)
h(a)g(designated)75 1694 y(\\home")e(mac)o(hine,)f(where)k(their)e(mailb)q(o)
o(x)e(\014les)i(reside.)23 b(Only)15 b(on)g(that)h(one)f(mac)o(hine)f(can)i
(they)f(read)h(newly)75 1744 y(arriv)o(ed)i(mail.)28 b(Since)19
b(users)g(ha)o(v)o(e)f(to)g(b)q(e)h(logged)e(in)o(to)g(that)h(system)g(to)g
(read)h(their)f(mail,)e(they)j(often)f(\014nd)75 1794 y(it)h(con)o(v)o(enien)
o(t)h(to)g(run)g(all)f(of)g(their)h(other)g(pro)q(cesses)j(on)c(that)h
(system)f(as)h(w)o(ell,)g(including)f(memory)e(and)75 1844
y(CPU-in)o(tensiv)o(e)j(jobs.)34 b(F)m(or)19 b(example,)g(in)g(our)g
(departmen)o(t,)h(w)o(e)g(ha)o(v)o(e)f(allo)q(cated)g(and)g(con\014gured)h
(sev)o(eral)75 1893 y(m)o(ulti-pro)q(cessor)11 b(serv)o(ers)i(to)e(handle)g
(suc)o(h)i(demanding)c(CPU)q(/memory)f(applications,)j(but)g(these)i(w)o(ere)
f(under-)75 1943 y(utilized,)k(in)g(large)g(part)g(due)h(to)f(the)g(incon)o
(v)o(enience)i(of)d(not)h(b)q(eing)g(able)g(to)g(read)h(mail)c(on)j(those)h
(mac)o(hines.)75 1993 y(\(No)h(home)e(directories)j(w)o(ere)g(lo)q(cated)f
(on)f(these)i(designated)g(CPU-serv)o(ers,)h(since)f(w)o(e)e(did)h(not)f(w)o
(an)o(t)h(NFS)75 2043 y(service)g(for)f(users')g(home)f(directories)i(to)f
(ha)o(v)o(e)f(to)h(comp)q(ete)g(with)f(in)o(tensiv)o(e)h(jobs.)27
b(A)o(t)17 b(the)g(same)f(time,)g(w)o(e)75 2093 y(discouraged)e(users)i(from)
c(running)h(demanding)g(applications)f(on)i(their)g(home)f(mac)o(hines.\))175
2167 y(Man)o(y)k(di\013eren)o(t)h(solutions)f(ha)o(v)o(e)h(b)q(een)h(prop)q
(osed)f(to)f(allo)o(w)f(users)j(to)f(read)g(their)g(mail)d(on)i(an)o(y)g
(host.)75 2217 y(Ho)o(w)o(ev)o(er,)d(all)e(of)i(these)h(solutions)f(fail)e
(in)h(one)h(or)g(more)f(of)g(sev)o(eral)i(w)o(a)o(ys:)137 2328
y Fi(\017)21 b Fl(they)14 b(in)o(tro)q(duce)h(new)f(single)g(p)q(oin)o(ts)f
(of)h(failure)137 2409 y Fi(\017)21 b Fl(they)14 b(require)h(using)f
(di\013eren)o(t)g(mail)e(transfer)i(agen)o(ts)h(\(MT)m(As\)[15)o(])e(or)h
(user)h(agen)o(ts)g(\(UAs\))137 2490 y Fi(\017)21 b Fl(they)16
b(do)f(not)g(solv)o(e)g(the)h(problem)e(for)h(all)f(cases,)i(i.e.)22
b(the)16 b(solution)e(is)h(only)g(partially)e(successful)k(for)e(a)179
2539 y(particular)e(en)o(vironmen)o(t.)175 2650 y(W)m(e)e(ha)o(v)o(e)h
(designed)g(a)f(simple)g(\014lesystem,)g(called)h(the)g Fh(Home-Link)h(File)f
(System)p Fl(,)g(to)g(pro)o(vide)f(the)i(abilit)o(y)75 2700
y(to)d(deliv)o(er)h(mail)d(to)i(users')h(home)e(directories,)j(without)e(mo)q
(di\014cation)f(to)h(mail-related)e(applications.)16 b(W)m(e)10
b(ha)o(v)o(e)p eop
%%Page: 2 2
bop 75 42 a Fl(endea)o(v)o(ored)15 b(to)e(mak)o(e)f(it)i(as)f(stable)h(as)g
(p)q(ossible.)k(Of)c(great)g(imp)q(ortance)f(to)g(us)h(w)o(as)g(to)f(mak)o(e)
g(sure)h(the)h(HLFS)75 91 y(daemon,)10 b Fk(hlfsd)o Fl(,)h(w)o(ould)g(not)g
(hang)g(under)h(an)o(y)f(circumstances,)h(and)f(w)o(ould)f(tak)o(e)i(the)g
(next-b)q(est)h(action)d(when)75 141 y(faced)16 b(with)g(problems.)24
b(Compared)15 b(to)g(alternativ)o(e)h(metho)q(ds,)g Fk(hlfsd)f
Fl(is)h(a)g(stable,)g(more)f(general)h(solution,)75 191 y(and)g(easier)h(to)f
(install/use.)25 b(In)16 b(fact,)g(in)g(some)f(w)o(a)o(ys,)i(w)o(e)f(ha)o(v)o
(e)g(ev)o(en)h(managed)e(to)h(impro)o(v)o(e)e(the)j(reliabilit)o(y)75
241 y(and)d(securit)o(y)h(of)e(mail)e(service.)175 315 y(Our)k(serv)o(er)i
(implemen)o(ts)c(a)i(small)e(\014lesystem)i(con)o(taining)f(a)h(sym)o(b)q
(olic)f(link)g(to)h(a)g(sub)q(directory)i(of)d(the)75 365 y(in)o(v)o(oking)c
(user's)j(home)e(directory)m(,)i(and)f(named)e(sym)o(b)q(olic)h(links)g(to)h
(users')h(mailb)q(o)o(x)c(\014les.)18 b(An)13 b(example,)d(using)75
415 y(pathnames)j(from)f(our)i(en)o(vironmen)o(t,)e(is)i(depicted)h(in)f
(Figure)g(1.)1128 400 y Fg(1)p 75 477 1800 5 v 75 1424 a @beginspecial
0 @llx 0 @lly 599 @urx 311 @ury 4320 @rwi @setspecial
%%BeginDocument: hlfs-flowchart.eps
/$F2psDict 200 dict def
$F2psDict begin
$F2psDict /mtrx matrix put
/l {lineto} bind def
/m {moveto} bind def
/s {stroke} bind def
/n {newpath} bind def
/gs {gsave} bind def
/gr {grestore} bind def
/clp {closepath} bind def
/graycol {dup dup currentrgbcolor 4 -2 roll mul 4 -2 roll mul
4 -2 roll mul setrgbcolor} bind def
/col-1 {} def
/col0 {0 0 0 setrgbcolor} bind def
/col1 {0 0 1 setrgbcolor} bind def
/col2 {0 1 0 setrgbcolor} bind def
/col3 {0 1 1 setrgbcolor} bind def
/col4 {1 0 0 setrgbcolor} bind def
/col5 {1 0 1 setrgbcolor} bind def
/col6 {1 1 0 setrgbcolor} bind def
/col7 {1 1 1 setrgbcolor} bind def
end
/$F2psBegin {$F2psDict begin /$F2psEnteredState save def} def
/$F2psEnd {$F2psEnteredState restore end} def
$F2psBegin
0 setlinecap 0 setlinejoin
-4.0 329.0 translate 0.900 -0.900 scale
0.500 setlinewidth
n 319 19 m 312 19 312 32 7 arcto 4 {pop} repeat 312 39 350 39 7 arcto 4 {pop} repeat 357 39 357 26 7 arcto 4 {pop} repeat 357 19 319 19 7 arcto 4 {pop} repeat clp gs col-1 s gr
/Times-Roman findfont 12.00 scalefont setfont
317 34 m
gs 1 -1 scale (START) col-1 show gr
/Times-Roman findfont 18.00 scalefont setfont
269 360 m
gs 1 -1 scale (".") col-1 show gr
/Times-Roman findfont 18.00 scalefont setfont
254 335 m
gs 1 -1 scale (Return) col-1 show gr
n 256 320 m 249 320 249 358 7 arcto 4 {pop} repeat 249 365 302 365 7 arcto 4 {pop} repeat 309 365 309 327 7 arcto 4 {pop} repeat 309 320 256 320 7 arcto 4 {pop} repeat clp gs col-1 s gr
n 274 100 m 199 100 l 199 170 l gs col-1 s gr
n 201.000 162.000 m 199.000 170.000 l 197.000 162.000 l gs 2 setlinejoin col-1 s gr
n 394 100 m 479 100 l 479 120 l gs col-1 s gr
n 481.000 112.000 m 479.000 120.000 l 477.000 112.000 l gs 2 setlinejoin col-1 s gr
n 139 210 m 124 210 l 124 320 l gs col-1 s gr
n 126.000 312.000 m 124.000 320.000 l 122.000 312.000 l gs 2 setlinejoin col-1 s gr
n 479 200 m 479 220 l gs col-1 s gr
n 481.000 212.000 m 479.000 220.000 l 477.000 212.000 l gs 2 setlinejoin col-1 s gr
n 539 260 m 569 260 l 569 320 l gs col-1 s gr
n 571.000 312.000 m 569.000 320.000 l 567.000 312.000 l gs 2 setlinejoin col-1 s gr
n 334 40 m 334 60 l gs col-1 s gr
n 336.000 52.000 m 334.000 60.000 l 332.000 52.000 l gs 2 setlinejoin col-1 s gr
n 334 60 m 274 100 l 334 140 l 394 100 l 334 60 l gs col-1 s gr
n 199 170 m 139 210 l 199 250 l 259 210 l 199 170 l gs col-1 s gr
n 479 120 m 419 160 l 479 200 l 539 160 l 479 120 l gs col-1 s gr
n 479 220 m 419 260 l 479 300 l 539 260 l 479 220 l gs col-1 s gr
n 326 319 m 319 319 319 357 7 arcto 4 {pop} repeat 319 364 467 364 7 arcto 4 {pop} repeat 474 364 474 326 7 arcto 4 {pop} repeat 474 319 326 319 7 arcto 4 {pop} repeat clp gs col-1 s gr
n 419 159 m 364 159 l 364 179 l gs col-1 s gr
n 366.000 171.000 m 364.000 179.000 l 362.000 171.000 l gs 2 setlinejoin col-1 s gr
n 306 179 m 299 179 299 212 7 arcto 4 {pop} repeat 299 219 427 219 7 arcto 4 {pop} repeat 434 219 434 186 7 arcto 4 {pop} repeat 434 179 306 179 7 arcto 4 {pop} repeat clp gs col-1 s gr
n 491 319 m 484 319 484 357 7 arcto 4 {pop} repeat 484 364 662 364 7 arcto 4 {pop} repeat 669 364 669 326 7 arcto 4 {pop} repeat 669 319 491 319 7 arcto 4 {pop} repeat clp gs col-1 s gr
n 11 319 m 4 319 4 357 7 arcto 4 {pop} repeat 4 364 237 364 7 arcto 4 {pop} repeat 244 364 244 326 7 arcto 4 {pop} repeat 244 319 11 319 7 arcto 4 {pop} repeat clp gs col-1 s gr
n 259 210 m 279 210 l 279 320 l gs col-1 s gr
n 281.000 312.000 m 279.000 320.000 l 277.000 312.000 l gs 2 setlinejoin col-1 s gr
n 419 259 m 389 259 l 389 319 l gs col-1 s gr
n 391.000 311.000 m 389.000 319.000 l 387.000 311.000 l gs 2 setlinejoin col-1 s gr
/Times-BoldItalic findfont 12.00 scalefont setfont
399 90 m
gs 1 -1 scale (No) col-1 show gr
/Times-BoldItalic findfont 12.00 scalefont setfont
254 90 m
gs 1 -1 scale (Yes) col-1 show gr
/Times-BoldItalic findfont 12.00 scalefont setfont
259 200 m
gs 1 -1 scale (Yes) col-1 show gr
/Times-BoldItalic findfont 12.00 scalefont setfont
124 200 m
gs 1 -1 scale (No) col-1 show gr
/Times-BoldItalic findfont 12.00 scalefont setfont
399 150 m
gs 1 -1 scale (Yes) col-1 show gr
/Times-BoldItalic findfont 12.00 scalefont setfont
489 215 m
gs 1 -1 scale (No) col-1 show gr
/Times-BoldItalic findfont 12.00 scalefont setfont
544 250 m
gs 1 -1 scale (Yes) col-1 show gr
/Times-BoldItalic findfont 12.00 scalefont setfont
404 250 m
gs 1 -1 scale (No) col-1 show gr
/Times-Roman findfont 12.00 scalefont setfont
459 280 m
gs 1 -1 scale (Writable?) col-1 show gr
/Times-Roman findfont 18.00 scalefont setfont
102 335 m
gs 1 -1 scale (Return) col-1 show gr
/Times-Roman findfont 18.00 scalefont setfont
547 335 m
gs 1 -1 scale (Return) col-1 show gr
/Times-Italic findfont 12.00 scalefont setfont
454 164 m
gs 1 -1 scale (uid) col-1 show gr
/Times-Roman findfont 12.00 scalefont setfont
474 164 m
gs 1 -1 scale (== 0?) col-1 show gr
/Times-Roman findfont 12.00 scalefont setfont
192 215 m
gs 1 -1 scale (==) col-1 show gr
/Times-Roman findfont 18.00 scalefont setfont
369 335 m
gs 1 -1 scale (Return) col-1 show gr
/Times-BoldItalic findfont 18.00 scalefont setfont
487 355 m
gs 1 -1 scale (~USER) col-1 show gr
/Courier-Bold findfont 18.00 scalefont setfont
549 354 m
gs 1 -1 scale (.mailspool/) col-1 show gr
/Courier-Bold findfont 18.00 scalefont setfont
542 354 m
gs 1 -1 scale (/) col-1 show gr
/Courier findfont 11.00 scalefont setfont
461 264 m
gs 1 -1 scale (.mailspool/) col-1 show gr
/Courier findfont 12.00 scalefont setfont
459 263 m
gs 1 -1 scale (/) col-1 show gr
/Times-Italic findfont 12.00 scalefont setfont
424 264 m
gs 1 -1 scale (~USER) col-1 show gr
/Courier findfont 12.00 scalefont setfont
207 215 m
gs 1 -1 scale (home) col-1 show gr
/Times-Roman findfont 12.00 scalefont setfont
239 215 m
gs 1 -1 scale (?) col-1 show gr
/Times-Italic findfont 12.00 scalefont setfont
155 215 m
gs 1 -1 scale (NAME) col-1 show gr
/Times-Roman findfont 18.00 scalefont setfont
341 194 m
gs 1 -1 scale (Return) col-1 show gr
/Times-Italic findfont 12.00 scalefont setfont
284 102 m
gs 1 -1 scale (gid) col-1 show gr
/Times-Roman findfont 12.00 scalefont setfont
302 103 m
gs 1 -1 scale (== HLFS_GID?) col-1 show gr
/Times-Roman findfont 12.00 scalefont setfont
474 249 m
gs 1 -1 scale (Is) col-1 show gr
/Courier-Bold findfont 18.00 scalefont setfont
322 354 m
gs 1 -1 scale (/var/alt_mail/) col-1 show gr
/Times-BoldItalic findfont 18.00 scalefont setfont
189 354 m
gs 1 -1 scale (NAME) col-1 show gr
/Times-BoldItalic findfont 18.00 scalefont setfont
6 353 m
gs 1 -1 scale (~NAME) col-1 show gr
/Courier-Bold findfont 18.00 scalefont setfont
69 353 m
gs 1 -1 scale (/) col-1 show gr
/Courier-Bold findfont 18.00 scalefont setfont
73 353 m
gs 1 -1 scale (.mailspool/) col-1 show gr
/Courier-Bold findfont 18.00 scalefont setfont
300 214 m
gs 1 -1 scale (/.mailspool/) col-1 show gr
$F2psEnd
%%EndDocument
@endspecial 371 1515 a Fl(Figure)g(1:)j Fk(Hlfsd)c Fl(resolving)h(the)g
Fh(NAME)g Fl(comp)q(onen)o(t)f(of)h Fk(/mail/)p Fh(NAME)p 75
1565 V 175 1707 a Fl(The)c Fk(hlfsd)f Fl(serv)o(er)j(\014nds)f(out)f(the)h
Fh(uid)782 1692 y Fg(2)810 1707 y Fl(of)f(the)h(pro)q(cess)h(that)e(is)g
(accessing)h(its)g(moun)o(t)d(p)q(oin)o(t,)i(and)g(resolv)o(es)75
1756 y(the)j(pathname)e(comp)q(onen)o(t)g Fk(home)g Fl(as)i(a)f(sym)o(b)q
(olic)e(link)h(to)h(a)g(sub)q(directory)h(within)f(the)h(home)e(directory)h
(giv)o(en)75 1806 y(b)o(y)18 b(the)h Fh(uid)p Fl('s)f(en)o(try)h(in)e(the)i
(passw)o(ord)g(\014le.)30 b(See)19 b(T)m(able)f(1.)30 b(If)18
b(the)h Fh(gid)f Fl(of)f(the)i(pro)q(cess)h(that)e(attempts)g(to)75
1856 y(access)c(a)f(mailb)q(o)o(x)d(\014le)i(is)h(a)f(sp)q(ecial)h(one)g
(\(called)f(HLFS)p 976 1856 13 2 v 16 w(GID\),)f(then)j(the)f(serv)o(er)h
(maps)d(the)j(name)d(of)h(the)h(next)p 1795 1863 80 2 v 75
1906 a(pathname)h(comp)q(onen)o(t)h(directly)h(to)g(the)g(user's)g(mailb)q(o)
o(x)d(\(T)m(able)i(2\).)23 b(This)15 b(is)h(necessary)h(so)f(that)g(access)h
(to)75 1956 y(a)d(mailb)q(o)o(x)e(\014le)i(b)o(y)h(users)h(other)f(than)g
(the)g(o)o(wner)g(can)f(succeed.)23 b(The)15 b(serv)o(er)h(has)f(safet)o(y)f
(features)i(in)e(case)i(of)75 2006 y(failures)d(suc)o(h)i(as)f(h)o(ung)g
(\014lesystems)g(or)g(home)e(directory)j(\014lesystems)f(that)g(are)g
(inaccessible)h(or)f(full.)175 2080 y(On)20 b(most)f(of)g(our)h(mac)o(hines,)
g(mail)e(gets)j(deliv)o(ered)f(to)g(the)h(directory)f Fk(/var/spool/mail)p
Fl(.)1720 2065 y Fg(3)1772 2080 y Fl(Man)o(y)75 2130 y(programs,)12
b(including)g(UAs,)i(dep)q(end)h(on)e(that)h(path.)k Fk(Hlfsd)12
b Fl(creates)k(a)d(directory)h Fk(/mail)p Fl(,)f(and)g(moun)o(ts)f(itself)75
2180 y(on)18 b(top)h(of)f(that)h(directory)m(.)32 b Fk(Hlfsd)18
b Fl(implem)o(en)o(ts)f(the)i(path)g(name)e(comp)q(onen)o(t)h(called)g
Fk(home)p Fl(,)h(p)q(oin)o(ting)e(to)75 2230 y(a)f(sub)q(directory)j(of)d
(the)h(user's)h(home)e(directory)m(.)27 b(W)m(e)16 b(ha)o(v)o(e)h(made)e
Fk(/var/spool/mail)f Fl(a)i(sym)o(b)q(olic)f(link)h(to)75 2280
y Fk(/mail/home)p Fl(,)d(so)i(that)g(accessing)h Fk(/var/spool/mail)c
Fl(actually)i(causes)i(access)h(to)e(a)g(sub)q(directory)h(within)e(a)75
2329 y(user's)h(home)e(directory)m(.)175 2404 y(The)20 b(rest)h(of)f(this)g
(pap)q(er)g(is)g(organized)g(as)g(follo)o(ws.)35 b(Section)21
b(2)e(discusses)j(in)e(detail)f(the)i(problems)75 2454 y(and)e(limitations)d
(of)j(other)h(home-mai)o(l-deli)o(v)o(ery)d(metho)q(ds.)34
b(Section)19 b(3)g(detail)g(the)h(design)f(of)g(the)h Fh(Home-)p
75 2488 720 2 v 121 2515 a Ff(1)139 2527 y Fe(In)10 b(Figure)g(1,)h
Fd(~)p Fc(NAME)h Fe(is)f(the)g(home)f(directory)e(of)j(the)g(user)f(whose)h
(user-name)d(is)j Fc(NAME)p Fe(;)i Fd(~)p Fc(USER)e Fe(is)h(the)e(home)g
(directory)75 2566 y(of)h(the)g(user)g(with)g(user-id)f Fc(uid)p
Fe(.)121 2594 y Ff(2)139 2606 y Fe(NFS)h(uses)g(e\013ectiv)o(e)e
Fc(uids)p Fe(.)121 2634 y Ff(3)139 2646 y Fe(Other)i(directories)f(used)h
(for)g(this)h(purp)q(ose)e(are)h Fd(/var/mail)f Fe(on)h(SVR4,)h
Fd(/usr/mail)d Fe(on)j(other)f(System)f(V-based)h(op)q(erating-)75
2685 y(systems,)f(and)g Fd(/usr/spool/)o(mai)o(l)f Fe(on)i(BSD-based)e
(systems.)965 2825 y Fl(2)p eop
%%Page: 3 3
bop 75 4 1800 5 v 229 58 a Fl(Conditions:)17 b Fh(uid)p Fl(=)p
Fk(ezk)p Fl(,)c Fh(gid)p Fi(6)p Fl(=HLFS)p 828 58 13 2 v 16
w(GID,)f(and)i Fk(/users/ezk/.mailsp)o(ool/)c Fl(is)k(writable.)p
157 77 1636 2 v 156 127 2 50 v 165 127 V 190 112 a Fm(Resolving)p
453 127 V 1088 127 V 1784 127 V 1793 127 V 156 177 V 165 177
V 190 162 a(comp)q(onen)o(t)p 453 177 V 58 w(P)o(athname)g(left)p
1088 177 V 337 w(V)l(alue)h(if)g(sym)o(b)q(olic)f(link)p 1784
177 V 1793 177 V 157 179 1636 2 v 157 189 V 156 238 2 50 v
165 238 V 190 223 a Fk(/)p 453 238 V 267 w(var/mail/)p Fh(NAME)p
1088 238 V 1784 238 V 1793 238 V 157 240 1636 2 v 156 290 2
50 v 165 290 V 190 275 a Fk(var)p Fl(/)p 453 290 V 202 w Fk(mail/)p
Fh(NAME)p 1088 290 V 1784 290 V 1793 290 V 157 291 1636 2 v
156 341 2 50 v 165 341 V 190 326 a Fk(mail)p Fl(@)p 453 341
V 169 w Fk(/mail/home/)p Fh(NAME)p 1088 341 V 265 w Fk(mail)p
Fl(@)g Fi(\))f Fk(/mail/home)p 1784 341 V 1793 341 V 157 343
1636 2 v 156 393 2 50 v 165 393 V 190 378 a(/)p 453 393 V 267
w(mail/home/)p Fh(NAME)p 1088 393 V 1784 393 V 1793 393 V 157
394 1636 2 v 156 444 2 50 v 165 444 V 190 429 a Fk(mail)p Fl(/)p
453 444 V 180 w Fk(home/)p Fh(NAME)p 1088 444 V 1784 444 V
1793 444 V 157 446 1636 2 v 156 496 2 50 v 165 496 V 190 481
a Fk(home)p Fl(@)p 453 496 V 169 w Fh(NAME)p 1088 496 V 507
w Fk(home)p Fl(@)h Fi(\))f Fk(/users/ezk/.mailsp)o(ool)p 1784
496 V 1793 496 V 157 497 1636 2 v 156 547 2 50 v 165 547 V
190 532 a(/)p 453 547 V 267 w(users/ezk/.mailsp)o(ool/)o Fh(NAME)p
1088 547 V 1784 547 V 1793 547 V 157 549 1636 2 v 156 599 2
50 v 165 599 V 190 584 a Fk(users)p Fl(/)p 453 599 V 158 w
Fk(ezk/.mailspool/)p Fh(NA)o(ME)p 1088 599 V 1784 599 V 1793
599 V 157 600 1636 2 v 156 650 2 50 v 165 650 V 190 635 a Fk(ezk)p
Fl(/)p 453 650 V 202 w Fk(.mailspool/)p Fh(NAME)p 1088 650
V 1784 650 V 1793 650 V 157 652 1636 2 v 156 702 2 50 v 165
702 V 190 687 a Fk(.mailspool)p Fl(/)p 453 702 V 48 w Fh(NAME)p
1088 702 V 1784 702 V 1793 702 V 157 703 1636 2 v 156 753 2
50 v 165 753 V 190 738 a(NAME)p 453 753 V 1088 753 V 1784 753
V 1793 753 V 157 755 1636 2 v 290 829 a Fl(T)m(able)g(1:)18
b(Resolving)13 b Fk(/var/mail/)p Fh(NAME)f Fl(to)h Fk(/users/ezk/.mailspo)o
(ol/)p Fh(NAME)p 75 879 1800 5 v 75 1000 a(Link)19 b(File)f(System)h
Fl(and)f(Section)g(4)g(describ)q(es)i(the)f(implemen)o(tation)c(of)i
Fk(hlfsd)o Fl(.)31 b(Section)19 b(5)f(ev)n(aluates)g(our)75
1050 y(implemen)o(tatio)o(n.)e(Related)d(systems,)h(conclusions,)g(future)g
(directions,)g(and)g(alternativ)o(e)g(uses)h(are)f(describ)q(ed)75
1100 y(in)f(Sections)i(6)f(and)f(7.)75 1208 y Fj(2)56 b(Bac)n(kground)175
1283 y Fl(This)16 b(section)h(pro)o(vides)f(an)g(in-depth)g(discussion)h(of)f
(wh)o(y)g(a)o(v)n(ailable)d(metho)q(ds)j(for)g(deliv)o(ering)g(mail)d(to)75
1333 y(home)g(directories)i(are)f(not)g(as)g(go)q(o)q(d)f(as)h(the)h(one)f
(used)h(b)o(y)e Fk(hlfsd)o Fl(.)75 1441 y Fj(2.1)56 b(Single-Host)17
b(Mail)h(Sp)r(o)r(ol)g(Directory)175 1516 y Fl(The)d(most)e(common)f(metho)q
(d)i(for)g(mail)e(deliv)o(ery)i(is)h(for)f(mail)e(to)i(b)q(e)h(app)q(ended)h
(to)f(a)f(mailb)q(o)o(x)e(\014le)i(in)g(a)75 1566 y(standard)d(sp)q(o)q(ol)f
(directory)h(on)f(the)h(designated)g(\\mail)c(home")i(mac)o(hine)g(of)h(the)h
(user.)17 b(The)11 b(greatest)h(adv)n(an)o(tage)75 1616 y(of)i(this)h(metho)q
(d)f(is)g(that)h(it)f(is)h(the)g(default)f(metho)q(d)g(most)g(v)o(endors)h
(pro)o(vide)g(with)f(their)h(systems,)g(th)o(us)g(v)o(ery)75
1665 y(little)h(\(if)g(an)o(y\))g(con\014guration)g(is)h(required)g(on)f(the)
i(SA's)e(part.)26 b(All)16 b(they)h(need)h(to)e(set)i(up)e(are)h(mail)d
(aliases)75 1715 y(directing)g(mail)c(to)j(the)h(host)g(on)f(whic)o(h)g(the)h
(user's)h(mailb)q(o)o(x)10 b(\014le)k(is)f(assigned.)18 b(\(Otherwise,)d
(mail)10 b(is)j(deliv)o(ered)75 1765 y(lo)q(cally)m(,)f(and)h(users)j(\014nd)
e(mailb)q(o)o(xes)d(on)j(man)o(y)e(mac)o(hines.\))175 1840
y(As)k(users)i(b)q(ecome)e(more)f(sophisticated,)i(and)f(aided)g(b)o(y)g
(windo)o(wing)f(systems,)i(they)f(\014nd)h(themselv)o(es)75
1890 y(logging)12 b(in)i(on)g(m)o(ultiple)e(hosts)j(at)f(once,)g(p)q
(erforming)f(sev)o(eral)i(tasks)g(concurren)o(tly)m(.)k(They)c(ask)f(to)g(b)q
(e)h(able)f(to)75 1939 y(read)g(their)h(mail)c(on)j(an)o(y)f(host)h(on)g(the)
g(net)o(w)o(ork,)g(not)g(just)g(the)g(one)g(designated)h(as)f(their)g(\\mail)
d(home.")75 2047 y Fj(2.2)56 b(Cen)n(tralized)18 b(Mail)g(Sp)r(o)r(ol)f
(Directory)175 2122 y Fl(A)f(p)q(opular)g(metho)q(d)f(for)h(pro)o(viding)f
(mail)f(readabilit)o(y)h(from)g(an)o(y)h(host)g(is)g(to)h(ha)o(v)o(e)f(all)f
(mail)e(deliv)o(ered)75 2172 y(to)18 b(a)g(mail)e(sp)q(o)q(ol)i(directory)h
(on)f(a)g(designated)h(\\mail-serv)o(er")e(whic)o(h)h(is)g(exp)q(orted)h(via)
f(NFS)g(to)h(all)e(of)g(the)75 2222 y(hosts)f(on)g(the)g(net)o(w)o(ork.)24
b(Con\014guring)15 b(suc)o(h)h(a)f(system)h(is)f(relativ)o(ely)g(easy)m(.)24
b(On)16 b(most)e(systems,)i(the)g(bulk)g(of)75 2272 y(the)i(w)o(ork)f(is)h(a)
f(one-time)f(addition)g(to)i(one)f(or)h(t)o(w)o(o)f(con\014guration)g
(\014les)h(in)f Fk(/etc)p Fl(.)28 b(The)17 b(\014le-serv)o(er's)i(sp)q(o)q
(ol)75 2322 y(directory)d(is)f(then)h(hard-moun)o(ted)e(across)i(ev)o(ery)g
(mac)o(hine)e(on)h(the)h(lo)q(cal)e(net)o(w)o(ork.)22 b(In)16
b(small)d(en)o(vironmen)o(ts)75 2371 y(with)f(only)g(a)g(handful)g(of)g
(hosts)h(this)f(can)h(b)q(e)g(an)f(acceptable)i(solution.)i(In)d(our)f
(departmen)o(t,)h(with)f(a)g(couple)h(of)75 2421 y(h)o(undred)j(activ)o(e)f
(hosts)h(and)f(thousands)g(of)g(mail)d(messages)j(pro)q(cessed)j(daily)m(,)13
b(this)i(w)o(as)g(deemed)g(completely)75 2471 y(unacceptable,)g(as)f(it)f(in)
o(tro)q(duced)i(sev)o(eral)f(t)o(yp)q(es)h(of)e(problems:)137
2587 y Fi(\017)21 b Fm(Scalabili)o(t)o(y)12 b(and)i(P)o(erformance)p
Fl(:)h(as)d(more)g(and)h(more)f(mac)o(hines)g(get)h(added)g(to)g(the)g(net)o
(w)o(ork,)g(more)179 2637 y(mail)7 b(tra\016c)j(has)g(to)g(go)f(o)o(v)o(er)h
(NFS)g(to)g(and)g(from)e(the)j(mail-serv)o(er.)k(Users)c(lik)o(e)f(to)f(run)i
(mail-w)o(a)o(tc)o(hers[2)n(,)f(7)o(])179 2687 y(and)g(read)i(their)f(mail)d
(often.)17 b(The)11 b(stress)i(on)d(the)i(shared)g(infrastructure)g
(increases)g(with)f(ev)o(ery)g(user)h(and)965 2825 y(3)p eop
%%Page: 4 4
bop 179 42 a Fl(host)14 b(added;)f(loads)g(on)h(the)g(mail)d(serv)o(er)k(w)o
(ould)e(most)f(certainly)i(b)q(e)g(high)f(since)i(all)d(mail)f(deliv)o(ery)j
(go)q(es)179 91 y(through)i(that)h(one)g(mac)o(hine.)672 76
y Fg(4)715 91 y Fl(This)g(leads)g(to)f(lo)o(w)o(er)g(reliabilit)o(y)f(and)h
(p)q(erformance.)26 b(T)m(o)16 b(reduce)i(the)179 141 y(n)o(um)o(b)q(er)11
b(of)g(concurren)o(t)j(connections)f(b)q(et)o(w)o(een)g(clien)o(ts)f(and)g
(the)h(serv)o(er)g(host,)f(some)f(SAs)i(ha)o(v)o(e)e(resorted)179
191 y(to)16 b(automoun)o(ting)e(the)j(mail-sp)q(o)q(ol)c(directory)m(.)26
b(But)17 b(this)g(solution)e(only)h(mak)o(es)f(things)h(w)o(orse:)24
b(since)179 241 y(users)15 b(often)e(run)h(mail)d(w)o(atc)o(hers,)j(and)f
(man)o(y)e(p)q(opular)i(applications)g(suc)o(h)h(as)f Fk(trn)p
Fl(,)g Fk(emacs)p Fl(,)f Fk(csh)g Fl(or)i Fk(ksh)179 291 y
Fl(c)o(hec)o(k)h(p)q(erio)q(dically)f(for)g(new)h(mail,)d(the)j(automoun)o
(ted)e(directory)i(w)o(ould)f(b)q(e)h(e\013ectiv)o(ely)h(p)q(ermanen)o(tly)
179 340 y(moun)o(ted.)g(If)c(it)g(gets)i(unmoun)o(ted)d(automatically)e(b)o
(y)k(the)g(automoun)o(ter)e(program[3)n(],)h(it)g(is)g(most)f(lik)o(ely)179
390 y(to)17 b(get)h(moun)o(ted)e(shortly)i(afterw)o(ards,)g(consuming)e(more)
h(I/O)g(resources)j(b)o(y)d(the)h(constan)o(t)g(cycle)h(of)179
440 y Fk(mount)13 b Fl(and)g Fk(umount)g Fl(calls.)137 523
y Fi(\017)21 b Fm(Reliabil)o(i)o(t)o(y)p Fl(:)16 b(the)f(mail-serv)o(er)f
(host)h(and)f(its)h(net)o(w)o(ork)f(connectivit)o(y)h(m)o(ust)f(b)q(e)h(v)o
(ery)g(reliable.)k(W)m(orse,)179 573 y(since)g(the)g(sp)q(o)q(ol)f(directory)
h(has)f(to)g(b)q(e)h(hard-moun)o(ted,)1117 558 y Fg(5)1153
573 y Fl(man)o(y)d(pro)q(cesses)21 b(whic)o(h)d(access)i(the)f(sp)q(o)q(ol)
179 623 y(directory)f(\(v)n(arious)e(shells,)i Fk(login)p Fl(,)f
Fk(emacs)p Fl(,)f(etc.\))30 b(w)o(ould)16 b(b)q(e)i(h)o(ung)f(as)g(long)g(as)
g(connectivit)o(y)g(to)g(the)179 672 y(mail-serv)o(er)9 b(is)h(sev)o(ered.)19
b(T)m(o)10 b(impro)o(v)o(e)f(reliabilit)o(y)m(,)f(SAs)j(ma)o(y)e(c)o(ho)q
(ose)i(to)f(bac)o(kup)h(the)g(mail-serv)o(er's)e(sp)q(o)q(ol)179
722 y(partition)16 b(sev)o(eral)h(times)g(a)f(da)o(y)m(.)27
b(This)17 b(ma)o(y)e(mak)o(e)g(things)i(w)o(orse)h(since)f(reading)g(or)g
(deliv)o(ering)g(mail)179 772 y(while)e(bac)o(kups)h(are)g(in)f(progress)i
(ma)o(y)d(cause)j(bac)o(kups)f(to)f(b)q(e)i(inconsisten)o(t;)f(more)f(bac)o
(kups)h(consume)179 822 y(more)d(bac)o(kup-media)f(resources,)k(and)d
(increase)j(the)e(load)f(on)h(the)g(mail-serv)o(er)f(host.)75
946 y Fj(2.3)56 b(Distributed)17 b(Mail)h(Sp)r(o)r(ol)g(Service)175
1022 y Fl(Despite)d(the)f(existence)i(of)e(a)g(few)g(systems)h(that)f(supp)q
(ort)h(deliv)o(ery)f(to)h(users')g(home)e(directories,)1763
1007 y Fg(6)1797 1022 y Fl(mail)75 1071 y(deliv)o(ery)18 b(to)f(home)g
(directories)i(hasn't)e(caugh)o(t)h(on.)29 b(W)m(e)17 b(b)q(eliev)o(e)i(the)f
(main)d(reason)k(is)e(that)h(there)h(are)f(to)q(o)75 1121 y(man)o(y)12
b(programs)h(that)h(\\kno)o(w")g(where)h(mailb)q(o)o(x)c(\014les)k(reside.)20
b(Besides)15 b(the)g(ob)o(vious)f(\(the)h(deliv)o(ery)f(program)75
1171 y Fk(/bin/mail)9 b Fl(and)i(mail)e(readers)k(lik)o(e)d
Fk(/usr/ucb/Mail)p Fl(,)f Fk(mush)p Fl(,)h Fk(mm)p Fl(,)h(etc.\),)h(other)g
(programs)e(that)h(kno)o(w)g(mailb)q(o)o(x)75 1221 y(lo)q(cation)g(are)g
Fk(login)p Fl(,)g Fk(from)p Fl(,)g(almost)e(ev)o(ery)j(shell,)g
Fk(xbiff)p Fl(,)e Fk(xmailbox)p Fl(,)g(and)h(ev)o(en)h(some)f(programs)f(not)
i(directly)75 1271 y(related)h(to)g(mail,)c(suc)o(h)14 b(as)f
Fk(emacs)e Fl(and)i Fk(trn)p Fl(.)k(Although)12 b(some)f(of)h(these)i
(programs)e(can)h(b)q(e)g(con\014gured)g(to)g(lo)q(ok)75 1320
y(in)18 b(di\013eren)o(t)h(directories)g(with)f(the)g(use)h(of)e(en)o
(vironmen)o(t)g(v)n(ariables)h(and)g(other)g(resources,)j(man)o(y)16
b(of)i(them)75 1370 y(cannot.)g(The)d(o)o(v)o(erall)d(p)q(orting)i(w)o(ork)f
(is)h(signi\014can)o(t.)175 1445 y(Other)g(metho)q(ds)f(that)g(ha)o(v)o(e)g
(y)o(et)g(to)g(catc)o(h)h(on)f(require)h(the)g(use)g(of)e(a)h(sp)q(ecial)h
(mail-reading)c(serv)o(er,)k(suc)o(h)75 1495 y(as)g(IMAP[16)o(])f(or)h(POP)q
([17)o(].)j(The)d(main)e(disadv)n(an)o(tage)h(of)g(these)i(systems)f(is)f
(that)h(UAs)g(need)h(to)e(b)q(e)h(mo)q(di\014ed)75 1545 y(to)i(use)h(these)g
(services)h(|)d(a)h(long)f(and)h(in)o(v)o(olv)o(ed)f(task.)24
b(That)16 b(is)g(wh)o(y)f(they)i(are)f(not)g(p)q(opular)g(at)g(this)g(time.)
75 1594 y(See)f(Section)f(6.1)f(for)h(more)e(details.)175 1669
y(Sev)o(eral)h(other)i(ideas)e(ha)o(v)o(e)h(b)q(een)g(prop)q(osed)h(and)e(ev)
o(en)h(used)h(in)e(v)n(arious)g(en)o(vironmen)o(ts.)k(None)d(of)f(them)75
1719 y(is)g(robust.)18 b(They)c(are)g(mostly)d(v)o(ery)j(sp)q(ecialized,)f
(in\015exible,)g(and)g(do)g(not)g(extend)h(to)f(the)h(general)f(case.)19
b(Some)75 1769 y(of)13 b(the)i(ideas)f(are)g(plain)f(bad,)g(p)q(oten)o
(tially)g(leading)g(to)h(lost)f(or)h(corrupt)h(mail:)137 1885
y Fi(\017)21 b Fm(automoun)o(ter)o(s)p Fl(:)14 b(using)f(an)f(automoun)o(ter)
f(suc)o(h)i(as)g Fk(amd)p Fl([13)n(])f(to)g(pro)o(vide)g(a)g(set)i(of)d(sym)o
(b)q(olic)g(links)h(from)179 1935 y(the)h(normal)e(sp)q(o)q(ol)i(directory)g
(to)g(user)h(home)d(directories)j(is)f(not)g(su\016cien)o(t.)18
b(UAs)13 b(rename,)f(unlink,)g(and)179 1985 y(recreate)20 b(the)f(mailb)q(o)o
(x)c(as)k(a)f(regular)g(\014le,)h(therefore)g(it)f(m)o(ust)f(b)q(e)i(a)f
(real)g(\014le,)h(not)f(a)g(sym)o(b)q(olic)e(link.)179 2034
y(F)m(urthermore,)d(it)g(m)o(ust)f(reside)j(in)e(a)g(real)g(directory)i(whic)
o(h)e(is)g(writable)g(b)o(y)h(the)g(UAs)g(and)f(MT)m(As.)18
b(This)179 2084 y(metho)q(d)c(ma)o(y)g(also)h(require)h(p)q(opulating)e
Fk(/var/spool/mail)e Fl(with)j(sym)o(b)q(olic)f(links)h(and)g(making)e(sure)
179 2134 y(they)j(are)g(up)q(dated.)24 b(Making)15 b Fk(amd)g
Fl(manage)f(that)i(directory)g(directly)g(fails,)f(since)i(man)o(y)c(v)n
(arious)i(lo)q(c)o(k)179 2184 y(\014les)g(need)g(to)g(b)q(e)g(managed)e(as)h
(w)o(ell)g(\(see)i(Section)f(4.6\).)k(Also,)14 b Fk(amd)g Fl(do)q(es)h(not)g
(pro)o(vide)f(all)g(of)g(the)h(NFS)179 2234 y(op)q(erations)f(whic)o(h)g(are)
g(required)h(to)f(write)g(mail)d(suc)o(h)k(as)f Fh(write)p
Fl(,)e Fh(cr)n(e)n(ate)p Fl(,)h Fh(r)n(emove)p Fl(,)g(and)g
Fh(unlink)p Fl(.)137 2317 y Fi(\017)21 b Fm($MAIL)p Fl(:)15
b(setting)g(this)h(v)n(ariable)e(to)h(an)h(automoun)o(ted)e(directory)i(p)q
(oin)o(ting)e(to)h(the)h(user's)g(mail)d(sp)q(o)q(ol)179 2367
y(host)g(only)f(solv)o(es)i(the)f(problem)f(for)h(those)g(programs)f(whic)o
(h)h(kno)o(w)f(and)h(use)h($MAIL.)f(Man)o(y)f(programs)179
2416 y(don't,)j(therefore)i(this)e(solution)g(is)g(partial)g(and)g(of)g
(limited)e(\015exibilit)o(y)m(.)21 b(Also,)15 b(it)g(requires)i(the)f(SAs)g
(or)179 2466 y(the)e(users)i(to)d(set)i(it)f(themselv)o(es)g(|)f(an)h(added)g
(lev)o(el)f(of)h(incon)o(v)o(enience)g(and)g(p)q(ossible)g(failures.)p
75 2501 720 2 v 121 2528 a Ff(4)139 2539 y Fe(Deliv)o(ery)8
b(via)i(NFS-moun)o(ted)e(\014lesystems)h(ma)o(y)g(require)g(usage)h(of)g
Fd(rpc.lockd)e Fe(and)i Fd(rpc.statd)d Fe(to)k(pro)o(vide)d(distributed)g
(\014le-)75 2579 y(lo)q(c)o(king,)j(b)q(oth)g(of)i(whic)o(h)f(are)g(widely)f
(regarded)g(as)h(unstable)f(and)g(unreliable.)16 b(F)m(urthermore,)10
b(this)i(will)h(degrade)d(p)q(erformance)o(,)75 2618 y(as)h(lo)q(cal)g(pro)q
(cesses)e(as)i(w)o(ell)h(as)f(remote)f Fd(nfsd)g Fe(pro)q(cesses)g(are)h(k)o
(ept)f(busy)m(.)121 2646 y Ff(5)139 2658 y Fe(No)h(SA)h(in)f(their)g(righ)o
(t)f(minds)g(w)o(ould)h(soft-moun)o(t)e(read/write)g(partitions)g(|)j(the)f
(c)o(hances)e(for)i(data)g(loss)g(are)g(to)q(o)f(great.)121
2686 y Ff(6)139 2697 y Fe(AIX)i(1.2's)e Fd(bellmail)f Fe(for)i(the)g(IBM)h
(PS/2)p Fc(s)p Fe([9)n(],)f Fd(/bin/mail)e Fe(on)i(SunOS)f(for)h(the)g(Sun)f
(386i)h(mac)o(hines,)e(and)h Fd(zmailer)p Fe([27)m(].)965 2825
y Fl(4)p eop
%%Page: 5 5
bop 137 42 a Fi(\017)21 b Fm(/bin/mail)o Fl(:)h(using)17 b(a)g(di\013eren)o
(t)h(mail)d(deliv)o(ery)i(agen)o(t)g(could)g(b)q(e)h(the)g(solution.)27
b(One)18 b(suc)o(h)g(example)179 91 y(is)h Fk(hdmail)p Fl([6)n(].)34
b(Ho)o(w)o(ev)o(er,)21 b Fk(hdmail)d Fl(still)h(requires)h(mo)q(difying)d
(all)h(UAs,)j(the)f(MT)m(A's)f(con\014guration,)179 141 y(installing)c(new)i
(daemons,)e(and)i(c)o(hanging)e(login)h(scripts.)27 b(This)16
b(mak)o(es)g(the)h(system)f(less)h(upgradable)179 191 y(or)f(compatible)f
(with)i(others,)h(and)e(adds)h(one)g(more)f(complicated)f(system)h(for)h(SAs)
g(to)f(deal)h(with.)26 b(It)179 241 y(is)14 b(not)g(a)g(complete)g(solution)g
(b)q(ecause)i(it)e(still)f(requires)j(eac)o(h)f(user)g(ha)o(v)o(e)g(their)f
($MAIL)h(v)n(ariable)e(setup)179 291 y(correctly)m(,)h(and)g(that)g(ev)o(ery)
g(program)e(use)j(this)f(v)n(ariable.)75 415 y Fj(2.3.1)55
b(Wh)n(y)19 b(Deliv)n(er)e(In)n(to)i(the)f(Home)f(Directory?)175
490 y Fl(There)g(are)f(sev)o(eral)g(ma)r(jor)e(reasons)j(wh)o(y)f(SAs)g(migh)
o(t)e(w)o(an)o(t)h(to)h(deliv)o(er)g(mail)d(directly)j(in)o(to)f(the)i
(users')75 540 y(home)c(directories:)137 656 y Fi(\017)21 b
Fm(Lo)q(cation)p Fl(:)16 b(man)o(y)c(mail)g(readers)j(need)g(to)f(mo)o(v)o(e)
e(mail)f(from)h(the)j(sp)q(o)q(ol)e(directory)i(to)f(the)g(user's)h(home)179
706 y(directory)m(.)j(It)13 b(sp)q(eeds)h(up)f(this)g(op)q(eration)g(if)e
(the)j(t)o(w)o(o)e(are)h(on)g(the)g(same)f(\014lesystem.)18
b(If)12 b(for)g(some)g(reason)179 756 y(the)19 b(user's)g(home)e(directory)i
(is)g(inaccessible,)h(it)e(isn't)g(that)g(useful)g(to)h(b)q(e)g(able)f(to)g
(read)h(mail,)d(since)179 806 y(there)f(is)e(no)g(place)h(to)f(mo)o(v)o(e)f
(it)i(to.)737 791 y Fg(7)773 806 y Fl(In)f(some)g(cases,)i(trying)e(to)g(mo)o
(v)o(e)f(mail)f(to)i(a)h(non-existen)o(t)g(or)f(h)o(ung)179
856 y(\014lesystem)g(ma)o(y)f(result)j(in)f(mail)d(loss.)137
939 y Fi(\017)21 b Fm(Distrib)o(uti)o(on)o Fl(:)27 b(ha)o(ving)19
b(all)f(mail)f(sp)q(o)q(ol)j(directories)h(spread)f(among)e(the)i(man)o(y)e
(more)h(\014lesystems)179 988 y(minim)o(izes)14 b(the)j(c)o(hances)h(that)f
(complete)f(en)o(vironmen)o(ts)g(will)f(grind)h(to)g(a)g(halt)g(when)h(a)f
(single)g(serv)o(er)179 1038 y(is)e(do)o(wn.)19 b(It)c(do)q(es)g(increase)g
(the)g(c)o(hance)h(that)e(there)i(will)d(b)q(e)i(someone)f(who)g(is)g(not)g
(able)g(to)h(read)g(their)179 1088 y(mail)d(when)j(a)g(mac)o(hine)e(is)i(do)o
(wn,)f(but)h(that)g(is)g(usually)f(preferred)j(to)d(ha)o(ving)g(no)h(one)g(b)
q(e)g(able)g(to)f(read)179 1138 y(their)j(mail)e(b)q(ecause)k(a)d(cen)o
(tralized)i(mail)d(serv)o(er)k(is)d(do)o(wn.)28 b(The)17 b(problem)f(of)h
(losing)f(some)g(mail)e(due)179 1188 y(to)i(the)h(\(presumably\))f(higher)g
(c)o(hances)i(that)e(a)g(user's)i(mac)o(hine)d(is)h(do)o(wn)g(is)g(minimi)o
(zed)e(in)i(HLFS)h(as)179 1237 y(describ)q(ed)e(in)f(Sections)h(4.3)d(and)i
(4.4.)137 1320 y Fi(\017)21 b Fm(Securit)o(y)p Fl(:)e(deliv)o(ering)d(mail)d
(to)j(users')g(home)f(directories)i(has)f(another)h(adv)n(an)o(tage)e(|)g
(enhanced)i(se-)179 1370 y(curit)o(y)e(and)g(priv)n(acy)m(.)21
b(Since)15 b(a)g(shared)h(system)f(mail)d(sp)q(o)q(ol)j(directory)h(has)f(to)
g(b)q(e)h(w)o(orld-readable)e(and)179 1420 y(searc)o(hable,)376
1405 y Fg(8)407 1420 y Fl(an)o(y)d(user)i(can)f(see)i(whether)f(other)f
(users)h(ha)o(v)o(e)f(mail,)d(when)k(they)f(last)g(receiv)o(ed)h(new)f(mail,)
179 1470 y(or)j(when)h(they)g(last)f(read)h(their)g(mail.)k(Programs)14
b(suc)o(h)i(as)g Fk(finger)e Fl(displa)o(y)g(this)i(information,)c(whic)o(h)
179 1520 y(some)f(consider)i(an)f(infringemen)o(t)f(of)h(priv)n(acy)m(.)k
(While)c(it)g(is)g(p)q(ossible)g(to)g(disable)g(this)h(feature)g(of)e
Fk(finger)179 1570 y Fl(so)16 b(that)f(remote)g(users)j(cannot)d(see)i(a)f
(mailb)q(o)o(x)c(\014le's)k(status,)g(this)g(do)q(esn't)g(prev)o(en)o(t)h(lo)
q(cal)e(users)i(from)179 1619 y(getting)d(the)g(information.)i(F)m
(urthermore,)e(there)h(are)g(more)e(programs)g(whic)o(h)h(mak)o(e)e(use)j(of)
f(this)g(infor-)179 1669 y(mation.)24 b(In)17 b(shared)h(en)o(vironmen)o(ts,)
e(disabling)f(suc)o(h)j(programs)d(has)i(to)g(b)q(e)g(done)g(on)g(a)f
(system-wide)179 1719 y(basis,)i(but)g(with)g(mail)d(deliv)o(ered)j(to)g
(users')h(home)e(directories,)i(users)h(less)e(concerned)i(with)d(priv)n(acy)
179 1769 y(who)f Fh(do)g Fl(w)o(an)o(t)f(to)h(let)g(others)h(kno)o(w)f(when)g
(they)h(last)f(receiv)o(ed)h(or)f(read)g(mail)e(can)i(easily)f(do)h(so)g
(using)179 1819 y(\014le)e(protection)i(bits.)k(Lastly)m(,)14
b(on)g(systems)h(that)g(do)f(not)h(exp)q(ort)g(their)g(NFS)g(\014lesystem)f
(with)h Fk(anon=0)p Fl(,)179 1868 y(sup)q(erusers)f(are)e(less)g(lik)o(ely)d
(to)j(sno)q(op)f(around)g(others')h(mail,)d(as)i(they)h(b)q(ecome)f(\\nob)q
(o)q(dies")g(across)h(NFS.)175 1985 y(In)j(summary)m(,)e(deliv)o(ering)i
(mail)d(to)k(home)e(directories)j(pro)o(vides)f(users)h(the)f(functionalit)o
(y)e(sough)o(t,)h(and)75 2034 y(also)e(a)o(v)o(oids)g(most)g(of)g(the)i
(problems)e(discussed)i(in)f(Section)g(2.2.)75 2142 y Fj(3)56
b(Design)175 2218 y Fl(W)m(e)16 b(named)f(our)h(\014le)h(system)f(the)h
Fh(Home-Link)h(File)e(System)p Fl(,)h(b)q(ecause)h(that's)f(all)e(it)h(do)q
(es)h(|)f(pro)o(vide)75 2267 y(sym)o(b)q(olic)11 b(links)g(to)i(\014les)f
(and)h(directories)g(in)f(a)g(user's)i(home)d(directory)m(.)18
b(The)13 b(soft)f(link)f(has)i(a)f(\014xed)h(name,)e(but)75
2317 y(unlik)o(e)16 b(regular)h(soft)g(links,)f(what)h(it)f(p)q(oin)o(ts)h
(to)f(is)h(\\dynamic")e(dep)q(ending)i(on)f(who)h(accesses)i(the)f(sym)o(b)q
(olic)75 2367 y(link.)25 b(The)18 b(ideas)e(that)h(this)g(\014lesystem)f
(represen)o(ts)k(are)d(not)f(limited)f(just)i(to)f(handling)g(electronic)h
(mail)d(|)75 2417 y(that)g(is)g(only)f(one)h(application)e(of)i(this)g
(\014lesystem.)j(See)e(Sections)g(7.1)e(and)g(7.2)g(for)h(other)g(ideas.)175
2491 y(Our)g(k)o(ey)g(goals)f(in)g(designing)h(HLFS)g(w)o(ere:)p
75 2526 720 2 v 121 2553 a Ff(7)139 2565 y Fe(This)e(assumes)f(that)h(they)g
(can)g(login)f(to)i(a)f(di\013eren)o(t)f(host.)18 b(Some)11
b(systems,)g(suc)o(h)h(as)h(HP-UX,)h(do)e(not)g(allo)o(w)g(login)g(if)g(they)
75 2604 y(cannot)e Fd(chdir)g Fe(to)h(the)g(user's)f(home)g(directory)m(.)121
2632 y Ff(8)139 2644 y Fe(System)g(V)i(has)g(the)f(mail)g(sp)q(o)q(ol)f
(directory)g(only)h(group)f(writable)h(but)g(that)g(mak)o(es)f(it)i(more)f
(di\016cult)g(to)g(install)g(other)f(UAs)75 2683 y(or)h(MT)m(As.)965
2825 y Fl(5)p eop
%%Page: 6 6
bop 126 42 a Fl(1.)20 b(T)m(o)13 b(pro)o(vide)h(ev)o(ery)g(user)h(with)f(the)
g(abilit)o(y)e(to)i(read)h(mail)c(from)h(an)o(y)h(host.)126
125 y(2.)20 b(T)m(o)14 b(ensure)j(that)f(all)e(MT)m(As)h(and)g(UAs)h(in)f
(use,)h(as)f(w)o(ell)g(as)g(an)o(y)g(other)h(utilities)f(whic)o(h)g(dep)q
(end)h(on)f(the)179 174 y(standard)f(mail)d(sp)q(o)q(ol)i(directory)m(,)g
(face)h(no)g(problems)e(from)g(the)i(c)o(hange)g(in)f(the)h(underlying)g
(\014lesystem.)126 257 y(3.)20 b(T)m(o)13 b(minim)o(ize)e(the)k(p)q
(ossibilit)o(y)e(of)g(mail)e(b)q(eing)j(lost)g(or)f(b)q(ouncing)h(bac)o(k)g
(to)g(the)g(sender.)126 340 y(4.)20 b(T)m(o)13 b(pro)o(vide)h(more)e(priv)n
(acy)i(for)f(users')i(mail)d(\014les.)175 457 y(Since)g(most)f(sites)i(pro)o
(vide)f(access)i(to)e(users')i(home)c(directories)k(from)c(an)o(y)i(host,)g
(it)g(made)f(sense)j(to)e(store)75 506 y(incoming)f(mail)g(there)k(as)f(w)o
(ell.)j(That)c(w)o(a)o(y)m(,)f(as)i(long)f(as)g(users)i(could)f(log)e(in)o
(to)h(a)h(host)f(and)h(access)h(their)f(home)75 556 y(directories)f(via)e
(NFS,)h(their)g(mail)d(w)o(ould)i(b)q(e)h(accessible)h(as)f(w)o(ell.)17
b(This)11 b(solv)o(ed)h(the)g(\014rst)h(problem.)j(Also,)11
b(since)75 606 y(users)16 b(m)o(ust)e(login)f(in)i(order)g(to)g(read)g(their)
g(mail,)d(causing)i(their)i(home)d(directories)j(to)f(b)q(e)g(automoun)o
(ted,)e(no)75 656 y(extra)h(moun)o(ts)f(are)h(required)h(in)f(order)g(to)g(b)
q(egin)g(reading)f(mail.)175 731 y(The)f(second)g(problem)f(w)o(as)g(solv)o
(ed)h(b)o(y)f(making)e(sure)k(that)f(the)g(\014nal)f(access)j(of)d(the)h
(mail)d(sp)q(o)q(ol)i(directory)75 780 y(remains)17 b(a)g(\\real")h
(directory)g(\(not)g(a)g(read-only)f(pseudo-\014lesystem)i(pro)o(vided)f(b)o
(y)f(an)h(automoun)o(ter\).)29 b(All)75 830 y(UAs)20 b(access)h(the)f(sp)q(o)
q(ol)f(directory)h(for)f(reading)g(and)h(writing)e(the)i(user's)h(mail)16
b(\014le)k(and)f(create)i(lo)q(c)o(k)e(\014les)75 880 y(there.)178
865 y Fg(9)217 880 y Fl(That)14 b(means)f(that)h Fk(/var/spool/mail)d
Fl(needs)16 b(to)e(b)q(e)g(readable,)g(writable,)g(and)g(searc)o(hable)h(for)
e(UAs)75 930 y(and)i(MT)m(As)g(so)g(that)g(lo)q(c)o(k)f(\014les)h(can)g(b)q
(e)h(written)f(and)g(remo)o(v)o(ed.)20 b(See)c(also)e(Section)i(4.6.)k(F)m
(or)14 b(the)i(purp)q(ose)g(of)75 980 y(writing)g(the)i(mail)c(and)j(lo)q(c)o
(k)g(\014les,)g(a)g(sub)q(directory)h(inside)f(the)h(user's)g(home)e
(directory)i(is)e(su\016cien)o(t,)i(since)75 1029 y(it)d(is)f(already)h(o)o
(wned)g(b)o(y)g(that)g(user.)22 b(Ensuring)15 b(that)g(users)i(cannot)e
(access)i(other)e(users')h(\014les)g(can)f(easily)f(b)q(e)75
1079 y(ac)o(hiev)o(ed)g(b)o(y)g(protecting)g(this)g(sub)q(directory)m(.)175
1154 y(In)h(order)i(not)f(to)g(c)o(hange)g(the)g(b)q(eha)o(vior)g(of)f
(programs)g(lik)o(e)g Fk(comsat)p Fl([21)m(,)h(23)o(],)g Fk(from)f
Fl(or)g Fk(finger)p Fl(,)g(whic)o(h)75 1204 y(are)j(designed)g(to)g(read)g
(an)o(y)f(user's)h(mail,)e(w)o(e)i(implem)o(en)o(ted)e(a)h(sp)q(ecial)h(c)o
(hec)o(k)h(for)e(a)g(designated)h(group.)29 b(If)75 1254 y(the)17
b(e\013ectiv)o(e)g Fh(gid)f Fl(of)g(the)g(pro)q(cess)i(is)e(the)h(designated)
g(group,)f(w)o(e)g(assume)g(that)g(suc)o(h)h(a)e(sp)q(ecial)i(program)d(is)75
1303 y(executing,)20 b(and)e Fk(hlfsd)f Fl(arranges)i(to)f(do)g(the)h(lo)q
(okup)f(not)g(only)g(of)f(the)i(real)g(sp)q(o)q(ol)f(directory)m(,)h(but)g
(of)e(the)75 1353 y(mailb)q(o)o(x)f(itself.)34 b(See)20 b(T)m(able)e(2.)33
b(Note)20 b(that)f(this)g(metho)q(d)g(only)f(supp)q(orts)i(read)g(access)h
(without)d(lo)q(c)o(king;)p 75 1415 1800 5 v 607 1469 a(Conditions:)f
Fh(gid)p Fl(=HLFS)p 1027 1469 13 2 v 15 w(GID)d(for)f(an)o(y)h
Fh(uid)p Fl(.)p 206 1487 1538 2 v 205 1537 2 50 v 214 1537
V 239 1522 a Fm(Resolving)p 502 1537 V 919 1537 V 1735 1537
V 1744 1537 V 205 1587 V 214 1587 V 239 1572 a(comp)q(onen)o(t)p
502 1587 V 58 w(P)o(athname)g(left)p 919 1587 V 120 w(V)l(alue)g(if)h(sym)o
(b)q(olic)f(link)p 1735 1587 V 1744 1587 V 206 1589 1538 2
v 206 1599 V 205 1648 2 50 v 214 1648 V 239 1633 a Fk(/)p 502
1648 V 267 w(var/mail/)p Fh(NAME)p 919 1648 V 1735 1648 V 1744
1648 V 206 1650 1538 2 v 205 1700 2 50 v 214 1700 V 239 1685
a Fk(var)p Fl(/)p 502 1700 V 202 w Fk(mail/)p Fh(NAME)p 919
1700 V 1735 1700 V 1744 1700 V 206 1701 1538 2 v 205 1751 2
50 v 214 1751 V 239 1736 a Fk(mail)p Fl(@)p 502 1751 V 169
w Fk(/mail/home/)p Fh(NAME)p 919 1751 V 48 w Fk(mail)p Fl(@)f
Fi(\))g Fk(/mail/home)p 1735 1751 V 1744 1751 V 206 1753 1538
2 v 205 1803 2 50 v 214 1803 V 239 1788 a(/)p 502 1803 V 267
w(mail/home/)p Fh(NAME)p 919 1803 V 1735 1803 V 1744 1803 V
206 1804 1538 2 v 205 1854 2 50 v 214 1854 V 239 1839 a Fk(mail)p
Fl(/)p 502 1854 V 180 w Fk(home/)p Fh(NAME)p 919 1854 V 1735
1854 V 1744 1854 V 206 1856 1538 2 v 205 1906 2 50 v 214 1906
V 239 1891 a Fk(home)p Fl(@)p 502 1906 V 169 w Fh(NAME)p 919
1906 V 290 w Fk(home)p Fl(@)g Fi(\))g Fk(.)p 1735 1906 V 1744
1906 V 206 1907 1538 2 v 205 1957 2 50 v 214 1957 V 239 1942
a(.)p Fl(/)p 502 1957 V 246 w Fh(NAME)p 919 1957 V 1735 1957
V 1744 1957 V 206 1959 1538 2 v 206 1969 V 205 2019 2 50 v
214 2019 V 239 2004 a(NAME)p Fl(@)p 502 2019 V 919 2019 V 547
w Fh(NAME)p Fl(@)h Fi(\))f Fk(~)p Fh(NAME)p Fk(/.mailspool/)p
Fh(NAME)p 1735 2019 V 1744 2019 V 206 2020 1538 2 v 205 2070
2 50 v 214 2070 V 239 2055 a Fk(~)p Fh(NAME)p Fl(/)p 502 2070
V 119 w Fk(.mailspool/)p Fh(NAME)p 919 2070 V 1735 2070 V 1744
2070 V 206 2072 1538 2 v 205 2122 2 50 v 214 2122 V 239 2107
a Fk(.mailspool)p Fl(/)p 502 2122 V 48 w Fh(NAME)p 919 2122
V 1735 2122 V 1744 2122 V 206 2123 1538 2 v 205 2173 2 50 v
214 2173 V 239 2158 a(NAME)p 502 2173 V 919 2173 V 1735 2173
V 1744 2173 V 206 2175 1538 2 v 243 2249 a Fl(T)m(able)g(2:)18
b(Sp)q(ecially)13 b(resolving)h Fk(/var/mail/)p Fh(NAME)e Fl(to)h
Fm(~)p Fh(NAME)p Fk(/.mailspool/)p Fh(NAME)p 75 2299 1800 5
v 75 2440 a Fl(ho)o(w)o(ev)o(er,)k(this)g(is)f(su\016cien)o(t)h(for)f(all)g
(programs)f(that)i(need)g(to)g(access)h(other)f(users')h(mailb)q(o)o(xes.)24
b(All)15 b(that)i(is)75 2490 y(required)e(is)f(to)f(set)i(these)g(programs)e
(to)h(b)q(e)g Fh(setgid)g Fl(to)g(the)g(designated)h(group.)p
75 2525 720 2 v 121 2552 a Ff(9)139 2563 y Fe(Note)e(that,)g(in)g(order)g(to)
g(allo)o(w)g(mail)g(deliv)o(ery)e(to)i(NFS)q(-moun)o(ted)d(mail)j(sp)q(o)q
(ol)g(directories,)e(most)h(v)o(endors)g(ha)o(v)o(e)h(mo)q(di\014ed)75
2603 y(the)d Fd(/bin/mail)e Fe(program)g(to)j(set)f(its)g Fc(uid)h
Fe(to)g(that)f(of)g(the)g(recipien)o(t)e(when)j(deliv)o(ering)d(mail.)13
b(If)e(a)g(lo)q(cal)e(deliv)o(ery)g(agen)o(t)g(\(LD)o(A\))i(on)75
2642 y(a)g(system)f(do)q(es)g(not)g(pro)o(vide)f(this)i(b)q(eha)o(vior,)d
(the)j(MT)m(A)i(m)o(ust)d(arrange)f(to)i(in)o(v)o(ok)o(e)e(it)i(with)g(the)f
Fc(uid)i Fe(of)f(the)f(recipien)o(t)f(|)j(this)e(can)75 2682
y(b)q(e)h(done)f(b)o(y)h(a)h(wrapp)q(er)e(C)i(program.)965
2825 y Fl(6)p eop
%%Page: 7 7
bop 175 42 a Fl(The)14 b(third)h(problem)d(is)j(solv)o(ed)f(b)o(y)g(ensuring)
g(that)h(all)e(op)q(erations)h(whic)o(h)g(migh)o(t)f(hang)g
Fk(hlfsd)h Fl(are)g(p)q(er-)75 91 y(formed)e(in)h(the)h(bac)o(kground,)f
(while)g(still)g(pro)o(viding)f(service)j(in)e(the)h(paren)o(t)g(or)g(c)o
(hild)f(pro)q(cess.)20 b(F)m(urthermore,)75 141 y(if)12 b Fk(hlfsd)f
Fl(is)i(not)g(running)f(an)o(ymore,)f(or)i(if)f(the)h(user's)h(home)d
(\014lesystem)i(is)f(full,)f(mail)f(gets)k(deliv)o(ered)f(to)f(an)h(al-)75
191 y(ternate)f(directory)g(\(See)g(also)f(Section)g(4.3\).)16
b(A)11 b Fk(cron)f Fl(job)h(\(running)g(sev)o(eral)g(times)g(a)f(da)o(y)h(in)
f(our)i(departmen)o(t\),)75 241 y(lo)q(oks)h(at)h(the)h(alternate)g
(directory)m(,)f(and)g(attempts)f(to)h(resend)i(messages)e(in)g(it)f(to)h
(their)h(righ)o(tful)e(o)o(wners.)19 b(All)75 291 y(that)12
b(is)h(incurred)g(is)g(a)f(dela)o(y)g(in)g(mail)d(deliv)o(ery)m(,)j(whic)o
(h,)g(in)g(most)f(cases,)j(is)e(no)g(longer)h(than)f(the)h(length)f(of)g
(time)75 340 y(b)q(et)o(w)o(een)j(consecutiv)o(e)h(in)o(v)o(o)q(cations)d(of)
g(the)h(lost-mail)d(remailing)h(script.)175 415 y(Ha)o(ving)h(a)h(sp)q(ecial)
g(mail-sp)q(o)q(ol)e(sub)q(directory)j(o)o(wned)g(and)f(con)o(trolled)g(b)o
(y)g(the)h(user)g(also)f(addresses)i(the)75 465 y(last)c(problem,)f(that)i
(of)f(priv)n(acy)m(.)k(Users)e(can)f(c)o(hange)g(the)g(protection)g(bits)g
(on)f(their)h(mailb)q(o)o(x)d(directory)j(inside)75 515 y(their)g(home)f
(directory)i(so)f(that)g(it)f(is)h(readable)g(and)g(searc)o(hable)h(only)e(b)
o(y)h(the)g(o)o(wner.)18 b(An)o(y)13 b(other)h(program)d(or)75
565 y(user,)16 b(unless)f(running)g(as)g(the)g(sup)q(eruser)j(on)c(the)i
(same)e(host,)1091 549 y Fg(10)1141 565 y Fl(w)o(ould)g(not)h(b)q(e)g(able)g
(to)f(\014nd)h(out)g(whether)h(a)75 614 y(user)f(has)f(new)g(mail,)d(ho)o(w)j
(m)o(uc)o(h)e(of)i(it)f(there)i(is,)f(or)f(when)i(it)e(w)o(as)h(last)g(read.)
75 722 y Fj(4)56 b(Impleme)o(n)n(tation)16 b(of)j Fb(hlfsd)175
797 y Fl(W)m(e)f(used)i(a)f(protot)o(yp)q(e)h(NFS)f(serv)o(er,)j(and)d
(implem)o(en)o(ted)e(only)i(the)g(op)q(erations)h(that)f(w)o(ere)h(needed.)75
847 y(W)m(e)14 b(generated)i(NFS)e(stubs)i(using)e Fk(rpcgen)p
Fl(.)k(The)d(serv)o(er)h(w)o(as)e(dev)o(elop)q(ed)h(\014rst)g(under)h(SunOS)f
(v)o(ersion)f(4.1.2.)75 897 y(This)g(serv)o(er)i(w)o(as)e(incorp)q(orated)h
(in)o(to)e(the)i Fk(amd)e Fl(source)j(tree,)f(and)f(w)o(e)g(used)h(some)e(of)
h Fk(amd)p Fl('s)f(sources)j(as)e(utilit)o(y)75 947 y(functions,)k(since)g
(they)g(are)g(w)o(ell-written)f(to)h(handle)f(a)g(v)n(ariet)o(y)g(of)g(arc)o
(hitectures)j(and)d(op)q(erating)g(systems.)75 997 y(\(See)e(Section)f(4.7)f
(for)h(source)h(co)q(de)g(a)o(v)n(ailabil)o(it)o(y)l(.\))75
1105 y Fj(4.1)56 b(The)18 b(\\Home-Link")d(File)j(Service)175
1180 y Fl(This)10 b(subsection)i(includes)g(tec)o(hnical)f(details)f(of)h
(the)g(NFS)g(op)q(erations)g(and)g(ma)o(y)e(b)q(e)i(skipp)q(ed.)18
b(Ho)o(w)o(ev)o(er,)75 1230 y(it)13 b(pro)o(vides)g(an)g(example)e(of)i(the)g
(design)h(and)f(implem)o(en)o(tation)d(of)i(a)h(small)e(sp)q(ecial-purp)q
(ose)j(NFS)g(serv)o(er)g(and)75 1279 y(ma)o(y)e(b)q(e)i(of)g(use)g(to)g
(others.)175 1354 y(HLFS)j(is)g(a)g(read-only)g(\014lesystem,)g(and)g(as)h
(suc)o(h,)g(all)e(op)q(erations)i(that)f(require)h(write)g(access)h(return)75
1404 y(the)d(error)h(co)q(de)f(NFSERR)p 522 1404 13 2 v 14
w(R)o(OFS)g(\(\\Read-Only)f(Filesystem"\):)20 b Fh(setattr,)c(write,)f(cr)n
(e)n(ate,)h(r)n(emove,)g(r)n(ename,)75 1454 y(link,)g(unlink,)g(symlink,)g
(mkdir,)f Fl(and)g Fh(rmdir)p Fl(.)21 b(T)m(rivially)13 b(implemen)o(ted)g(w)
o(ere)j(the)g Fh(nul)r(l)p Fl(,)f Fh(r)n(o)n(ot)p Fl(,)g(and)g
Fh(write)n(c)n(ache)75 1504 y Fl(op)q(erations.)i(W)m(e)11
b(decided)h(to)e(ha)o(v)o(e)h Fh(statfs)f Fl(return)i(some)e(v)n(alue)h
(\(all)e(zeros)k(in)d(most)g(cases\).)18 b(The)11 b Fh(r)n(e)n(ad)g
Fl(op)q(eration)75 1553 y(simply)h(returns)j(NFSERR)p 524 1553
V 15 w(A)o(CCES)f(\(\\P)o(ermission)f(Denied"\).)175 1628 y(The)e(remaining)e
(op)q(erations)i(are)h(the)f(heart)h(of)e(this)h(\014lesystem:)17
b Fh(r)n(e)n(addir)p Fl(,)10 b Fh(getattr)p Fl(,)g Fh(lo)n(okup)p
Fl(,)i(and)f Fh(r)n(e)n(ad)r(link)p Fl(.)175 1703 y(Our)j(serv)o(er)h(m)o
(ust)d(distinguish)h(b)q(et)o(w)o(een)i(the)f(directory)g(and)g(the)g(link,)e
(so)i(w)o(e)f(assigned)h(them)f(di\013eren)o(t)75 1753 y(in)o(tegers)f(to)f
(serv)o(e)i(as)f(\014lehandles.)17 b(Note)12 b(that)f(these)i(need)g(not)e(b)
q(e)h(as)f(complicated)g(as)g(the)h(\014lehandles)g(usually)75
1802 y(generated)j(b)o(y)f(NFS.)k(They)c(need)h(only)e(to)h(b)q(e)h(unique,)e
(and)h(their)g(v)n(alue)f(is)h(meaningful)d(only)i(to)h(the)h(serv)o(er.)75
1910 y Fj(4.1.1)55 b(The)19 b(readdir)f(Op)r(eration)175 1985
y Fl(Op)q(ening)h(this)g(directory)h(returns)h(the)f(\\.")33
b(and)19 b(\\..")33 b(directories,)21 b(and)e(one)g(sym)o(b)q(olic)e(link,)i
Fk(home)p Fl(.)75 2035 y(A)o(ttempting)e(to)g(readdir)h(on)g(the)g(sym)o(b)q
(olic)e(link)h(results)i(in)f(an)f(NFSERR)p 1326 2035 V 15
w(NOTDIR.)g(An)o(ything)g(else)i(is)e(a)75 2085 y(stale)d(\014lehandle.)75
2193 y Fj(4.1.2)55 b(The)19 b(getattr)e(Op)r(eration)175 2268
y Fh(Getattr)h Fl(returns)i(r-xr-xr-x)e(for)h(the)g(\\.")32
b(and)18 b(\\..")32 b(directories.)h(The)19 b(link)f(itself,)h(named)e
Fk(home)h Fl(b)o(y)75 2318 y(default,)d(is)h(protected)h(as)f(rwxrwxrwx.)23
b(It)16 b(do)q(es)g(not)g(matter)f(for)g(the)h(link)f(that)h(it)f(is)g(w)o
(orld-writable.)23 b(The)75 2368 y(mo)q(di\014cation)10 b(and)j(creation)f
(times)g(for)g(the)h(link)e(and)i(directories)g(are)g(the)g(startup)g(time)e
(of)h(the)h(serv)o(er.)19 b(If)12 b(the)75 2418 y(e\013ectiv)o(e)k
Fh(gid)f Fl(of)f(the)h(pro)q(cess)h(is)f(HLFS)p 721 2418 V
15 w(GID,)e(then)j(some)d(\014xed)i(v)n(alid)e(attributes)j(are)f(returned.)
22 b(An)o(y)14 b(other)75 2467 y(\014lehandle)i(giv)o(en)f(to)g
Fk(hlfsd)g Fl(is)g(considered)i(stale)f(and)f(the)i(NFSERR)p
1227 2467 V 14 w(ST)m(ALE)f(\(\\Stale)f(Filehandle"\))g(result)75
2517 y(co)q(de)g(is)e(returned.)p 75 2544 720 2 v 106 2571
a Ff(10)139 2582 y Fe(Or)e(as)h(the)f(sup)q(eruser)e(elsewhere,)h(if)h(the)g
(\014lesystem)e(is)i(NFS-exp)q(orted)e(with)j Fd(anon=0)p Fe(.)965
2825 y Fl(7)p eop
%%Page: 8 8
bop 75 42 a Fj(4.1.3)55 b(The)19 b(lo)r(okup)e(Op)r(eration)175
117 y Fl(Ob)o(viously)m(,)c(w)o(e)i(only)f(allo)o(w)f(lo)q(oking)g(up)h(in)h
(the)g(\\.")20 b(and)14 b(\\..")20 b(directories,)15 b(b)q(oth)g(of)f(whic)o
(h)g(return)i(the)75 166 y(same)e(v)n(alues.)22 b(T)m(rying)15
b(to)g(lo)q(okup)f(\\in")h(the)g(link)g(results)h(in)f(an)g(NFSERR)p
1312 166 13 2 v 15 w(NOTDIR)f(\(\\Not)i(a)f(Directory"\))75
216 y(error)k(co)q(de.)32 b(An)o(y)18 b(link)g(not)g(kno)o(wn)g(to)g(the)h
(serv)o(er)g(returns)h(an)e(NFSERR)p 1338 216 V 15 w(NOENT)h(\(\\No)f(Suc)o
(h)h(En)o(try"\))75 266 y(error,)f(unless)f(the)g Fh(gid)g
Fl(of)e(the)j(requesting)f(pro)q(cess)h(is)f(HLFS)p 1088 266
V 15 w(GID)f(and)g(the)h(name)e(corresp)q(onds)k(to)d(a)h(v)n(alid)75
316 y(user.)i(In)12 b(this)g(case)h(the)g Fh(username)f Fl(for)g(that)g(user)
h(is)f(used)h(in)f(the)g(returned)i(\014lehandle,)e(allo)o(wing)e(the)i
(readlink)75 366 y(op)q(eration)i(to)f(return)j(the)e(correct)i(link.)h(An)o
(ything)c(else)i(is)e(a)h(stale)g(\014lehandle.)75 474 y Fj(4.1.4)55
b(The)19 b(readlink)e(Op)r(eration)175 549 y Fl(This)d(is)h(the)g(most)f(imp)
q(ortan)o(t)e(op)q(eration,)j(the)g(cen)o(tral)g(p)q(oin)o(t)f(of)g(this)h(w)
o(ork.)20 b(W)m(e)15 b(get)g(the)g Fh(uid)g Fl(n)o(um)o(b)q(er)75
599 y(from)c(the)j(creden)o(tials)g(sen)o(t)g(with)e(the)i(RPC)f(op)q
(eration.)k(W)m(e)c(mak)o(e)e(sure)j(that)f(Unix)g(Authen)o(tication)g(or)g
(DES)75 648 y(is)h(used)h(or)e(else)i(w)o(e)f(return)h(the)g(NFSERR)p
774 648 V 14 w(PERM)f(\(\\Not)g(Owner"\))h(co)q(de.)175 723
y(If)j(the)h Fh(gid)g Fl(of)f(the)h(accessing)h(pro)q(cess)g(is)f(not)g(HLFS)
p 1064 723 V 15 w(GID,)e(the)i(v)n(alue)f(w)o(e)h(return)h(for)f(the)g(sym)o
(b)q(olic)75 773 y(link)13 b(named)g Fk(home)379 758 y Fg(11)427
773 y Fl(is)h(a)g(string)g(represen)o(ting)i(the)f(home)e(directory)i(of)e
(the)i(user)g(whose)g Fh(uid)f Fl(w)o(e)h(just)f(found,)75
823 y(concatenated)g(with)e(a)h(\014xed)g(comp)q(onen)o(t)e(name)h(represen)o
(ting)i(a)e(sub)q(directory)i(within)e(it.)17 b(W)m(e)c(used)g(a)f(binary)75
873 y(searc)o(h)h(on)e(the)h(lo)q(okup)e(table)h(to)h(quic)o(kly)e(get)i(the)
g(righ)o(t)f(pathname.)16 b(Di\013eren)o(t)c(home)e(directories)i(for)f(m)o
(ultiple)75 922 y(passw)o(ord)i(database)f(en)o(tries)h(with)f(the)h(same)e
Fh(uid)i Fl(n)o(um)o(b)q(ers)f(ma)o(y)e(return)j(an)o(y)f(of)g(the)h(home)e
(directories.)18 b(Only)75 972 y Fh(uid)c Fl(0)g(is)f(guaran)o(teed)i(to)f
(return)h(\\)p Fk(/)p Fl(".)i(See)e(also)e(Section)h(5.3.)175
1047 y(If)h(the)h(sym)o(b)q(olic)e(link)g(is)i(named)e Fk(home)h
Fl(and)g(the)h Fh(gid)g Fl(is)f(HLFS)p 1206 1047 V 15 w(GID,)g(w)o(e)h
(return)g(a)g(link)e(to)i(\\.",)e(whic)o(h)75 1097 y(causes)19
b Fk(hlfsd)d Fl(to)h(b)q(e)h(used)g(to)f(resolv)o(e)h(the)g(next)g(pathname)e
(comp)q(onen)o(t.)27 b(This)17 b(is)h(designed)g(to)f(main)o(tain)75
1147 y(functionalit)o(y)c(of)i(programs)f(suc)o(h)i(as)f Fk(from)p
Fl(.)20 b(If)15 b(the)h(sym)o(b)q(olic)d(link)h(is)h(not)g(named)f
Fk(home)g Fl(and)h(the)h Fh(gid)f Fl(of)f(the)75 1196 y(accessing)j(pro)q
(cess)g(is)e(HLFS)p 553 1196 V 16 w(GID,)f(w)o(e)i(return)g(a)f(v)n(alue)g(p)
q(oin)o(ting)g(to)g(the)h(user's)h(mailb)q(o)o(x)12 b(\014le)k(in)f(their)h
(mail)75 1246 y(sp)q(o)q(ol)c(directory)m(.)18 b(T)m(o)12 b(do)g(this,)g(w)o
(e)h(extract)g(the)h Fh(username)e Fl(from)f(the)i(\014lehandle,)f(whic)o(h)h
(w)o(as)f(returned)i(b)o(y)e(the)75 1296 y(lo)q(okup)h(op)q(eration.)18
b(See)d(T)m(able)e(2.)175 1371 y(T)m(rying)c(to)i(readlink)f(on)h(one)g(of)f
(the)i(t)o(w)o(o)e(directories)i(results)g(in)e(an)h(NFSERR)p
1426 1371 V 15 w(ISDIR)f(\(\\Is)h(a)f(directory"\))75 1421
y(error.)19 b(An)o(ything)13 b(else)i(is)f(a)f(stale)h(\014lehandle.)75
1528 y Fj(4.2)56 b(Execution)17 b(Flo)n(w)175 1604 y Fl(A)o(t)12
b(initialization)d(time,)i Fk(hlfsd)g Fl(creates)j(a)e(UDP)g(service,)i(and)e
(forks)g(a)g(c)o(hild.)17 b(The)c(c)o(hild)e(builds)h(the)h
Fh(uid)75 1653 y Fl(lo)q(okup)h(table,)g(sets)i(up)e(signal)g(handlers,)h
(and)f(in)o(terv)n(al)g(timers.)19 b(The)c(signal)e(handlers)i(are)g(mean)o
(t)f(to)g(reload)75 1703 y(the)i(lo)q(okup)f(table)g(at)g(expiration)g(time)f
(of)h(the)h(in)o(terv)n(al)f(timer,)f(or)i(when)g(a)f(SIGHUP)g(is)h(sen)o(t)g
(to)f(the)h(serv)o(er)75 1753 y(\(presumably)11 b(b)o(y)h(a)f(sup)q
(eruser\).)20 b(A)12 b(sp)q(ecial)g(clean)o(up)h(handler)f(is)f(setup)i(for)f
(SIGTERM,)f(to)g(ensure)j(the)e(serv)o(er)75 1803 y(terminates)i(cleanly)m(.)
j(Then)d(the)h Fk(svc)p 682 1803 14 2 v 15 w(run\(\))e Fl(routine)h(is)f(in)o
(v)o(ok)o(ed.)175 1878 y(Mean)o(while)i(the)i(paren)o(t)g(w)o(aits)f(for)f
(the)i(c)o(hild)f(to)g(initialize.)23 b(When)16 b(it)g(do)q(es,)h(the)g
(paren)o(t)f(moun)o(ts)f(the)75 1927 y(serv)o(er)g(on)f(the)g(moun)o(t)e(p)q
(oin)o(t.)18 b(Of)c(utmost)e(imp)q(ortance)h(is)h(to)g(mak)o(e)e(sure)j(the)f
(attribute)g(cac)o(he)h(is)f(turned)g(o\013.)75 1977 y(If)h(the)g(attribute)h
(cac)o(he)f(is)g(not)g(turned)h(o\013,)f(successiv)o(e)i(accesses)g(to)e
Fk(/mail/home)e Fl(w)o(ould)h(return)i(previously)75 2027 y(computed)f
(pathnames)g(p)q(oin)o(ting)f(to)i(another)g(user's)g(mail,)d(resulting)j(in)
f(mail)e(loss)i(or)h(misdeliv)o(ery)m(.)21 b(If)15 b(it)g(is)75
2077 y(not)d(p)q(ossible)g(to)g(turn)h(o\013)e(the)i(attribute)g(cac)o(he,)f
Fk(hlfsd)f Fl(will)g(exit.)17 b(Ho)o(w)o(ev)o(er,)c(the)f(SA)g(has)h(the)f
(option)g(to)f(force)75 2127 y Fk(hlfsd)j Fl(to)h(con)o(tin)o(ue)g(running)g
(and)g(set)h(the)f(attribute)h(cac)o(he)g(to)f(as)g(short)g(an)g(in)o(terv)n
(al)f(as)h(p)q(ossible)h(\(See)g(also)75 2176 y(Section)e(5.3\).)j(A)o(t)d
(this)g(p)q(oin)o(t)g(the)g(paren)o(t)h(terminates,)e(lea)o(ving)f(the)j(c)o
(hild)e(to)h(run.)175 2251 y(When)j(an)f(in)o(terv)n(al)g(timer)g(go)q(es)h
(o\013)g(\(SIGALRM\))f(or)h(a)f(SIGHUP)h(is)g(sen)o(t)g(to)g(the)h(serv)o
(er,)g(the)f(serv)o(er)75 2301 y(forks)d(a)g(c)o(hild)g(that)g(con)o(tin)o
(ues)h(serving,)f(while)g(the)h(paren)o(t)g(reloads)f(the)h(lo)q(okup)f
(table.)19 b(When)14 b(the)h(paren)o(t)g(is)75 2351 y(\014nished)f(loading,)d
(it)i(sends)i(a)e(SIGKILL)g(to)g(the)h(c)o(hild)e(pro)q(cess,)j(and)e
(resumes)h(serving.)k(When)c(a)f(SIGTERM)75 2401 y(is)h(receiv)o(ed,)h(the)g
(serv)o(er)g(forks)f(a)g(c)o(hild)g(that)g(con)o(tin)o(ues)g(serving,)g
(while)g(it)g(tries)g(to)g(unmoun)o(t)f(the)i(\014lesystem.)75
2450 y(If)f(and)f(when)i(that)f(succeeds,)i(b)q(oth)e(paren)o(t)g(and)g(c)o
(hild)f(exit.)175 2525 y(As)i(mail)d(service)k(is)e(v)o(ery)h(imp)q(ortan)o
(t,)d(w)o(e)j(w)o(an)o(ted)g(to)f(mak)o(e)g Fk(hlfsd)f Fl(as)i(robust)g(as)g
(p)q(ossible.)20 b(W)m(e)14 b(could)75 2575 y(ha)o(v)o(e)k(designed)g(it)f
(as)h(another)g Fk(amd)g Fl(\\\014lesystem)f(t)o(yp)q(e",)h(but)g(decided)h
(that)f(a)f(separate)i(daemon)e(pro)o(vides)75 2625 y(b)q(etter)i(reliabilit)
o(y)c(and)j(faster)g(service.)29 b(In)18 b(general,)g(w)o(e)f(try)h(to)f(do)g
(as)h(m)o(uc)o(h)e(as)h(p)q(ossible:)25 b(w)o(e)18 b(mak)o(e)e(sure)p
75 2659 720 2 v 106 2686 a Ff(11)139 2698 y Fe(The)11 b(name)f(of)h(the)g
(sym)o(b)q(olic)e(link)i(is)g(con\014gurable.)965 2825 y Fl(8)p
eop
%%Page: 9 9
bop 75 42 a Fl(\014lesystems)10 b(are)h(accessible)h(and)e(con)o(tain)f(some)
h(disk)g(space)h(to)f(ha)o(v)o(e)g(mail)e(deliv)o(ered)j(there.)18
b(Where)11 b(directories)75 91 y(are)j(exp)q(ected)h(w)o(e)f(mak)o(e)d(sure)k
(there)f(are)g(no)f(\014les)h(b)o(y)f(these)h(names;)f(where)h(sym)o(b)q
(olic)d(links)i(are)h(exp)q(ected,)h(w)o(e)75 141 y(mak)o(e)f(sure)i(there)h
(are)e(no)g(real)h(\014les)f(or)h(directories)g(with)f(the)h(same)e(name.)21
b(Whenev)o(er)c(p)q(ossible,)e(w)o(e)g(create)75 191 y(directories,)f(with)f
(prop)q(er)i(o)o(wnership)f(and)f(p)q(ermissions.)k(W)m(e)c(ev)o(en)h(c)o
(hec)o(k)h(that)e(the)h(moun)o(t)e(p)q(oin)o(t)h(for)g Fk(hlfsd)75
241 y Fl(is)h(w)o(orld)f(readable)h(and)g(executable,)h(since)f(if)f(it)h
(isn't,)f Fk(getwd\(".."\))e Fl(migh)o(t)h(fail.)75 349 y Fj(4.3)56
b(Alternate)17 b(Mail)h(Sp)r(o)r(ol)g(Directories)175 424 y
Fk(Hlfsd)e Fl(tries)i(to)g(ensure)h(that)f(the)g(user's)g(home)f(directory)h
(is)f(accessible.)31 b(P)o(erio)q(dically)16 b(it)i(also)f(tests)75
474 y(that)i(it)f(can)h(b)q(e)g(written)g(in)o(to)f(\(Section)h(4.5\).)31
b(If)18 b(for)h(an)o(y)f(reason)h(a)f(failure)g(o)q(ccurs,)j
Fk(hlfsd)c Fl(rep)q(oin)o(ts)i(the)75 523 y(sym)o(b)q(olic)11
b(link)h(for)g(that)h(user)h(to)f(an)f(alternate)h(lo)q(cal)f(directory)m(,)h
(whic)o(h)g(is)g(presumably)e(highly)h(a)o(v)n(ailable.)j(W)m(e)75
573 y(use)g Fk(/var/spool/alt)p 457 573 14 2 v 13 w(mail)e
Fl(in)g(our)h(en)o(vironmen)o(t.)j(See)e(T)m(able)e(3.)1167
558 y Fg(12)p 75 636 1800 5 v 238 690 a Fl(Conditions:)k(An)o(y)d
Fh(uid)p Fl(,)g Fh(gid)p Fi(6)p Fl(=HLFS)p 829 690 13 2 v 15
w(GID,)f(and)g Fk(~)p Fh(USER)p Fk(/.mailspool/)f Fl(is)i(not)p
1479 697 60 2 v 14 w(writable.)p 343 710 1265 2 v 342 759 2
50 v 351 759 V 376 744 a Fm(Resolving)p 629 759 V 1083 759
V 1598 759 V 1607 759 V 342 809 V 351 809 V 376 794 a(comp)q(onen)o(t)p
629 809 V 47 w(P)o(athname)g(left)p 1083 809 V 157 w(V)l(alue)h(if)g(sym)o(b)
q(olic)f(link)p 1598 809 V 1607 809 V 343 811 1265 2 v 343
821 V 342 871 2 50 v 351 871 V 376 856 a Fk(/)p 629 871 V 256
w(var/mail/)p Fh(NAME)p 1083 871 V 1598 871 V 1607 871 V 343
872 1265 2 v 342 922 2 50 v 351 922 V 376 907 a Fk(var)p Fl(/)p
629 922 V 191 w Fk(mail/)p Fh(NAME)p 1083 922 V 1598 922 V
1607 922 V 343 924 1265 2 v 342 974 2 50 v 351 974 V 376 959
a Fk(mail)p Fl(@)p 629 974 V 158 w Fk(/mail/home/)p Fh(NAME)p
1083 974 V 85 w Fk(mail)p Fl(@)g Fi(\))f Fk(/mail/home)p 1598
974 V 1607 974 V 343 975 1265 2 v 342 1025 2 50 v 351 1025
V 376 1010 a(/)p 629 1025 V 256 w(mail/home/)p Fh(NAME)p 1083
1025 V 1598 1025 V 1607 1025 V 343 1027 1265 2 v 342 1077 2
50 v 351 1077 V 376 1062 a Fk(mail)p Fl(/)p 629 1077 V 169
w Fk(home/)p Fh(NAME)p 1083 1077 V 1598 1077 V 1607 1077 V
343 1078 1265 2 v 342 1128 2 50 v 351 1128 V 376 1113 a Fk(home)p
Fl(@)p 629 1128 V 158 w Fh(NAME)p 1083 1128 V 327 w Fk(home)p
Fl(@)h Fi(\))f Fk(/var/alt)p 1476 1113 14 2 v 14 w(mail)p 1598
1128 2 50 v 1607 1128 V 343 1130 1265 2 v 342 1180 2 50 v 351
1180 V 376 1165 a(/)p 629 1180 V 256 w(var/alt)p 811 1165 14
2 v 15 w(mail/)p Fh(NAME)p 1083 1180 2 50 v 1598 1180 V 1607
1180 V 343 1181 1265 2 v 342 1231 2 50 v 351 1231 V 376 1216
a Fk(var)p Fl(/)p 629 1231 V 191 w Fk(alt)p 723 1216 14 2 v
15 w(mail/)p Fh(NAME)p 1083 1231 2 50 v 1598 1231 V 1607 1231
V 343 1233 1265 2 v 342 1282 2 50 v 351 1282 V 376 1268 a Fk(alt)p
445 1268 14 2 v 15 w(mail)p Fl(/)p 629 1282 2 50 v 88 w Fh(NAME)p
1083 1282 V 1598 1282 V 1607 1282 V 343 1284 1265 2 v 342 1334
2 50 v 351 1334 V 376 1319 a(NAME)p 629 1334 V 1083 1334 V
1598 1334 V 1607 1334 V 343 1336 1265 2 v 380 1410 a Fl(T)m(able)g(3:)18
b(Resolving)13 b Fk(/var/mail/)p Fh(NAME)f Fl(to)i Fk(/var/alt)p
1323 1410 14 2 v 14 w(mail/)p Fh(NAME)p 75 1460 1800 5 v 175
1600 a Fl(When)f Fk(hlfsd)f Fl(starts)i(up,)f(and)g(b)q(efore)h(it)f(moun)o
(ts)f(itself)h(on)f(top)i(of)e(the)i(moun)o(t)d(p)q(oin)o(t,)i(hiding)f(an)o
(ything)75 1650 y(that)k(is)f(underneath,)i Fk(hlfsd)e Fl(creates)i(a)f
(\014xed)g(sym)o(b)q(olic)e(link)g(to)i(the)g(alternate)g(sp)q(o)q(ol)g
(directory)g(\(if)f(it)g(do)q(es)75 1700 y(not)e(exist)g(already\).)k(This)c
(is)g(done)g(so)g(that)f Fk(/var/spool/mail)e Fl(w)o(ould)i(not)h(b)q(e)g(a)g
(\\dangling")d(sym)o(b)q(olic)h(link,)75 1750 y(and)j(p)q(oin)o(ts)g(to)f(a)h
(real)g(directory)h(at)f(all)e(times,)h(ev)o(en)i(after)f Fk(hlfsd)f
Fl(terminates.)18 b(When)c Fk(hlfsd)f Fl(runs,)h(it)g(hides)75
1799 y(this)h(sym)o(b)q(olic)e(link,)h(and)h(pro)o(vides)g(our)g(\\dynamic")e
(sym)o(b)q(olic)g(link.)20 b(This)15 b(tric)o(k)g(at)g(least)g(pro)o(vides)g
(us)g(with)75 1849 y(an)f(alternate)g(place)g(to)g(deliv)o(er)g(mail)d(when)j
(things)g(go)f(wrong,)h(rather)g(than)g(b)q(ounce)h(or)f(drop)g(the)g(mail.)
175 1924 y(A)g(cron)h(job)e(on)h(our)h(systems)f(c)o(hec)o(ks)i(the)f
(alternate)f(mail)e(sp)q(o)q(ol)i(directory)h(sev)o(eral)g(times)e(a)h(da)o
(y)m(.)k(An)o(y)75 1974 y(messages)12 b(found)g(there)i(are)f(resen)o(t)g(to)
g(their)f(righ)o(tful)f(o)o(wners.)19 b(The)12 b(remailing)e(script)j(can)g
(b)q(e)g(run)f(as)h(often)f(as)75 2024 y(needed.)19 b(Eac)o(h)14
b(in)o(v)o(o)q(cation)e(of)h(the)g(script)h(deals)g(only)e(with)h(newly)g
(lost)g(mail)e(since)j(the)g(previous)g(in)o(v)o(o)q(cation;)75
2073 y(the)f(script)g(lo)q(c)o(ks)g(and)f(renames)h(the)g(lost)f(mailb)q(o)o
(x)e(\014le)i(to)h(a)f(unique)h(name,)e(b)q(efore)i(parsing)f(and)h
(remailing)d(it.)175 2148 y(Similar)j(to)k Fk(amd)p Fl(,)f
Fk(hlfsd)f Fl(can)i(log)e(debugging)h(and)h(v)n(arious)e(status)j
(information)13 b(to)k(a)f(designated)h(log)75 2198 y(\014le)e(or)h(using)f
(the)h Fk(syslog)p Fl([22)n(])f(facilit)o(y)m(.)21 b(The)16
b(SA)f(ma)o(y)f(c)o(ho)q(ose)i(to)g(w)o(atc)o(h)f(these)i(log)e(\014les)g
(and)h(facilities)e(and)75 2248 y(b)q(e)h(noti\014ed)e(when)i(serious)f
(problems)f(o)q(ccur)i(suc)o(h)g(as)f(a)g(full)e(\014lesystem.)75
2356 y Fj(4.4)56 b(Av)n(oiding)18 b(Hangs)175 2431 y Fl(As)10
b(describ)q(ed)i(in)e(Section)h(4.2,)e Fk(hlfsd)g Fl(forks)i(a)e(c)o(hild)h
(at)g(an)o(y)g(p)q(oin)o(t)g(where)h(w)o(e)g(susp)q(ect)h(that)e(an)g(op)q
(eration)75 2481 y(migh)o(t)h(hang.)17 b(If,)12 b(for)h(example,)e(the)j
(home)e(mac)o(hine)f(of)i(the)g(user)h(is)f(do)o(wn,)g(and)f(the)i
(\014lesystem)f(on)f(a)h(clien)o(t)g(is)75 2530 y(hard-moun)o(ted,)h
Fk(hlfsd)f Fl(will)h(hang)g(un)o(til)g(the)i(remote)e(serv)o(er)i(is)f(bac)o
(k)g(up.)21 b(P)o(erforming)13 b(these)j(op)q(erations)f(in)75
2580 y(the)f(bac)o(kground)g(pro)o(vides)g(added)h(reliabilit)o(y)m(,)c(an)i
(idea)h(tak)o(en)g(from)e Fk(amd)p Fl(.)p 75 2615 720 2 v 106
2642 a Ff(12)139 2653 y Fe(In)f(the)f(conditions)f(for)i(T)m(able)g(3,)g
Fd(~)p Fc(USER)h Fe(is)g(the)f(home)f(directory)f(of)i(the)g(user)f(with)i
(user-id)e Fc(uid)p Fe(.)965 2825 y Fl(9)p eop
%%Page: 10 10
bop 75 42 a Fj(4.5)56 b(Disk)18 b(Space)g(Problems)175 117
y Fk(Hlfsd)13 b Fl(c)o(hec)o(ks)j(if)e(the)h(user's)h(home)e(directory)h(is)g
(full)e(or)i(they)g(exceeded)i(their)e(quota.)20 b(It)15 b(attempts)f(to)75
166 y(create)i(and)e(then)h(remo)o(v)o(e)e(a)h(simple)f(nonzero-length)i
(\014le)f(in)g(the)h(user's)g(sp)q(o)q(ol)f(directory)m(,)h(with)f(the)h
(e\013ectiv)o(e)75 216 y Fh(uid)j Fl(set)g(to)f(that)h(of)f(the)h(user.)30
b(If)17 b(that)g(fails,)g(it)g(instead)h(returns)h(bac)o(k)e(the)h(name)e(of)
h(the)h(alternate)g(sp)q(o)q(ol)75 266 y(directory)d(as)f(the)g(v)n(alue)f
(of)h(the)g Fk(home)f Fl(sym)o(b)q(olic)f(link.)17 b(Otherwise)f(mail)11
b(migh)o(t)h(b)q(e)i(dropp)q(ed)h(or)f(b)q(ounce.)175 341 y(An)o(y)j(success)
k(or)d(failure)f(state)h(is)g(recorded)i(in)d Fk(hlfsd)o Fl(.)30
b(It)18 b(is)g(left)g(there)h(for)e(a)h(sp)q(eci\014ed)h(n)o(um)o(b)q(er)f
(of)75 391 y(seconds,)k(after)f(whic)o(h)e(the)i(en)o(try)g(\\times)d(out")i
(and)g(a)f(new)i(actual)e(bac)o(kgrounded)i(lo)q(okup)e(is)g(required.)75
440 y(Otherwise,)14 b(the)g(cac)o(hed)g(result)g(is)f(used)g(and)g(no)g(exp)q
(ensiv)o(e)h Fk(fork)e Fl(is)h(required.)19 b(This)13 b(simple)e(cac)o(hing)i
(feature)75 490 y(of)g Fk(hlfsd)g Fl(has)h(greatly)g(impro)o(v)o(ed)e(its)i
(p)q(erformance)g(and)f(reliabilit)o(y)m(.)j(See)f(also)e(Section)h(5.3.)75
598 y Fj(4.6)56 b(Lo)r(c)n(k)17 b(Files)175 673 y Fl(An)12
b(alternativ)o(e)h(design)g(for)f Fk(hlfsd)f Fl(is)i(to)f(ha)o(v)o(e)h(it)f
(moun)o(t)f(on)h(top)h(of)f(the)h(mail)d(sp)q(o)q(ol)i(directory)i(directly)m
(,)75 723 y(instead)d(of)f(ha)o(ving)f(the)j(mail)c(sp)q(o)q(ol)i(directory)h
(b)q(e)g(a)g(sym)o(b)q(olic)e(link)g(to)i(another)g(link)e(\()p
Fk(home)p Fl(\))h(within)g(the)h(HLFS,)75 773 y(whic)o(h)k(p)q(oin)o(ts)g(to)
g(a)f(real)h(sub)q(directory)i(of)d(the)i(user's)g(home.)k(With)15
b(some)f(mo)q(di\014cations)f(to)i(the)g(serv)o(er,)i(w)o(e)75
823 y(could)d(ha)o(v)o(e)g(made)f(all)h(of)f(the)i(user's)h(mailb)q(o)o(x)11
b(\014les)k(p)q(oin)o(t)f(to)g(the)h(righ)o(t)f(place,)g(but)g(it)g
(su\013ered)j(from)12 b(serious)75 873 y(dra)o(wbac)o(ks:)137
977 y Fi(\017)21 b Fl(The)15 b(sp)q(o)q(ol)f(directory)i(w)o(ould)d(no)i
(longer)f(b)q(e)h(a)g(regular)f(directory)m(.)21 b(It)14 b(w)o(ould)g(ha)o(v)
o(e)h(to)f(b)q(e)h(managed)e(b)o(y)179 1027 y Fk(hlfsd)o Fl(.)18
b(This)c(w)o(ould)f(require)h(the)h(implemen)o(tatio)o(n)c(of)i(more)g(NFS)h
(op)q(erations.)137 1105 y Fi(\017)21 b Fl(The)e(user's)h(sp)q(o)q(ol)f
(\014le)g(w)o(ould)g(not)g(b)q(e)g(a)g(regular)g(\014le,)h(but)f(a)g(sym)o(b)
q(olic)e(link)h(to)h(suc)o(h.)35 b(Some)18 b(mail)179 1155
y(programs)e(remo)o(v)o(e)g(that)h(\014le,)g(not)g(c)o(hec)o(king)g(if)f
(it's)h(a)f(sym)o(b)q(olic)g(link.)26 b(Therefore)18 b(the)g(sym)o(b)q(olic)d
(link)179 1205 y(w)o(ould)10 b(b)q(e)i(remo)o(v)o(ed.)k(W)m(e)10
b(w)o(ould)h(ha)o(v)o(e)g(had)f(to)h(c)o(hange)h(the)f(serv)o(er)i(so)e(that)
g(remo)o(ving)e(the)j(sym)o(b)q(olic)d(link)179 1255 y(w)o(ould)14
b(\014rst)i(follo)o(w)d(it)i(and)g(remo)o(v)o(e)f(the)i(\014le)f(it)g(w)o(as)
g(p)q(oin)o(ting)f(to.)22 b(The)16 b(same)e(go)q(es)i(for)f(all)f(op)q
(erations)179 1304 y(whic)o(h)g(require)g(access)i(to)e(the)g(user's)h(mail)c
(sp)q(o)q(ol)j(\014le.)137 1383 y Fi(\017)21 b Fl(The)11 b(w)o(orst)f
(problem)f(w)o(as)h(that)h(di\013eren)o(t)g(UAs)g(and)f(MT)m(As)g(use)h
(di\013eren)o(t)h(metho)q(ds)d(for)h(lo)q(c)o(king)g(the)h(mail)179
1432 y(\014le.)17 b(Some)12 b(of)g(them)h(create)h(temp)q(orary)e(\014les)h
(named)f Fk($)p Fi(f)p Fk(USER)p Fi(g)p Fk(.lock)p Fl(,)e(others)k(use)g(the)
f Fk(mktemp)f Fl(library)179 1482 y(call)17 b(to)h(generate)i(unique)e
(names.)31 b(Our)19 b(metho)q(d)e(a)o(v)o(oids)h(the)g(need)i(to)e(\014gure)h
(out)f(all)f(the)i(di\013eren)o(t)179 1532 y(metho)q(ds)13
b(used)i(in)e(lo)q(c)o(king)g(mail)e(\014les,)j(and)g(usage)g(of)g(temp)q
(orary)f(\014les.)175 1636 y(An)g(alternate)h(w)o(a)o(y)e(to)h(a)o(v)o(oid)f
(the)i(need)g(for)f(lo)q(c)o(k)g(\014les)h(is)f(to)g(deliv)o(er)g(mail)e(one)
i(message)g(p)q(er)h(\014le)f(using)g(a)75 1686 y(di\013eren)o(t)i(system)g
(suc)o(h)g(as)f(with)h(INN[19)o(])f(and)g(NNTP[10];)f(ho)o(w)o(ev)o(er,)i
(this)f(w)o(ould)g(require)h(mo)q(di\014cations)e(to)75 1736
y(all)g(UAs)h(and)g(MT)m(As.)75 1844 y Fj(4.7)56 b(Source)18
b(Co)r(de)g(Size,)g(Av)m(ailabilit)n(y)-5 b(,)16 b(and)k(P)n(ortabilit)n(y)
175 1919 y Fk(Hlfsd)c Fl(is)h(less)h(than)f(2500)f(lines)h(of)f(C)h(co)q(de,)
i(including)d(commen)o(ts)f(and)i(white-spaces.)29 b(Ho)o(w)o(ev)o(er,)18
b(it)75 1969 y(mak)o(es)13 b(use)h(of)g(almost)e(4000)h(lines)g(of)h(co)q(de)
g(from)f(the)h Fk(amd)f Fl(distribution)h(itself.)175 2044
y Fk(Hlfsd)g Fl(is)h(a)o(v)n(ailable)e(in)i(source)i(form)c(as)j(part)f(of)g
(a)g(sp)q(ecial)h(distribution)e(of)h Fk(amd)p Fl(.)22 b(It)15
b(can)h(b)q(e)g(retriev)o(ed)75 2094 y(via)d(anon)o(ymous)f
Fk(ftp)h Fl(from)f Fk(ftp.cs.columbia.edu)e Fl(in)k(the)g(directory)h
Fk(/pub/amd)p Fl(.)175 2168 y Fk(Hlfsd)h Fl(is)i(built)f(as)g(part)h(of)f
(the)h(sp)q(ecial)g(distribution)f(of)g Fk(amd)g Fl(a)o(v)n(ailable)f(from)g
(our)h(ftp)h(serv)o(er.)30 b(It)18 b(is)75 2218 y(almost)12
b(as)j(p)q(ortable)f(as)g Fk(amd)g Fl(is.)k(It)c(is)h(only)e(the)i(lac)o(k)e
(of)h(access)i(to)e(certain)h(mac)o(hines)e(that)h(stopp)q(ed)h(us)g(from)75
2268 y(p)q(orting)d Fk(hlfsd)f Fl(to)i(the)g(n)o(umerous)f(platforms)e
Fk(amd)i Fl(runs)h(on.)k(A)o(t)c(the)g(writing)f(of)f(this)i(pap)q(er,)g
Fk(hlfsd)e Fl(has)i(b)q(een)75 2318 y(successfully)h(p)q(orted)g(and)e
(running)h(on)f(SunOS)i(4.1.3,)c(HP-UX)k(9.0.1,)d(and)h(Solaris)g(2.2.)17
b(Those)c(represen)o(t)i(the)75 2367 y(3)h(main)e(system)i(t)o(yp)q(es)h
Fk(amd)e Fl(runs)i(on)f(and)f(span)i(most)e(Unix)g(\015a)o(v)o(ors:)22
b(a)16 b(BSD-st)o(yle)g(system,)g(an)g(SVR-BSD)75 2417 y(h)o(ybrid,)d(and)h
(a)f(system)h(v)o(ery)g(close)h(to)e(SVR4,)g(resp)q(ectiv)o(ely)m(.)75
2525 y Fj(5)56 b(Ev)m(aluation)175 2600 y Fl(This)11 b(system)h(is)g(implem)o
(en)o(ted)e(and)i(has)g(b)q(een)h(in)e(use)i(on)e(a)h(n)o(um)o(b)q(er)f(of)g
(mac)o(hines)g(for)h(more)e(than)i(a)g(y)o(ear)75 2650 y(no)o(w.)20
b(F)m(or)14 b(the)h(\014rst)g(nine)g(mon)o(ths)e Fk(hlfsd)h
Fl(w)o(as)g(in)g(exp)q(erimen)o(tal)g(use.)21 b(W)m(e)14 b(ha)o(v)o(e)h
(since)g(deplo)o(y)o(ed)g(it)f(on)g(most)75 2700 y(pro)q(duction)g(mac)o
(hines)f(in)h(our)f(departmen)o(t,)h(spanning)f(o)o(v)o(er)h(a)g(100)f(hosts)
h(and)g(3)g(di\013eren)o(t)g(arc)o(hitectures.)954 2825 y(10)p
eop
%%Page: 11 11
bop 175 42 a Fl(The)11 b(goal)f(of)h(this)g(w)o(ork)g(is)f(to)h(expand)h(the)
f(accessibilit)o(y)g(of)g(electronic)h(mail,)d(impro)o(v)o(e)g(o)o(v)o(erall)
h(reliabilit)o(y)75 91 y(and)i(stabilit)o(y)f(of)g(this)h(vital)f(service,)j
(while)d(at)h(the)h(same)e(time)g(main)o(tain)e(the)k(sanit)o(y)f(of)f(our)h
(SAs)h(\(y)o(ours)f(truly)75 141 y(included\).)18 b(F)m(or)c(this)g(to)g
(really)f(w)o(ork,)g(it)g(m)o(ust)g(ha)o(v)o(e:)126 257 y(1.)20
b(V)m(ery)14 b(high)f(a)o(v)n(ailabilit)o(y)l(.)126 340 y(2.)20
b(Little)13 b(o)o(v)o(erhead.)126 423 y(3.)20 b(Little)14 b(hassle)g(for)g
(users)i(and)e(administrators)e(as)i(the)h(system)f(is)g(b)q(eing)g(used)h
(or)f(installed)g(for)f(the)i(\014rst)179 473 y(time.)75 598
y Fj(5.1)56 b(P)n(erformance)175 673 y Fl(W)m(e)15 b(ha)o(v)o(e)g(carried)h
(out)g(some)e(measuremen)o(ts)h(to)h(quan)o(tify)e(the)i(ab)q(o)o(v)o(e)f
(requiremen)o(ts)h(and)g(more.)22 b(The)75 723 y(tests)15 b(w)o(ere)g(p)q
(erformed)f(on)f(a)h(Sun)g(SP)m(AR)o(Cstation-2)f(running)g(SunOS)i(4.1.3.)
175 797 y(Accessing)20 b(a)f(lo)q(cal)g(sp)q(o)q(ol)g(\014le)g(via)f
Fk(stat)h Fl(normally)d(tak)o(es)k(180)e(msec)h(without)g Fk(hlfsd)o
Fl(.)34 b(If)19 b Fk(hlfsd)f Fl(is)75 847 y(running)g(and)g(has)g(the)h
(user's)h(en)o(try)e(already)g(cac)o(hed,)i(it)e(tak)o(es)h(60)f(msec)g(more)
f(to)h(access)i(the)f(\014le.)31 b(This)75 897 y(o)o(v)o(erhead)19
b(is)f(attributed)h(to)f(the)h(fact)g(that)f(the)h(k)o(ernel)g(has)g(to)f
(access)i(a)e(user-lev)o(el)h(NFS)g(serv)o(er,)h(making)75
947 y(sev)o(eral)14 b(con)o(text)h(switc)o(hes.)175 1022 y(If)h(the)h(en)o
(try)h(is)e(not)h(cac)o(hed,)h Fk(hlfsd)e Fl(forks)g(a)h(c)o(hild)f(to)h(p)q
(erform)f(op)q(erations)h(whic)o(h)f(ma)o(y)f(cause)j(it)e(to)75
1071 y(hang.)21 b(The)16 b(o)o(v)o(erhead)f(of)f(that)i Fk(fork)e
Fl(and)h(other)g(c)o(hec)o(ks)i(is)e(an)f(additional)g(70)g(msec)h(\(or)g
(130)f(msec)h(o)o(v)o(er)g(the)75 1121 y(regular)d(lo)q(okup)f(not)g(using)h
Fk(hlfsd)o Fl(\).)17 b(Ho)o(w)o(ev)o(er,)12 b(this)g(o)o(v)o(erhead)g(is)g
(incurred)h(only)d(once)j(in)e(5)h(min)o(utes,)e(b)q(ecause)75
1171 y(the)k(result)h(of)e(eac)o(h)i(c)o(hec)o(k)g(is)e(cac)o(hed)i(for)f
(that)g(long)f(b)o(y)g(default.)175 1246 y(The)f(ab)q(o)o(v)o(e)g(times)f
(are)i(somewhat)e(signi\014can)o(t,)g(but)i(not)e(b)o(y)h(m)o(uc)o(h,)f
(considering)h(the)h(use)g(of)f(a)f(user-lev)o(el)75 1296 y(\014le-serv)o
(er.)19 b(\(By)12 b(comparison,)e(in)h(our)h(en)o(vironmen)o(t)f(it)g(tak)o
(es)h(ab)q(out)g(0.5)e(seconds)k(to)d(access)j(a)d(new)h(\014lesystem)75
1345 y(using)h Fk(amd)p Fl(.\))18 b(Giv)o(en)13 b(the)h(b)q(ene\014ts)i(of)d
Fk(hlfsd)o Fl(,)g(w)o(e)h(feel)g(that)g(a)f(minima)o(l)e(access)k(slo)o(wdo)o
(wn)e(is)h(a)f(small)f(price)i(to)75 1395 y(pa)o(y)m(.)j(In)d(practice,)g(o)o
(v)o(er)g(12)g(mon)o(ths)e(of)i(usage)g(w)o(e)g(ha)o(v)o(e)g(noticed)g(no)g
(visible)f(degradation)g(of)h(service.)1734 1380 y Fg(13)175
1470 y Fl(The)h(in)o(ternal)g(data)h(structures)h(\(tables)f(and)f(cac)o
(hes\))i(require)g(50)e(b)o(ytes)h(p)q(er)g(user)g(on)g(the)g(system.)22
b(In)75 1520 y(our)16 b(en)o(vironmen)o(t,)e(with)i(750)f(users,)i(that)f
(translates)g(to)g(ab)q(out)f(37KB)h(|)f(rather)i(insigni\014can)o(t)e(giv)o
(en)g(that)75 1570 y(w)o(orkstations)f(these)h(da)o(ys)f(come)f(installed)g
(with)h(at)f(least)i(16-32MB)e(of)g(RAM.)75 1677 y Fj(5.1.1)55
b(Remailing)16 b(Lost)i(Mail)175 1753 y Fl(The)h Fk(hlfsd)f
Fl(distribution)h(con)o(tains)g(a)f Fk(perl)p Fl([26)o(])g(script)i(called)f
Fk(lostaltmail)p Fl(.)31 b(Remailing)16 b(a)i(single)75 1802
y(message)c(with)g(a)g(b)q(o)q(dy)g(size)h(of)f(1KB,)g(tak)o(es)h(an)f(a)o(v)
o(erage)g(of)g(1.2)f(seconds)j(\(total)d(time\).)18 b(In)c(our)h(departmen)o
(t,)75 1852 y(resending)g(an)e(a)o(v)o(erage)h(mailb)q(o)o(x)d(\014le)j(tak)o
(es)h(ab)q(out)e(20)h(seconds.)175 1927 y(Initially)f(w)o(e)j(ran)g(the)h
(script)f(once)h(a)e(da)o(y)m(,)g(but)h(found)g(ha)o(ving)f(to)g(w)o(ait)g
(up)h(to)g(24)f(hours)i(for)e(lost)h(mail)75 1977 y(redeliv)o(ery)f(to)q(o)g
(long.)k(W)m(e)14 b(then)i(exp)q(erimen)o(ted)f(with)f(running)g
Fk(lostaltmail)f Fl(once)i(an)f(hour.)21 b(Ho)o(w)o(ev)o(er,)15
b(w)o(e)75 2027 y(found)c(that)g(frequency)h(to)q(o)f(fast.)17
b(The)12 b(most)e(lik)o(ely)f(situation)i(in)g(whic)o(h)g Fk(hlfsd)f
Fl(will)f(rep)q(oin)o(t)j(its)f(sym)o(b)q(olic)e(link)75 2076
y(to)14 b(the)g(alternate)g(sp)q(o)q(ol)g(directory)g(is)g(when)g(the)g
(user's)h(\014lesystem)f(is)f(full.)k(A)d(full)e(\014lesystem)i(is)g(a)f(p)q
(ersisten)o(t)75 2126 y(situation)18 b(that)h(in)f(most)f(cases)j(tak)o(es)f
(some)f(time)f(to)h(get)h(\014xed,)h(as)e(it)h(requires)g(h)o(uman)e(in)o
(terv)o(en)o(tion.)32 b(If)75 2176 y(the)19 b(situation)f(that)h(causes)h
Fk(hlfsd)e Fl(to)g(use)i(the)f(alternate)g(sp)q(o)q(ol)g(directory)g(is)g
(lik)o(ely)e(to)i(p)q(ersist,)h(running)75 2226 y(the)15 b
Fk(lostaltmail)e Fl(script)i(will)f(consume)g(unnecessary)j(resources,)g
(only)d(to)h(redeliv)o(er)g(the)h(mail)c(bac)o(k)j(to)f(the)75
2276 y(alternate)f(sp)q(o)q(ol)f(directory)m(.)18 b(W)m(e)12
b(\014nally)g(settled)h(on)g(running)f Fk(lostaltmail)e Fl(b)q(et)o(w)o(een)k
(6)e(and)h(12)f(times)f(a)h(da)o(y)m(.)75 2325 y(Dep)q(ending)i(on)g(the)g
(amoun)o(t)e(of)i(lost)f(mail)e(exp)q(ected,)16 b(the)e(script)h(could)f(b)q
(e)g(run)h(more)d(or)i(less)h(often.)75 2433 y Fj(5.1.2)55
b(Reliabilit)n(y)175 2509 y Fl(W)m(e)11 b(ha)o(v)o(e)h(sim)o(ulated)f(w)o
(orst-case)i(scenarios)g(b)o(y)f(\014lling)e(up)i(a)g(user)h(\014lesystem)f
(and)g(letting)g Fk(hlfsd)f Fl(decide)75 2558 y(to)k(redirect)i(mail)12
b(to)j(the)h(alternate)g(sp)q(o)q(ol)e(directory)m(.)22 b(A)o(t)16
b(this)f(p)q(oin)o(t)f(w)o(e)i(\014lled)f(up)g(that)g(\014lesystem)g(as)g(w)o
(ell.)p 75 2593 720 2 v 106 2620 a Ff(13)139 2632 y Fe(The)g(SAs)h(group)e
(felt)h(so)g(con)o(vinced)e(that)i Fd(hlfsd)f Fe(w)o(as)i(w)o(orking)e(w)o
(ell,)j(that)d(w)o(e)i(w)o(ere)g(the)f(\014rst)g(to)g(use)g(it)g(on)g
Fc(our)i Fe(home)75 2671 y(mac)o(hines.)954 2825 y Fl(11)p
eop
%%Page: 12 12
bop 75 42 a Fk(Hlfsd)16 b Fl(k)o(ept)i(on)e(p)q(oin)o(ting)g(to)h(the)h
(alternate)g(sp)q(o)q(ol)f(directory)g(during)g(the)h(cac)o(hed)g(en)o(try)g
(in)o(terv)n(al,)e(but)i(w)o(e)75 91 y(observ)o(ed)d(no)g(mail)c(lost.)19
b(Instead,)c(the)g(sending)g(side)f(detected)j(that)d(the)h(\014lesystem)f(w)
o(as)h(full,)d(and)j(k)o(ept)f(the)75 141 y(message)g(in)f(the)i(remote)e
(\(priv)n(ate\))h(sp)q(o)q(ol)g(directory)m(.)k(This)c(is)f(the)i(default)e
(b)q(eha)o(vior)h Fk(sendmail)p Fl([1)n(])f(pro)o(vides.)175
216 y Fk(Hlfsd)d Fl(do)q(es)i(not)g(in)o(tro)q(duce)g(an)o(y)f(new)h
(problems;)f(that)h(is,)f(if)g(a)h(\014lesystem)f(is)g(completely)g(full,)f
(whatev)o(er)75 266 y(b)q(eha)o(vior)j(y)o(our)g(curren)o(t)h(LD)o(A)f(pro)o
(vides)g(is)g(main)o(tained.)j(Since)e Fk(hlfsd)e Fl(uses)i(b)q(oth)f(the)h
(user's)g(\014lesystem)f(and)75 315 y(an)18 b(alternate)h(sp)q(o)q(ol)f
(directory)m(,)h(it)f(actually)g(increases)i(the)f(a)o(v)n(ailabili)o(t)o(y)c
(of)j(mail)e(services,)21 b(b)o(y)d(\\virtually")75 365 y(increasing)c(the)h
(disk)e(space)i(a)o(v)n(ailable)d(for)h(mail)f(sp)q(o)q(oling.)175
440 y(Once)g(space)g(has)f(b)q(een)h(freed)g(in)f(the)g(user's)h
(\014lesystem,)f(and)g(the)h(cac)o(hed)g(en)o(try)f(expired,)h
Fk(hlfsd)e Fl(p)q(oin)o(ted)75 490 y(its)h(sym)o(b)q(olic)f(link)h(bac)o(k)g
(to)g(the)h(user's)h(home)d(directory)m(.)18 b(The)12 b(next)g(time)e(the)i
(remailing)d(script)j(ran,)f(all)g(\\lost")75 540 y(mail)g(got)j(resen)o(t)h
(to)f(its)g(o)o(wners.)175 614 y(Since)f(the)g(installation)d(of)i
Fk(hlfsd)f Fl(in)h(our)h(pro)q(duction)f(en)o(vironmen)o(t,)f(w)o(e)i(ha)o(v)
o(e)f(seen)i(a)e(few)h(cases)g(of)f(lost)75 664 y(mail)i(b)q(eing)i(resen)o
(t,)i(mostly)c(due)j(to)f(full)f(\014lesystems.)25 b(W)m(e)16
b(kno)o(w)g(of)g(no)g(case)h(where)g(mail)d(w)o(as)i(completely)75
714 y(lost.)75 822 y Fj(5.2)56 b(Installation)175 897 y Fl(Since)13
b Fk(hlfsd)e Fl(w)o(as)i(written)g(b)o(y)f(SAs)h(for)f(other)h(SAs,)g(w)o(e)g
(ha)o(v)o(e)f(pro)o(vided)h(it)f(with)g(sev)o(eral)h(command-li)o(ne)75
947 y(options)f(to)h(use)g(at)g(startup)g(time,)e(enabling)h
Fk(hlfsd)g Fl(to)g(b)q(e)h(tailored)g(for)f(a)g(particular)h(en)o(vironmen)o
(t.)j(Needless)75 997 y(to)g(sa)o(y)m(,)g(a)g(man)e(page)i(is)h(pro)o(vided,)
f(as)g(w)o(ell)g(as)g(complete)g(source)h(co)q(de.)26 b(F)m(urthermore,)16
b(w)o(e)h(included)f(a)g(few)75 1046 y(scripts)f(written)f(in)f
Fk(sh)g Fl(and)h Fk(perl)e Fl(whic)o(h)i(w)o(e)g(use)g(in)f(our)h(en)o
(vironmen)o(t)e(to)i(re/start)h Fk(hlfsd)o Fl(,)e(test)h(for)g(p)q(ossible)75
1096 y(con\014guration)f(anomalies,)f(and)h(resend)j(\\lost")d(mail.)175
1171 y(The)e(most)f(signi\014can)o(t)h(w)o(ork)f(that)i(SAs)f(need)h(to)f(do)
g(is)g(iden)o(tify)f(programs)g(that)h(need)h(to)f(access)i(mailb)q(o)o(x)75
1221 y(\014les)18 b(of)f(other)i(users,)h(and)d(\\)p Fh(setgid)p
Fl(")h(them)f(to)g(HLFS)p 967 1221 13 2 v 15 w(GID.)g(In)h(our)g(en)o
(vironmen)o(t)e(w)o(e)i(had)g(to)g(do)f(that)h(for)75 1271
y Fk(comsat)p Fl(,)f Fk(from)p Fl(,)g Fk(finger)g Fl(and)g(a)h(few)g(others.)
30 b(Our)19 b(en)o(vironmen)o(t)d(uses)j(the)g Fk(rdist)p Fl([5)n(])e
(automatic)f(soft)o(w)o(are)75 1320 y(distribution)i(program,)g(and)g(th)o
(us)h(these)h(c)o(hanges)f(w)o(ere)h(required)f(only)f(in)g(one)h(place)f(|)g
(the)i(top)e(of)g(our)75 1370 y Fk(rdist)13 b Fl(tree.)75 1478
y Fj(5.3)56 b(Problems)175 1553 y Fl(There)15 b(are)f(a)g(few)g(problems,)e
(some)h(of)g(whic)o(h)h(cannot)g(b)q(e)h(easily)e(resolv)o(ed:)137
1670 y Fi(\017)21 b Fl(Some)15 b(programs)g(need)i(to)f(b)q(e)h
Fh(setgid)g Fl(to)f(the)h(sp)q(ecial)f(HLFS)p 1181 1670 V 15
w(GID)g(group.)25 b(There)17 b(is)g(no)f(easy)g(w)o(a)o(y)g(to)179
1719 y(lo)q(cate)f(them)g(other)h(than)g(kno)o(wing)e(ahead)i(of)f(time)f
(what)h(they)h(do.)23 b(Note)16 b(that)f(if)g(the)h(programs)f(are)179
1769 y(not)c Fh(setgid)p Fl(,)g(the)h(only)f(consequence)i(is)e(that)h(these)
g(programs)f(are)g(unable)g(to)g(\014nd)h(mailb)q(o)o(xes.)j(Ho)o(w)o(ev)o
(er,)179 1819 y(with)e(other)i(metho)q(ds,)e(if)g($MAIL)h(is)f(not)h(used,)g
(mail)e(is)h(not)h(deliv)o(ered.)137 1902 y Fi(\017)21 b Fl(It)12
b(is)f(p)q(ossible)h(that)g(the)h(status)f(of)g(a)f(home)g(directory)h
(access)i(will)c(c)o(hange)j(during)e(the)i(time)d(that)i Fk(hlfsd)179
1952 y Fl(cac)o(hes)17 b(this)g(information.)23 b(Pic)o(king)15
b(a)h(smaller)f(cac)o(he)i(expiration)f(time)f(can)i(alleviate)e(this)i
(problem,)179 2002 y(but)d(it)g(increases)h(the)g(resources)h(tak)o(en)e(b)o
(y)g Fk(hlfsd)f Fl(and)h(slo)o(ws)f(do)o(wn)h(access)i(to)e(mail.)h(It)f(is)g
(left)g(for)f(the)179 2051 y(individual)f(SAs)i(to)g(c)o(hange)g(this)g
(default)f(v)n(alue.)137 2134 y Fi(\017)21 b Fl(An)o(y)14 b(logins)e(with)i
(the)h(same)e Fh(uid)h Fl(and)f(a)h(di\013eren)o(t)h(home)e(directory)h(ma)o
(y)e(ha)o(v)o(e)i(mail)d(deliv)o(ered)k(or)e(read)179 2184
y(from)c(an)o(y)i(of)f(their)h(home)f(directory)i(pathnames.)k
Fk(Hlfsd)10 b Fl(stores)j(pathnames)d(in)g(an)h(in)o(ternal)g(hash)g(table)
179 2234 y(k)o(ey)o(ed)i(b)o(y)g(the)g Fh(uid)p Fl(;)g(therefore,)h(it)f(is)g
(unde\014ned)h(whic)o(h)f(pathname)f(is)g(returned)j(in)d(the)i(case)g(of)e
(m)o(ultiple)179 2284 y(users)k(with)e(the)h(same)f Fh(uid)h
Fl(and)g(di\013eren)o(t)g(home)f(directories.)21 b(W)m(e)14
b(pro)o(vide)h(a)f(script)i(whic)o(h)e(c)o(hec)o(ks)i(for)179
2334 y(this)e(situation)f(and)h(w)o(arns)g(the)g(SAs.)137 2417
y Fi(\017)21 b Fl(On)16 b(systems)g(that)g(cannot)g(turn)g(o\013)g(the)g(NFS)
g(attribute)g(cac)o(he,)h(the)g(k)o(ernel)f(migh)o(t)d(return)k(the)g(same)
179 2467 y(sym)o(b)q(olic)8 b(link)h(name)f(for)i(t)o(w)o(o)f(di\013eren)o(t)
i(users)g(who)f(access)h(the)g(sp)q(o)q(ol)e(directory)i(consecutiv)o(ely)m
(,)f(p)q(ossibly)179 2516 y(resulting)17 b(in)f(mail)e(getting)i(deliv)o
(ered)h(to)g(the)g(wrong)g(mailb)q(o)o(x!)23 b(On)17 b(these)h(systems,)f
Fk(hlfsd)f Fl(will)f(not)179 2566 y(run)h(unless)g(started)g(with)f(a)h(sp)q
(ecial)f(option.)22 b(In)16 b(that)f(case)i(it)e(will)f(set)i(the)g
(attribute)g(cac)o(he)g(v)n(alue)f(to)179 2616 y(the)f(shortest)i(p)q
(ossible)e(in)o(terv)n(al,)e(but)i(it)g(ma)o(y)e(not)i(b)q(e)g(su\016cien)o
(t.)954 2825 y(12)p eop
%%Page: 13 13
bop 75 42 a Fj(6)56 b(Related)17 b(W)-5 b(ork)175 117 y Fl(The)18
b(idea)f(of)h(dynamic)e(or)h(v)n(ariable)g(pathname)g(comp)q(onen)o(ts)g(is)h
(not)g(new.)30 b(HP-UX)18 b(do)q(es)g(this)g(with)75 166 y(con)o(text-dep)q
(enden)o(t)g(\014les[8],)d(and)g(Mac)o(h)h(with)f(the)h(\\)p
Fk(@SYS)p Fl(")f(v)n(ariables[4)n(].)23 b(Both)16 b(of)f(these)i(implemen)o
(tations)75 216 y(supp)q(ort)11 b(replacemen)o(t)f(of)f(pathname)g(comp)q
(onen)o(ts)h(b)o(y)g(k)o(ernel)g(v)n(ariables.)16 b(Ap)q(ollo's)9
b(DOMAIN/OS)i(supp)q(orted)75 266 y(a)20 b(more)g(sophisticated)h(system)f
(where)i(arbitrary)e(user)i(en)o(vironmen)o(t)d(v)n(ariables)h(could)g(b)q(e)
h(referenced)i(in)75 316 y(pathnames[11)n(,)12 b(12].)k(On)d(the)g(issue)g
(of)e(ha)o(ving)g(a)h(user's)i(home)d(\014les)h(and)g(mailb)q(o)o(x)e(\014le)
i(reside)h(in)f(one)g(lo)q(cation,)75 366 y(Plan)h(9's)h Fh(attach)g
Fl(op)q(erator)h(can)f(b)q(e)g(used)h(to)f(unify)f(sev)o(eral)h(\014le)g
(serv)o(ers)i(in)o(to)d(one)h(user)h(name)e(space[14].)175
440 y(What)f(is)h(new)g(ab)q(out)g(our)g(idea)g(is)g(that)g(w)o(e)g(do)f(not)
h(require)h(an)o(y)f(c)o(hange)g(to)g(an)o(y)f(part)h(of)g(the)g
(\014lesystem)75 490 y(implemen)o(tatio)o(n)c(in)i(the)i(k)o(ernel.)18
b(All)10 b(that)i(is)g(required)h(are)f(RPC)f(and)h(NFS,)f(making)f(the)i
(system)f(m)o(uc)o(h)g(more)75 540 y(widely)i(applicable.)175
615 y(Though)i(at)h(\014rst)h(it)e(ma)o(y)f(app)q(ear)i(that)g
Fk(amd)f Fl(can)i(do)e(what)h(hlfsd)f(do)q(es,)i(it)f(can't.)24
b Fk(Amd)15 b Fl(cannot)h(return)75 665 y(di\013eren)o(t)d(pathnames)f(as)g
(a)g(v)n(alue)g(of)g(a)g(sym)o(b)q(olic)f(link)g(dep)q(ending)i(on)f(who)g
(accessed)j(it.)i(See)c(also)f(Section)h(2.3)75 714 y(for)h(more)e(details)i
(on)g(v)n(arious)f(w)o(a)o(ys)g(in)h(whic)o(h)g Fk(amd)f Fl(cannot)h(help)g
(the)g(w)o(a)o(y)g Fk(hlfsd)e Fl(can.)75 822 y Fj(6.1)56 b(Mail-reading)17
b(Serv)n(ers)175 897 y Fl(The)11 b(future)g(of)g(mail)d(reading)i(and)h
(sending)g(ma)o(y)e(b)q(e)i(similar)e(to)h(that)h(used)h(b)o(y)f(the)g(NNTP)g
(proto)q(col)g(used)75 947 y(for)g(managing)d(NetNews[10)q(,)j(19)o(].)17
b(That)11 b(is,)g(a)g(sp)q(ecial-purp)q(ose)h(serv)o(er)h(whic)o(h)e(pro)o
(vides)h(net)o(w)o(ork)f(connections)75 997 y(for)j(reading)f(and)h(writing)f
(mail)e(remotely)m(.)175 1072 y(Sev)o(eral)19 b(suc)o(h)g(programs)f(exist,)i
(most)e(notably)g(IMAP[16])g(and)h(POP[17].)32 b(Ho)o(w)o(ev)o(er,)20
b(use)g(of)f(these)75 1122 y(serv)o(ers)14 b(is)e(limited)e(at)i(this)g(time)
e(b)q(ecause)k(most)d(MT)m(As)h(and)g(UAs)h(ha)o(v)o(e)f(not)g(b)q(een)h(con)
o(v)o(erted)g(to)f(use)h(them,)e(or)75 1171 y(they)i(require)h(sp)q(ecial)f
(en)o(vironmen)o(ts)f(\(the)i Fh(A)o(ndr)n(ew)f(Message)i(Delivery)e(System)p
Fl([18)o(])g(requires)h(AFS\).)e(P)o(orting)75 1221 y(those)18
b(applications)f(for)h(most)e(p)q(opular)i(en)o(vironmen)o(ts)f(is)g(not)h
(going)f(to)g(b)q(e)i(an)e(easy)h(task.)30 b(Nev)o(ertheless,)75
1271 y(the)15 b(b)q(ene\014ts)h(of)d(suc)o(h)i(services)h(o)o(v)o(er)e(that)g
(of)g Fk(hlfsd)f Fl(w)o(ould)g(include)h(faster)h(and)f(more)f(reliable)h
(service,)h(plus)75 1321 y(greatly)e(expanded)h(functionalit)o(y)e(\(p)q
(ossibly)h(pro)o(viding)f(threads)i(information)c(for)j(threaded)i(mail)10
b(readers\).)75 1429 y Fj(7)56 b(Conclusion)175 1504 y Fl(W)m(e)16
b(ha)o(v)o(e)h(describ)q(ed)i(the)f(b)q(ene\014ts)h(of)d(deliv)o(ering)h
(mail)d(to)j(users')h(home)e(directories,)j(the)e(traditional)75
1554 y(w)o(a)o(ys)10 b(to)f(do)h(that)g(and)g(wh)o(y)f(w)o(e)i(think)e(they)h
(are)h(inadequate,)f(and)g(the)g(design,)h(implemen)o(tatio)o(n,)d(p)q
(erformance,)75 1604 y(and)14 b(con)o(v)o(enience)h(of)e(our)h(alternativ)o
(e.)175 1678 y(The)i(main)f(con)o(tribution)g(of)h(our)g(w)o(ork)g(is)h(the)g
(idea)f(mail)d(can)k(b)q(e)g(reliably)e(deliv)o(ered)i(to)f(user's)h(home)75
1728 y(directories)12 b(for)e(easy)h(access)i(with)d(v)o(ery)h(little)f(o)o
(v)o(erhead,)h(user)g(hassle,)h(or)e(the)i(need)f(for)f(extensiv)o(e)i(in)o
(terv)o(en)o(tion)75 1778 y(on)i(the)g(part)g(of)f(SAs.)175
1853 y(A)h(w)o(orking)f(protot)o(yp)q(e)i(v)o(ersion)f(of)g
Fk(hlfsd)f Fl(w)o(as)h(written)h(in)f(one)g(w)o(eek)o(end.)20
b(Ho)o(w)o(ev)o(er,)15 b(the)f(ideas)h(repre-)75 1902 y(sen)o(ted)e(in)e(the)
i(w)o(ork)e(span)h(sev)o(eral)h(y)o(ears)f(of)f(exp)q(erience)j(in)d(net)o(w)
o(ork)h(programming)c(\(esp)q(ecially)13 b(RPC)o(\),)f(NFS,)75
1952 y Fk(amd)p Fl(,)h(and)g(mail)f(systems.)75 2060 y Fj(7.1)56
b(F)-5 b(uture)18 b(W)-5 b(ork)175 2135 y Fl(It)15 b(w)o(ould)e(b)q(e)j(p)q
(ossible)f(to)g(in)o(tegrate)g(some)f(of)g Fk(hlfsd)o Fl('s)g(functionalit)o
(y)g(in)o(to)g Fk(amd)p Fl(,)g(b)o(y)g(pro)o(viding)g(sp)q(ecial)75
2185 y(k)o(eyw)o(ords)g(lik)o(e)f Fk($)p Fi(f)p Fk(home)p Fi(g)p
Fl(,)f Fk($)p Fi(f)p Fk(user)p Fi(g)g Fl(and)i Fk($)p Fi(f)p
Fk(group)p Fi(g)e Fl(for)i(use)h(in)e Fk(amd)p Fl('s)g(maps.)175
2260 y(W)m(e)e(plan)g(on)g(making)e(sure)k Fk(hlfsd)d Fl(is)h(as)h(p)q
(ortable)g(as)f Fk(amd)g Fl(is,)g(and)h(impro)o(ving)d(its)i(p)q(erformance)h
(as)f(m)o(uc)o(h)75 2310 y(as)j(p)q(ossible.)k(An)c(RPC)g(in)o(terface)g(for)
g(querying)g Fk(hlfsd)o Fl('s)f(status)i(is)f(needed)h(as)f(w)o(ell.)75
2418 y Fj(7.2)56 b(Alternativ)n(e)17 b(Uses)175 2493 y Fk(Hlfsd)o
Fl('s)g(primary)e(use)j(is)f(that)h(of)e(a)h(mail-sp)q(o)q(ol)e(redirector.)
29 b(Ho)o(w)o(ev)o(er,)18 b(it)f(can)h(b)q(e)g(used)g(to)f(p)q(erform)75
2543 y(other)e(tasks.)j(All)13 b(it)h(tak)o(es)g(are)g(the)h(righ)o(t)e
(command-li)o(ne)f(options:)137 2650 y Fi(\017)21 b Fk(Hlfsd)10
b Fl(can)h(manage)e(the)j Fk(/var/tmp)d Fl(directory)m(.)17
b(Th)o(us)12 b(ev)o(ery)f(user)h(who)f(uses)h Fk(/var/tmp)e
Fl(w)o(ould)g(actually)179 2700 y(b)q(e)j(using)e(a)h(sub)q(directory)i
(within)d(their)i(o)o(wn)e(home)g(directory)m(,)i(rather)g(than)f(taking)f
(from)f(system-wide)954 2825 y(13)p eop
%%Page: 14 14
bop 179 42 a Fl(resources.)137 124 y Fi(\017)21 b Fl(Other)13
b(t)o(yp)q(es)g(of)e(user-sp)q(eci\014c)k(\014les)d(whic)o(h)g(get)h(sp)q(o)q
(oled)f(to)g(a)g(particular)g(host,)g(suc)o(h)h(as)f Fh(Se)n(cr)n(et)h(Mail)p
Fl([24)n(])179 173 y(or)h(electronic)h(faxes)f(can)g(also)f(b)q(e)h
(redirected)i(for)e(sp)q(o)q(oling)f(in)o(to)g(home)g(directories.)75
296 y Fj(8)56 b(Ac)n(kno)n(wledgmen)n(ts)175 371 y Fl(Sp)q(ecial)10
b(thanks)h(go)e(to)i(Daniel)e(Duc)o(hamp)g(for)h(his)g(in)o(v)n(aluable)f
(commen)o(ts)f(on)i(the)h(pap)q(er,)h(to)e(James)g(T)m(anis)75
421 y(who)g(wrote)h(the)f(remailing)e(script)j(and)f(pro)o(vided)g(useful)g
(feedbac)o(k,)h(and)f(to)g(all)f(mem)o(b)q(ers)g(of)g(the)i(tec)o(hnical)g
(sta\013)75 471 y(who)e(help)q(ed)h(in)f(stress-testing)i Fk(hlfsd)o
Fl(.)17 b(W)m(e)9 b(also)f(thank)h(man)o(y)f(mem)o(b)q(ers)g(of)g(the)i
Fk(amd-workers@acl.lan)o(l.gov)75 520 y Fl(mailing)h(list)i(for)h(pro)o
(viding)e(v)n(aluable)h(discussion)h(on)g(the)g(sub)r(ject.)175
595 y(This)f(w)o(ork)h(w)o(as)f(supp)q(orted)i(in)e(part)h(b)o(y)f(a)h
(National)e(Science)j(F)m(oundation)d(CISE)i(Institutional)f(Infras-)75
645 y(tructure)j(gran)o(t,)d(n)o(um)o(b)q(er)g(CD)o(A-90-24735.)175
720 y(As)i Fk(hlfsd)f Fl(uses)i(parts)f(of)f(the)i Fk(amd)e
Fl(distribution,)g(it)h(is)f(distributed)i(under)g(the)f(same)f(restrictions)
i(and)75 769 y(licenses)f(that)f Fk(amd)f Fl(is.)75 877 y Fj(9)56
b(References)75 952 y Fl([1])20 b(E.)14 b(Allman.)k(SENDMAIL)d({)f(An)h(In)o
(ternet)o(w)o(ork)h(Mail)d(Router.)21 b(In)14 b Fh(UNIX)i(System)f(Manager's)
h(Manual.)140 1002 y Fl(Univ)o(ersit)o(y)d(of)h(California,)d(Berk)o(eley)m
(,)j(1986.)75 1084 y([2])20 b(F.)g(C.)g(Baran.)39 b(MW:)20
b(Mail-W)m(atc)o(h.)37 b(An)21 b(unpublished)g(man)o(ual)d(page,)k(Academic)e
(Systems)h(Group,)140 1134 y(Colum)o(bia)11 b(Univ)o(ersit)o(y)i(Cen)o(ter)i
(for)f(Computing)e(Activities,)h(1987.)75 1216 y([3])20 b(B.)12
b(Callaghan)f(and)h(T.)g(Ly)o(on.)j(The)e(Automoun)o(ter.)i(In)e
Fh(Pr)n(o)n(c.)g(1989)h(Winter)g(USENIX)g(Conf.)p Fl(,)e(pp.)g(43{51,)140
1266 y(Jan)o(uary)h(1989.)75 1348 y([4])20 b(M.)13 b(N.)g(Condict.)18
b(Con\014guring)13 b(and)g(Building)g(Mac)o(h)h(3.0.)i(OSF)e(Researc)o(h)h
(Institute,)f(Grenoble,)g(F)m(rance.)140 1398 y(Unpublished)g(notes)g(a)o(v)n
(ailable)e(via)h(ftp)h(from)e Fk(mach.cs.cmu.edu:d)o(oc/no)o(tes/k)o(ernel)p
1595 1398 14 2 v 12 w(build.doc)p Fl(.)75 1480 y([5])20 b(M.)13
b(A.)g(Co)q(op)q(er.)18 b(Ov)o(erhauling)13 b(Rdist)g(for)h(the)g('90s.)j
Fh(L)n(ar)n(ge)d(Instal)r(lation)h(System)g(A)n(dministr)n(ators)e(Work-)140
1530 y(shop)i(Pr)n(o)n(c)n(e)n(e)n(dings)p Fl(,)e(pp.)h(1-8,)f(USENIX,)h
(Long)f(Beac)o(h,)h(CA,)g(Octob)q(er)h(19-June)f(23,)f(1992.)75
1612 y([6])20 b(A.)13 b(J.)h(Findla)o(y)m(.)i(The)e(Home-Directory)f(Mail)g
(System.)18 b(In)13 b Fh(EUUG)i(News)p Fl(,)e(Autumn)g(1988.)75
1694 y([7])20 b(J.)13 b(F)m(ulton.)k(MIT)d(X)g(Consortium.)j(X11R5)12
b(Reference)k(Man)o(ual)d(P)o(ages,)h(Section)g(1:)k(\\xbi\013\(1\)",)12
b(1988.)75 1776 y([8])20 b(Hewlett-P)o(ac)o(k)n(ard)14 b(Compan)o(y)m(.)j
(HP-UX)e(Release)g(9.0)e(Reference)j(Man)o(ual,)d(Section)i(4:)k
(\\cdf\(4\)",)13 b(August)140 1826 y(1992.)75 1908 y([9])20
b(IBM)11 b(Corp.)j(AIX)e(Comma)o(nds)d(Reference,)k(V)m(olume)d(1,)h(\\b)q
(ellmail\(1\)")o(,)e(pp.)i(1-84|1-87,)e(Decem)o(b)q(er)i(1989.)75
1990 y([10])19 b(B.)14 b(Kan)o(tor)g(and)g(P)m(.)f(Lapsley)m(.)k(Net)o(w)o
(ork)e(News)f(T)m(ransfer)h(Proto)q(col.)j(RF)o(C)13 b(977,)f(F)m(ebruary)j
(1986;)d(27)h(p.)75 2073 y([11])19 b(P)m(.)14 b(J.)h(Leac)o(h,)g(P)m(.)f(H.)g
(Levine,)h(B.)f(P)m(.)g(Douros,)h(J.)f(A.)h(Hamilton,)c(D.L.)j(Nelson,)g(and)
h(B.)g(L.)f(Stumpf.)19 b Fh(The)140 2122 y(A)o(r)n(chite)n(ctur)n(e)14
b(of)j(an)f(Inte)n(gr)n(ate)n(d)g(L)n(o)n(c)n(al)g(Network.)22
b Fl(In)15 b Fh(IEEE)i(Journal)f(on)h(Sele)n(cte)n(d)f(A)o(r)n(e)n(as)g(in)g
(Communi-)140 2172 y(c)n(ations,)d Fm(SA)o(C-1)p Fl(\(5\),)g(pp.)h(842-856,)e
(No)o(v)o(em)o(b)q(er)h(1983.)75 2254 y([12])19 b(P)m(.)12
b(H.)f(Levine.)16 b Fh(The)d(Ap)n(ol)r(lo)g(DOMAIN)g(Distribute)n(d)g(File)f
(System.)k Fl(In)c Fh(NA)m(TO)g(ASI)i(Series:)j(The)n(ory)c(and)140
2304 y(Pr)n(actic)n(e)k(of)i(Distribute)n(d)f(Op)n(er)n(ating)g(Systems,)g
Fl(Y.)g(P)o(ak)o(er,)g(J-P)m(.)g(Banatre,)h(M.)e(Bozyi\024)-21
b(git,)18 b(pp.)f(241-260,)140 2354 y(editors,)d(Springer-V)m(erlag,)f(1987.)
75 2436 y([13])19 b(J.)14 b(S.)g(P)o(endry)h(and)f(N.)g(William)o(s.)j
Fh(A)o(md)e(-)g(The)g(4.4)g(BSD)h(A)o(utomounter)p Fl(.)k(Imp)q(erial)12
b(College)i(of)g(Science)140 2486 y(T)m(ec)o(hnology)f(and)g(Medicine,)h
(London.)f(Marc)o(h)h(1991.)75 2568 y([14])19 b(R.)14 b(Pik)o(e,)g(D.)f
(Presotto,)i(K.)f(Thompson,)f(and)h(H.)g(T)m(ric)o(k)o(ey)m(.)19
b Fh(Plan)d(9)f(fr)n(om)g(Bel)r(l)g(L)n(abs)p Fl(.)k(In)c Fh(Pr)n(o)n(c)n(e)n
(e)n(dings)g(of)140 2618 y(the)g(Summer)f(1990)i(UKUUG)f(Conf.)p
Fl(,)e(London,)g(July)m(,)f(1990,)h(pp.)g(1-9.)75 2700 y([15])19
b(J.)14 b(B.)g(P)o(ostel.)k(Simple)12 b(Mail)h(T)m(ransfer)h(Proto)q(col.)k
(RF)o(C)13 b(821,)g(August)h(1982;)f(68)g(p.)954 2825 y(14)p
eop
%%Page: 15 15
bop 75 42 a Fl([16])19 b(J.)14 b(Rice.)k(In)o(teractiv)o(e)d(Mail)d(Access)k
(Proto)q(col.)i(RF)o(C)c(1203,)e(F)m(ebruary)i(1991;)f(49)g(p.)75
125 y([17])19 b(M.)14 b(Rose.)k(P)o(ost)c(O\016ce)h(Proto)q(col.)j(RF)o(C)13
b(1225,)f(Ma)o(y)i(1991;)e(16)h(p.)75 208 y([18])19 b(J.)f(Roseneb)q(erg,)h
(C.)f(F.)f(Ev)o(erhart,)i(and)f(N.)g(S.)f(Borenstein.)32 b
Fh(A)o(n)19 b(Overview)f(of)g(the)h(A)o(ndr)n(ew)f(Message)140
257 y(System)p Fl(.)i(In)15 b Fh(Pr)n(o)n(c)n(e)n(e)n(dings)h(of)f(the)h(A)o
(CM)f(SIGCOMM)h('87)g(Workshop)p Fl(,)g(Sto)o(w)o(e,)e(V)m(ermon)o(t,)f
(August)j(11-13,)140 307 y(1987,)c(pp.)h(99-108.)75 390 y([19])19
b(R.)d(Salz.)24 b Fh(InterNetNews:)e(Usenet)17 b(tr)n(ansp)n(ort)g(for)f
(Internet)h(sites)p Fl(.)24 b(In)17 b Fh(Pr)n(o)n(c.)f(1992)i(Summer)f
(USENIX)140 440 y(Conf.)p Fl(,)c(pages)h(93{98,)e(June)j(1992.)75
523 y([20])k(R.)14 b(Sandb)q(erg)h(et)g(al.)k(Design)c(and)f(Implemen)o
(tation)e(of)i(the)h(Sun)f(Net)o(w)o(ork)h(Filesystem.)20 b(In)14
b Fh(Pr)n(o)n(c.)h(1985)140 573 y(Summer)g(Usenix)g(Conf.)p
Fl(,)e(pages)h(119-130,)e(June)i(1985.)75 656 y([21])19 b(Sun)13
b(Microsystems,)f(Inc.)k(SunOS)d(Reference)h(Man)o(ual,)e(V)m(olume)e(I,)i
(Section)h(1:)k(\\bi\013\(1\)",)12 b(Septem)o(b)q(er)h(9,)140
706 y(1987.)75 789 y([22])19 b(Sun)11 b(Microsystems,)f(Inc.)j(SunOS)e
(Reference)i(Man)o(ual,)d(V)m(olume)e(I)q(I,)i(Section)h(3:)16
b(\\syslog\(3\)",)10 b(Septem)o(b)q(er)140 839 y(9,)j(1987.)75
922 y([23])19 b(Sun)g(Microsystems,)f(Inc.)33 b(SunOS)19 b(Reference)h(Man)o
(ual,)e(V)m(olume)f(I,)h(Section)h(1:)27 b(\\comsat\(8c\)",)18
b(and)140 971 y(\\in.comsat\(8c\)",)11 b(Septem)o(b)q(er)k(9,)e(1987.)75
1054 y([24])19 b(Sun)14 b(Microsystems,)f(Inc.)k(SunOS)d(Reference)h(Man)o
(ual,)d(V)m(olume)f(I,)i(Section)h(1:)j(\\xsend\(1\)",)d(\\xget\(1\)",)140
1104 y(and)f(\\enroll\(1\)",)g(Septem)o(b)q(er)h(9,)f(1987.)75
1187 y([25])19 b(Sun)f(Microsystems,)g(Inc.)31 b(NFS:)18 b(Net)o(w)o(ork)g
(File)g(System)f(Proto)q(col)h(sp)q(eci\014cation.)31 b(RF)o(C)17
b(1094,)h(1989)140 1237 y(Marc)o(h;)13 b(27)h(p.)75 1320 y([26])19
b(L.)c(W)m(all)f(and)h(R.)f(L.)h(Sc)o(h)o(w)o(artz.)23 b Fh(Pr)n(o)n(gr)n
(amming)16 b(Perl)p Fl(.)22 b(O'Reilly)14 b(&)h(Asso)q(ciates,)i(Inc.,)e
(Sebastop)q(ol,)h(CA)140 1370 y(\(1991\).)75 1453 y([27])j(R.)d(S.)g(Zac)o
(hariassen.)26 b Fh(ZMOG:)18 b(The)f(ZMailer)g(Op)n(er)n(ations)f(Guide)p
Fl(.)26 b(Av)n(ailable)15 b(via)g(ftp)i(as)f(part)h(of)e(the)140
1503 y(ZMailer)e(distribution)h(from)e Fk(ftp.uu.net:/netwo)o(rkin)o(g/mai)o
(l/zma)o(iler)p Fl(.)75 1627 y Fj(10)56 b(Author)19 b(Information)175
1702 y Fm(Erez)f(Zadok)e Fl(is)g(an)f(MS)h(candidate)g(and)g(full-time)d
(Sta\013)k(Asso)q(ciate)f(in)g(the)g(Computer)g(Science)h(De-)75
1752 y(partmen)o(t)11 b(at)h(Colum)o(bia)d(Univ)o(ersit)o(y)m(.)16
b(His)c(primary)e(in)o(terests)k(include)e(op)q(erating)f(systems,)h(\014le)g
(systems,)g(and)75 1802 y(w)o(a)o(ys)j(to)g(ease)h(system)f(administration)e
(tasks.)23 b(In)15 b(Ma)o(y)g(1991,)f(he)i(receiv)o(ed)g(his)f(B.S.)g(in)g
(Computer)g(Science)75 1852 y(from)g(Colum)o(bia's)f(Sc)o(ho)q(ol)i(of)g
(Engineering)h(and)f(Applied)h(Science.)28 b(Erez)18 b(came)e(to)g(the)i
(United)f(States)g(six)75 1902 y(y)o(ears)d(ago)e(and)i(has)f(liv)o(ed)g(in)g
(New)g(Y)m(ork)g(\\Sin")g(Cit)o(y)f(ev)o(er)j(since.)j(In)c(his)f(rare)h
(free)g(time)e(Erez)j(is)e(an)g(amateur)75 1951 y(photographer,)h(science)h
(\014ction)f(dev)o(otee,)h(and)e(ro)q(c)o(k-n-roll)g(fan.)175
2026 y(Mailing)h(address:)25 b(500)16 b(W)m(est)h(120)747 2011
y Fa(th)797 2026 y Fl(Street,)h(Colum)o(bia)c(Univ)o(ersit)o(y)m(,)i(New)h(Y)
m(ork,)g(NY)f(10027.)25 b(Email)75 2076 y(address:)19 b Fk
(ezk@cs.columbia.edu)o Fl(.)175 2151 y Fm(Alexander)10 b(Dupuy)g
Fl(has)h(b)q(een)h(a)e(Senior)h(Researc)o(h)i(Sta\013)e(Asso)q(ciate)h(for)e
(the)i(Distributed)f(Computing)75 2200 y(and)i(Comm)o(uni)o(cations)d(Lab)j
(in)f(the)i(Computer)e(Science)i(Departmen)o(t)f(at)f(Colum)o(bia)e(Univ)o
(ersit)o(y)j(for)g(the)g(last)75 2250 y(7)h(y)o(ears.)21 b(He)16
b(has)f(recen)o(tly)g(tak)o(en)g(a)f(p)q(osition)h(at)f(System)g(Managemen)o
(t)g(AR)m(TS,)f(a)i(small)d(startup)k(compan)o(y)75 2300 y(dev)o(eloping)e
(net)o(w)o(ork)h(and)g(systems)g(managemen)o(t)d(tec)o(hnology)m(.)20
b(A)15 b(nativ)o(e)g(b)q(orn)g(and)g(bred)g(New)h(Y)m(ork)o(er,)e(he)75
2350 y(insists)g(that)g(w)o(orking)f(in)h(the)g(suburbs)h(is)f(not)g(the)g
(\014rst)h(step)g(to)o(w)o(ards)f(living)e(there.)175 2425
y(Mailing)h(address:)23 b(System)15 b(Managemen)o(t)f(AR)m(TS,)g(199)h(Main)g
(Street,)h(Suite)g(900,)f(White)g(Plains,)g(NY)75 2474 y(10601.)i(Email)11
b(address:)20 b Fk(dupuy@smarts.co)o(m)p Fl(.)954 2825 y(15)p
eop
%%Trailer
end
userdict /end-hook known{end-hook}if
%%EOF