Sh3ll
OdayForums


Server : Apache
System : Linux profile 3.10.0-1160.88.1.el7.x86_64 #1 SMP Tue Mar 7 15:41:52 UTC 2023 x86_64
User : apache ( 48)
PHP Version : 8.0.28
Disable Function : NONE
Directory :  /var/www/html/bibhas.ghoshal/OS_2019/lab_files/

Upload File :
current_dir [ Writeable ] document_root [ Writeable ]

 

Current File : //var/www/html/bibhas.ghoshal/OS_2019/lab_files/10.1.1.45.7343.ps
%!PS-Adobe-2.0
%%Creator: dvips 5.47 Copyright 1986-91 Radical Eye Software
%%Title: infile16219.dvi
%%Pages: 9 1
%%BoundingBox: 0 0 612 792
%%EndComments
%%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
TeXDict begin 1000 300 300 @start /Fa 19 122 df<60F0F0600404798312>46
D<0018003800380070007000E000E001C001C001C003800380070007000E000E001C001C001C00
3800380070007000E000E000C0000D1A7E9612>I<3F807FC070E0207000700FF03FF07870E070
E070E07070F03FFE1F3E0F0E7E8D12>97 D<F800F80038003800380038003BE03FF03C38381C38
0C380E380E380E380E380C381C3C383FF01BC00F147F9312>I<07F01FF8383870106000E000E0
00E000E0006000703838381FF007E00D0E7E8D12>I<00F800F8003800380038003807B81FF838
7870386038E038E038E038E0386038707838781FFE0FBE0F147F9312>I<07801FE03870707060
38E038FFF8FFF8E0006000703838381FF007C00D0E7E8D12>I<007E00FF01C70382038003807F
FEFFFE03800380038003800380038003800380038003803FF83FF81014809312>I<F800F80038
0038003800380039E03FF03E383C3838383838383838383838383838383838FE3EFE3E0F147F93
12>104 D<F800F80038003800380038003BFC3BFC38F039E03BC03F803F803FC03DE038E03870
3838FC7EFC7E0F147F9312>107 D<FF00FF000700070007000700070007000700070007000700
070007000700070007000700FFF8FFF80D147E9312>I<F9E0FFF03E383C383838383838383838
3838383838383838FE3EFE3E0F0E7F8D12>110 D<0F803FE038E07070E038E038E038E038E038
F078707038E03FE00F800D0E7E8D12>I<FBE0FFF03C38381C380C380E380E380E380E380C381C
3C383FF03BC038003800380038003800FE00FE000F157F8D12>I<FCF8FDFC1F1C1E081E001C00
1C001C001C001C001C001C00FFC0FFC00E0E7E8D12>114 D<1FF03FF06070C070E0007F003FE0
0FF000786018E018F030FFE0DFC00D0E7E8D12>I<06000E000E000E007FF8FFF80E000E000E00
0E000E000E000E000E380E380E3807F003C00D127F9112>I<F8F8F8F838383838383838383838
383838383838383838781FFE0FBE0F0E7F8D12>I<FC7EFC7E3C381C381C701C700E700E600E60
06E006E003C003C003C0038003800380778077007E003C000F157F8D12>121
D E /Fb 2 117 df<3E0006000C000C000C000C00180019E01E30183038303030303030306060
606460C460C4C0C8C0700E147E9313>104 D<02000600060006000C00FF800C000C0018001800
18001800300031003100320032001C0009127F910D>116 D E /Fc 1 61
df<0000038000000F0000003C000000F0000003C000000F0000003C000000F0000003C000000F
0000003C000000F0000000F00000003C0000000F00000003C0000000F00000003C0000000F0000
0003C0000000F00000003C0000000F000000038019187D9520>60 D E /Fd
5 84 df<03C00FF01FF83FFC7FFE7FFEFFFFFFFFFFFFFFFF7FFE7FFE3FFC1FF80FF003C010107E
9115>15 D<000001800000078000001E00000078000001E00000078000001E00000078000001E0
0000078000001E00000078000000E0000000780000001E0000000780000001E000000078000000
1E0000000780000001E0000000780000001E000000078000000180000000000000000000000000
000000000000000000000000000000007FFFFF00FFFFFF8019227D9920>20
D<000C1F8000107FE0002087F000C381F0018700F0030600F8060E00F80E1C00781C1C00781C38
00783820007838000078780000787000007070000070F00000F0F00000E0F00000E0F00001E0F0
0001C0F0000180F8000380F8000700780006007C000C007E0010003F0020001FC1C0000FFF0000
03F800001D1E7E9C21>79 D<003FFF0001FFFFC0071E0FE0081C03F0381C01F8703C00F8603C00
78C03C0078003C00780038007000380070007800E0007800E0007801C0007001800070020000F0
0C0000E0300000E7C00001EF000001E0000001C0000001C0000003800000038000000780000007
000000070000000E0000000C0000001D1E809B1D>I<0001FC000007FF0000083F8000300F8000
70078000E0078000E0060001E0040001E0000001F0000001F8000000FC0000007E0000003F8000
001FE0000007F0000001F8000000FC0008007C0038003C0070003C0070003C00F0003800F00038
00F8007000F80060007C0080007F0300003FFC00000FF00000191E7F9C19>83
D E /Fe 49 122 df<FFFCFFFCFFFCFFFC0E047F8C13>45 D<387CFEFEFE7C3807077C8610>I<
00FE0007FFC00F83E01F01F03E00F83E00F87C007C7C007C7C007CFC007CFC007EFC007EFC007E
FC007EFC007EFC007EFC007EFC007EFC007EFC007EFC007EFC007EFC007E7C007C7C007C7C007C
3E00F83E00F81F01F00F83E007FFC000FE0017207E9F1C>48 D<00180000780001F800FFF800FF
F80001F80001F80001F80001F80001F80001F80001F80001F80001F80001F80001F80001F80001
F80001F80001F80001F80001F80001F80001F80001F80001F80001F80001F80001F80001F8007F
FFE07FFFE013207C9F1C>I<03FC000FFF003C1FC07007E07C07F0FE03F0FE03F8FE03F8FE01F8
7C01F83803F80003F80003F00003F00007E00007C0000F80001F00003E0000380000700000E018
01C0180380180700180E00380FFFF01FFFF03FFFF07FFFF0FFFFF0FFFFF015207D9F1C>I<00FE
0007FFC00F07E01E03F03F03F03F81F83F81F83F81F81F03F81F03F00003F00003E00007C0001F
8001FE0001FF000007C00001F00001F80000FC0000FC3C00FE7E00FEFF00FEFF00FEFF00FEFF00
FC7E01FC7801F81E07F00FFFC001FE0017207E9F1C>I<0000E00001E00003E00003E00007E000
0FE0001FE0001FE00037E00077E000E7E001C7E00187E00307E00707E00E07E00C07E01807E038
07E07007E0E007E0FFFFFEFFFFFE0007E00007E00007E00007E00007E00007E00007E000FFFE00
FFFE17207E9F1C>I<1000201E01E01FFFC01FFF801FFF001FFE001FF8001BC000180000180000
18000018000019FC001FFF001E0FC01807E01803E00003F00003F00003F80003F83803F87C03F8
FE03F8FE03F8FC03F0FC03F07007E03007C01C1F800FFF0003F80015207D9F1C>I<001F8000FF
E003F07007C0F00F01F81F01F83E01F83E01F87E00F07C00007C0000FC0800FC7FC0FCFFE0FD80
F0FF00F8FE007CFE007CFC007EFC007EFC007EFC007E7C007E7C007E7C007E3C007C3E007C1E00
F80F00F00783E003FFC000FF0017207E9F1C>I<6000007800007FFFFE7FFFFE7FFFFC7FFFF87F
FFF87FFFF0E00060E000C0C00180C00300C00300000600000C00001C0000180000380000780000
780000F00000F00000F00001F00001F00001F00003F00003F00003F00003F00003F00003F00003
F00001E00017227DA11C>I<00FE0003FFC00703E00E00F01C00F01C00783C00783E00783F0078
3F80783FE0F01FF9E01FFFC00FFF8007FFC003FFE007FFF01E7FF83C1FFC7807FC7801FEF000FE
F0003EF0001EF0001EF0001CF8001C7800383C00381F01F00FFFC001FF0017207E9F1C>I<01FE
0007FF800F83E01E01F03E00F07C00F87C0078FC007CFC007CFC007CFC007EFC007EFC007EFC00
7E7C00FE7C00FE3E01FE1E037E0FFE7E07FC7E00207E00007C00007C1E007C3F00F83F00F83F00
F03F01E01E03C01C0F800FFE0003F80017207E9F1C>I<000070000000007000000000F8000000
00F800000000F800000001FC00000001FC00000003FE00000003FE00000003FE00000006FF0000
00067F0000000E7F8000000C3F8000000C3F800000183FC00000181FC00000381FE00000300FE0
0000300FE00000600FF000006007F00000E007F80000FFFFF80000FFFFF800018001FC00018001
FC00038001FE00030000FE00030000FE000600007F000600007F00FFE00FFFF8FFE00FFFF82522
7EA12A>65 D<FFFFFF8000FFFFFFE00007F001F80007F000FC0007F0007E0007F0007E0007F000
7F0007F0007F0007F0007F0007F0007F0007F0007F0007F0007E0007F000FE0007F000FC0007F0
03F80007FFFFF00007FFFFF00007F001FC0007F0007E0007F0003F0007F0003F8007F0001F8007
F0001FC007F0001FC007F0001FC007F0001FC007F0001FC007F0001FC007F0003F8007F0003F80
07F0007F0007F001FE00FFFFFFF800FFFFFFC00022227EA128>I<0003FE0080001FFF818000FF
01E38001F8003F8003E0001F8007C0000F800F800007801F800007803F000003803F000003807F
000001807E000001807E00000180FE00000000FE00000000FE00000000FE00000000FE00000000
FE00000000FE00000000FE000000007E000000007E000001807F000001803F000001803F000003
801F800003000F8000030007C000060003F0000C0001F800380000FF00F000001FFFC0000003FE
000021227DA128>I<FFFFFF8000FFFFFFF00007F003FC0007F0007E0007F0003F0007F0001F80
07F0000FC007F00007E007F00007E007F00007F007F00003F007F00003F007F00003F007F00003
F807F00003F807F00003F807F00003F807F00003F807F00003F807F00003F807F00003F807F000
03F807F00003F007F00003F007F00003F007F00007E007F00007E007F0000FC007F0001F8007F0
003F0007F0007E0007F003FC00FFFFFFF000FFFFFF800025227EA12B>I<FFFFFFFCFFFFFFFC07
F000FC07F0003C07F0001C07F0000C07F0000E07F0000E07F0000607F0180607F0180607F01806
07F0180007F0380007F0780007FFF80007FFF80007F0780007F0380007F0180007F0180007F018
0307F0180307F0000307F0000607F0000607F0000607F0000E07F0000E07F0001E07F0003E07F0
01FCFFFFFFFCFFFFFFFC20227EA125>I<FFFFFFF8FFFFFFF807F001F807F0007807F0003807F0
001807F0001C07F0001C07F0000C07F0000C07F0180C07F0180C07F0180007F0180007F0380007
F0780007FFF80007FFF80007F0780007F0380007F0180007F0180007F0180007F0180007F00000
07F0000007F0000007F0000007F0000007F0000007F0000007F00000FFFFE000FFFFE0001E227E
A123>I<FFFFE0FFFFE003F80003F80003F80003F80003F80003F80003F80003F80003F80003F8
0003F80003F80003F80003F80003F80003F80003F80003F80003F80003F80003F80003F80003F8
0003F80003F80003F80003F80003F80003F80003F800FFFFE0FFFFE013227FA115>73
D<FFFFE000FFFFE00007F0000007F0000007F0000007F0000007F0000007F0000007F0000007F0
000007F0000007F0000007F0000007F0000007F0000007F0000007F0000007F0000007F0000007
F0000007F0000007F0001807F0001807F0001807F0001807F0003807F0003807F0007007F00070
07F000F007F001F007F007F0FFFFFFF0FFFFFFF01D227EA122>76 D<FFF000000FFFFFF800001F
FF07F800001FE006FC000037E006FC000037E006FC000037E0067E000067E0067E000067E0063F
0000C7E0063F0000C7E0061F800187E0061F800187E0060FC00307E0060FC00307E0060FC00307
E00607E00607E00607E00607E00603F00C07E00603F00C07E00601F81807E00601F81807E00601
F81807E00600FC3007E00600FC3007E006007E6007E006007E6007E006003FC007E006003FC007
E006001F8007E006001F8007E006001F8007E006000F0007E0FFF00F00FFFFFFF00600FFFF3022
7EA135>I<0007FC0000003FFF800000FC07E00003F001F80007E000FC000FC0007E001F80003F
001F80003F003F00001F803F00001F807F00001FC07E00000FC07E00000FC0FE00000FE0FE0000
0FE0FE00000FE0FE00000FE0FE00000FE0FE00000FE0FE00000FE0FE00000FE0FE00000FE07E00
000FC07F00001FC07F00001FC03F00001F803F80003F801F80003F000FC0007E0007E000FC0003
F001F80000FC07E000003FFF80000007FC000023227DA12A>79 D<FFFFFF00FFFFFFE007F007F0
07F001FC07F000FC07F0007E07F0007E07F0007F07F0007F07F0007F07F0007F07F0007F07F000
7E07F0007E07F000FC07F001FC07F007F007FFFFE007FFFF0007F0000007F0000007F0000007F0
000007F0000007F0000007F0000007F0000007F0000007F0000007F0000007F0000007F00000FF
FF8000FFFF800020227EA126>I<0007FC0000003FFF800000FC07E00003F001F80007E000FC00
0FC0007E001F80003F001F80003F003F00001F803F00001F807F00001FC07E00000FC07E00000F
C0FE00000FE0FE00000FE0FE00000FE0FE00000FE0FE00000FE0FE00000FE0FE00000FE0FE0000
0FE0FE00000FE07E00000FC07F00001FC07F00001FC03F00001F803F81F03F801F83F83F000FC7
0C7E0007E606FC0003F607F80000FF07E000003FFF80000007FF80200000038020000003C02000
0003E0E0000003FFE0000001FFC0000001FFC0000000FFC0000000FF800000007F000000001E00
232C7DA12A>I<FFFFFE0000FFFFFFC00007F007F00007F001F80007F000FC0007F0007E0007F0
007F0007F0007F0007F0007F0007F0007F0007F0007F0007F0007F0007F0007E0007F000FC0007
F001F80007F007F00007FFFFC00007FFFF800007F00FE00007F007F00007F003F80007F001FC00
07F001FC0007F001FC0007F001FC0007F001FC0007F001FC0007F001FC0007F001FC0007F001FC
0607F000FE0607F000FF0CFFFF803FF8FFFF800FF027227EA12A>I<01FC0407FF8C1F03FC3C00
7C7C003C78001C78001CF8000CF8000CFC000CFC0000FF0000FFE0007FFF007FFFC03FFFF01FFF
F80FFFFC03FFFE003FFE0003FF00007F00003F00003FC0001FC0001FC0001FE0001EE0001EF000
3CFC003CFF00F8C7FFE080FF8018227DA11F>I<7FFFFFFF807FFFFFFF807E03F80F807803F807
807003F803806003F80180E003F801C0E003F801C0C003F800C0C003F800C0C003F800C0C003F8
00C00003F800000003F800000003F800000003F800000003F800000003F800000003F800000003
F800000003F800000003F800000003F800000003F800000003F800000003F800000003F8000000
03F800000003F800000003F800000003F800000003F8000003FFFFF80003FFFFF80022227EA127
>I<FFFF803FFCFFFF803FFC07F000018007F000018007F000018007F000018007F000018007F0
00018007F000018007F000018007F000018007F000018007F000018007F000018007F000018007
F000018007F000018007F000018007F000018007F000018007F000018007F000018007F0000180
07F000018007F000018007F000018003F000030003F800030001F800060000FC000E00007E001C
00003F80F800000FFFE0000001FF000026227EA12B>I<FFFF0FFFF01FFEFFFF0FFFF01FFE0FF0
00FF0000E007F0007F0000C007F0007F0000C003F8007F80018003F8003F80018003FC003F8003
8001FC003FC0030001FC003FC0030000FE007FE0060000FE006FE0060000FF006FE00600007F00
C7F00C00007F00C7F00C00007F80C7F81C00003F8183F81800003F8183F81800001FC383FC3000
001FC301FC3000001FE301FC3000000FE600FE6000000FE600FE6000000FF600FFE0000007FC00
7FC0000007FC007FC0000003FC007F80000003F8003F80000003F8003F80000001F0001F000000
01F0001F00000000F0001E00000000E0000E00000000E0000E000037227FA13A>87
D<07FC001FFF803F07C03F03E03F01E03F01F01E01F00001F00001F0003FF003FDF01FC1F03F01
F07E01F0FC01F0FC01F0FC01F0FC01F07E02F07E0CF81FF87F07E03F18167E951B>97
D<FF000000FF0000001F0000001F0000001F0000001F0000001F0000001F0000001F0000001F00
00001F0000001F0000001F0000001F0FE0001F3FF8001FF07C001F801E001F001F001F000F801F
000F801F000FC01F000FC01F000FC01F000FC01F000FC01F000FC01F000FC01F000FC01F000F80
1F001F801F801F001FC03E001EE07C001C3FF800180FC0001A237EA21F>I<00FF8007FFE00F83
F01F03F03E03F07E03F07C01E07C0000FC0000FC0000FC0000FC0000FC0000FC00007C00007E00
007E00003E00301F00600FC0E007FF8000FE0014167E9519>I<0001FE000001FE0000003E0000
003E0000003E0000003E0000003E0000003E0000003E0000003E0000003E0000003E0000003E00
01FC3E0007FFBE000F81FE001F007E003E003E007E003E007C003E00FC003E00FC003E00FC003E
00FC003E00FC003E00FC003E00FC003E00FC003E007C003E007C003E003E007E001E00FE000F83
BE0007FF3FC001FC3FC01A237EA21F>I<00FE0007FF800F87C01E01E03E01F07C00F07C00F8FC
00F8FC00F8FFFFF8FFFFF8FC0000FC0000FC00007C00007C00007E00003E00181F00300FC07003
FFC000FF0015167E951A>I<03FC1E0FFF7F1F0F8F3E07CF3C03C07C03E07C03E07C03E07C03E0
7C03E03C03C03E07C01F0F801FFF0013FC003000003000003800003FFF801FFFF00FFFF81FFFFC
3800FC70003EF0001EF0001EF0001EF0001E78003C7C007C3F01F80FFFE001FF0018217E951C>
103 D<FF000000FF0000001F0000001F0000001F0000001F0000001F0000001F0000001F000000
1F0000001F0000001F0000001F0000001F07E0001F1FF8001F307C001F403C001F803E001F803E
001F003E001F003E001F003E001F003E001F003E001F003E001F003E001F003E001F003E001F00
3E001F003E001F003E001F003E001F003E00FFE1FFC0FFE1FFC01A237EA21F>I<1C003F007F00
7F007F003F001C000000000000000000000000000000FF00FF001F001F001F001F001F001F001F
001F001F001F001F001F001F001F001F001F001F001F00FFE0FFE00B247EA310>I<FF000000FF
0000001F0000001F0000001F0000001F0000001F0000001F0000001F0000001F0000001F000000
1F0000001F0000001F00FF801F00FF801F0038001F0060001F01C0001F0380001F0700001F0E00
001F1C00001F7E00001FFF00001FCF00001F0F80001F07C0001F03E0001F01E0001F01F0001F00
F8001F007C001F003C00FFE0FFC0FFE0FFC01A237EA21E>107 D<FF00FF001F001F001F001F00
1F001F001F001F001F001F001F001F001F001F001F001F001F001F001F001F001F001F001F001F
001F001F001F001F001F001F001F00FFE0FFE00B237EA210>I<FF07F007F000FF1FFC1FFC001F
303E303E001F403E403E001F801F801F001F801F801F001F001F001F001F001F001F001F001F00
1F001F001F001F001F001F001F001F001F001F001F001F001F001F001F001F001F001F001F001F
001F001F001F001F001F001F001F001F001F001F001F001F001F001F00FFE0FFE0FFE0FFE0FFE0
FFE02B167E9530>I<FF07E000FF1FF8001F307C001F403C001F803E001F803E001F003E001F00
3E001F003E001F003E001F003E001F003E001F003E001F003E001F003E001F003E001F003E001F
003E001F003E001F003E00FFE1FFC0FFE1FFC01A167E951F>I<00FE0007FFC00F83E01E00F03E
00F87C007C7C007C7C007CFC007EFC007EFC007EFC007EFC007EFC007EFC007E7C007C7C007C3E
00F81F01F00F83E007FFC000FE0017167E951C>I<FF0FE000FF3FF8001FF07C001F803E001F00
1F001F001F801F001F801F000FC01F000FC01F000FC01F000FC01F000FC01F000FC01F000FC01F
000FC01F001F801F001F801F803F001FC03E001FE0FC001F3FF8001F0FC0001F0000001F000000
1F0000001F0000001F0000001F0000001F0000001F000000FFE00000FFE000001A207E951F>I<
FE1F00FE3FC01E67E01EC7E01E87E01E87E01F83C01F00001F00001F00001F00001F00001F0000
1F00001F00001F00001F00001F00001F00001F0000FFF000FFF00013167E9517>114
D<0FF3003FFF00781F00600700E00300E00300F00300FC00007FE0007FF8003FFE000FFF0001FF
00000F80C00780C00380E00380E00380F00700FC0E00EFFC00C7F00011167E9516>I<01800001
80000180000180000380000380000780000780000F80003F8000FFFF00FFFF000F80000F80000F
80000F80000F80000F80000F80000F80000F80000F80000F80000F81800F81800F81800F81800F
81800F830007C30003FE0000F80011207F9F16>I<FF01FE00FF01FE001F003E001F003E001F00
3E001F003E001F003E001F003E001F003E001F003E001F003E001F003E001F003E001F003E001F
003E001F003E001F003E001F007E001F00FE000F81BE0007FF3FC001FC3FC01A167E951F>I<FF
E01FE0FFE01FE00F8006000F8006000FC00E0007C00C0007E01C0003E0180003E0180001F03000
01F0300000F8600000F86000007CC000007CC000007FC000003F8000003F8000001F0000001F00
00000E0000000E00001B167F951E>I<FFE01FE0FFE01FE00F8006000F8006000FC00E0007C00C
0007E01C0003E0180003E0180001F0300001F0300000F8600000F86000007CC000007CC000007F
C000003F8000003F8000001F0000001F0000000E0000000E0000000C0000000C00000018000078
180000FC380000FC300000FC60000069C000007F8000001F0000001B207F951E>121
D E /Ff 25 122 df<03C00FF01FF83C3C381C700E700E700EE007E007E007E007E007E007E007
E007E007E007E007E007E007700E700E700E381C3C3C1FF80FF007E0101D7E9B15>48
D<010007003F00FF00C70007000700070007000700070007000700070007000700070007000700
0700070007000700070007000700FFF8FFF80D1C7C9B15>I<FFF800FFFF00F00F80F003C0F001
E0F000F0F000F0F000F0F000F0F000F0F001E0F007C0FFFF80FFFE00FFFF80F03FC0F003E0F001
F0F000F0F00078F00078F00078F00078F00078F000F0F001E0F007C0FFFF80FFFC00151D7C9C1C
>66 D<FFFC00FFFF00F00F80F003E0F001F0F000F0F00078F00038F0003CF0003CF0001CF0001E
F0001EF0001EF0001EF0001EF0001EF0001EF0001EF0003CF0003CF0003CF00078F000F0F000F0
F003E0F00FC0FFFF00FFFC00171D7C9C1E>68 D<FFFFC0FFFFC0F00000F00000F00000F00000F0
0000F00000F00000F00000F00000F00000F00000FFFF80FFFF80F00000F00000F00000F00000F0
0000F00000F00000F00000F00000F00000F00000F00000FFFFC0FFFFC0121D7C9C19>I<FC0007
E0FC0007E0FC0007E0EE000DE0EE000DE0EE000DE0E70019E0E70019E0E70019E0E78039E0E380
31E0E3C071E0E3C071E0E1C061E0E1C061E0E1E0E1E0E1E0E1E0E0E0C1E0E0F1C1E0E07181E0E0
7181E0E07181E0E03B01E0E03B01E0E03B01E0E01E01E0E01E01E0E01E01E0E00001E01B1D7C9C
24>77 D<FC0070FC0070FE0070EE0070EF0070E70070E70070E78070E38070E3C070E3C070E1E0
70E1E070E0E070E0F070E07070E07870E07870E03C70E03C70E01C70E01E70E00E70E00E70E00F
70E00770E007F0E003F0E003F0141D7C9C1D>I<FFFC00FFFF00F00F80F003C0F001E0F000F0F0
00F0F000F0F000F0F000F0F000F0F001E0F003E0F00FC0FFFF80FFFE00F00000F00000F00000F0
0000F00000F00000F00000F00000F00000F00000F00000F00000F00000141D7C9C1B>80
D<F000F00070F000F80070F000F800707800B8006078019C00E078019C00E078019C00E03C039C
01C03C031E01C03C030E01C01E030E01801E070F03801E070F03801E060703800F060703000F0E
0787000F0C078700070C038600070C038600078C038E00079803CE00039801CC00039801CC0003
9801CC0001D001C80001D000D80001F000F80001E000F80000E0007000241D7F9C27>87
D<0FC03FF07FF87038401C001C001C00FC0FFC3FFC781CE01CE01CE01CF07C7FFC7FDC3F1C0E12
7E9114>97 D<E000E000E000E000E000E000E000E000E000E000E000E3E0EFF0FFF8F87CF01CE0
1EE00EE00EE00EE00EE00EE00EE01CF01CF87CFFF8EFF0E3C00F1D7D9C15>I<07E00FF81FFC3C
1C70047000E000E000E000E000E000E000700070043C1C1FFC0FF807E00E127E9112>I<000E00
0E000E000E000E000E000E000E000E000E000E0F8E1FEE3FFE7C3E700E700EE00EE00EE00EE00E
E00EE00EF00E701E7C3E3FFE1FEE0F8E0F1D7E9C15>I<07C01FE03FF078787018601CFFFCFFFC
FFFCE000E000E000700070043C1C3FFC1FF807E00E127E9112>I<03C3C00FFFC01FFFC01C3800
381C00381C00381C00381C00381C001C38001FF8001FF0003BC0003800003800001FFC001FFF00
3FFF80700780E001C0E001C0E001C0F003C07C0F803FFF001FFE0007F800121B7F9115>103
D<F0F0F0F000000000000000707070707070707070707070707070707070041D7E9C0A>105
D<E3F03F00EFF8FF80FFFDFFC0F81F81E0F00F00E0E00E00E0E00E00E0E00E00E0E00E00E0E00E
00E0E00E00E0E00E00E0E00E00E0E00E00E0E00E00E0E00E00E0E00E00E0E00E00E01B127D9122
>109 D<E3E0EFF0FFF8F83CF01CE01CE01CE01CE01CE01CE01CE01CE01CE01CE01CE01CE01CE0
1C0E127D9115>I<03F0000FFC001FFE003C0F00780780700380E001C0E001C0E001C0E001C0E0
01C0F003C07003807807803C0F001FFE000FFC0003F00012127F9115>I<E380E780EF80FC00F8
00F000F000E000E000E000E000E000E000E000E000E000E000E00009127D910E>114
D<1FC03FF07FF0F030E000E000F0007F003FC01FE000F0003800388038F078FFF07FE01FC00D12
7F9110>I<1C001C001C001C001C001C00FFE0FFE01C001C001C001C001C001C001C001C001C00
1C001C001C001C201FF00FF007C00C187F970F>I<E01CE01CE01CE01CE01CE01CE01CE01CE01C
E01CE01CE01CE01CE01CE07CFFFC7FDC3F1C0E127D9115>I<E03E0380E03E0380E03E03807037
030070770700707707007073070038E38E0038E38E0038E38E0018E18C001CC1CC001DC1DC001D
C1DC000D80D8000F80F8000F80F8000780700019127F911C>119 D<E007E007700E700E780E38
1C381C1C181C380C380E300E7006700760036003C001C001C001800180030003000700FE00FC00
F800101A7F9113>121 D E /Fg 29 122 df<60F0F06004047D830A>46
D<001000003800003800003800005C00005C00005C00008E00008E00008E000107000107000307
8002038002038007FFC00401C00401C00800E00800E01800E03800F0FE03FE17177F961A>65
D<FFE00E000E000E000E000E000E000E000E000E000E000E000E000E000E000E000E000E000E00
0E000E000E00FFE00B177F960D>73 D<FFC0001C00001C00001C00001C00001C00001C00001C00
001C00001C00001C00001C00001C00001C00001C00201C00201C00201C00601C00601C00401C00
C01C03C0FFFFC013177F9616>76 D<FC00FE1E00381F001017001013801011C01011C01010E010
107010103810103810101C10100E10100F101007101003901001D01001D01000F0100070100030
380030FE001017177F961A>78 D<FFFC001C03801C00C01C00E01C00701C00701C00701C00701C
00E01C00C01C03801FFE001C07801C01C01C00E01C00E01C00E01C00E01C00E01C00E11C00E11C
0072FF803C18177F961A>82 D<0FC4302C601C400CC004C004C004E00070007F003FE00FF801FC
001C000E0006800680068006C004E008D81087E00F177E9614>I<7FFFF8603818403808403808
803804803804803804003800003800003800003800003800003800003800003800003800003800
00380000380000380000380000380007FFC016177F9619>I<FF80FE1C00381C00101C00101C00
101C00101C00101C00101C00101C00101C00101C00101C00101C00101C00101C00101C00101C00
100E0020060020030040018180007E0017177F961A>I<FF83FC1F01E00E008007008007810003
820001C20001E40000E800007800007800003800007C00005E00008E0001870001078002038006
01C00401E00C00E01C00F0FF03FE17177F961A>88 D<1FC0386038301038003803F81E38303870
38E039E039E07970FF1F1E100E7F8D12>97 D<FC00001C00001C00001C00001C00001C00001C00
001C00001C00001CF8001F06001C03001C03801C01801C01C01C01C01C01C01C01C01C01801C03
801C03001B0E0010F8001217809614>I<07F01838303870106000E000E000E000E00060007008
3008183007C00D0E7F8D10>I<007E00000E00000E00000E00000E00000E00000E00000E00000E
0007CE001C3E00300E00700E00600E00E00E00E00E00E00E00E00E00600E00700E00301E00182E
0007CFC012177F9614>I<0FC0186030307038E018FFF8E000E000E000600070083010183007C0
0D0E7F8D10>I<03E006700E701C201C001C001C001C001C00FF801C001C001C001C001C001C00
1C001C001C001C001C001C00FF800C1780960B>I<0F9E18E33060707070707070306018C02F80
200060003FE03FF83FFC600EC006C006C006600C38380FE010157F8D12>I<183C3C1800000000
007C1C1C1C1C1C1C1C1C1C1C1C1CFF081780960A>105 D<FC00001C00001C00001C00001C0000
1C00001C00001C00001C00001C3F801C1C001C18001C20001C40001CC0001FE0001CF0001C7000
1C78001C3C001C1E001C1E00FF3FC01217809613>107 D<FC001C001C001C001C001C001C001C
001C001C001C001C001C001C001C001C001C001C001C001C001C001C00FF80091780960A>I<FC
7C1F001D8E63801E0781C01C0701C01C0701C01C0701C01C0701C01C0701C01C0701C01C0701C0
1C0701C01C0701C01C0701C0FF9FE7F81D0E808D1E>I<FC7C001D8E001E07001C07001C07001C
07001C07001C07001C07001C07001C07001C07001C0700FF9FE0130E808D14>I<07C018303018
600C600CE00EE00EE00EE00EE00E701C3018183007C00F0E7F8D12>I<FCF01D381E381C101C00
1C001C001C001C001C001C001C001C00FF800D0E808D0E>114 D<1F4060C0C040C040E000FF00
7F801FC001E080608060C060E0C09F000B0E7F8D0E>I<080008000800180018003800FF803800
38003800380038003800380038403840384038401C800F000A147F930E>I<FC3F001C07001C07
001C07001C07001C07001C07001C07001C07001C07001C07001C0F000E170003E7E0130E808D14
>I<FE1F3C0E3C0C1C081C080E100E100720072003C003C003C001800180100E7F8D13>I<FE1F3C
0E3C0C1C081C080E100E100720072003C003C003C00180018001000100E200E200A40078001014
7F8D13>121 D E /Fh 2 122 df<0C000C008C40EDC07F800C007F80EDC08C400C000C000A0B7D
8B10>3 D<1818181818FFFF18181818181818181818181818181808167D900E>121
D E /Fi 49 122 df<0001FC3C00060E67000C0EC7001C0DC6001C01C0003801C0003803800038
038000380380003803800070038007FFFFF800700700007007000070070000E0070000E00E0000
E00E0000E00E0000E00E0001C00E0001C01C0001C01C0001C01C0001C01C0003801C0003803800
038038000380380003003800070030000700700006006000C6606000E470C000C8618000703E00
002025819C19>11 D<0001FC000703000C03001C07001C03001800003800003800003800003800
00700007FFFC00701C00701C00701C00E03800E03800E03800E03800E07001C07001C07001C070
01C0E201C0E201C0E20380E4038064038038038000030000070000060000C60000E40000CC0000
7000001825819C17>I<0001FDC000070FC0000C0FC0001C0F80001C0380003803800038038000
38070000380700003807000070070007FFFE0000700E0000700E0000700E0000E01C0000E01C00
00E01C0000E01C0000E0380001C0380001C0380001C0380001C0710001C0710003807100038072
000380320003801C0003800000030000000700000006000000C6000000E4000000CC0000007000
00001A25819C18>I<FFC0FFC0FFC00A037D890F>45 D<3078F06005047C830D>I<00020006000C
001C007C039C0038003800380038007000700070007000E000E000E000E001C001C001C001C003
800380038003800780FFF00F1C7C9B15>49 D<003E0000C1800101800200C00400C00440C00841
C00841C00841C0088380070380000700000E0001F800003800000C00000C00000E00000E00000E
00000E00700E00E01C00801C0080380080300040600021C0001F0000121D7C9B15>51
D<00C06000FFC001FF8001FE00010000010000020000020000020000020000047800058C000606
00040600080600000700000700000600000E00000E00700E00700C00E01C008018008038004030
0040600021C0001F0000131D7C9B15>53 D<003C0000C6000183000303000603000E03000C0380
1C03801C03001C0300380700380700380700380F00380E00181E00181E000C6C00079C00001C00
001800003800003000006000E0C000E0C0008180008600007C0000111D7B9B15>57
D<060F0F06000000000000000000003078F06008127C910D>I<00001800000018000000380000
00380000007800000078000000B8000001B800000138000002380000023C0000041C0000041C00
00081C0000181C0000101C0000201C0000201C00007FFC0000401C0000801C0001801C0001001C
0002001C0002001C0004000E000C000E001C001E00FF00FFC01A1D7E9C1F>65
D<01FFFE00003C0780003803C0003801C0003801C0003801C0007001C0007003C0007003C00070
078000E0070000E00E0000E03C0000FFF80001C01C0001C00E0001C00F0001C00F0003800F0003
800F0003800F0003800F0007001E0007001C0007003C00070078000E01E000FFFF80001A1C7D9B
1D>I<0003F020001E0C60003002E000E003C001C001C0038001C0070000C00E0000801E000080
1C0000803C0000803C000000780000007800000078000000F0000000F0000000F0000000F00000
00F0000400F0000400F0000400F0000800700008007000100038002000180040000C0180000706
000001F800001B1E7A9C1E>I<01FFFE00003C0780003801C0003801C0003800E0003800E00070
00F00070007000700070007000F000E000F000E000F000E000F000E000F001C001E001C001E001
C001E001C001C0038003C003800380038007800380070007000E0007001C000700380007007000
0E01C000FFFF00001C1C7D9B1F>I<01FFFFE0003C00E000380060003800400038004000380040
0070004000700040007020400070200000E0400000E0400000E0C00000FFC00001C0800001C080
0001C0800001C0800003810100038001000380020003800200070004000700040007000C000700
18000E007800FFFFF0001B1C7D9B1C>I<0003F020001E0C60003002E000E003C001C001C00380
01C0070000C00E0000801E0000801C0000803C0000803C000000780000007800000078000000F0
000000F0000000F001FFC0F0001E00F0001C00F0001C00F0001C00F0001C007000380070003800
38003800180078000C0090000707100001F800001B1E7A9C20>71 D<01FFC0003C000038000038
0000380000380000700000700000700000700000E00000E00000E00000E00001C00001C00001C0
0001C0000380000380000380000380000700000700000700000700000F0000FFE000121C7E9B10
>73 D<01FE0007F8003E000780002E000F00002E001700002E001700002E002700004E002E0000
4E004E00004E004E00004E008E00008E011C00008E011C00008E021C00008E021C000107043800
0107043800010708380001071038000207107000020720700002072070000207407000040740E0
00040780E000040700E0000C0700E0001C0601E000FF861FFC00251C7D9B25>77
D<01FC03FE001C0070003C0060002E0040002E0040002E00400047008000470080004700800043
80800083810000838100008181000081C1000101C2000101C2000100E2000100E2000200E40002
00740002007400020074000400380004003800040038000C0018001C001000FF8010001F1C7D9B
1F>I<0007F000001C1C0000700E0000E0070001C0038003800380070003800E0003C01E0003C0
1C0003C03C0003C03C0003C0780003C0780003C0780003C0F0000780F0000780F0000780F0000F
00F0000F00F0000E00F0001E00F0003C0070003800700070007800E0003801C0001C0380000E0E
000003F800001A1E7A9C20>I<01FFFC00003C070000380380003801C0003801C0003801C00070
03C0007003C0007003C00070038000E0078000E0070000E00E0000E0380001FFE00001C0000001
C0000001C000000380000003800000038000000380000007000000070000000700000007000000
0F000000FFE000001A1C7D9B1C>I<01FFF800003C0E0000380700003803800038038000380380
00700780007007800070078000700F0000E00E0000E01C0000E0700000FFC00001C0C00001C060
0001C0700001C07000038070000380700003807000038070000700F0000700F0400700F0400700
F0800F007880FFE0790000001E001A1D7D9B1E>82 D<000F8400304C00403C0080180100180300
1803001806001006001006000007000007000003E00003FC0001FF00007F800007C00001C00001
C00000C00000C02000C02000C0600180600180600300600200F00400CC180083E000161E7D9C17
>I<7FF0FF800F001C000E0018000E0010000E0010000E0010001C0020001C0020001C0020001C
0020003800400038004000380040003800400070008000700080007000800070008000E0010000
E0010000E0010000E0020000E0020000E0040000E00400006008000030300000104000000F8000
00191D779B1F>85 D<FF83FF0FF03C007001C038007001803800F001003800F002003801700200
3801700400380270040038027008001C047008001C047010001C087010001C087020001C107020
001C107040001C207040001C207080001C407180001C407100001C807200001D807200001D0074
00001E007400001E007800001C007800001C00700000180070000018006000001000600000241D
779B29>87 D<01FF81FE001E00F0001C0060001E0080000E0180000E0100000F02000007040000
070800000790000003A0000003C0000001C0000001C0000001E0000002E0000004E0000008F000
0010700000207000006038000040380000803C0001001C0002001C0006001E001E001E00FF80FF
C01F1C7E9B1F>I<03CC063C0C3C181C3838303870387038E070E070E070E070E0E2C0E2C0E261
E462643C380F127B9115>97 D<3F00070007000E000E000E000E001C001C001C001C0039C03E60
383038307038703870387038E070E070E070E060E0E0C0C0C1C0618063003C000D1D7B9C13>I<
01F007080C08181C3838300070007000E000E000E000E000E000E008E010602030C01F000E127B
9113>I<001F80000380000380000700000700000700000700000E00000E00000E00000E0003DC
00063C000C3C00181C00383800303800703800703800E07000E07000E07000E07000E0E200C0E2
00C0E20061E4006264003C3800111D7B9C15>I<01E007100C1018083810701070607F80E000E0
00E000E000E000E0086010602030C01F000D127B9113>I<0003C0000670000C70001C60001C00
001C0000380000380000380000380000380003FF8000700000700000700000700000700000E000
00E00000E00000E00000E00001C00001C00001C00001C00001C000038000038000038000030000
030000070000C60000E60000CC00007800001425819C0D>I<00F3018F030F06070E0E0C0E1C0E
1C0E381C381C381C381C383830383038187818F00F700070007000E000E0C0C0E1C0C3007E0010
1A7D9113>I<0FC00001C00001C000038000038000038000038000070000070000070000070000
0E78000E8C000F0E000E0E001C0E001C0E001C0E001C0E00381C00381C00381C00383800703880
703880707080707100E03200601C00111D7D9C15>I<0180038001000000000000000000000000
0000001C002600470047008E008E000E001C001C001C0038003800710071007100720072003C00
091C7C9B0D>I<0006000E0006000000000000000000000000000000F001180218021804380438
00380038007000700070007000E000E000E000E001C001C001C001C003800380C300E700CE0078
000F24819B0D>I<0FC00001C00001C00003800003800003800003800007000007000007000007
00000E0F000E11000E23800E43801C83001C80001D00001E00003F800039C00038E00038E00070
E20070E20070E20070E400E06400603800111D7D9C13>I<1F800380038007000700070007000E
000E000E000E001C001C001C001C0038003800380038007000700070007000E400E400E400E400
68003800091D7C9C0B>I<3C1E0780266318C04683A0E04703C0E08E0380E08E0380E00E0380E0
0E0380E01C0701C01C0701C01C0701C01C070380380E0388380E0388380E0708380E0710701C03
20300C01C01D127C9122>I<3C3C002646004687004707008E07008E07000E07000E07001C0E00
1C0E001C0E001C1C00381C40381C40383840383880701900300E0012127C9117>I<01E007180C
0C180C380C300E700E700EE01CE01CE01CE018E038E030E06060C031801E000F127B9115>I<07
870004D98008E0C008E0C011C0E011C0E001C0E001C0E00381C00381C00381C003818007038007
03000707000706000E8C000E70000E00000E00001C00001C00001C00001C00003C0000FF800013
1A7F9115>I<3C3C26C2468747078E068E000E000E001C001C001C001C00380038003800380070
00300010127C9112>114 D<01F006080C080C1C18181C001F001FC00FF007F0007800386030E0
30C030806060C01F000E127D9111>I<00C001C001C001C00380038003800380FFE00700070007
000E000E000E000E001C001C001C001C00384038403840388019000E000B1A7D990E>I<1E0300
270700470700470700870E00870E000E0E000E0E001C1C001C1C001C1C001C1C00383880383880
1838801839001C5900078E0011127C9116>I<1E06270E470E4706870287020E020E021C041C04
1C041C0818083808181018200C4007800F127C9113>I<1E018327038747038747038387070187
07010E07010E07011C0E021C0E021C0E021C0E04180C04181C04181C081C1C100C263007C3C018
127C911C>I<1E03270747074707870E870E0E0E0E0E1C1C1C1C1C1C1C1C38383838183818381C
7007F00070007000E0E0C0E1C0818047003C00101A7C9114>121 D E /Fj
57 122 df<03800007E0000FE0001E70001C70001C70001C70001C77E01CE7E01DE7E00FC7000F
8E000F0E001E0E003F1C007F1C00739C00E3F800E1F800E0F1C0E0F1C071F9C07FFFC03F9F801E
070013197F9816>38 D<00E001E0038007000E001C001C0038003800700070007000E000E000E0
00E000E000E000E000E000E000700070007000380038001C001C000E000700038001E000E00B21
7A9C16>40 D<C000E000700038001C000E000E000700070003800380038001C001C001C001C001
C001C001C001C001C0038003800380070007000E000E001C0038007000E000C0000A217B9C16>
I<01C00001C00001C00001C00071C700F9CF807FFF001FFC0007F00007F0001FFC007FFF00F9CF
8071C70001C00001C00001C00001C00011127E9516>I<01C00001C00001C00001C00001C00001
C00001C00001C000FFFF80FFFF80FFFF8001C00001C00001C00001C00001C00001C00001C00001
C00011137E9516>I<387C7E7E3E0E1E1C78F060070B798416>I<FFFF80FFFF80FFFF8011037E8D
16>I<70F8F8F8700505788416>I<000180000380000380000700000700000E00000E00001C0000
1C0000380000380000700000700000E00000E00001C00001C0000380000380000700000700000E
00000E00001C00001C0000380000380000700000700000E00000E00000C0000011207E9C16>I<
03E0000FF8001FFC001E3C00380E00780F00700700700700E00380E00380E00380E00380E00380
E00380E00380E00380F00780700700700700780F003C1E001E3C001FFC000FF80003E00011197E
9816>I<01800380038007800F807F80FF80738003800380038003800380038003800380038003
8003800380038003807FF87FFC7FF80E197C9816>I<00F80003FC0007FE000F07001C0F00380F
00780600700000700000E3F800EFFC00FFFE00F80F00F00700F00380E00380E003807003807003
807007803807003C1E001FFC000FF80003E00011197E9816>54 D<70F8F8F87000000000000000
0070F8F8F8700512789116>58 D<387C7C7C38000000000000000038787C7C3C1C1C3870E04006
18799116>I<000180000780001F80003E0000F80001F00007C0000F80003E0000FC0000F00000
FC00003E00000F800007C00001F00000F800003E00001F8000078000018011157E9616>I<7FFF
00FFFF80FFFF80000000000000000000000000000000FFFF80FFFF807FFF00110B7E9116>I<00
E00001F00001F00001B00001B00003B80003B80003B800031800071C00071C00071C00071C0007
1C000E0E000E0E000FFE000FFE001FFF001C07001C07001C07007F1FC0FF1FE07F1FC013197F98
16>65 D<7FFFC0FFFFC07FFFC01C01C01C01C01C01C01C01C01C00001C00001C1C001C1C001FFC
001FFC001FFC001C1C001C1C001C00001C00E01C00E01C00E01C00E01C00E07FFFE0FFFFE07FFF
E013197F9816>69 D<03E30007FF000FFF001E1F003C0F00380700700700700700F00000E00000
E00000E00000E00000E03F80E07FC0E03F80F00700700700700700380F003C0F001E1F000FFF00
07F70003E70012197E9816>71 D<FFFEFFFEFFFE03800380038003800380038003800380038003
80038003800380038003800380038003800380FFFEFFFEFFFE0F197D9816>73
D<FFC000FFC000FFC0001C00001C00001C00001C00001C00001C00001C00001C00001C00001C00
001C00001C00001C00001C00001C00401C00E01C00E01C00E01C00E0FFFFE0FFFFE0FFFFE01319
7F9816>76 D<FC07E0FE0FE0FE0FE03A0B803B1B803B1B803B1B803B1B803B1B803BBB8039B380
39B38039B38039B38039F38038E38038E380380380380380380380380380380380FE0FE0FE0FE0
FE0FE013197F9816>I<7E1FC0FF3FE07F1FC01D07001D87001D87001D87001DC7001DC7001CC7
001CC7001CE7001CE7001CE7001C67001C67001C77001C77001C37001C37001C37001C17007F1F
00FF9F007F0F0013197F9816>I<1FFC003FFE007FFF00780F00F00780E00380E00380E00380E0
0380E00380E00380E00380E00380E00380E00380E00380E00380E00380E00380F00780F0078078
0F007FFF003FFE001FFC0011197E9816>I<7FF800FFFE007FFF001C0F801C03801C03C01C01C0
1C01C01C01C01C03C01C03801C0F801FFF001FFE001FF8001C00001C00001C00001C00001C0000
1C00001C00007F0000FF80007F000012197F9816>I<1FFC003FFE007FFF00780F00F00780E003
80E00380E00380E00380E00380E00380E00380E00380E00380E00380E00380E00380E00380E0E3
80E1E380F0F780787F007FFF003FFE001FFC00001C00001E00000E00000F00000700000700111F
7E9816>I<7FE000FFF8007FFC001C1E001C0F001C07001C07001C07001C07001C0F001C1E001F
FC001FF8001FFC001C1C001C0E001C0E001C0E001C0E001C0E201C0E701C0E707F07E0FF87E07F
03C014197F9816>I<07E3001FFF003FFF00781F00F00700E00700E00700E00000F00000780000
3F80001FF00007FC0000FE00000F00000700000380000380600380E00380E00700F80F00FFFE00
FFFC00C7F00011197E9816>I<7FFFE0FFFFE0FFFFE0E0E0E0E0E0E0E0E0E0E0E0E000E00000E0
0000E00000E00000E00000E00000E00000E00000E00000E00000E00000E00000E00000E00000E0
0007FC000FFE0007FC0013197F9816>I<7F07F0FF8FF87F07F01C01C01C01C01C01C01C01C01C
01C01C01C01C01C01C01C01C01C01C01C01C01C01C01C01C01C01C01C01C01C01C01C00E03800E
038007070007FF0003FE0000F8001519809816>I<FE0FE0FF1FE0FE0FE03803801C07001C0700
1C07001C07000E0E000E0E000E0E000E0E00060C00071C00071C00071C00071C0003180003B800
03B80003B80001B00001F00001F00000E00013197F9816>I<FE0FE0FF1FE0FE0FE01C07001C07
000E0E000E0E00071C00071C00071C0003B80003B80001F00001F00000E00000E00000E00000E0
0000E00000E00000E00000E00003F80007FC0003F80013197F9816>89 D<FFFF80FFFF80FFFF80
11037E7E16>95 D<1FE0003FF0007FF800783C00300E00000E00000E0003FE001FFE003E0E0070
0E00E00E00E00E00E00E00783E007FFFE03FE7E00F83E013127E9116>97
D<7E0000FE00007E00000E00000E00000E00000E00000E3E000EFF000FFF800F83C00F00E00E00
E00E00700E00700E00700E00700E00700E00700E00E00F01E00F83C00FFF800EFF00063C001419
809816>I<03F80FFC1FFE3C1E780C7000E000E000E000E000E000F000700778073E0E1FFC0FF8
03F010127D9116>I<003F00007F00003F0000070000070000070000070003C7000FF7001FFF00
3C1F00780F00700700E00700E00700E00700E00700E00700E00700700F00700F003C1F001FFFE0
0FE7F007C7E014197F9816>I<03E00FF81FFC3C1E780E7007E007FFFFFFFFFFFFE000E0007007
78073C0F1FFE0FFC03F010127D9116>I<001F00007F8000FF8001E78001C30001C00001C0007F
FF00FFFF00FFFF0001C00001C00001C00001C00001C00001C00001C00001C00001C00001C00001
C00001C0003FFE007FFF003FFE0011197F9816>I<03E3C007F7E00FFFE01C1CC0380E00380E00
380E00380E00380E001C1C000FF8001FF0001BE0003800001800001FFC001FFF003FFF807803C0
E000E0E000E0E000E0E000E07001C07C07C03FFF800FFE0003F800131C7F9116>I<7E0000FE00
007E00000E00000E00000E00000E00000E3C000EFE000FFF000F87800F03800E03800E03800E03
800E03800E03800E03800E03800E03800E03800E03807FC7F0FFE7F87FC7F01519809816>I<01
8003C003C0018000000000000000007FC07FC07FC001C001C001C001C001C001C001C001C001C0
01C001C001C07FFFFFFF7FFF101A7D9916>I<003000780078003000000000000000001FF81FF8
1FF800380038003800380038003800380038003800380038003800380038003800380038003800
386070F0F0FFE07FC03F800D237E9916>I<7E0000FE00007E00000E00000E00000E00000E0000
0E7FE00E7FE00E7FE00E0F000E1E000E3C000E78000EF0000FF0000FF8000FBC000F1E000E0E00
0E07000E07807F87F0FFCFF07F87F01419809816>I<FFC000FFC000FFC00001C00001C00001C0
0001C00001C00001C00001C00001C00001C00001C00001C00001C00001C00001C00001C00001C0
0001C00001C00001C000FFFF80FFFF80FFFF8011197E9816>I<F9C380FFEFC0FFFFE03C78E03C
78E03870E03870E03870E03870E03870E03870E03870E03870E03870E03870E0FE7CF8FE7CF8FE
3C781512809116>I<7E3C00FEFE007FFF000F87800F03800E03800E03800E03800E03800E0380
0E03800E03800E03800E03800E03807FC7F0FFE7F87FC7F01512809116>I<03E0000FF8001FFC
003C1E00780F00700700E00380E00380E00380E00380E00380F00780700700780F003C1E001FFC
000FF80003E00011127E9116>I<7E3E00FEFF007FFF800F83C00F00E00E00E00E00700E00700E
00700E00700E00700E00700E00E00F01E00F83C00FFF800EFF000E3C000E00000E00000E00000E
00000E00000E00007FC000FFE0007FC000141B809116>I<FF0FC0FF3FE0FF7FE007F04007C000
078000078000070000070000070000070000070000070000070000070000FFFC00FFFC00FFFC00
13127F9116>114 D<0FEC3FFC7FFCF03CE01CE01C70007F801FF007F8003C600EE00EF00EF81E
FFFCFFF8C7E00F127D9116>I<0300000700000700000700000700007FFF00FFFF00FFFF000700
0007000007000007000007000007000007000007010007038007038007038007870003FE0001FC
0000F80011177F9616>I<7E1F80FE3F807E1F800E03800E03800E03800E03800E03800E03800E
03800E03800E03800E03800E03800E0F800FFFF007FBF803E3F01512809116>I<7F1FC0FF1FE0
7F1FC01C07001E0F000E0E000E0E000E0E00071C00071C00071C00071C0003B80003B80003B800
01F00001F00000E00013127F9116>I<FF1FE0FFBFE0FF1FE038038038038038038038038038E3
8019F30019F30019B3001DB7001DB7001DB7001DB7000F1E000F1E000F1E0013127F9116>I<7F
1FC07F3FC07F1FC00F1C00073C0003B80003F00001F00000E00001E00001F00003B800073C0007
1C000E0E007F1FC0FF3FE07F1FC013127F9116>I<7F1FC0FF9FE07F1FC01C07000E07000E0E00
0E0E00070E00071C00071C00039C00039C0003980001B80001B80000F00000F00000F00000E000
00E00000E00001C00079C0007BC0007F80003F00003C0000131B7F9116>I
E /Fk 2 122 df<040004000400C460E4E03F800E003F80E4E0C4600400040004000B0D7E8D11>
3 D<0C000C000C000C000C000C00FFC0FFC00C000C000C000C000C000C000C000C000C000C000C
000C000C000C000C000C000C000C000A1A7E9310>121 D E /Fl 82 128
df<007E1F0001C1B1800303E3C00703C3C00E03C1800E01C0000E01C0000E01C0000E01C0000E
01C0000E01C000FFFFFC000E01C0000E01C0000E01C0000E01C0000E01C0000E01C0000E01C000
0E01C0000E01C0000E01C0000E01C0000E01C0000E01C0000E01C0000E01C0000E01C0007F87FC
001A1D809C18>11 D<007E0001C1800301800703C00E03C00E01800E00000E00000E00000E0000
0E0000FFFFC00E01C00E01C00E01C00E01C00E01C00E01C00E01C00E01C00E01C00E01C00E01C0
0E01C00E01C00E01C00E01C00E01C07F87F8151D809C17>I<007FC001C1C00303C00703C00E01
C00E01C00E01C00E01C00E01C00E01C00E01C0FFFFC00E01C00E01C00E01C00E01C00E01C00E01
C00E01C00E01C00E01C00E01C00E01C00E01C00E01C00E01C00E01C00E01C07FCFF8151D809C17
>I<003F07E00001C09C18000380F018000701F03C000E01E03C000E00E018000E00E000000E00
E000000E00E000000E00E000000E00E00000FFFFFFFC000E00E01C000E00E01C000E00E01C000E
00E01C000E00E01C000E00E01C000E00E01C000E00E01C000E00E01C000E00E01C000E00E01C00
0E00E01C000E00E01C000E00E01C000E00E01C000E00E01C007FC7FCFF80211D809C23>I<1C1C
3C3870C0800607779C15>19 D<6060F0F0F8F86868080808080808101010102020404080800D0C
7F9C15>34 D<00E000000190000003080000030800000708000007080000070800000708000007
10000007100000072000000740000003C03FE003800F00038006000380040005C0040009C00800
10E0100030E010006070200060702000E0384000E03C4000E01C8000E00F0020E0070020700780
403009C0401830E18007C03E001B1F7E9D20>38 D<60F0F8680808081010204080050C7C9C0C>
I<004000800100020006000C000C0018001800300030007000600060006000E000E000E000E000
E000E000E000E000E000E000E000E000600060006000700030003000180018000C000C00060002
000100008000400A2A7D9E10>I<800040002000100018000C000C000600060003000300038001
800180018001C001C001C001C001C001C001C001C001C001C001C001C001800180018003800300
0300060006000C000C00180010002000400080000A2A7E9E10>I<000600000006000000060000
000600000006000000060000000600000006000000060000000600000006000000060000000600
00FFFFFFE0FFFFFFE0000600000006000000060000000600000006000000060000000600000006
000000060000000600000006000000060000000600001B1C7E9720>43 D<60F0F0701010101020
204080040C7C830C>I<FFE0FFE00B0280890E>I<60F0F06004047C830C>I<0001000300060006
0006000C000C000C0018001800180030003000300060006000C000C000C0018001800180030003
000300060006000C000C000C00180018001800300030003000600060006000C000C00010297E9E
15>I<03C00C301818300C300C700E60066006E007E007E007E007E007E007E007E007E007E007
E007E007E00760066006700E300C300C18180C3007E0101D7E9B15>I<030007003F00C7000700
070007000700070007000700070007000700070007000700070007000700070007000700070007
0007000F80FFF80D1C7C9B15>I<07C01830201C400C400EF00FF80FF807F8077007000F000E00
0E001C001C00380070006000C00180030006010C01180110023FFE7FFEFFFE101C7E9B15>I<07
E01830201C201C781E780E781E381E001C001C00180030006007E00030001C001C000E000F000F
700FF80FF80FF80FF00E401C201C183007E0101D7E9B15>I<000C00000C00001C00003C00003C
00005C0000DC00009C00011C00031C00021C00041C000C1C00081C00101C00301C00201C00401C
00C01C00FFFFC0001C00001C00001C00001C00001C00001C00001C0001FFC0121C7F9B15>I<30
0C3FF83FF03FC020002000200020002000200023E024302818301C200E000E000F000F000F600F
F00FF00FF00F800E401E401C2038187007C0101D7E9B15>I<00F0030C06040C0E181E301E300C
700070006000E3E0E430E818F00CF00EE006E007E007E007E007E007600760077006300E300C18
180C3003E0101D7E9B15>I<4000007FFF807FFF007FFF00400200800400800400800800001000
00100000200000600000400000C00000C00001C000018000018000038000038000038000038000
078000078000078000078000078000078000030000111D7E9B15>I<03E00C301008200C200660
06600660067006780C3E083FB01FE007F007F818FC307E601E600FC007C003C003C003C0036002
6004300C1C1007E0101D7E9B15>I<03C00C301818300C700C600EE006E006E007E007E007E007
E0076007700F300F18170C2707C700060006000E300C780C78187010203030C00F80101D7E9B15
>I<60F0F0600000000000000000000060F0F06004127C910C>I<60F0F060000000000000000000
0060F0F0701010101020204080041A7C910C>I<000600000006000000060000000F0000000F00
00000F00000017800000178000001780000023C0000023C0000023C0000041E0000041E0000041
E0000080F0000080F0000180F8000100780001FFF80003007C0002003C0002003C0006003E0004
001E0004001E000C001F001E001F00FF80FFF01C1D7F9C1F>65 D<FFFFC00F00F00F00380F003C
0F001C0F001E0F001E0F001E0F001E0F001C0F003C0F00780F01F00FFFE00F00780F003C0F001E
0F000E0F000F0F000F0F000F0F000F0F000F0F001E0F001E0F003C0F0078FFFFE0181C7E9B1D>
I<001F808000E0618001801980070007800E0003801C0003801C00018038000180780000807800
008070000080F0000000F0000000F0000000F0000000F0000000F0000000F0000000F000000070
0000807800008078000080380000801C0001001C0001000E000200070004000180080000E03000
001FC000191E7E9C1E>I<FFFFC0000F00F0000F003C000F000E000F0007000F0007000F000380
0F0003C00F0001C00F0001C00F0001E00F0001E00F0001E00F0001E00F0001E00F0001E00F0001
E00F0001E00F0001C00F0001C00F0003C00F0003800F0007800F0007000F000E000F001C000F00
7000FFFFC0001B1C7E9B20>I<FFFFFC0F003C0F000C0F00040F00040F00060F00020F00020F02
020F02000F02000F02000F06000FFE000F06000F02000F02000F02000F02010F00010F00020F00
020F00020F00060F00060F000C0F003CFFFFFC181C7E9B1C>I<FFFFF80F00780F00180F00080F
00080F000C0F00040F00040F02040F02000F02000F02000F06000FFE000F06000F02000F02000F
02000F02000F00000F00000F00000F00000F00000F00000F00000F8000FFF800161C7E9B1B>I<
001F808000E0618001801980070007800E0003801C0003801C0001803800018078000080780000
8070000080F0000000F0000000F0000000F0000000F0000000F0000000F000FFF0F0000F807000
07807800078078000780380007801C0007801C0007800E00078007000B800180118000E0608000
1F80001C1E7E9C21>I<FFF3FFC00F003C000F003C000F003C000F003C000F003C000F003C000F
003C000F003C000F003C000F003C000F003C000F003C000FFFFC000F003C000F003C000F003C00
0F003C000F003C000F003C000F003C000F003C000F003C000F003C000F003C000F003C000F003C
00FFF3FFC01A1C7E9B1F>I<FFF00F000F000F000F000F000F000F000F000F000F000F000F000F
000F000F000F000F000F000F000F000F000F000F000F000F000F00FFF00C1C7F9B0F>I<1FFF00
F80078007800780078007800780078007800780078007800780078007800780078007800780078
7078F878F878F878F0F040E021C01F00101D7F9B15>I<FFF03FE00F000F000F000C000F000800
0F0010000F0020000F0040000F0080000F0100000F0200000F0400000F0E00000F1F00000F2F00
000F2780000F4780000F83C0000F01E0000F01E0000F00F0000F00F8000F0078000F003C000F00
3C000F001E000F001F000F001F80FFF07FF01C1C7E9B20>I<FFF8000F80000F00000F00000F00
000F00000F00000F00000F00000F00000F00000F00000F00000F00000F00000F00000F00000F00
000F00080F00080F00080F00180F00180F00100F00300F00700F01F0FFFFF0151C7E9B1A>I<FF
8000FF800F8000F8000F8000F8000BC00178000BC00178000BC001780009E002780009E0027800
08F004780008F004780008F0047800087808780008780878000878087800083C107800083C1078
00083C107800081E207800081E207800081E207800080F407800080F4078000807807800080780
7800080780780008030078001C03007800FF8307FF80211C7E9B26>I<FF007FC00F800E000F80
04000BC0040009E0040009E0040008F0040008F8040008780400083C0400083C0400081E040008
0F0400080F0400080784000807C4000803C4000801E4000801E4000800F40008007C0008007C00
08003C0008003C0008001C0008000C001C000C00FF8004001A1C7E9B1F>I<003F800000E0E000
0380380007001C000E000E001C0007003C00078038000380780003C0780003C0700001C0F00001
E0F00001E0F00001E0F00001E0F00001E0F00001E0F00001E0F00001E0700001C0780003C07800
03C0380003803C0007801C0007000E000E0007001C000380380000E0E000003F80001B1E7E9C20
>I<FFFF800F00E00F00780F003C0F001C0F001E0F001E0F001E0F001E0F001E0F001C0F003C0F
00780F00E00FFF800F00000F00000F00000F00000F00000F00000F00000F00000F00000F00000F
00000F0000FFF000171C7E9B1C>I<003F800000E0E0000380380007001C000E000E001C000700
3C00078038000380780003C0780003C0700001C0F00001E0F00001E0F00001E0F00001E0F00001
E0F00001E0F00001E0F00001E0700001C0780003C0780003C0380003803C0E07801C1107000E20
8E000720DC0003A0F80000F0E020003FE0200000602000007060000078E000003FC000003FC000
001F8000000F001B257E9C20>I<FFFF00000F01E0000F0078000F003C000F001C000F001E000F
001E000F001E000F001E000F001C000F003C000F0078000F01E0000FFF00000F03C0000F00E000
0F00F0000F0078000F0078000F0078000F0078000F0078000F0078000F0078100F0078100F0038
100F003C20FFF01C20000007C01C1D7E9B1F>I<07E0801C1980300580700380600180E00180E0
0080E00080E00080F00000F800007C00007FC0003FF8001FFE0007FF0000FF80000F800007C000
03C00001C08001C08001C08001C0C00180C00180E00300D00200CC0C0083F800121E7E9C17>I<
7FFFFFC0700F01C0600F00C0400F0040400F0040C00F0020800F0020800F0020800F0020000F00
00000F0000000F0000000F0000000F0000000F0000000F0000000F0000000F0000000F0000000F
0000000F0000000F0000000F0000000F0000000F0000000F0000001F800003FFFC001B1C7F9B1E
>I<FFF07FC00F000E000F0004000F0004000F0004000F0004000F0004000F0004000F0004000F
0004000F0004000F0004000F0004000F0004000F0004000F0004000F0004000F0004000F000400
0F0004000F0004000F0004000700080007800800038010000180100000C020000070C000001F00
001A1D7E9B1F>I<FFE00FF01F0003C00F0001800F0001000F800300078002000780020003C004
0003C0040003C0040001E0080001E0080001F0080000F0100000F0100000F83000007820000078
2000003C4000003C4000003C4000001E8000001E8000001F8000000F0000000F00000006000000
060000000600001C1D7F9B1F>I<FFE0FFE0FF1F001F003C1E001E00180F001F00100F001F0010
0F001F001007801F00200780278020078027802003C027804003C043C04003C043C04003E043C0
4001E081E08001E081E08001E081E08000F100F10000F100F10000F100F100007900FA00007A00
7A00007A007A00003E007C00003C003C00003C003C00003C003C00001800180000180018000018
001800281D7F9B2B>I<7FF0FFC00FC03E000780180003C0180003E0100001E0200001F0600000
F0400000788000007D8000003D0000001E0000001F0000000F0000000F8000000F80000013C000
0023E0000021E0000041F00000C0F8000080780001007C0003003C0002001E0006001F001F003F
80FFC0FFF01C1C7F9B1F>I<FFF007FC0F8001E00780008007C0018003C0010003E0020001F002
0000F0040000F8040000780800007C1800003C1000001E2000001F2000000F4000000FC0000007
800000078000000780000007800000078000000780000007800000078000000780000007800000
078000007FF8001E1C809B1F>I<FEFEC0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0
C0C0C0C0C0C0C0C0C0C0C0C0C0C0FEFE07297C9E0C>91 D<080810102020404040408080808080
80B0B0F8F8787830300D0C7A9C15>I<FEFE060606060606060606060606060606060606060606
06060606060606060606060606060606FEFE0729809E0C>I<1FC000307000783800781C00301C
00001C00001C0001FC000F1C00381C00701C00601C00E01C40E01C40E01C40603C40304E801F87
0012127E9115>97 D<FC00001C00001C00001C00001C00001C00001C00001C00001C00001C0000
1C00001C7C001D86001E03001C01801C01C01C00C01C00E01C00E01C00E01C00E01C00E01C00E0
1C00C01C01C01C01801E030019060010F800131D7F9C17>I<07E00C301878307870306000E000
E000E000E000E000E00060007004300418080C3007C00E127E9112>I<003F0000070000070000
070000070000070000070000070000070000070000070003E7000C1700180F0030070070070060
0700E00700E00700E00700E00700E00700E00700600700700700300700180F000C370007C7E013
1D7E9C17>I<03E00C301818300C700E6006E006FFFEE000E000E000E00060007002300218040C
1803E00F127F9112>I<00F8018C071E061E0E0C0E000E000E000E000E000E00FFE00E000E000E
000E000E000E000E000E000E000E000E000E000E000E000E000E007FE00F1D809C0D>I<000380
03C4C00C38C01C3880181800381C00381C00381C00381C001818001C38000C300013C000100000
3000001800001FF8001FFF001FFF803003806001C0C000C0C000C0C000C06001803003001C0E00
07F800121C7F9215>I<FC00001C00001C00001C00001C00001C00001C00001C00001C00001C00
001C00001C7C001C87001D03001E03801C03801C03801C03801C03801C03801C03801C03801C03
801C03801C03801C03801C03801C0380FF9FF0141D7F9C17>I<18003C003C0018000000000000
000000000000000000FC001C001C001C001C001C001C001C001C001C001C001C001C001C001C00
1C001C00FF80091D7F9C0C>I<00C001E001E000C000000000000000000000000000000FE000E0
00E000E000E000E000E000E000E000E000E000E000E000E000E000E000E000E000E000E000E060
E0F0C0F1C061803E000B25839C0D>I<FC00001C00001C00001C00001C00001C00001C00001C00
001C00001C00001C00001C3FC01C0F001C0C001C08001C10001C20001C40001CE0001DE0001E70
001C78001C38001C3C001C1C001C0E001C0F001C0F80FF9FE0131D7F9C16>I<FC001C001C001C
001C001C001C001C001C001C001C001C001C001C001C001C001C001C001C001C001C001C001C00
1C001C001C001C001C00FF80091D7F9C0C>I<FC7E07E0001C838838001D019018001E01E01C00
1C01C01C001C01C01C001C01C01C001C01C01C001C01C01C001C01C01C001C01C01C001C01C01C
001C01C01C001C01C01C001C01C01C001C01C01C001C01C01C00FF8FF8FF8021127F9124>I<FC
7C001C87001D03001E03801C03801C03801C03801C03801C03801C03801C03801C03801C03801C
03801C03801C03801C0380FF9FF014127F9117>I<03F0000E1C00180600300300700380600180
E001C0E001C0E001C0E001C0E001C0E001C06001807003803003001806000E1C0003F00012127F
9115>I<FC7C001D86001E03001C01801C01C01C00C01C00E01C00E01C00E01C00E01C00E01C00
E01C01C01C01C01C01801E03001D06001CF8001C00001C00001C00001C00001C00001C00001C00
00FF8000131A7F9117>I<03C1000C3300180B00300F00700700700700E00700E00700E00700E0
0700E00700E00700600700700700300F00180F000C370007C70000070000070000070000070000
0700000700000700003FE0131A7E9116>I<FCE01D301E781E781C301C001C001C001C001C001C
001C001C001C001C001C001C00FFC00D127F9110>I<1F9030704030C010C010E010F8007F803F
E00FF000F880388018C018C018E010D0608FC00D127F9110>I<04000400040004000C000C001C
003C00FFE01C001C001C001C001C001C001C001C001C001C101C101C101C101C100C100E2003C0
0C1A7F9910>I<FC1F801C03801C03801C03801C03801C03801C03801C03801C03801C03801C03
801C03801C03801C03801C07800C07800E1B8003E3F014127F9117>I<FF07E03C03801C01001C
01000E02000E020007040007040007040003880003880003D80001D00001D00000E00000E00000
E00000400013127F9116>I<FF3FCFE03C0F03801C0701801C0701001C0B01000E0B82000E0B82
000E1182000711C4000711C4000720C40003A0E80003A0E80003C0680001C0700001C070000180
3000008020001B127F911E>I<7F8FF00F03800F030007020003840001C80001D80000F0000070
0000780000F800009C00010E00020E000607000403801E07C0FF0FF81512809116>I<FF07E03C
03801C01001C01000E02000E020007040007040007040003880003880003D80001D00001D00000
E00000E00000E000004000004000008000008000F08000F10000F300006600003C0000131A7F91
16>I<7FFC70386038407040F040E041C003C0038007000F040E041C043C0C380870087038FFF8
0E127F9112>I<6060F0F0F0F060600C047C9C15>127 D E /Fm 37 122
df<000E00001E00007E0007FE00FFFE00FFFE00F8FE0000FE0000FE0000FE0000FE0000FE0000
FE0000FE0000FE0000FE0000FE0000FE0000FE0000FE0000FE0000FE0000FE0000FE0000FE0000
FE0000FE0000FE0000FE0000FE0000FE0000FE0000FE0000FE0000FE0000FE007FFFFE7FFFFE7F
FFFE17277BA622>49 D<00FF800007FFF0000FFFFC001E03FE003800FF807C003F80FE003FC0FF
001FC0FF001FE0FF000FE0FF000FE07E000FE03C001FE000001FE000001FC000001FC000003F80
00003F0000007E000000FC000000F8000001F0000003E00000078000000F0000001E0000003C00
E0007000E000E000E001C001C0038001C0060001C00FFFFFC01FFFFFC03FFFFFC07FFFFFC0FFFF
FF80FFFFFF80FFFFFF801B277DA622>I<007F800003FFF00007FFFC000F80FE001F007F003F80
7F003F803F803F803F803F803F801F803F801F003F8000007F0000007F0000007E000000FC0000
01F8000007F00000FFC00000FFC0000001F80000007E0000003F0000003F8000001FC000001FC0
00001FE000001FE03C001FE07E001FE0FF001FE0FF001FE0FF001FC0FF003FC0FE003F807C007F
003F00FE001FFFFC0007FFF00000FF80001B277DA622>I<00000E0000001E0000003E0000007E
000000FE000000FE000001FE000003FE0000077E00000E7E00000E7E00001C7E0000387E000070
7E0000E07E0000E07E0001C07E0003807E0007007E000E007E000E007E001C007E0038007E0070
007E00E0007E00FFFFFFF8FFFFFFF8FFFFFFF80000FE000000FE000000FE000000FE000000FE00
0000FE000000FE000000FE00007FFFF8007FFFF8007FFFF81D277EA622>I<180003001F801F00
1FFFFE001FFFFC001FFFF8001FFFF0001FFFC0001FFF00001C0000001C0000001C0000001C0000
001C0000001C0000001C0000001C7FC0001DFFF8001F80FC001E003F0008003F0000001F800000
1FC000001FC000001FE000001FE018001FE07C001FE0FE001FE0FE001FE0FE001FE0FE001FC0FC
001FC078003F8078003F803C007F001F01FE000FFFFC0003FFF00000FF80001B277DA622>I<00
07F800003FFE0000FFFF0001FC078003F00FC007C01FC00F801FC01F801FC01F001FC03F000F80
3F0000007E0000007E0000007E000000FE020000FE1FF000FE3FFC00FE603E00FE801F00FF801F
80FF000FC0FF000FC0FE000FE0FE000FE0FE000FE0FE000FE07E000FE07E000FE07E000FE07E00
0FE03E000FE03F000FC01F000FC01F001F800F801F0007E07E0003FFFC0001FFF800003FC0001B
277DA622>I<00000780000000000780000000000FC0000000000FC0000000000FC0000000001F
E0000000001FE0000000003FF0000000003FF0000000003FF00000000077F80000000077F80000
0000F7FC00000000E3FC00000000E3FC00000001C1FE00000001C1FE00000003C1FF0000000380
FF0000000380FF00000007007F80000007007F8000000F007FC000000E003FC000000E003FC000
001C001FE000001C001FE000003FFFFFF000003FFFFFF000003FFFFFF00000700007F800007000
07F80000F00007FC0000E00003FC0000E00003FC0001C00001FE0001C00001FE0003C00001FF00
FFFE003FFFFCFFFE003FFFFCFFFE003FFFFC2E297EA833>65 D<00007FE0030007FFFC07001FFF
FF0F007FF00F9F00FF0001FF01FC0000FF03F800007F07F000003F0FE000001F1FC000001F1FC0
00000F3F8000000F3F800000077F800000077F800000077F00000000FF00000000FF00000000FF
00000000FF00000000FF00000000FF00000000FF00000000FF00000000FF000000007F00000000
7F800000007F800000073F800000073F800000071FC00000071FC000000E0FE000000E07F00000
1C03F800003C01FC00007800FF0001F0007FF007C0001FFFFF800007FFFE0000007FF00028297C
A831>67 D<FFFFFFFFE0FFFFFFFFE0FFFFFFFFE003FC001FE003FC0007F003FC0001F003FC0001
F003FC0000F003FC00007003FC00007003FC00007003FC01C07803FC01C03803FC01C03803FC01
C03803FC03C00003FC03C00003FC0FC00003FFFFC00003FFFFC00003FFFFC00003FC0FC00003FC
03C00003FC03C00003FC01C00E03FC01C00E03FC01C00E03FC01C01C03FC00001C03FC00001C03
FC00001C03FC00003C03FC00003803FC00007803FC0000F803FC0001F803FC0003F803FC001FF8
FFFFFFFFF0FFFFFFFFF0FFFFFFFFF027297EA82C>69 D<FFFFFCFFFFFCFFFFFC01FE0001FE0001
FE0001FE0001FE0001FE0001FE0001FE0001FE0001FE0001FE0001FE0001FE0001FE0001FE0001
FE0001FE0001FE0001FE0001FE0001FE0001FE0001FE0001FE0001FE0001FE0001FE0001FE0001
FE0001FE0001FE0001FE0001FE0001FE0001FE00FFFFFCFFFFFCFFFFFC16297FA819>73
D<FFFFFC0000FFFFFC0000FFFFFC000003FC00000003FC00000003FC00000003FC00000003FC00
000003FC00000003FC00000003FC00000003FC00000003FC00000003FC00000003FC00000003FC
00000003FC00000003FC00000003FC00000003FC00000003FC00000003FC00000003FC00000003
FC00000003FC0001C003FC0001C003FC0001C003FC0001C003FC0003C003FC00038003FC000380
03FC00078003FC00078003FC000F8003FC000F8003FC001F8003FC007F8003FC01FF00FFFFFFFF
00FFFFFFFF00FFFFFFFF0022297EA828>76 D<FFFE0000003FFF80FFFE0000003FFF80FFFF0000
007FFF8003FF0000007FE00003FF0000007FE00003BF800000EFE00003BF800000EFE000039FC0
0001CFE000039FC00001CFE000038FE000038FE000038FE000038FE000038FE000038FE0000387
F000070FE0000387F000070FE0000383F8000E0FE0000383F8000E0FE0000381FC001C0FE00003
81FC001C0FE0000381FC001C0FE0000380FE00380FE0000380FE00380FE00003807F00700FE000
03807F00700FE00003803F80E00FE00003803F80E00FE00003803F80E00FE00003801FC1C00FE0
0003801FC1C00FE00003800FE3800FE00003800FE3800FE000038007F7000FE000038007F7000F
E000038007F7000FE000038003FE000FE000038003FE000FE000038001FC000FE000038001FC00
0FE000038000F8000FE000FFFE00F803FFFF80FFFE00F803FFFF80FFFE007003FFFF8039297DA8
40>I<FFFC00007FFFFFFE00007FFFFFFF00007FFF03FF800001C003FFC00001C003BFE00001C0
039FE00001C0039FF00001C0038FF80001C00387FC0001C00383FE0001C00381FF0001C00380FF
8001C003807F8001C003807FC001C003803FE001C003801FF001C003800FF801C0038007FC01C0
038003FC01C0038003FE01C0038001FF01C0038000FF81C00380007FC1C00380003FE1C0038000
1FF1C00380000FF1C00380000FF9C003800007FDC003800003FFC003800001FFC003800000FFC0
038000007FC0038000007FC0038000003FC0038000001FC0038000000FC00380000007C0FFFE00
0003C0FFFE000001C0FFFE000001C030297EA835>I<0000FFC00000000FFFFC0000003F807F00
0000FE001FC00001F80007E00003F00003F00007E00001F8000FE00001FC001FC00000FE001FC0
0000FE003F8000007F003F8000007F007F8000007F807F0000003F807F0000003F807F0000003F
80FF0000003FC0FF0000003FC0FF0000003FC0FF0000003FC0FF0000003FC0FF0000003FC0FF00
00003FC0FF0000003FC0FF0000003FC0FF0000003FC07F0000003F807F8000007F807F8000007F
803F8000007F003F8000007F001FC00000FE001FC00000FE000FE00001FC0007F00003F80003F8
0007F00001FC000FE00000FE001FC000003FC0FF0000000FFFFC00000000FFC000002A297CA833
>I<FFFFFFE00000FFFFFFFE0000FFFFFFFF800003FC003FE00003FC000FF00003FC0007F80003
FC0003FC0003FC0001FC0003FC0001FE0003FC0001FE0003FC0001FE0003FC0001FE0003FC0001
FE0003FC0001FE0003FC0001FC0003FC0003F80003FC0007F80003FC000FE00003FC003FC00003
FFFFFE000003FFFFFE000003FC00FF800003FC003FC00003FC001FE00003FC000FF00003FC0007
F80003FC0007F80003FC0007F80003FC0007F80003FC0007F80003FC0007F80003FC0007F80003
FC0007F80003FC0007F80003FC0007F80E03FC0007F80E03FC0003F80E03FC0001FC1CFFFFF000
FE1CFFFFF0007FF8FFFFF0000FE02F297EA832>82 D<00FF00C003FFE1C00FFFF9C01F80FFC03F
003FC03E000FC07C0007C07C0007C0FC0003C0FC0003C0FC0001C0FE0001C0FE0001C0FF000000
FFC000007FFC00007FFFE0003FFFF8001FFFFE001FFFFF0007FFFF8003FFFFC000FFFFC0000FFF
E000007FE000001FF000000FF0000007F0E00003F0E00003F0E00003F0E00003F0F00003E0F000
03E0F80007E0FC0007C0FF000F80FFE01F80E3FFFF00E1FFFC00C01FF0001C297CA825>I<7FFF
F81FFFE07FFFF81FFFE07FFFF81FFFE001FF0000F00000FF8001E00000FFC001C000007FC003C0
00003FE0078000001FF00F0000001FF00E0000000FF81E00000007FC3C00000007FC3800000003
FE7800000001FFF000000001FFE000000000FFC0000000007FC0000000003FE0000000003FE000
0000001FF0000000001FF8000000003FF8000000003FFC000000007BFE00000000F3FE00000001
E1FF00000001C0FF80000003C07FC0000007807FC000000F003FE000000E001FF000001E001FF0
00003C000FF80000380007FC0000780007FC0000F00003FE0001E00001FF00FFFF003FFFFCFFFF
003FFFFCFFFF003FFFFC2E297EA833>88 D<03FF80000FFFF0001F01FC003F80FE003F807F003F
803F003F803F801F003F8000003F8000003F8000003F8000003F80003FFF8001FC3F800FE03F80
1F803F803F003F807E003F80FC003F80FC003F80FC003F80FC003F80FC005F807E00DF803F839F
FC1FFE0FFC03F803FC1E1B7E9A21>97 D<FFE00000FFE00000FFE000000FE000000FE000000FE0
00000FE000000FE000000FE000000FE000000FE000000FE000000FE000000FE000000FE000000F
E1FE000FE7FF800FFE07E00FF803F00FF001F80FE000FC0FE000FC0FE0007E0FE0007E0FE0007F
0FE0007F0FE0007F0FE0007F0FE0007F0FE0007F0FE0007F0FE0007F0FE0007E0FE0007E0FE000
7E0FE000FC0FE000FC0FF001F80FF803F00F9C0FE00F0FFF800E01FC00202A7EA925>I<003FF0
0001FFFC0003F03E000FC07F001F807F003F007F003F007F007F003E007E0000007E000000FE00
0000FE000000FE000000FE000000FE000000FE000000FE0000007E0000007E0000007F0000003F
0003803F8003801F8007000FE00E0003F83C0001FFF800003FC000191B7E9A1E>I<00007FF000
007FF000007FF0000007F0000007F0000007F0000007F0000007F0000007F0000007F0000007F0
000007F0000007F0000007F0000007F0003F87F001FFF7F007F03FF00FC00FF01F8007F03F0007
F03F0007F07E0007F07E0007F07E0007F0FE0007F0FE0007F0FE0007F0FE0007F0FE0007F0FE00
07F0FE0007F0FE0007F07E0007F07E0007F03F0007F03F0007F01F800FF00FC01FF007E07FFF01
FFE7FF007F87FF202A7EA925>I<003FC00001FFF00003E07C000F803E001F801F001F001F003F
000F807E000F807E000FC07E000FC0FE0007C0FE0007C0FFFFFFC0FFFFFFC0FE000000FE000000
FE0000007E0000007E0000007F0000003F0001C01F0001C00F80038007C0070003F01E0000FFFC
00003FE0001A1B7E9A1F>I<0007F8003FFC007E3E01FC7F03F87F03F07F07F07F07F03E07F000
07F00007F00007F00007F00007F00007F000FFFFC0FFFFC0FFFFC007F00007F00007F00007F000
07F00007F00007F00007F00007F00007F00007F00007F00007F00007F00007F00007F00007F000
07F00007F00007F00007F0007FFF807FFF807FFF80182A7EA915>I<007F80F001FFE3F807C0FE
1C0F807C7C1F003E7C1F003E103F003F003F003F003F003F003F003F003F003F003F003F001F00
3E001F003E000F807C0007C0F80005FFE0000C7F8000180000001C0000001C0000001E0000001F
FFF8001FFFFF000FFFFFC007FFFFE003FFFFF00FFFFFF03E0007F07C0001F8F80000F8F80000F8
F80000F8F80000F87C0001F07C0001F03F0007E00FC01F8007FFFF00007FF0001E287E9A22>I<
FFE00000FFE00000FFE000000FE000000FE000000FE000000FE000000FE000000FE000000FE000
000FE000000FE000000FE000000FE000000FE000000FE07E000FE1FF800FE30FC00FE40FE00FE8
07E00FF807F00FF007F00FF007F00FE007F00FE007F00FE007F00FE007F00FE007F00FE007F00F
E007F00FE007F00FE007F00FE007F00FE007F00FE007F00FE007F00FE007F00FE007F00FE007F0
FFFE3FFFFFFE3FFFFFFE3FFF202A7DA925>I<07000FC01FE03FE03FE03FE01FE00FC007000000
000000000000000000000000FFE0FFE0FFE00FE00FE00FE00FE00FE00FE00FE00FE00FE00FE00F
E00FE00FE00FE00FE00FE00FE00FE00FE00FE00FE0FFFEFFFEFFFE0F2B7EAA12>I<FFE0FFE0FF
E00FE00FE00FE00FE00FE00FE00FE00FE00FE00FE00FE00FE00FE00FE00FE00FE00FE00FE00FE0
0FE00FE00FE00FE00FE00FE00FE00FE00FE00FE00FE00FE00FE00FE00FE00FE00FE0FFFEFFFEFF
FE0F2A7EA912>108 D<FFC07F001FC000FFC1FFC07FF000FFC307E0C1F8000FC407F101FC000F
C803F200FC000FD803FE00FE000FD003FC00FE000FD003FC00FE000FE003F800FE000FE003F800
FE000FE003F800FE000FE003F800FE000FE003F800FE000FE003F800FE000FE003F800FE000FE0
03F800FE000FE003F800FE000FE003F800FE000FE003F800FE000FE003F800FE000FE003F800FE
000FE003F800FE000FE003F800FE000FE003F800FE00FFFE3FFF8FFFE0FFFE3FFF8FFFE0FFFE3F
FF8FFFE0331B7D9A38>I<FFC07E00FFC1FF80FFC30FC00FC40FE00FC807E00FD807F00FD007F0
0FD007F00FE007F00FE007F00FE007F00FE007F00FE007F00FE007F00FE007F00FE007F00FE007
F00FE007F00FE007F00FE007F00FE007F00FE007F00FE007F00FE007F0FFFE3FFFFFFE3FFFFFFE
3FFF201B7D9A25>I<003FE00001FFFC0003F07E000FC01F801F800FC03F0007E03F0007E07E00
03F07E0003F07E0003F0FE0003F8FE0003F8FE0003F8FE0003F8FE0003F8FE0003F8FE0003F8FE
0003F87E0003F07E0003F03F0007E03F0007E01F800FC00FC01F8007F07F0001FFFC00003FE000
1D1B7E9A22>I<FFE1FE00FFE7FF80FFFE0FE00FF803F00FF001F80FE001FC0FE000FC0FE000FE
0FE000FE0FE0007F0FE0007F0FE0007F0FE0007F0FE0007F0FE0007F0FE0007F0FE0007F0FE000
7E0FE000FE0FE000FE0FE000FC0FE001FC0FF001F80FF803F00FFC0FE00FEFFF800FE1FC000FE0
00000FE000000FE000000FE000000FE000000FE000000FE000000FE000000FE00000FFFE0000FF
FE0000FFFE000020277E9A25>I<FFC3E0FFC7F8FFCC7C0FD8FE0FD0FE0FD0FE0FF0FE0FE07C0F
E0000FE0000FE0000FE0000FE0000FE0000FE0000FE0000FE0000FE0000FE0000FE0000FE0000F
E0000FE0000FE000FFFF00FFFF00FFFF00171B7E9A1B>114 D<03FE300FFFF03E03F07800F070
00F0F00070F00070F80070FE0000FFE0007FFF007FFFC03FFFE01FFFF007FFF800FFF80007FC00
00FCE0007CE0003CF0003CF00038F80038FC0070FF01E0E7FFC0C1FF00161B7E9A1B>I<007000
00700000700000700000F00000F00000F00001F00003F00003F00007F0001FFFE0FFFFE0FFFFE0
07F00007F00007F00007F00007F00007F00007F00007F00007F00007F00007F00007F00007F000
07F07007F07007F07007F07007F07007F07007F07003F0E001F8C000FFC0003F0014267FA51A>
I<FFE07FF0FFE07FF0FFE07FF00FE007F00FE007F00FE007F00FE007F00FE007F00FE007F00FE0
07F00FE007F00FE007F00FE007F00FE007F00FE007F00FE007F00FE007F00FE007F00FE007F00F
E007F00FE007F00FE00FF00FE00FF007E017F003F067FF01FFC7FF007F87FF201B7D9A25>I<FF
FE07FFFFFE07FFFFFE07FF07F000E007F000E007F801E003F801C003F801C001FC038001FC0380
01FE078000FE070000FF0F00007F0E00007F0E00003F9C00003F9C00003FFC00001FF800001FF8
00000FF000000FF000000FF0000007E0000007E0000003C0000003C000201B7F9A23>I<FFFE07
FFFFFE07FFFFFE07FF07F000E007F000E007F801E003F801C003F801C001FC038001FC038001FE
078000FE070000FF0F00007F0E00007F0E00003F9C00003F9C00003FFC00001FF800001FF80000
0FF000000FF0000007F0000007E0000007E0000003C0000003C000000380000003800000078000
380700007C070000FE0E0000FE0E0000FE1C0000FE3800007C7000003FE000000F80000020277F
9A23>121 D E /Fn 39 122 df<00FC000182000703000607000E02000E00000E00000E00000E
00000E0000FFFF000E07000E07000E07000E07000E07000E07000E07000E07000E07000E07000E
07000E07000E07000E07007F0FE0131A809915>12 D<60F0F07010101020204080040B7D830B>
44 D<FFC0FFC00A0280880D>I<60F0F06004047D830B>I<60F0F060000000000000000060F0F0
6004107D8F0B>58 D<000C0000000C0000000C0000001E0000001E0000003F0000002700000027
00000043800000438000004380000081C0000081C0000081C0000100E0000100E00001FFE00002
0070000200700006007800040038000400380008001C0008001C001C001E00FF00FFC01A1A7F99
1D>65 D<FFFF000E01C00E00E00E00700E00780E00780E00780E00780E00780E00F00E00E00E03
C00FFF800E01E00E00700E00780E003C0E003C0E003C0E003C0E003C0E00380E00780E00F00E01
E0FFFF80161A7E991B>I<003F0201C0C603002E0E001E1C000E1C000638000678000270000270
0002F00000F00000F00000F00000F00000F000007000027000027800023800041C00041C00080E
000803003001C0C0003F00171A7E991C>I<FFE00E000E000E000E000E000E000E000E000E000E
000E000E000E000E000E000E000E000E000E000E000E000E000E000E00FFE00B1A7F990E>73
D<FF0003FC0F0003C00F0003C00B8005C00B8005C00B8005C009C009C009C009C009C009C008E0
11C008E011C008E011C0087021C0087021C0083841C0083841C0083841C0081C81C0081C81C008
1C81C0080F01C0080F01C0080F01C0080601C01C0601C0FF861FFC1E1A7E9923>77
D<FE01FF0F00380F00100B80100B801009C01008E01008E010087010087010083810081C10081C
10080E10080E100807100803900803900801D00801D00800F00800700800700800301C0030FF80
10181A7E991D>I<FFFF000E03C00E00E00E00700E00700E00780E00780E00780E00780E00700E
00700E00E00E03C00FFF000E00000E00000E00000E00000E00000E00000E00000E00000E00000E
00000E0000FFE000151A7E991A>80 D<7FFFFF00701C0700401C0100401C0100C01C0180801C00
80801C0080801C0080001C0000001C0000001C0000001C0000001C0000001C0000001C0000001C
0000001C0000001C0000001C0000001C0000001C0000001C0000001C0000001C0000001C000003
FFE000191A7F991C>84 D<FFE1FF0E00380E00100E00100E00100E00100E00100E00100E00100E
00100E00100E00100E00100E00100E00100E00100E00100E00100E00100E001006002007002003
004001804000C180003E00181A7E991D>I<FF83FF0FF03C007801C01C007800801C007800800E
007801000E007801000E009C010007009C020007009C020007010E020007010E020003810E0400
0382070400038207040001C207080001C403880001C403880000E403900000E403900000E801D0
00007801E000007801E000007000E000007000E000003000C0000020004000241A7F9927>87
D<7FC0FF000F003C0007003000078020000380600001C0400001E0800000E1800000710000007A
0000003C0000001C0000001E0000001E00000017000000278000004380000041C0000081E00001
00E0000100700002007800040038000C001C001E003E00FF80FFC01A1A7F991D>I<3F8070C070
E020700070007007F01C7030707070E070E071E071E0F171FB1E3C10107E8F13>97
D<FC00001C00001C00001C00001C00001C00001C00001C00001C00001C00001CF8001F0E001E07
001C03801C01801C01C01C01C01C01C01C01C01C01C01C01C01C03801C03001E07001B0C0010F0
00121A7F9915>I<07F80C1C381C30087000E000E000E000E000E000E0007000300438080C1807
E00E107F8F11>I<007E00000E00000E00000E00000E00000E00000E00000E00000E00000E0003
CE000C3E00380E00300E00700E00E00E00E00E00E00E00E00E00E00E00E00E00600E00700E0038
1E001C2E0007CFC0121A7F9915>I<07C01C3030187018600CE00CFFFCE000E000E000E0006000
300438080C1807E00E107F8F11>I<01F0031807380E100E000E000E000E000E000E00FFC00E00
0E000E000E000E000E000E000E000E000E000E000E000E000E007FE00D1A80990C>I<0FCE1873
30307038703870387038303018602FC02000600070003FF03FFC1FFE600FC003C003C003C00360
06381C07E010187F8F13>I<FC00001C00001C00001C00001C00001C00001C00001C00001C0000
1C00001CF8001D0C001E0E001E0E001C0E001C0E001C0E001C0E001C0E001C0E001C0E001C0E00
1C0E001C0E001C0E00FF9FC0121A7F9915>I<18003C003C001800000000000000000000000000
FC001C001C001C001C001C001C001C001C001C001C001C001C001C001C00FF80091A80990A>I<
FC00001C00001C00001C00001C00001C00001C00001C00001C00001C00001C3F801C1E001C1800
1C10001C20001C40001DC0001FE0001CE0001C70001C78001C38001C1C001C1E001C1F00FF3FC0
121A7F9914>107 D<FC001C001C001C001C001C001C001C001C001C001C001C001C001C001C00
1C001C001C001C001C001C001C001C001C001C00FF80091A80990A>I<FC7C1F001D8E63801E07
81C01E0781C01C0701C01C0701C01C0701C01C0701C01C0701C01C0701C01C0701C01C0701C01C
0701C01C0701C01C0701C0FF9FE7F81D107F8F20>I<FCF8001D0C001E0E001E0E001C0E001C0E
001C0E001C0E001C0E001C0E001C0E001C0E001C0E001C0E001C0E00FF9FC012107F8F15>I<07
E01C38300C700E6006E007E007E007E007E007E0076006700E381C1C3807E010107F8F13>I<FC
F8001F0E001E07001C03801C03801C01C01C01C01C01C01C01C01C01C01C01C01C03801C03001E
07001F0C001CF0001C00001C00001C00001C00001C00001C0000FF800012177F8F15>I<FCE01D
701E701E201C001C001C001C001C001C001C001C001C001C001C00FFC00C107F8F0F>114
D<1F2060E04020C020C020F0007F003FC01FE000F080708030C030C020F0408F800C107F8F0F>
I<0400040004000C000C001C003C00FFC01C001C001C001C001C001C001C001C001C201C201C20
1C201C200E4003800B177F960F>I<FC7E001C0E001C0E001C0E001C0E001C0E001C0E001C0E00
1C0E001C0E001C0E001C0E001C0E001C1E000C2E0007CFC012107F8F15>I<FF1F803C06001C04
001C04001E0C000E08000E080007100007100007900003A00003A00001C00001C00001C0000080
0011107F8F14>I<FF3F9F803C0E0700380E06001C1604001C1704001E170C000E2308000E2388
000F239800074190000741D00003C1E0000380E0000380E0000180C0000100400019107F8F1C>
I<FF3F803C1C001C18000E100007200007600003C00001C00001E00003E0000270000438000838
00181C00381E00FC3FC012107F8F14>I<FF1F803C06001C04001C04001E0C000E08000E080007
100007100007900003A00003A00001C00001C00001C000008000008000010000010000E10000E2
0000E4000078000011177F8F14>I E /Fo 7 117 df<0003000000078000000780000007800000
0FC000000FC000001BE000001BE000001BE0000031F0000031F0000060F8000060F80000E0FC00
00C07C0000C07C0001803E0001FFFE0003FFFF0003001F0003001F0006000F8006000F800E000F
C0FFC07FFCFFC07FFC1E1A7F9921>65 D<0FF0001C3C003E1E003E0E003E0F001C0F00000F0000
FF000FCF003E0F007C0F00F80F00F80F00F80F00F817007C27E01FC3E013117F9015>97
D<FE0000FE00001E00001E00001E00001E00001E00001E00001E00001E7F001FC3C01F00E01E00
F01E00781E00781E007C1E007C1E007C1E007C1E007C1E00781E00781E00F01F00E01D83C0187F
00161A7F9919>I<03FC000F0E001C1F003C1F00781F00780E00F80000F80000F80000F80000F8
00007800007800003C01801C03000F060003FC0011117F9014>I<FC78FC9C1D3E1D3E1E3E1E1C
1E001E001E001E001E001E001E001E001E00FFC0FFC00F117F9012>114
D<1FB020704030C030C030F000FF807FE03FF807F8003CC00CC00CE00CE008F830CFE00E117F90
11>I<06000600060006000E000E001E003FF0FFF01E001E001E001E001E001E001E001E001E18
1E181E181E181E180F3003E00D187F9711>I E /Fp 15 122 df<3078FCFC7830060676851A>
46 D<003E0001FF8003FFC007C1E00F00E01E0F703C3FF0387FF07070F870E07870E078E1C038
E1C038E1C038E1C038E1C038E1C038E1C038E1C03870E07070E0707070E0387FE03C3FC01E0F00
0F003807C0F803FFF001FFE0003F00151E7E9D1A>64 D<1FF0003FFC007FFE00780F0030070000
0380000380007F8007FF801FFF803F8380780380700380E00380E00380E00380700780780F803F
FFFC1FFDFC07F0FC16157D941A>97 D<00FF8003FFC00FFFE01F01E03C00C07800007000007000
00E00000E00000E00000E00000E000007000007000007800703C00701F01F00FFFE003FFC000FE
0014157D941A>99 D<001FC0001FC0001FC00001C00001C00001C00001C00001C00001C001F1C0
07FDC00FFFC01E0FC03C07C07803C07001C0E001C0E001C0E001C0E001C0E001C0E001C0E001C0
7003C07003C03807C03E0FC01FFFFC07FDFC01F1FC161E7E9D1A>I<01F80007FF000FFF801E07
C03C01C07800E07000E0E00070E00070FFFFF0FFFFF0FFFFF0E000007000007000007800703C00
701F01F00FFFE003FFC000FE0014157D941A>I<FE0000FE0000FE00000E00000E00000E00000E
00000E00000E00000E3E000EFF800FFFC00FC1C00F80E00F00E00E00E00E00E00E00E00E00E00E
00E00E00E00E00E00E00E00E00E00E00E00E00E00E00E0FFE3FEFFE7FEFFE3FE171E7F9D1A>
104 D<FFE000FFE000FFE00000E00000E00000E00000E00000E00000E00000E00000E00000E000
00E00000E00000E00000E00000E00000E00000E00000E00000E00000E00000E00000E00000E000
00E00000E000FFFFE0FFFFE0FFFFE0131E7D9D1A>108 D<7CE0E000FFFBF8007FFFF8001F1F1C
001E1E1C001E1E1C001C1C1C001C1C1C001C1C1C001C1C1C001C1C1C001C1C1C001C1C1C001C1C
1C001C1C1C001C1C1C001C1C1C001C1C1C007F1F1F00FF9F9F807F1F1F00191580941A>I<7F83
F0FF8FF87FBFFC03FC3C03F01803E00003C00003C0000380000380000380000380000380000380
000380000380000380000380007FFF00FFFF007FFF0016157E941A>114
D<07FB801FFF807FFF80780780E00380E00380E003807800007FC0003FFC0007FE00003F800007
806001C0E001C0E001C0F003C0FC0780FFFF00EFFE00E3F80012157C941A>I<00C00001C00001
C00001C00001C00001C00001C0007FFFE0FFFFE0FFFFE001C00001C00001C00001C00001C00001
C00001C00001C00001C00001C00001C07001C07001C07001C07000E0E000FFE0007FC0001F0014
1C7F9B1A>I<FE0FE0FE0FE0FE0FE00E00E00E00E00E00E00E00E00E00E00E00E00E00E00E00E0
0E00E00E00E00E00E00E00E00E00E00E01E00F03E007FFFE03FFFE00FCFE17157F941A>I<7FC7
F87FCFFC7FC7F80703C003838003C70001EF0000FE00007C00007800003800007C0000EE0001EE
0001C7000383800783C00F01C07FC7FCFFC7FE7FC7FC17157F941A>120
D<7FC3FCFFC7FE7FC3FC0E00E00E00E00700E00701C00781C00381C003838003C38001C38001C7
0000E70000E70000E600006600006E00003C00003C00003C000038000038000038000070000070
0030700078E00071E0007FC0003F80001E000017207F941A>I E /Fq 41
122 df<00200040008001000300060004000C000C001800180030003000300070006000600060
00E000E000E000E000E000E000E000E000E000E000E000E000E000E00060006000600070003000
30003000180018000C000C0004000600030001000080004000200B327CA413>40
D<800040002000100018000C000400060006000300030001800180018001C000C000C000C000E0
00E000E000E000E000E000E000E000E000E000E000E000E000E000C000C000C001C00180018001
80030003000600060004000C00180010002000400080000B327DA413>I<70F8FCFC7404040404
080810102040060F7C840E>44 D<FFE0FFE00B027F8B10>I<70F8F8F87005057C840E>I<01F000
071C000C06001803003803803803807001C07001C07001C07001C0F001E0F001E0F001E0F001E0
F001E0F001E0F001E0F001E0F001E0F001E0F001E0F001E0F001E0F001E07001C07001C07001C0
7803C03803803803801C07000C0600071C0001F00013227EA018>48 D<008003800F80F3800380
038003800380038003800380038003800380038003800380038003800380038003800380038003
8003800380038003800380038007C0FFFE0F217CA018>I<03F0000C1C001007002007804003C0
4003C08003E0F003E0F801E0F801E0F801E02003E00003E00003C00003C0000780000700000E00
001C0000180000300000600000C0000180000100000200200400200800201800603000403FFFC0
7FFFC0FFFFC013217EA018>I<000200000600000E00000E00001E00001E00002E00004E00004E
00008E00008E00010E00020E00020E00040E00040E00080E00100E00100E00200E00200E00400E
00800E00FFFFF8000E00000E00000E00000E00000E00000E00000E00001F0001FFF015217FA018
>52 D<1000801E07001FFF001FFE001FF80013E000100000100000100000100000100000100000
10F800130E001407001803801003800001C00001C00001E00001E00001E00001E07001E0F001E0
F001E0E001C08001C04003C04003802007001006000C1C0003F00013227EA018>I<007E0001C1
000300800601C00E03C01C03C0180180380000380000780000700000700000F0F800F30C00F406
00F40300F80380F801C0F001C0F001E0F001E0F001E0F001E0F001E07001E07001E07001E03801
C03801C01803801C03000C0600070C0001F00013227EA018>I<4000006000007FFFE07FFFC07F
FFC0400080C0010080010080020080020000040000080000080000100000300000200000600000
600000600000E00000C00000C00001C00001C00001C00001C00003C00003C00003C00003C00003
C00003C00003C00003C00001800013237DA118>I<01F800060E000803001001802001802000C0
6000C06000C06000C07000C07801803E01003F02001FC4000FF80003F80003FC00067F00083F80
100F803007C06001C06000E0C000E0C00060C00060C00060C000606000406000C0300080180300
0E0E0003F00013227EA018>I<01F000060C000C0600180700380380700380700380F001C0F001
C0F001C0F001E0F001E0F001E0F001E0F001E07001E07003E03803E01805E00C05E00619E003E1
E00001C00001C00001C0000380000380300300780700780600700C002018001030000FC0001322
7EA018>I<0001800000018000000180000003C0000003C0000003C0000005E0000005E000000D
F0000008F0000008F0000010F800001078000010780000203C0000203C0000203C0000401E0000
401E0000401E0000800F0000800F0000FFFF000100078001000780030007C0020003C0020003C0
040003E0040001E0040001E00C0000F00C0000F03E0001F8FF800FFF20237EA225>65
D<0007E0100038183000E0063001C00170038000F0070000F00E0000701E0000701C0000303C00
00303C0000307C0000107800001078000010F8000000F8000000F8000000F8000000F8000000F8
000000F8000000F800000078000000780000107C0000103C0000103C0000101C0000201E000020
0E000040070000400380008001C0010000E0020000381C000007E0001C247DA223>67
D<FFFFF0000F801E0007800700078003C0078001C0078000E0078000F007800078078000780780
007C0780003C0780003C0780003C0780003E0780003E0780003E0780003E0780003E0780003E07
80003E0780003E0780003E0780003C0780003C0780007C0780007807800078078000F0078000E0
078001E0078003C0078007000F801E00FFFFF8001F227EA125>I<FFFC3FFF0FC003F0078001E0
078001E0078001E0078001E0078001E0078001E0078001E0078001E0078001E0078001E0078001
E0078001E0078001E0078001E007FFFFE0078001E0078001E0078001E0078001E0078001E00780
01E0078001E0078001E0078001E0078001E0078001E0078001E0078001E0078001E0078001E00F
C003F0FFFC3FFF20227EA125>72 D<03FFF0001F00000F00000F00000F00000F00000F00000F00
000F00000F00000F00000F00000F00000F00000F00000F00000F00000F00000F00000F00000F00
000F00000F00000F00000F00000F00700F00F80F00F80F00F80E00F01E00401C00203800187000
07C00014237EA119>74 D<FFC00003FF0FC00003F007C00003E005E00005E005E00005E004F000
09E004F00009E004F00009E004780011E004780011E004780011E0043C0021E0043C0021E0043C
0021E0041E0041E0041E0041E0040F0081E0040F0081E0040F0081E004078101E004078101E004
078101E00403C201E00403C201E00401E401E00401E401E00401E401E00400F801E00400F801E0
0400F801E004007001E00E007001E01F007003F0FFE0203FFF28227EA12D>77
D<FFFFF0000F803C0007800F0007800780078007C0078003C0078003E0078003E0078003E00780
03E0078003E0078003E0078003C0078007C00780078007800F0007803C0007FFF0000780000007
800000078000000780000007800000078000000780000007800000078000000780000007800000
0780000007800000078000000FC00000FFFC00001B227EA121>80 D<03F0200C0C601802603001
E07000E0600060E00060E00060E00020E00020E00020F00000F000007800007F00003FF0001FFE
000FFF0003FF80003FC00007E00001E00000F00000F0000070800070800070800070800070C000
60C00060E000C0F000C0C80180C6070081FC0014247DA21B>83 D<FFFC07FF0FC000F807800070
078000200780002007800020078000200780002007800020078000200780002007800020078000
200780002007800020078000200780002007800020078000200780002007800020078000200780
00200780002007800020078000200380004003C0004003C0004001C0008000E000800060010000
300600001C08000003F00020237EA125>85 D<0FE0001838003C0C003C0E001807000007000007
0000070000FF0007C7001E07003C0700780700700700F00708F00708F00708F00F087817083C23
900FC1E015157E9418>97 D<01FE000703000C07801C0780380300780000700000F00000F00000
F00000F00000F00000F00000F000007000007800403800401C00800C010007060001F80012157E
9416>99 D<0000E0000FE00001E00000E00000E00000E00000E00000E00000E00000E00000E000
00E00000E00000E001F8E00704E00C02E01C01E03800E07800E07000E0F000E0F000E0F000E0F0
00E0F000E0F000E0F000E07000E07800E03800E01801E00C02E0070CF001F0FE17237EA21B>I<
01FC000707000C03801C01C03801C07801E07000E0F000E0FFFFE0F00000F00000F00000F00000
F000007000007800203800201C00400E008007030000FC0013157F9416>I<0E0000FE00001E00
000E00000E00000E00000E00000E00000E00000E00000E00000E00000E00000E00000E1F800E60
C00E80E00F00700F00700E00700E00700E00700E00700E00700E00700E00700E00700E00700E00
700E00700E00700E00700E00700E0070FFE7FF18237FA21B>104 D<1C001E003E001E001C0000
0000000000000000000000000000000E00FE001E000E000E000E000E000E000E000E000E000E00
0E000E000E000E000E000E000E000E00FFC00A227FA10E>I<0E00FE001E000E000E000E000E00
0E000E000E000E000E000E000E000E000E000E000E000E000E000E000E000E000E000E000E000E
000E000E000E000E000E000E000E00FFE00B237FA20E>108 D<0E1FC07F00FE60E183801E8072
01C00F003C00E00F003C00E00E003800E00E003800E00E003800E00E003800E00E003800E00E00
3800E00E003800E00E003800E00E003800E00E003800E00E003800E00E003800E00E003800E00E
003800E00E003800E0FFE3FF8FFE27157F942A>I<0E1F80FE60C01E80E00F00700F00700E0070
0E00700E00700E00700E00700E00700E00700E00700E00700E00700E00700E00700E00700E0070
0E0070FFE7FF18157F941B>I<01FC000707000C01801800C03800E0700070700070F00078F000
78F00078F00078F00078F00078F000787000707800F03800E01C01C00E038007070001FC001515
7F9418>I<0E1F00FE61C00E80600F00700E00380E003C0E001C0E001E0E001E0E001E0E001E0E
001E0E001E0E001E0E003C0E003C0E00380F00700E80E00E41C00E3F000E00000E00000E00000E
00000E00000E00000E00000E00000E0000FFE000171F7F941B>I<0E3CFE461E8F0F0F0F060F00
0E000E000E000E000E000E000E000E000E000E000E000E000E000F00FFF010157F9413>114
D<0F8830786018C018C008C008E008F0007F803FE00FF001F8003C801C800C800CC00CC008E018
D0308FC00E157E9413>I<02000200020002000600060006000E001E003E00FFF80E000E000E00
0E000E000E000E000E000E000E000E000E040E040E040E040E040E040708030801F00E1F7F9E13
>I<0E0070FE07F01E00F00E00700E00700E00700E00700E00700E00700E00700E00700E00700E
00700E00700E00700E00700E00F00E00F006017003827800FC7F18157F941B>I<FFC1FE1E0078
0E00300E00200E002007004007004003808003808003808001C10001C10000E20000E20000E200
00740000740000380000380000380000100017157F941A>I<FF83FE1F01F00E00C00700800381
0003830001C20000E400007800007800003800003C00004E00008E000187000103800201C00401
E00C00E03E01F0FF03FE17157F941A>120 D<FFC1FE1E00780E00300E00200E00200700400700
4003808003808003808001C10001C10000E20000E20000E2000074000074000038000038000038
00001000001000002000002000002000004000F04000F08000F180004300003C0000171F7F941A
>I E /Fr 25 122 df<FFFFFFFFE0FFFFFFFFE007E0000FE003E00001E003E00000F003E00000
7003E000003003E000003003E000001003E000001003E000001003E000001003E000000803E000
000803E000000803E000800803E000800003E000800003E000800003E000800003E001800003E0
01800003E007800003FFFF800003FFFF800003E007800003E001800003E001800003E000800003
E000800003E000800003E000800203E000800203E000000203E000000403E000000403E0000004
03E000000403E000000C03E000000C03E000000803E000001803E000001803E000003803E00000
7803E00001F807E0000FF0FFFFFFFFF0FFFFFFFFF027317CB02D>69 D<FFFF80FFFF8007F00003
E00003E00003E00003E00003E00003E00003E00003E00003E00003E00003E00003E00003E00003
E00003E00003E00003E00003E00003E00003E00003E00003E00003E00003E00003E00003E00003
E00003E00003E00003E00003E00003E00003E00003E00003E00003E00003E00003E00003E00003
E00003E00003E00003E00007F000FFFF80FFFF8011317DB017>73 D<FFFFC00000FFFFC0000007
F000000003E000000003E000000003E000000003E000000003E000000003E000000003E0000000
03E000000003E000000003E000000003E000000003E000000003E000000003E000000003E00000
0003E000000003E000000003E000000003E000000003E000000003E000000003E000000003E000
000003E000000003E000000003E000000003E000000003E000000003E000004003E000004003E0
00004003E000004003E000008003E000008003E000008003E000008003E000018003E000018003
E000038003E000038003E000078003E0000F0003E0003F0007E000FF00FFFFFFFF00FFFFFFFF00
22317CB029>76 D<FFF00000007FF8FFF00000007FF807F00000007F0002F8000000BE0002F800
0000BE0002F8000000BE00027C0000013E00027C0000013E00023E0000023E00023E0000023E00
023E0000023E00021F0000043E00021F0000043E00021F0000043E00020F8000083E00020F8000
083E00020F8000083E000207C000103E000207C000103E000207C000103E000203E000203E0002
03E000203E000201F000403E000201F000403E000201F000403E000200F800803E000200F80080
3E000200F800803E0002007C01003E0002007C01003E0002007C01003E0002003E02003E000200
3E02003E0002003E02003E0002001F04003E0002001F04003E0002000F88003E0002000F88003E
0002000F88003E00020007D0003E00020007D0003E00020007D0003E00020003E0003E00020003
E0003E00020003E0003E00070001C0003E000F8001C0007F00FFF801C00FFFF8FFF800800FFFF8
35317CB03D>I<FFE00007FFC0FFF00007FFC003F000007C0002F80000380002FC00001000027C
00001000023E00001000023E00001000021F00001000021F80001000020F800010000207C00010
000207E00010000203E00010000203F00010000201F00010000200F80010000200FC0010000200
7C00100002007E00100002003E00100002001F00100002001F80100002000F80100002000FC010
00020007C01000020003E01000020003F01000020001F01000020000F81000020000F810000200
007C10000200007E10000200003E10000200001F10000200001F10000200000F90000200000FD0
0002000007D00002000003F00002000003F00002000001F00002000001F00002000000F0000200
000070000700000070000F8000003000FFF800003000FFF8000010002A317CB032>I<00003FC0
00000001C03800000007000E0000001C0003800000380001C00000F00000F00001E00000780003
C000003C00038000001C00078000001E000F0000000F000F0000000F001E00000007801E000000
07803C00000003C03C00000003C07C00000003E07C00000003E07800000001E07800000001E0F8
00000001F0F800000001F0F800000001F0F800000001F0F800000001F0F800000001F0F8000000
01F0F800000001F0F800000001F0F800000001F0F800000001F07C00000003E07C00000003E07C
00000003E07C00000003E03C00000003C03E00000007C01E00000007801E00000007800F000000
0F000F0000000F00078000001E0003C000003C0003C000003C0001E00000780000F00000F00000
380001C000001C000380000007000E00000001E078000000003FC000002C337CB134>I<007F80
2001FFE02007C078600F001C601E0006E03C0003E0380001E0780000E0700000E070000060F000
0060F0000060F0000020F0000020F0000020F8000020F80000007C0000007E0000003F0000003F
C000001FF800000FFF800007FFF80003FFFC0000FFFF00000FFF800000FFC000001FE0000007E0
000003F0000001F0000000F0000000F8000000F880000078800000788000007880000078800000
78C0000078C0000070E00000F0E00000E0F00000E0F80001C0EC000380C7000700C1F01E00807F
FC00800FF0001D337CB125>83 D<7FFF8000FFF87FFF8000FFF803FE00003F8000FC00001E0000
FC00001800007E00001000003E00003000003F00002000001F80004000000F80008000000FC000
80000007E00100000003E00200000003F00200000001F80400000000F80800000000FC18000000
007E10000000003E20000000003F60000000001FC0000000000F80000000000FC00000000007E0
0000000003E00000000007F00000000005F80000000008F80000000010FC00000000107E000000
00203E00000000403F00000000401F80000000800F80000001000FC00000030007E00000020003
E00000040003F000000C0001F80000080000F80000100000FC00003000007E00002000003E0000
4000003F0000C000001F8001E000001F800FF000003FE0FFF80000FFFFFFF80000FFFF30317FB0
32>88 D<00FE00000303C0000C00E00010007000100038003C003C003E001C003E001E003E001E
0008001E0000001E0000001E0000001E00000FFE0000FC1E0003E01E000F801E001F001E003E00
1E003C001E007C001E00F8001E04F8001E04F8001E04F8003E04F8003E0478003E047C005E043E
008F080F0307F003FC03E01E1F7D9E21>97 D<07800000FF800000FF8000000F80000007800000
078000000780000007800000078000000780000007800000078000000780000007800000078000
00078000000780000007800000078000000781FC0007860700078801C0079000E007A0007007C0
0078078000380780003C0780003C0780001E0780001E0780001F0780001F0780001F0780001F07
80001F0780001F0780001F0780001F0780001F0780001E0780003E0780003C0780003C07800078
07C00070072000F0072001E00618038006060F000401F80020327EB125>I<003F8000E0600380
180700040F00041E001E1C003E3C003E7C003E7C0008780000F80000F80000F80000F80000F800
00F80000F80000F80000F800007800007C00007C00003C00011E00011E00020F00020700040380
1800E060003F80181F7D9E1D>I<003F800000E0E0000380380007003C000E001E001E001E001C
000F003C000F007C000F0078000F8078000780F8000780F8000780FFFFFF80F8000000F8000000
F8000000F8000000F8000000F8000000780000007C0000003C0000003C0000801E0000800E0001
000F0002000780020001C00C0000F03000001FC000191F7E9E1D>101 D<000000F0007F030801
C1C41C0380E81C070070080F0078001E003C001E003C003E003E003E003E003E003E003E003E00
3E003E003E003E001E003C001E003C000F007800070070000780E00009C1C000087F0000180000
00180000001800000018000000180000001C0000000E0000000FFFF80007FFFF0003FFFF800E00
0FC0180001E0300000F070000070E0000038E0000038E0000038E0000038E00000387000007070
000070380000E01C0001C00700070001C01C00003FE0001E2F7E9F21>103
D<0780000000FF80000000FF800000000F80000000078000000007800000000780000000078000
000007800000000780000000078000000007800000000780000000078000000007800000000780
0000000780000000078000000007800000000780FE00000783078000078C03C000079001E00007
A001E00007A000F00007C000F00007C000F000078000F000078000F000078000F000078000F000
078000F000078000F000078000F000078000F000078000F000078000F000078000F000078000F0
00078000F000078000F000078000F000078000F000078000F000078000F000078000F000078000
F0000FC001F800FFFC1FFF80FFFC1FFF8021327EB125>I<07000F801F801F800F800700000000
000000000000000000000000000000000000000780FF80FF800F80078007800780078007800780
0780078007800780078007800780078007800780078007800780078007800780078007800FC0FF
F8FFF80D307EAF12>I<0780FE001FC000FF83078060F000FF8C03C18078000F9001E2003C0007
A001E4003C0007A000F4001E0007C000F8001E0007C000F8001E00078000F0001E00078000F000
1E00078000F0001E00078000F0001E00078000F0001E00078000F0001E00078000F0001E000780
00F0001E00078000F0001E00078000F0001E00078000F0001E00078000F0001E00078000F0001E
00078000F0001E00078000F0001E00078000F0001E00078000F0001E00078000F0001E00078000
F0001E00078000F0001E000FC001F8003F00FFFC1FFF83FFF0FFFC1FFF83FFF0341F7E9E38>
109 D<0780FE0000FF83078000FF8C03C0000F9001E00007A001E00007A000F00007C000F00007
C000F000078000F000078000F000078000F000078000F000078000F000078000F000078000F000
078000F000078000F000078000F000078000F000078000F000078000F000078000F000078000F0
00078000F000078000F000078000F000078000F000078000F0000FC001F800FFFC1FFF80FFFC1F
FF80211F7E9E25>I<001FC00000F0780001C01C00070007000F0007801E0003C01C0001C03C00
01E03C0001E0780000F0780000F0780000F0F80000F8F80000F8F80000F8F80000F8F80000F8F8
0000F8F80000F8F80000F8780000F07C0001F03C0001E03C0001E01E0003C01E0003C00F000780
07800F0001C01C0000F07800001FC0001D1F7E9E21>I<0781FC00FF860700FF8803C00F9001E0
07A000F007C00078078000780780003C0780003C0780003E0780001E0780001F0780001F078000
1F0780001F0780001F0780001F0780001F0780001F0780001F0780003E0780003E0780003C0780
007C0780007807C000F007A000F007A001E00798038007860F000781F800078000000780000007
80000007800000078000000780000007800000078000000780000007800000078000000FC00000
FFFC0000FFFC0000202D7E9E25>I<0783E0FF8C18FF907C0F907C07A07C07C03807C00007C000
07C000078000078000078000078000078000078000078000078000078000078000078000078000
0780000780000780000780000780000780000780000FC000FFFE00FFFE00161F7E9E19>114
D<01FC100E03301800F0300070600030E00030E00010E00010E00010F00010F800007E00003FF0
001FFF000FFFC003FFE0003FF00001F80000F880003C80003C80001CC0001CC0001CE0001CE000
18F00038F00030CC0060C301C080FE00161F7E9E1A>I<00400000400000400000400000400000
C00000C00000C00001C00001C00003C00007C0000FC0001FFFE0FFFFE003C00003C00003C00003
C00003C00003C00003C00003C00003C00003C00003C00003C00003C00003C00003C00003C00003
C01003C01003C01003C01003C01003C01003C01003C01001C02001E02000E0400078C0001F0014
2C7FAB19>I<FFF07FF80FFCFFF07FF80FFC0FC007C003F00F8003C001C0078003C00080078003
C0008003C003E0010003C003E0010003C007E0010001E004F0020001E004F0020001E008700200
00F00878040000F00878040000F0103804000078103C08000078103C08000078201C0800003C20
1E1000003C201E1000003C400E1000001E400F2000001E400F2000001E80072000000F8007C000
000F8007C000000F0003C0000007000380000007000380000006000180000002000100002E1F7F
9E30>119 D<FFF803FF00FFF803FF000FE001F80003C001E00003E001800001E001000000F003
00000078020000007C040000003C080000001E100000000F300000000FA000000007C000000003
C000000003E000000001F000000002F00000000478000000087C000000183E000000101E000000
200F000000400F800000C007C000008003C000018001E000078001F0001F8003F800FFC007FFC0
FFC007FFC0221F7F9E23>I<FFF801FF80FFF801FF800FC0007C00078000380007C000300003C0
00200003C000200001E000400001E000400001F000400000F000800000F0008000007801000000
78010000007C010000003C020000003C020000001E040000001E040000001F040000000F080000
000F080000000790000000079000000007D000000003E000000003E000000001C000000001C000
000001C00000000080000000008000000001000000000100000000010000000002000000000200
000000040000007004000000F80C000000F808000000F810000000703000000030400000001F80
000000212D7F9E23>I E end
%%EndProlog
%%BeginSetup
%%Feature: *Resolution 300
TeXDict begin 
%%EndSetup
%%Page: 1 1
bop 543 144 a Fr(More)22 b(Exp)r(erience)g(with)f(MINIX)553
236 y(in)g(an)g(Op)r(erating)g(Systems)g(Lab)774 356 y Fq(Stephen)16
b(J.)g(Hartley)534 414 y(Math)g(and)h(Computer)e(Science)g(Departmen)o(t)788
472 y(Drexel)g(Univ)o(ersit)o(y)717 531 y(Philadelphia,)g(P)l(A)32
b(19104)818 589 y(\(215\))17 b(895-2678)680 647 y Fp(shartley@mc)o(s.)o(dre)o
(xel)o(.ed)o(u)890 798 y Fo(Abstract)86 863 y Fn(In)9 b(op)q(erating)i
(systems)e(classes,)h(studen)o(ts)g(study)g(the)f(theory)m(,)g(concepts,)h
(and)g(mec)o(hanisms)g(of)f(op)q(erating)h(systems:)16 b(system)29
909 y(calls,)f(la)o(y)o(ered)h(design,)f(the)g(clien)o(t-serv)o(er)h(mo)q
(del,)f(pro)q(cesses,)g(in)o(terpro)q(cess)h(comm)o(unication,)h(CPU)c(sc)o
(heduling)q(,)j(deadlo)q(c)o(k,)29 954 y(input)i(and)g(output,)h(device)f
(driv)o(ers,)i(memory)d(managemen)o(t,)i(\014le)f(systems,)g(protection,)i
(etc.)29 b(Their)18 b(understanding)i(of)29 1000 y(these)15
b(concepts)g(will)h(b)q(e)e(enhanced)i(if)f(they)g(are)f(giv)o(en)i(the)e
(opp)q(ortunit)o(y)j(to)d(examine)i(the)f(in)o(ternal)h(op)q(eration)g(and)f
(source)29 1046 y(co)q(de)f(of)g(an)g(actual)h(op)q(erating)g(system)f(and)h
(see)f(ho)o(w)g(the)f(v)n(arious)j(concepts)e(and)h(features)f(studied)h(are)
f(implemen)o(ted.)22 b(By)29 1091 y(mo)q(difying)c(the)d(source)i(co)q(de)f
(to)f(c)o(hange)i(the)e(b)q(eha)o(vior)j(of)d(the)h(op)q(erating)h(system)f
(or)g(in)o(tro)q(duce)h(new)f(features,)g(studen)o(ts)29 1137
y(can)h(further)f(enhance)i(their)f(understanding)i(and)e(gain)h(v)n(aluable)
h(practical)f(exp)q(erience.)29 b(This)17 b(pap)q(er)g(describ)q(es)h(the)f
(use)29 1183 y(of)e(the)h(Apple)g(Macin)o(tosh)h(v)o(ersion)g(of)e(MINIX,)g
(a)g(UNIX)g(lo)q(ok-alik)o(e)j(op)q(erating)f(system)f(a)o(v)n(ailable)j(in)d
(source)g(form,)f(in)i(an)29 1228 y(op)q(erating)c(systems)g(w)o(orkshop)f
(course.)17 b(The)12 b(use)g(of)g(the)g(Macin)o(tosh)h(v)o(ersion)g(is)g
(compared)g(to)e(the)h(IBM)g(PC)f(v)o(ersion.)18 b(What)29
1274 y(the)13 b(studen)o(ts)h(learned)g(from)f(the)g(w)o(orkshop)h(assignmen)
o(ts)h(is)f(discussed.)-75 1411 y Fm(1)67 b(In)n(tro)r(duction)-75
1502 y Fl(T)m(anen)o(baum's)17 b(op)q(erating)i(systems)h(textb)q(o)q(ok)f
([8])f(uses)j(a)e(UNIX)1020 1487 y Fk(\003)1059 1502 y Fl(lo)q(ok-alik)o(e)e
(op)q(erating)i(system)g(for)g(the)h(IBM)f(PC,)g(called)-75
1552 y(MINIX,)12 b(as)g(its)g(primary)e(case)j(study)m(.)18
b(The)12 b(source)i(co)q(de)e(\(C)h(language)e(with)g(some)g(assem)o(bler\))h
(for)g(most)f(of)g(the)i(MINIX)f(system)-75 1602 y(is)f(listed)g(in)f(an)g
(app)q(endix)h(of)f(the)i(b)q(o)q(ok.)17 b(The)11 b(en)o(tire)g(MINIX)g
(system,)g(including)f(a)h(C)f(compiler,)g(is)h(a)o(v)n(ailable)d(from)h(the)
j(publisher)-75 1652 y(for)i(a)g(v)n(ariet)o(y)f(of)h(mac)o(hines,)f
(including)g(the)i(IBM)g(PC,)f(XT,)g(A)m(T,)f(PS/2,)g(386,)h(and)g(most)f
(compatibles,)f(the)j(Apple)f(Macin)o(tosh,)-75 1702 y(the)20
b(A)o(tari)e(ST,)h(the)h(Commodore)d(Amiga,)h(and)h(the)g(Sun)g(SP)m(AR)o
(CStation.)33 b(More)19 b(details)g(ab)q(out)g(hardw)o(are)h(requiremen)o(ts)
-75 1751 y(and)14 b(ho)o(w)g(to)g(obtain)g(MINIX)g(can)h(b)q(e)g(found)f(in)f
(the)i(articles)g(\\MINIX)f(Information)e(Sheet")j(and)f(\\MINIX)h(F)m
(requen)o(tly)f(Ask)o(ed)-75 1801 y(Questions")h(p)q(osted)f(regularly)g(to)g
(the)g(USENET)h(newsgroup)f Fj(comp.os.minix)p Fl(.)-13 1851
y(A)f(recen)o(t)i(article)e([2)o(])g(describ)q(es)i(the)e(use)h(of)e(the)i
(IBM)f(PC)h(v)o(ersion)f(of)f(MINIX)h(in)g(an)f(op)q(erating)h(systems)g(lab)
q(oratory)g(course)-75 1901 y(at)g(the)g(Univ)o(ersit)o(y)g(of)g(V)m(ermon)o
(t.)j(See)e(that)f(pap)q(er)h(for)f(more)f(detailed)h(information)d(ab)q(out)
j(the)g(history)g(of)g(MINIX,)f(its)h(in)o(ternal)-75 1951
y(structure)h(and)e(op)q(eration,)g(and)g(the)g(lab)g(pro)r(jects)h(giv)o(en)
f(to)g(the)g(studen)o(ts.)19 b(This)12 b(pap)q(er)h(describ)q(es)h(MacMINIX,)
e(the)h(Macin)o(tosh)-75 2000 y(v)o(ersion)h(of)f(MINIX,)h(and)g(its)g(use)g
(in)g(a)f(similar)f(op)q(erating)h(systems)i(w)o(orkshop)e(course)j(at)d
(Drexel)h(Univ)o(ersit)o(y)m(.)-13 2050 y(MINIX)e(is)f(designed)h(using)g
(the)g(\\minim)o(al)7 b(k)o(ernel")12 b(and)f(clien)o(t-serv)o(er)i(approac)o
(h.)k(The)12 b(k)o(ernel)g(handles)g(pro)q(cess)h(sc)o(heduling,)-75
2100 y(con)o(text)f(switc)o(hing,)e(hardw)o(are)i(and)e(soft)o(w)o(are)h(in)o
(terrupts,)i(and)d(message)h(passing.)17 b(Running)10 b(as)h(separate)h(pro)q
(cesses)i(and)c(in)h(user)-75 2150 y(CPU)16 b(mo)q(de)f(are)h(t)o(w)o(o)f
(serv)o(ers)i(or)f(daemons,)f(the)h Fi(memory)g(manager)g Fl(MM)g(and)g(the)g
Fi(\014le)g(system)h(manager)f Fl(FS.)f(These)i(serv)o(ers)-75
2200 y(accept)f(requests)h(in)d(the)h(form)e(of)h(messages)h(from)e(user)i
(pro)q(cesses)j(for)c(memory)e(\(e.g.)20 b Fj(fork)14 b Fl(system)h(call\))f
(and)g(\014le)h(op)q(erations)-75 2249 y(\(e.g.)22 b Fj(open)p
Fl(,)15 b Fj(read)p Fl(,)f Fj(write)p Fl(,)h(etc.\).)23 b(Running)14
b(within)h(the)h(k)o(ernel's)g(address)h(space)f(and)f(in)g(sup)q(ervisor)i
(CPU)f(mo)q(de)e(are)i Fi(devic)n(e)-75 2299 y(tasks)f Fl(acting)g(as)g
(device)g(driv)o(ers,)h(one)f(p)q(er)h(device)g(t)o(yp)q(e.)21
b(These)c(tasks)e(accept)h(requests)h(for)e(service)h(in)f(the)g(form)f(of)g
(messages)-75 2349 y(from)e(the)j(t)o(w)o(o)e(serv)o(er)i(daemons.)i(The)e(t)
o(w)o(o)e(serv)o(er)j(daemons)c(handle)i(all)f Fi(system)i(c)n(al)r(ls)e
Fl(from)f(user)j(pro)q(cesses.)-13 2399 y(F)m(or)d(example,)f(a)h(user)i(pro)
q(cess)g(reading)f(from)d(a)i(\014le)h(sends)h(a)e(message)g(to)g(FS,)g
(asking)g(FS)h(to)f(place)h(the)g(next)g(so-man)o(y)d(b)o(ytes)-75
2449 y(from)j(the)j(\014le)e(in)h(a)f(sp)q(eci\014ed)j(memory)12
b(bu\013er)k(in)e(the)i(user's)g(address)g(space.)22 b(FS)15
b(\014gures)h(out)e(whic)o(h)h(device)h(con)o(tains)e(the)i(\014le)-75
2499 y(and)g(if)g(the)h(blo)q(c)o(ks)g(from)e(the)i(device)g(con)o(taining)f
(the)h(requested)h(b)o(ytes)g(are)f(already)f(in)g(the)h Fi(blo)n(ck)g
(bu\013er)h(c)n(ache)f Fl(in)f(memory)m(.)-75 2548 y(If)f(so,)g(the)g(b)o
(ytes)h(can)f(b)q(e)h(copied)f(to)g(the)h(user's)g(bu\013er;)g(if)e(not,)h
(FS)g(sends)h(a)f(message)f(to)h(the)h(device)g(task)f(and)g(w)o(aits)f(for)h
(that)-75 2598 y(task)f(to)f(cop)o(y)h(the)g(blo)q(c)o(ks)g(from)d(the)k
(device)f(in)o(to)f(the)h(blo)q(c)o(k)f(bu\013er)i(cac)o(he.)k(The)14
b(device)g(task)g(formats)e(a)h(request)j(to)d(the)h(device)p
-75 2633 840 2 v -29 2659 a Fh(\003)-11 2671 y Fg(UNIX)e(is)g(a)f(Registered)
e(T)m(rademark)h(of)h(UNIX)i(Systems)c(Lab)q(oratories.)965
2828 y Fl(1)p eop
%%Page: 2 2
bop -75 -30 a Fl(con)o(troller)15 b(and)g(w)o(aits)f(for)h(a)g(message)f
(from)g(the)h(k)o(ernel.)22 b(The)15 b(con)o(troller)g(will)f(use)i(the)f
(system)g(bus)g(to)g(cop)o(y)g(the)h(blo)q(c)o(ks)f(from)-75
20 y(the)f(device)f(in)o(to)g(memory)d(and)j(then)h(generate)g(an)f(in)o
(terrupt.)18 b(The)c(k)o(ernel)f(will)f(turn)h(this)g(hardw)o(are)h(in)o
(terrupt)f(in)o(to)g(a)f(message)-75 70 y(for)i(the)g(device)h(task,)e(un)o
(blo)q(c)o(king)g(it.)18 b(The)c(device)h(task)f(no)o(w)f(sends)j(a)d
(message)h(to)g(FS,)f(un)o(blo)q(c)o(king)g(it)g(so)h(it)g(can)g(complete)f
(the)-75 120 y(user's)i(read)f(request.)-13 169 y(In)g(op)q(erating)f
(systems)h(classes,)g(studen)o(ts)h(study)f(the)g(theory)m(,)f(concepts,)i
(and)e(mec)o(hanisms)f(of)h(op)q(erating)g(systems:)18 b(system)-75
219 y(calls,)10 b(la)o(y)o(ered)g(design,)g(the)h(clien)o(t-serv)o(er)g(mo)q
(del,)e(pro)q(cesses,)k(in)o(terpro)q(cess)f(comm)o(unication,)7
b(CPU)j(sc)o(heduling,)h(deadlo)q(c)o(k,)f(input)-75 269 y(and)h(output,)g
(device)h(driv)o(ers,)f(memory)e(managemen)o(t,)f(\014le)j(systems,)g
(protection,)h(etc.)18 b(Their)11 b(understanding)h(of)e(these)i(concepts)-75
319 y(will)i(b)q(e)i(enhanced)h(if)d(they)i(are)g(giv)o(en)f(the)h(opp)q
(ortunit)o(y)f(to)h(examine)e(the)i(in)o(ternal)f(op)q(eration)g(and)g
(source)i(co)q(de)f(of)f(an)g(actual)-75 369 y(op)q(erating)e(system,)g(suc)o
(h)h(as)f(MINIX,)g(and)g(see)i(ho)o(w)e(the)h(v)n(arious)e(concepts)j(and)e
(features)i(they)f(studied)f(are)h(implemen)o(ted.)i(By)-75
418 y(mo)q(difying)d(the)k(MINIX)f(source)i(co)q(de)f(to)f(c)o(hange)g(its)g
(b)q(eha)o(vior)g(or)g(in)o(tro)q(duce)h(new)f(features,)i(studen)o(ts)f(can)
g(further)g(enhance)-75 468 y(their)d(understanding)h(and)e(gain)g(v)n
(aluable,)g(practical,)g(\\hands)h(on")f(exp)q(erience.)-13
518 y(This)j(article)f(describ)q(es)j(MacMINIX,)d(the)i(Apple)e(Macin)o(tosh)
h(v)o(ersion)g(of)e(MINIX,)i(and)f(its)h(use)g(in)f(an)g(op)q(erating)h
(systems)-75 568 y(w)o(orkshop)d(or)h(lab)q(oratory)e(course)j(at)e(Drexel)h
(Univ)o(ersit)o(y)m(.)j(P)o(articular)c(atten)o(tion)g(is)g(paid)g(to)g(the)h
(di\013erences)i(b)q(et)o(w)o(een)f(the)f(IBM)-75 618 y(PC)e(and)g(Macin)o
(tosh)g(v)o(ersions)h(and)f(the)g(e\013ect)i(these)g(di\013erences)g(ha)o(v)o
(e)e(on)g(lab)q(oratory)f(set-up)i(and)f(programmi)o(ng)d(assignmen)o(ts.)-75
755 y Fm(2)67 b(MacMINIX)-75 846 y Fl(The)14 b(Macin)o(tosh)f(v)o(ersion)g
(of)g(MINIX)g([7)o(])g(runs)h(as)f(an)g(application)f(under)i(MacOS,)f(in)g
(con)o(trast)h(to)f(the)h(IBM)f(PC)h(v)o(ersion)f(whic)o(h)-75
896 y(runs)j(as)f(the)h(nativ)o(e)e(op)q(erating)h(system)g(directly)h(on)e
(the)i(hardw)o(are.)22 b(The)16 b(MacMINIX)f(system)g(consists)h(of)f(three)h
(Macin)o(tosh)-75 945 y(\014les:)23 b(an)16 b(application)f(\014le,)i(named)e
Ff(MacBo)q(ot)p Fl(,)h(whic)o(h)g(con)o(tains)h(the)f(k)o(ernel)h(\(in)o
(terrupt)g(handlers,)g(device)g(driv)o(ers,)h(and)e(CPU)-75
995 y(sc)o(heduler\),)h(the)f(memory)d(manager,)i(and)g(the)h(\014le)g
(system)f(manager;)g(a)g(\014le)h(ab)q(out)f(half)g(a)g(megab)o(yte)f(in)i
(size)g(con)o(taining)e(the)-75 1045 y(MINIX)g(ro)q(ot)g(\014le)g(system;)f
(and)h(a)f(ten)i(megab)o(yte)e(\014le)h(con)o(taining)e(the)j(MINIX)f
Fj(/usr)f Fl(\014le)h(system.)-13 1095 y(After)g(b)q(o)q(oting)f(a)g(Macin)o
(tosh,)g(the)h(user)h(can)f(start)g(MacMINIX)g(b)o(y)f(double-clic)o(king)f
(on)h(the)i Ff(MacBo)q(ot)e Fl(application)f(\014le.)18 b(In)-75
1145 y(a)f(few)g(seconds,)i(t)o(w)o(o)e(windo)o(ws)g(will)f(app)q(ear)h(on)g
(the)h(screen,)i(eac)o(h)d(with)g(the)h(usual)f(UNIX)h(\\)p
Fj(login:)p Fl(")d(message,)i(along)f(with)-75 1195 y(a)g(new)h(men)o(u)e
(bar.)25 b(MacMINIX)16 b(allo)o(ws)f(true)i(m)o(ultitasking.)22
b(A)17 b(logged-in)e(user)i(can)f(start)h(sev)o(eral)g(pro)q(cesses)i(and)d
(they)g(will)-75 1244 y(execute)h(concurren)o(tly)m(,)e(sharing)g(the)g(CPU.)
g(As)h(far)e(as)h(MacOS)h(is)f(concerned,)h(this)f(is)g(all)f(happ)q(ening)h
(within)f(the)h(application)-75 1294 y(on)f(whic)o(h)f(the)i(user)g
(double-clic)o(k)o(ed.)-13 1344 y(The)g(v)o(ersion)g(of)e(MacMINIX)i
(distributed)g(b)o(y)f(Pren)o(tice)i(Hall)d(is)h(1.5.10.)k(This)c(v)o(ersion)
g(runs)h(without)f(problem)f(on)h(MacOS)-75 1394 y(System)g(6.)20
b(T)m(o)14 b(run)h(MacMINIX)h(under)f(System)f(7)h(and)f(Multi\014nder)h
(without)g(frequen)o(t)g(crashing,)g(one)g(m)o(ust)f(obtain)f(a)i(set)h(of)
-75 1444 y(patc)o(hes)e(that)f(bring)f(MacMINIX)i(up)e(to)h(v)o(ersion)g
(1.5.10.7)d(and)j(recompile)f(the)h(a\013ected)h(\014les.)k(These)c(patc)o
(hes)g(are)g(a)o(v)n(ailable)c(b)o(y)-75 1493 y(anon)o(ymous)i
Fj(ftp)h Fl(from)f(site)j Fj(plains.nodak.edu)10 b Fl(in)k(directory)g
Fj(pub/Minix/ftp-contr)o(ib/mc)o(minix)o Fl(.)-13 1543 y(The)h(ma)r(jor)e
(di\013erence)j(b)q(et)o(w)o(een)g(the)f(IBM)g(PC)f(v)o(ersion)h(and)f(the)h
(Macin)o(tosh)f(v)o(ersion)h(of)e(MINIX)i(is)f(in)g(the)h(device)g(driv)o
(ers)-75 1593 y(for)f(the)g(\015opp)o(y)m(,)f(the)i(hard)f(disk,)f(the)i(k)o
(eyb)q(oard,)e(and)h(the)h(screen)h(\(\014les)e Fj(floppy.c)p
Fl(,)e Fj(wini.c)p Fl(,)g Fj(keyboard.c)p Fl(,)g(and)h Fj(console.c)f
Fl(in)-75 1643 y(the)k(directory)f Fj(/usr/src/kernel)p Fl(\).)j(The)e(IBM)f
(PC)g(v)o(ersion)g(device)h(driv)o(ers)g(are)f(for)g(the)g(actual)g(hardw)o
(are;)g(the)h(disk)e(driv)o(ers)-75 1693 y(con)o(tain)h(co)q(de)i(to)f(do)g
(seeks,)h(to)f(start)g(and)g(stop)g(the)g(\015opp)o(y)g(driv)o(e)g(motor,)e
(to)i(set)h(up)f(DMA,)f(etc.)25 b(On)16 b(the)h(Macin)o(tosh,)f(these)-75
1743 y(driv)o(ers)i(just)f(set)h(up)f(calls)f(to)h(the)g(R)o(OM)g(\\to)q(olb)
q(o)o(x")f(routines)h(that)g(do)g(the)g(real)g(w)o(ork.)27
b(Similarly)14 b(the)j(MacMINIX)h(console)-75 1792 y(driv)o(er)c(in)o
(terfaces)h(with)f(the)g(to)q(olb)q(o)o(x)f(windo)o(wing)f(routines.)-13
1842 y(Another)18 b(di\013erence)h(in)o(v)o(olv)o(es)d(the)i(con)o(trasting)f
(memory)e(organizations)h(on)h(the)h(In)o(tel)f(8088)f(and)h(successor)j(c)o
(hips)d(\(IBM)-75 1892 y(PC\))11 b(and)g(the)h(Motorola)e(68000)g(and)h
(successor)j(c)o(hips)d(\(Macin)o(tosh\).)18 b(The)11 b(In)o(tel)g(c)o(hips)h
(use)g(a)f(segmen)o(ted)g(memory)e(organization.)-75 1942 y(Eac)o(h)14
b(pro)q(cess)h(has)f(sev)o(eral)g(segmen)o(t)f(registers)i(that)e(p)q(oin)o
(t)g(to)h(the)g(base)g(addresses)h(of)e(areas)h(of)f(memory)e(con)o(taining)i
(the)h(co)q(de,)-75 1992 y(data,)g(and)h(stac)o(k)g(for)g(the)g(pro)q(cess.)
23 b(The)15 b(addresses)i(generated)f(b)o(y)f(the)g(CPU)g(to)g(load)f
(instructions)h(and)g(load)f(and)h(store)g(data)-75 2041 y(as)d(the)h(pro)q
(cess)i(runs)e(are)g(o\013sets)g(in)o(to)f(the)h(appropriate)f(segmen)o(t)g
(and)h(are)f(added)h(to)f(the)h(appropriate)g(segmen)o(t)f(register)h(to)g
(get)-75 2091 y(the)j(actual)g(ph)o(ysical)f(address)j(of)d(the)h(item)f(in)g
(memory)m(.)21 b(The)c(Motorola)d(c)o(hips)j(use)f(a)g(\015at)g(addressing)g
(sc)o(heme)g(in)g(whic)o(h)f(the)-75 2141 y(pro)q(cess)j(o)q(ccupies)g(a)e
(single)f(con)o(tiguous)i(area)f(of)g(memory)d(instead)k(of)f(sev)o(eral)g
(segmen)o(ts.)26 b(The)16 b(addresses)j(generated)e(b)o(y)f(the)-75
2191 y(CPU)e(are)h(actual)e(ph)o(ysical)g(memory)f(addresses.)-13
2241 y(This)j(has)g(ma)r(jor)e(implications)f(for)i(the)h(implemen)o(tation)d
(of)i(the)h Fj(fork)f Fl(system)g(call)g(in)h(MINIX.)f(In)h(the)g(IBM)g(PC)g
(v)o(ersion,)-75 2290 y Fj(fork)g Fl(is)g(implemen)o(ted)f(b)o(y)h(cop)o
(ying)g(the)h(segmen)o(ts)g(of)f(the)h(forking)e(pro)q(cess)k(to)d(new)h
(areas)g(of)f(memory)f(for)h(the)h(c)o(hild)f(pro)q(cess)-75
2340 y(and)e(adjusting)f(the)h(segmen)o(t)f(registers)i(of)e(the)i(c)o(hild)e
(to)g(re\015ect)j(where)f(in)e(memory)e(it)i(will)g(b)q(e)h(executing.)18
b(Cop)o(ying)12 b(the)h(forking)-75 2390 y(pro)q(cess)i(to)d(a)h(new)g(area)g
(of)f(memory)e(to)j(create)h(the)f(c)o(hild)f(will)g(not)g(w)o(ork)h(in)f
(MacMINIX)h(b)q(ecause)i(the)e(addresses)i(in)d(the)i(c)o(hild's)-75
2440 y(co)q(de)h(w)o(ould)e(b)q(e)i(in)o(to)e(the)h(address)i(space)f(of)e
(the)i(paren)o(t.)k(Instead)14 b(the)h Fi(shadowing)f Fl(tec)o(hnique)h(is)f
(used.)19 b(When)c(a)e(pro)q(cess)j(forks)-75 2490 y(in)d(MacMINIX,)g(the)h
(paren)o(t)g(is)f(copied)h(to)f(another)h(area)f(of)g(memory)e(and)i(susp)q
(ended.)20 b(The)14 b(c)o(hild)f(is)g(allo)o(w)o(ed)f(to)h(execute)i(for)e(a)
-75 2540 y(few)g(time)e(quan)o(ta)h(in)g(the)h(memory)d(that)i(w)o(as)g(o)q
(ccupied)i(b)o(y)e(the)h(paren)o(t.)18 b(If)12 b(the)h(c)o(hild)f(has)h(not)f
(done)h(an)f Fj(exec)g Fl(system)g(call,)f(then)-75 2589 y(the)16
b(paren)o(t)f(and)g(c)o(hild)f(are)i Fi(\015ipp)n(e)n(d)f Fl(or)g(sw)o(app)q
(ed)h(and)f(the)h(paren)o(t)f(is)g(allo)o(w)o(ed)f(to)h(execute)h(in)f(its)g
(original)e(area)i(of)g(memory)d(for)-75 2639 y(a)i(few)h(time)f(quan)o(ta.)
20 b(This)15 b(\015ipping)e(is)i(con)o(tin)o(ued)g(un)o(til)f(the)h(c)o(hild)
g(executes)i(the)e Fj(exec)f Fl(system)g(call,)g(exits,)h(or)g(is)f(killed.)
20 b(This)965 2828 y(2)p eop
%%Page: 3 3
bop 360 -28 1230 2 v 359 22 2 50 v 385 7 a Fl(Assignmen)o(t)490
b(Spring)13 b(1992)49 b(Spring)14 b(1993)p 1589 22 V 360 23
1230 2 v 359 73 2 50 v 385 58 a(C)g(W)m(arm-Up)e(Programming)309
b(x)242 b(x)p 1589 73 V 359 123 V 385 108 a(Recompiling)11
b(the)k(System)356 b(x)p 1589 123 V 359 173 V 385 158 a(Coun)o(ting)13
b(Messages)j(Sen)o(t)621 b(x)p 1589 173 V 359 222 V 385 208
a(Round-Robin)13 b(Time)f(Quan)o(tum)258 b(x)p 1589 222 V 359
272 V 385 257 a(CPU)15 b(IO-Bound)f(Sc)o(heduling)568 b(x)p
1589 272 V 359 322 V 385 307 a(T)m(erminal)12 b(Driv)o(er)i(W)m(ord)f(Erase)
279 b(x)242 b(x)p 1589 322 V 359 372 V 385 357 a(Adding)14
b(Semaphores)435 b(x)p 1589 372 V 359 422 V 385 407 a(Adding)14
b(File)f(Lo)q(c)o(king)425 b(x)242 b(x)p 1589 422 V 359 472
V 385 457 a(Adding)14 b(User-Lev)o(el)h(Message)g(P)o(assing)410
b(x)p 1589 472 V 360 473 1230 2 v 634 589 a(Figure)14 b(1:)k(Programming)10
b(Assignmen)o(ts.)-75 721 y(sc)o(heme)i(usually)g(w)o(orks)g(w)o(ell)g(b)q
(ecause)i(most)d Fj(fork)g Fl(system)h(calls)g(are)g(follo)o(w)o(ed)f(v)o
(ery)h(quic)o(kly)g(b)o(y)g Fj(exec)f Fl(system)h(calls)g(in)g(the)h(c)o
(hild)-75 771 y(pro)q(cess.)-75 908 y Fm(3)67 b(Lab)r(oratory)23
b(En)n(vironmen)n(t)-75 999 y Fl(The)18 b(op)q(erating)f(systems)h(w)o
(orkshop)g(course)h(met)d(t)o(wice)i(a)g(w)o(eek,)g(90)f(min)o(utes)g(eac)o
(h)h(time,)f(for)g(10)g(w)o(eeks)i(\(Drexel)f(is)f(on)g(the)-75
1049 y(quarter)i(system\))g(during)f(the)h(spring)f(1992)f(and)i(spring)f
(1993)f(quarters.)33 b(Ab)q(out)19 b(a)f(dozen)h(studen)o(ts)h(w)o(ere)f
(registered)h(eac)o(h)-75 1099 y(quarter,)14 b(including)e(sev)o(eral)i
(graduate)g(studen)o(ts.)19 b(Class)14 b(time)e(w)o(as)h(used)h(to)g(answ)o
(er)g(studen)o(t)g(questions,)g(to)f(trace)i(through)e(the)-75
1149 y(MINIX)k(source)h(co)q(de,)g(and)e(to)h(discuss)h(p)q(ossible)f
(approac)o(hes)g(to)g(the)g(programming)c(assignmen)o(ts.)26
b(All)16 b(pro)r(jects)i(w)o(ere)g(done)-75 1199 y(individually)11
b(b)o(y)j(the)g(studen)o(ts.)-13 1248 y(The)j(Macin)o(tosh)g(Lab)q(oratory)f
(used)i(for)e(this)h(w)o(orkshop)g(con)o(tained)f(15)h(Mac)f(I)q(Ici)h(mac)o
(hines.)26 b(Eac)o(h)17 b(had)f(5)h(megab)o(ytes)f(of)-75 1298
y(main)e(memory)m(,)f(an)i(80)g(megab)o(yte)g(in)o(ternal)h(hard)f(disk,)h
(and)g(ran)g(System)f(7.0.1.)22 b(The)16 b(hard)g(disk)g(w)o(as)f
(partitioned)h(in)o(to)f(a)g(50)-75 1348 y(megab)o(yte)d(lo)q(c)o(k)o(ed)g
(storage)i(area,)e(con)o(taining)g(system)g(soft)o(w)o(are)h(and)g(the)g
(MacMINIX)g(folder,)g(and)f(a)h(30)f(megab)o(yte)g(w)o(orkspace.)-75
1398 y(Studen)o(ts)j(wishing)e(to)g(use)i(MacMINIX)f(\014rst)h(cop)o(y)e(its)
h(folder)f(from)f(the)i(storage)h(partition)d(in)o(to)h(the)i(w)o(orkspace)f
(partition)f(and)-75 1448 y(then)g(double-clic)o(k)f(on)h(the)g(w)o(orkspace)
g(cop)o(y)g(of)f(the)h Ff(MacBo)q(ot)g Fl(\014le.)k(The)c(sligh)o(t)f(incon)o
(v)o(enience)i(of)e(cop)o(ying)g(assures)i(that)f(a)f(user)-75
1497 y(gets)j(an)e(original)f(unmo)q(di\014ed)h(cop)o(y)h(of)f(MacMINIX)h
(with)g(whic)o(h)g(to)f(w)o(ork.)-13 1547 y(Studen)o(ts)i(k)o(eep)f(their)g
(o)o(wn)g(MINIX)f(\014les)h(on)g(3.5)e(inc)o(h)i(\015opp)o(y)f(disks.)18
b(A)c(MacOS)g(\014le)g(con)o(taining)e(a)i(MINIX)g(\014le)f(system)h(can)-75
1597 y(b)q(e)i(created)i(on)e(a)f(\015opp)o(y)h(disk)f(and)h(attac)o(hed)h
(to)e(the)i(MINIX)f(\014le)g(system)f(hierarc)o(h)o(y)i(with)e(the)i
Fj(mount)e Fl(command.)21 b(Studen)o(ts)-75 1647 y(ha)o(v)o(e)13
b(to)g(remem)o(b)q(er)g(for)f(t)o(w)o(o)h(reasons)i(to)e(cop)o(y)g(to)g
(their)h(moun)o(ted)e(disks)h(an)o(y)g(c)o(hanges)h(they)g(ha)o(v)o(e)f(made)
f(to)h(the)h(MINIX)g(source)-75 1697 y(co)q(de.)k(First,)13
b(they)g(need)h(to)e(access)j(their)e(c)o(hanges)g(from)e(an)o(y)h(Macin)o
(tosh)h(they)g(later)g(run)g(MINIX)g(on,)f(and)g(second,)i(all)d(c)o(hanges)
-75 1747 y(to)j(the)g(w)o(orkspace)h(cop)o(y)f(of)f(MINIX)h(are)g(lost)g
(when)h(the)f(w)o(orkspace)h(is)e(cleared.)-75 1884 y Fm(4)67
b(Lab)23 b(Assignmen)n(ts)-75 1975 y Fl(The)12 b(article)g([2)o(])g(describ)q
(es)i(sev)o(eral)e(lab)f(pro)r(jects)j(that)d(w)o(ere)i(assigned:)18
b(recompiling)9 b(the)k(k)o(ernel,)f(MM,)f(and)h(FS;)g(\014xing)f(a)g
(serious)-75 2025 y(bug)g(in)g(the)h(MINIX)f(1.1)f(C)h(run)o(time)g(library)f
Fj(libc.a)p Fl(;)g(remo)o(ving)g(the)i(restriction)g(that)f(a)g(user)h(pro)q
(cess)h(can)f(send)g(a)f(message)g(only)-75 2074 y(to)i(FS)h(and)f(MM)h(and)f
(thereb)o(y)i(allo)o(wing)c(sync)o(hronous)j(message)f(passing)h(b)q(et)o(w)o
(een)h(user)f(pro)q(cesses;)i(instrumen)o(ting)c(the)i(k)o(ernel)-75
2124 y(so)f(that)h(when)g(function)f(k)o(ey)g(F4)g(is)h(pressed,)h(a)e(coun)o
(t)g(of)g(all)f(messages)h(sen)o(t)i(and)e(receiv)o(ed)i(is)e(prin)o(ted)g
(on)h(the)g(console)f(windo)o(w;)-75 2174 y(c)o(hanging)k(the)h(CPU)g(sc)o
(heduler)h(so)f(it)f(is)h(preemptiv)o(e)f(and)g(giv)o(es)h(higher)f(priorit)o
(y)g(to)h(IO-b)q(ound)g(user)g(pro)q(cesses;)k(mo)q(difying)-75
2224 y(the)15 b(terminal)d(device)j(driv)o(er)g(so)f(that)h(con)o(trol-W)e
(will)g(erase)i(the)g(previous)g(w)o(ord)f(t)o(yp)q(ed)h(b)o(y)f(the)h(user;)
g(implem)o(en)o(ting)c(memory)-75 2274 y(compaction)h(in)i(MM;)f(and)h
(adding)f(named)g(pip)q(es,)h(\014le)g(lo)q(c)o(king,)e(and)i(sym)o(b)q(olic)
e(links)h(to)h(FS.)-13 2323 y(During)d(the)g(Drexel)g(op)q(erating)g(system)g
(w)o(orkshops,)h(six)e(lab)h(pro)r(jects)h(w)o(ere)g(giv)o(en.)17
b(There)12 b(w)o(as)f(some)f(o)o(v)o(erlap)g(with)h(the)g(ones)-75
2373 y(describ)q(ed)i(ab)q(o)o(v)o(e.)k(F)m(or)10 b(the)i(most)e(part,)h
(studen)o(ts)h(w)o(ork)o(ed)f(on)g(these)h(assignmen)o(ts)f(on)f(their)i(o)o
(wn)e(time)g(whenev)o(er)i(the)g(Macin)o(tosh)-75 2423 y(Lab)g(w)o(as)h(op)q
(en.)18 b(Sometimes)10 b(studen)o(ts)k(w)o(ere)f(giv)o(en)f(the)h(last)f(20)g
(min)o(utes)g(of)g(class)h(time)e(to)h(w)o(ork)g(on)g(their)h(assignmen)o(ts)
f(so)g(they)-75 2473 y(could)h(ask)g(questions)h(or)g(sho)o(w)f(an)o(y)g
(problems)f(they)i(w)o(ere)g(ha)o(ving)f(to)g(the)h(instructor.)19
b(Figure)13 b(1)g(sho)o(ws)h(the)g(assignmen)o(ts)e(giv)o(en)-75
2523 y(during)i(the)g(t)o(w)o(o)f(terms)h(the)h(w)o(orkshop)e(has)h(b)q(een)h
(o\013ered)h(at)d(Drexel.)965 2828 y(3)p eop
%%Page: 4 4
bop -75 -30 a Fe(4.1)56 b(C)19 b(W)-5 b(arm-Up)17 b(Programming)-75
47 y Fl(The)f(\014rst)h(assignmen)o(t)e(consisted)i(of)e(writing)h(three)h(C)
f(language)f(programs)g(that)h(used)g(suc)o(h)h(UNIX)f(C)g(library)g
(routines)g(and)-75 97 y(system)g(calls)f(as)h Fj(getc)p Fl(,)f
Fj(putc)p Fl(,)g Fj(fork)p Fl(,)g Fj(execl)p Fl(,)g Fj(pipe)p
Fl(,)g Fj(creat)p Fl(,)g Fj(open)p Fl(,)g Fj(close)p Fl(,)g
Fj(dup)p Fl(,)h Fj(exit)p Fl(,)f Fj(setjmp)p Fl(,)f Fj(longjmp)p
Fl(,)h Fj(getpid)p Fl(,)g Fj(alarm)p Fl(,)-75 146 y Fj(read)p
Fl(,)10 b Fj(write)p Fl(,)g Fj(kill)p Fl(,)g(and)h Fj(signal)p
Fl(.)16 b(This)11 b(assignmen)o(t)f(ga)o(v)o(e)g(the)i(studen)o(ts)g(exp)q
(erience)i(using)c(MacMINIX)i(and)f(practice)h(writing)-75
196 y(C)i(programs,)e(as)i(w)o(ell)f(as)h(reinforcing)f(their)i
(understanding)f(of)f(the)i(op)q(erating)e(system)h(services,)h(the)g(v)o
(ersion)e(7)h(UNIX)g(system)-75 246 y(calls,)f(pro)o(vided)h(b)o(y)f(MINIX.)
-13 296 y(It)j(is)f(essen)o(tial)g(that)g(the)h(studen)o(ts)h(understand)f
(ho)o(w)f(these)i(system)e(calls)g(w)o(ork)f(b)q(ecause)j(later)f(assignmen)o
(ts)e(ma)o(y)f(mo)q(dify)-75 346 y(ho)o(w)g(a)h(system)g(call)f(w)o(orks)h
(or)g(add)f(supp)q(ort)i(for)f(new)g(system)g(calls.)-75 462
y Fe(4.2)56 b(Recompili)o(ng)16 b(the)i(System)-75 538 y Fl(The)g(next)h
(assignmen)o(t)d(w)o(as)i(to)g(learn)f(ho)o(w)h(to)f(recompile)g(all)g(of)g
(the)h(source)h(co)q(de)g(of)e(the)i(three)g(MINIX)f(comp)q(onen)o(ts:)25
b(the)-75 588 y(k)o(ernel,)16 b(the)g(memory)d(manager,)h(and)i(the)g(\014le)
g(system)f(manager.)22 b(Studen)o(ts)17 b(b)q(ecame)e(familia)o(r)e(with)j
(the)g Fj(make)e Fl(command.)21 b(It)-75 638 y(tak)o(es)13
b(\014v)o(e)g(to)g(15)f(min)o(utes)g(to)g(recompile)g(the)h(three)h(comp)q
(onen)o(ts,)e(m)o(uc)o(h)g(less)h(than)g(the)g(hour)g(it)f(to)q(ok)h(to)f
(recompile)g(MINIX)h(1.1)-75 688 y(on)h(a)f(dual-\015opp)o(y)g(IBM)i(PC)f
(rep)q(orted)h(in)f([2)o(].)k(After)d(completing)d(this)i(assignmen)o(t,)e
(the)j(studen)o(ts)g(w)o(ere)g(ready)g(to)f(mo)q(dify)d(and)-75
738 y(recompile)i(the)h(system)g(for)g(later)g(assignmen)o(ts.)-13
787 y(Instead)f(of)f(just)h(recompiling)d(the)j(system,)f(the)h(spring)g
(1993)e(studen)o(ts)j(did)e(Exercise)i(31)e(on)g(page)g(109)g(of)g([8)o(].)17
b(This)12 b(in)o(v)o(olv)o(ed)-75 837 y(adding)k(a)g(few)h(lines)g(of)f(co)q
(de)h(to)g(the)g(k)o(ernel)g(to)g(k)o(eep)g(trac)o(k)g(of)f(ho)o(w)g(man)o(y)
f(messages)i(ha)o(v)o(e)f(b)q(een)i(sen)o(t)g(from)d(one)i(pro)q(cess)h(to)
-75 887 y(another.)j(These)16 b(coun)o(ts)f(w)o(ere)g(app)q(ended)h(to)e(the)
i(information)11 b(dump)q(ed)j(to)h Ff(tt)o(y0)f Fl(when)h(the)g
Ff(Pro)q(cs)g Fl(en)o(try)g(of)f(the)h Ff(Debug)h Fl(men)o(u)-75
937 y(w)o(as)e(selected.)-13 987 y(It)i(is)g(essen)o(tial)g(that)g(the)g
(studen)o(ts)i(b)q(ecome)d(comfortable)g(with)g(recompiling)f(the)i(system)g
(b)q(ecause)h(they)g(will)d(b)q(e)i(doing)f(it)-75 1037 y(man)o(y)d(times)h
(in)g(later)h(assignmen)o(ts.)-75 1153 y Fe(4.3)56 b(Round-Robin)18
b(Time)e(Quan)n(tum)-75 1229 y Fl(The)h(next)h(assignmen)o(t)e(for)h(spring)g
(1992)f(w)o(as)h(more)f(of)g(an)h(exp)q(erimen)o(t.)27 b(The)18
b(studen)o(ts)g(had)f(to)g(\014nd)g(where)h(in)f(the)h(MINIX)-75
1279 y(co)q(de)h(the)f(round-robin)f(time)g(quan)o(tum)f(\(100)h
(milliseconds\))f(for)i(CPU)g(sc)o(heduling)g(w)o(as)f(set.)31
b(Then)18 b(they)h(had)e(to)h(try)g(some)-75 1329 y(smaller)12
b(and)i(larger)f(v)n(alues)h(to)f(determine)h(the)g(e\013ects)i(on)d(system)h
(o)o(v)o(erhead,)f(throughput,)h(and)f(resp)q(onse)j(time.)h(They)d(had)f(to)
-75 1379 y(construct)h(a)d(shell)h(script)h(and)f(a)g(collection)f(of)h
(programs)f(that)h(when)g(run)g(w)o(ould)g(giv)o(e)f(them)g(some)h(w)o(a)o(y)
f(to)h(measure)g(in)o(teractiv)o(e)-75 1429 y(resp)q(onse)18
b(time)d(and)i(CPU)f(con)o(text)i(switc)o(hing)e(o)o(v)o(erhead.)26
b(One)17 b(problem)e(encoun)o(tered)j(w)o(as)f(that)f(the)h(time)e(quan)o
(tum)g(could)-75 1478 y(not)f(b)q(e)g(set)h(smaller)e(than)g(16)h
(milliseconds,)e(making)f(it)j(di\016cult)f(to)h(create)h(a)f(high)f(con)o
(text-switc)o(hing)h(o)o(v)o(erhead)g(situation.)k(A)-75 1528
y(large)c(con)o(text-switc)o(h)g(time)f(did,)g(ho)o(w)o(ev)o(er,)h(ha)o(v)o
(e)f(a)h(noticeable)g(negativ)o(e)g(e\013ect)h(on)f(in)o(teractiv)o(e)g(resp)
q(onse)i(time.)-13 1578 y(This)i(assignmen)o(t)e(ga)o(v)o(e)h(studen)o(ts)i
(practice)f(in)f(the)h(scien)o(ti\014c)g(metho)q(d:)24 b(form)o(ulating)15
b(an)i(h)o(yp)q(othesis)h(ab)q(out)f(what)g(e\013ect)-75 1628
y(the)g(time)e(quan)o(tum)g(size)i(w)o(ould)e(ha)o(v)o(e)h(on)g(system)g(p)q
(erformance)g(and)h(then)g(devising)e(exp)q(erimen)o(ts)i(to)f(test)h(that)g
(h)o(yp)q(othesis.)-75 1678 y(Studen)o(ts)j(ha)o(v)o(e)e(read)h(in)f(the)i
(textb)q(o)q(ok)f(that)f(a)h(large)f(time)f(quan)o(tum)g(increases)k
(throughput)d(or)h(system)f(e\016ciency)i(at)e(the)-75 1728
y(exp)q(ense)f(of)e(in)o(teractiv)o(e)h(resp)q(onse)i(time,)c(and)h(a)g
(small)f(time)g(quan)o(tum)g(decreases)k(resp)q(onse)f(time)d(an)i(the)g(exp)
q(ense)h(of)e(system)-75 1777 y(o)o(v)o(erhead.)j(This)c(lab)f(sho)o(ws)i
(these)g(things)f(actually)f(happ)q(ening.)-75 1894 y Fe(4.4)56
b(CPU)19 b(IO-Bound)g(Sc)n(heduling)-75 1970 y Fl(The)e(next)h(assignmen)o(t)
d(for)i(spring)g(1993)f(consisted)i(of)e(doing)g(Exercise)j(32)d(on)h(page)f
(109)g(of)h([8)o(].)27 b(It)16 b(w)o(as)h(also)g(of)f(the)h(nature)-75
2020 y(of)e(an)h(exp)q(erimen)o(t.)24 b(Studen)o(ts)17 b(had)e(to)h
(construct)i(an)d(exp)q(erimen)o(t)h(in)f(whic)o(h)h(sev)o(eral)g(CPU-b)q
(ound)h(and)e(IO-b)q(ound)h(pro)q(cesses)-75 2070 y(w)o(ere)k(running)f
(concurren)o(tly)m(.)35 b(They)19 b(had)g(to)g(mo)q(dify)e(the)j(CPU)f(sc)o
(heduling)h(co)q(de)g(in)e(the)i(k)o(ernel)g(to)f(giv)o(e)f(priorit)o(y)h(to)
g(IO-)-75 2120 y(b)q(ound)d(pro)q(cesses)j(and)d(then)g(measure)g(system)g
(throughput)g(to)g(see)h(if)e(their)i(CPU)f(sc)o(heduling)g(mo)q
(di\014cations)e(resulted)k(in)d(an)-75 2169 y(impro)o(v)o(emen)o(t.)-13
2219 y(This)e(assignmen)o(t)g(also)f(ga)o(v)o(e)h(the)h(studen)o(ts)h(an)e
(opp)q(ortunit)o(y)g(to)g(\014x)g(a)g(bug)h(in)e(the)i(MINIX)g(CPU)g(sc)o
(heduling)f(algorithm)e([9)o(].)-75 2269 y(An)j(excerpt)i(from)c(the)i
(assignmen)o(t)f(follo)o(ws.)91 2352 y(As)i(it)f(is,)g(MINIX)h(mak)o(es)e(no)
h(distinction)g(b)q(et)o(w)o(een)i(pro)q(cesses)h(that)e(are)g
Fi(IO-b)n(ound)g Fl(and)f(those)h(that)g(are)g Fi(CPU-)29 2402
y(b)n(ound)p Fl(.)34 b(An)19 b(example)f(IO-b)q(ound)h(pro)q(cess)i(is)e(one)
g(reading)g(a)g(\014le,)h(doing)e(a)h(little)f(pro)q(cessing,)j(and)e
(writing)f(to)29 2452 y(another)c(\014le.)k(An)c(example)f(CPU-b)q(ound)h
(pro)q(cess)i(is)d(one)i(in)o(v)o(erting)e(large)g(matrices)h(of)f
(double-precision)h(\015oating)29 2501 y(p)q(oin)o(t)f(n)o(um)o(b)q(ers.)91
2551 y(Better)18 b(system)d(p)q(erformance)h(and)f(throughput)h(w)o(ould)f(b)
q(e)i(obtained,)e(in)h(theory)g(at)f(least,)h(if)f(IO-b)q(ound)h(pro-)29
2601 y(cesses)g(w)o(ere)e(giv)o(en)f(a)g(higher)g(sc)o(heduling)h(priorit)o
(y)f(for)g(the)h(CPU.)f(This)g(w)o(ould)g(tend)h(to)f(k)o(eep)h(the)g
(IO-devices)h(busy)29 2651 y(while)f(the)h(matrices)g(w)o(ere)g(b)q(eing)g
(in)o(v)o(erted.)21 b(An)15 b(IO-b)q(ound)g(job)f(will)g(consisten)o(tly)h
(use)h(a)e(small)e(p)q(ercen)o(tage)17 b(of)d(its)29 2701 y(time)e(quan)o
(ta,)h(whereas)i(a)f(CPU-b)q(ound)g(job)g(will)e(use)j(all)d(of)i(its)f(time)
g(quan)o(ta.)965 2828 y(4)p eop
%%Page: 5 5
bop 91 -30 a Fl(By)14 b(examining)d Fj(sched_ticks)g Fl(in)i
Fj(clock.c)p Fl(,)e(y)o(ou)i(can)h(k)o(eep)g(trac)o(k)g(of)f(the)h(p)q(ercen)
o(tage)h(of)e(its)g(most)f(recen)o(t)k(time)29 20 y(quan)o(tum)10
b(a)i(user)h(pro)q(cess)h(is)e(using)g(b)q(efore)h(relinquishing)f(the)g(CPU)
h(due)f(to)g(its)h(time)d(slice)j(expiring)f(\(CPU-b)q(ound\))29
70 y(or)j(its)g(making)e(a)h(system)h(call)f(and)h(blo)q(c)o(king)f(\(IO-b)q
(ound\).)23 b(Add)15 b(another)g(\014eld,)g Fj(p_ticks_used)p
Fl(,)e(to)i(the)g(pro)q(cess)29 120 y(table)e(slot)f(for)h(eac)o(h)h(pro)q
(cess.)19 b(A)o(t)13 b(eac)o(h)h(clo)q(c)o(k)f(tic)o(k,)g(do)f
Fj(p_ticks_used++)e Fl(for)j(the)h(pro)q(cess)h(that)e(w)o(as)g(executing)g
(on)29 169 y(the)h(CPU)g(just)h(b)q(efore)f(the)h(clo)q(c)o(k)f(in)o
(terrupt.)91 219 y(Keep)21 b(the)g(user)g(ready)f(queue)h Fj(USER_Q)e
Fl(ordered)i(from)d(lo)o(w)h(to)h(high)f(v)n(alues)h(of)f Fj(p_ticks_used)e
Fl(when)k(it)e(is)29 269 y(manipulated)c(b)o(y)h Fj(ready\(\))p
Fl(.)26 b(In)17 b(other)h(w)o(ords,)f(if)f(a)h(user)h(pro)q(cess)h(only)d
(used)i(a)f(few)g(tic)o(ks)g(of)f(its)h(time)f(quan)o(tum)29
319 y(the)e(last)g(time)e(it)h(ran)h(on)f(the)i(CPU,)e(then)i(giv)o(e)e(it)g
(a)g(higher)h(priorit)o(y)f(for)g(another)i(shot)e(at)h(the)g(CPU)g(b)o(y)g
(placing)f(it)29 369 y(to)o(w)o(ards)h(the)g(fron)o(t)g(of)f(the)h(user)h
(ready)g(queue.)-75 484 y Fe(4.5)56 b(T)-5 b(erminal)16 b(Driv)n(er)i(W)-5
b(ord)19 b(Erase)-75 561 y Fl(The)14 b(next)h(assignmen)o(t)d(for)i(b)q(oth)g
(terms)f(w)o(as)h(to)g(mo)q(dify)d(the)k(terminal)d(device)j(driv)o(er)f(so)g
(that)f(t)o(yping)h(con)o(trol-W)f(w)o(ould)g(erase)-75 610
y(the)i(last)f(w)o(ord)g(t)o(yp)q(ed)h(on)f(the)h(command)c(line,)j(m)o(uc)o
(h)f(lik)o(e)g(con)o(trol-H)h(erases)i(the)f(last)f(c)o(haracter)h(t)o(yp)q
(ed)g(\(Exercise)h(37)e(on)g(page)-75 660 y(190)f(of)g([8)o(]\).)k(The)d
(studen)o(ts)h(m)o(ust)e(\014rst)h(\014nd)g(where)g(in)f(the)h(terminal)e
(driv)o(er)i(co)q(de)g(a)f(t)o(yp)q(ed)h(c)o(haracter)h(is)f(c)o(hec)o(k)o
(ed)g(to)g(see)g(if)f(it)g(is)-75 710 y(the)i(c)o(haracter-erase)i(c)o
(haracter.)k(Then)15 b(they)g(can)f(add)g(co)q(de)i(to)e(c)o(hec)o(k)h(for)f
(the)h(w)o(ord-erase)h(c)o(haracter)f(and)f(use)i(the)f(co)q(de)g(that)-75
760 y(erases)f(the)f(last)f(t)o(yp)q(ed)h(c)o(haracter)h(from)c(the)j(screen)
i(as)d(a)g(guide)g(for)g(co)q(de)h(to)g(erase)g(the)g(last)f(w)o(ord)g(t)o
(yp)q(ed.)18 b(Finally)m(,)11 b(the)h(studen)o(ts)-75 810 y(m)o(ust)h(add)h
(co)q(de)g(to)g(the)h(terminal)d(driv)o(er)i(initialization)d(for)i(the)i
(default)f(w)o(ord-erase)g(c)o(haracter.)-13 859 y(F)m(or)f(this)h(assignmen)
o(t,)e(the)i(studen)o(ts)h(ha)o(v)o(e)e(to)g(lo)q(ok)g(at)g(device)h(driv)o
(er)g(co)q(de,)g(\014gure)f(out)h(ho)o(w)f(it)g(w)o(orks,)g(and)g(then)h(mo)q
(dify)d(it)-75 909 y(to)j(add)f(the)i(new)f(feature.)-75 1025
y Fe(4.6)56 b(Adding)19 b(Semaphores)-75 1101 y Fl(The)11 b(next)f(assignmen)
o(t)f(for)h(spring)g(1992)g(w)o(as)g(the)g(most)f(di\016cult)h(and)g(time)f
(consuming)g(for)g(those)i(studen)o(ts)h(and)e(in)o(v)o(olv)o(ed)f(adding)-75
1151 y(semaphores)k(to)g(MINIX,)g(sp)q(eci\014cally)h(the)g(memory)d(manager)
g(mo)q(dule)h Fj(/usr/src/mm)p Fl(.)k(This)d(assignmen)o(t)f(in)o(v)o(olv)o
(ed)g(mo)q(difying)-75 1201 y(the)g(C)g(language)f(run-time)f(library)h(and)h
(sev)o(eral)g(k)o(ernel)g(tables)g(to)f(supp)q(ort)i(some)e(new)h(system)f
(calls.)17 b(Most)12 b(mo)q(di\014cations)e(w)o(ere)-75 1251
y(to)k(the)g(memory)e(manager,)g(whic)o(h)h(handles)i(the)f(new)g(system)g
(calls.)k(An)c(excerpt)h(from)d(the)j(assignmen)o(t)e(follo)o(ws.)91
1330 y(Implemen)o(t)j(ten)i(semaphores,)h(all)e(initialized)f(to)i(zero)h
(when)f(the)h(system)f(is)f(b)q(o)q(oted.)31 b(Implemen)o(t)16
b Fj(P)i Fl(and)f Fj(V)29 1379 y Fl(op)q(erations)11 b(on)h(them)e(\(called)i
Fj(down)e Fl(and)h Fj(up)g Fl(in)g([8]\).)16 b(Pic)o(k)c(new)g(system)f(call)
g(n)o(um)o(b)q(ers)g(for)g(the)h Fj(P)f Fl(and)g Fj(V)g Fl(system)h(calls)29
1429 y(and)j(add)h(them)f(to)h Fj(/usr/include/mini)o(x/cal)o(lnr.)o(h)p
Fl(,)d Fj(/usr/src/mm/table.)o(c)p Fl(,)g(and)j Fj(/usr/src/fs/tabl)o(e.c)p
Fl(.)29 1479 y(Add)d(new)h(library)f(routines)h Fj(P\(i\))e
Fl(and)i Fj(V\(i\))e Fl(to)h(the)h(C)g(run-time)e(library)h
Fj(/usr/lib/libc.a)d Fl(so)j(that)h(the)g(library)29 1529 y(routines)f(will)f
(b)q(e)i(loaded)e(automatically)e(when)k(user)g(C)f(programs)f(reference)k
(them,)c(just)h(as)g(happ)q(ens)h(for)f Fj(printf)p Fl(,)29
1579 y(etc.)36 b(Lo)q(ok)19 b(at)g(the)i(co)q(de)f(in)f Fj
(/usr/src/lib/posix)o(/set)o(uid.c)d Fl(to)j(see)i(ho)o(w)e(to)h(co)q(de)g(a)
f(library)g(routine)h(that)29 1628 y(implemen)o(ts)11 b(a)j(system)g(call.)j
(The)d Fj(ar)g Fl(command)d(is)i(what)h(is)g(needed)h(to)f(add)g(a)f(new)i
(library)e(routine)h(to)g Fj(libc.a)p Fl(.)91 1678 y(Calling)h
Fj(P\(i\))p Fl(,)h(0)g Fd(\024)h Fj(i)f Fc(<)h Fl(10,)f(from)f(a)i(user)g(C)g
(program)e(will)h(ask)g(the)i(memory)c(manager)h(to)i(decremen)o(t)h(the)29
1728 y Fj(i)51 1713 y Fb(th)100 1728 y Fl(semaphore)e(if)f(it)g(is)h(greater)
h(than)f(zero,)h(else)f(blo)q(c)o(k)g(and)f(queue)i(the)f(pro)q(cess.)26
b(Calling)14 b Fj(V\(i\))h Fl(will)f(incremen)o(t)29 1778 y(the)i
Fj(i)124 1763 y Fb(th)173 1778 y Fl(semaphore)f(if)f(the)i(queue)g(of)f(pro)q
(cesses)j(blo)q(c)o(k)o(ed)d(on)g(it)g(is)g(empt)o(y)m(,)e(else)j(pic)o(k)f
(a)g(pro)q(cess)i(\(\014rst-in-\014rst-out)29 1828 y(queueing)e(for)g
(fairness\))h(from)d(the)j(queue)g(to)f(un)o(blo)q(c)o(k.)22
b(If)15 b(calling)f Fj(P\(i\))g Fl(results)i(in)f(a)g(pro)q(cess)i(b)q(eing)e
(queued)h(and)29 1877 y(blo)q(c)o(k)o(ed,)f(then)h(the)f(memory)e(manager)h
(defers)i(replying)f(to)g(the)h Fj(P)f Fl(system)g(call)f(made)g(b)o(y)h(the)
h(pro)q(cess.)24 b(If)15 b(calling)29 1927 y Fj(V\(i\))f Fl(results)i(in)e(a)
h(pro)q(cess)i(b)q(eing)d(dequeued)j(and)e(un)o(blo)q(c)o(k)o(ed,)f(then)i
(the)f(memory)e(manager)g(is)i(\014nally)f(doing)g(the)29 1977
y(reply)f(to)h(the)g(earlier)g Fj(P)f Fl(whose)h(reply)g(w)o(as)f(deferred,)i
(in)e(addition)f(to)i(replying)f(to)g(the)h(pro)q(cess)i(that)d(did)g(the)h
Fj(V)p Fl(.)f(See)29 2027 y Fj(do)p 76 2027 14 2 v 15 w(wait\(\))f
Fl(in)h Fj(/usr/src/mm/forkexi)o(t.c)d Fl(for)j(an)g(example)g(of)f(ho)o(w)i
(the)g(memory)d(manager)h(defers)i(un)o(til)f(a)g(later)29
2077 y(time)f(replying)i(to)f(a)h(pro)q(cess)i(making)11 b(the)k
Fj(wait)e Fl(system)g(call.)91 2127 y(A)i(go)q(o)q(d)g(w)o(a)o(y)g(to)g
(handle)g(the)h(queueing)f(is)g(a)g(sc)o(heme)g(similar)e(to)i(the)h(w)o(a)o
(y)e(the)i(k)o(ernel)g(queues)g(pro)q(cesses)i(that)29 2176
y(are)d(trying)g(to)f(send)i(a)f(message)g(to)f(a)h(pro)q(cess)i(that)e(is)f
(not)h(w)o(aiting)f(to)h(receiv)o(e)h(a)e(message)h(\(see)h(page)f(103)f(of)h
([8)o(]\).)29 2226 y(Add)i(extra)h(\014elds)f(to)g(eac)o(h)h(slot)e(of)h(the)
h(memory)c(manager's)i(pro)q(cess)j(table)d Fj(/usr/src/mm/mproc.h)e
Fl(for)i(queue)29 2276 y(p)q(oin)o(ters.)91 2326 y(These)21
b Fj(NUM)p 286 2326 V 15 w(SEM)e Fl(semaphores)h(\(de\014ne)h(this)f(constan)
o(t)g(in)f Fj(/usr/src/mm/const.)o(h)p Fl(,)f(default)h(v)n(alue)g(ten\))i
(are)29 2376 y(a)o(v)n(ailable)d(to)j(an)o(y)f(and)g(all)g(pro)q(cesses)j
(for)d(all)g(time)f(after)i(the)g(system)g(is)f(b)q(o)q(oted.)39
b(The)21 b(only)f(time)g(they)h(are)29 2425 y(initialized)12
b(\(to)i(zero\))h(is)f(when)g(the)h(system)e(is)h(b)q(o)q(oted.)91
2475 y(Both)i Fj(P\(i\))e Fl(and)h Fj(V\(i\))f Fl(will)g(return)i
Fj(-1)f Fl(if)f Fj(i)h Fl(is)g(out)g(of)g(range.)22 b(If)14
b(a)h(pro)q(cess)i(that)f(is)f(blo)q(c)o(k)o(ed)g(on)g(a)f(semaphore)29
2525 y Fj(P)j Fl(op)q(eration)h(gets)g(a)g(signal)e(that)i(w)o(ould)f(ab)q
(ort)h(the)g(pro)q(cess,)i(then)e(the)h(pro)q(cess)g(has)f(to)g(b)q(e)g(remo)
o(v)o(ed)f(from)f(the)29 2575 y(semaphore)d(blo)q(c)o(k)o(ed)h(queue.)-13
2654 y(This)g(assignmen)o(t)f(requires)j(a)e(thorough)g(understanding)g(of)g
(man)o(y)e(parts)j(of)e(the)i(MINIX)f(system:)19 b(the)c(C)f(run)o(time)f
(library)m(,)-75 2704 y(the)18 b(implem)o(en)o(tation)c(of)j(the)h(system)e
(call)h(mec)o(hanism)e(in)h(the)i(k)o(ernel)g(and)f(MM)g(and)g(FS)g(serv)o
(er)i(daemons,)d(ho)o(w)h(the)g(k)o(ernel)965 2828 y(5)p eop
%%Page: 6 6
bop -75 -30 a Fl(queues)16 b(pro)q(cesses)i(blo)q(c)o(k)o(ed)d(in)g(sending)g
(a)g(message,)g(ho)o(w)g(system)g(calls)f(are)i(carried)g(out)f(in)f(the)i
(serv)o(er)h(daemons,)d(and)h(where)-75 20 y(to)i(add)f(new)i(co)q(de)g
(implem)o(en)o(ting)c(additional)h(features.)28 b(The)17 b(studen)o(t)h(m)o
(ust)e(also)h(ha)o(v)o(e)f(a)h(thorough)g(understanding)g(of)f(the)-75
70 y(semaphore)e(concept)h(in)e(order)i(to)f(add)f(supp)q(ort)i(for)f
(semaphores)g(to)f(an)h(existing)f(system.)-13 120 y(The)19
b(studen)o(ts)h(tested)f(their)g(implemen)o(tation)c(of)i(semaphores)i(with)f
(the)h(dining)e(philosophers)h(program.)30 b(Eac)o(h)18 b(fork)g(is)-75
169 y(represen)o(ted)h(b)o(y)d(a)h(semaphore.)25 b(A)16 b(h)o(ungry)h
(philosopher)f(m)o(ust)f(execute)k(a)d Fj(P)g Fl(op)q(eration)g(for)g(eac)o
(h)h(of)f(the)h(t)o(w)o(o)f(forks)h(it)f(needs)-75 219 y(to)f(eat.)22
b(T)m(o)14 b(prev)o(en)o(t)i(deadlo)q(c)o(k,)f(one)g(philosopher)g(alw)o(a)o
(ys)f(tries)i(to)f(grab)g(its)g(forks)g(in)g(the)g(opp)q(osite)h(order)f
(from)f(all)g(the)h(other)-75 269 y(philosophers.)27 b(T)m(esting)16
b(their)h(semaphore)f(implemen)o(tation)e(this)i(w)o(a)o(y)g(reinforces)i
(their)f(understanding)g(of)f(semaphores)h(and)-75 319 y(the)e(dining)f
(philosophers)h(problem.)k(With)13 b(the)j(addition)d(of)h(semaphores,)h
(MINIX)f(b)q(ecomes)h(a)g(system)f(that)h(can)g(b)q(e)g(used)g(for)-75
369 y(programming)10 b(semaphore)k(v)o(ersions)g(of)f(the)i(man)o(y)d
(classical)i(op)q(erating)f(system)h(sync)o(hronization)g(problems)f(\(page)h
(75)f(of)g([8]\).)-75 485 y Fe(4.7)56 b(Adding)19 b(File)e(Lo)r(c)n(king)-75
561 y Fl(The)d(last)e(assignmen)o(t)g(for)h(spring)g(1992)f(\(next)i(to)f
(last)g(for)g(spring)g(1993\))f(w)o(as)h(to)g(add)g(\014le)g(lo)q(c)o(king)f
(to)h(the)h(\014le)f(system)g(\(Exercise)-75 611 y(35)i(on)g(page)h(335)f(of)
g([8)o(]\).)23 b(This)16 b(assignmen)o(t)e(turned)j(out)e(to)h(b)q(e)g
(fairly)e(easy)i(to)g(do)f(for)g(the)i(spring)e(1992)g(studen)o(ts)i(since)f
(they)-75 661 y(had)c(already)h(done)g(the)g(semaphore)f(assignmen)o(t.)17
b(Man)o(y)12 b(of)g(the)h(same)f(things)g(needed)i(to)f(b)q(e)g(done)g(to)f
(the)h(\014le)g(system)f(manager)-75 711 y(as)18 b(w)o(ere)h(done)f(to)g(the)
h(memory)c(manager.)29 b(It)18 b(w)o(ould)f(ha)o(v)o(e)h(b)q(een)h(b)q(etter)
g(for)f(this)g(assignmen)o(t)f(to)h(precede)i(the)e(semaphore)-75
761 y(assignmen)o(t,)c(but)i(the)g(\014le)g(system)f(material)f(in)h(the)h
(text)g([8)o(])f(follo)o(ws)f(the)j(memory)c(managemen)o(t)g(material.)21
b(F)m(or)15 b(this)g(reason)-75 810 y(the)f(spring)g(1993)f(studen)o(ts)j
(skipp)q(ed)e(the)h(semaphore)e(assignmen)o(t)g(and)h(w)o(en)o(t)g(righ)o(t)f
(to)h(the)g(\014le)g(lo)q(c)o(king)f(assignmen)o(t.)-13 860
y(An)h(excerpt)i(from)c(the)i(assignmen)o(t)f(follo)o(ws.)91
943 y(Implemen)o(t)d(a)i(new)h(system)f(call)f Fj(filock\(fd\))f
Fl(that)i(tak)o(es)h(a)f(\014le)g(descriptor)i Fj(fd)e Fl(as)g(its)g(argumen)
o(t)f(and)h(lo)q(c)o(ks)h(the)29 993 y(corresp)q(onding)i(\014le.)k(Also)14
b(implemen)o(t)e(a)i(new)g(system)g(call)g Fj(unfilock\(fd\))d
Fl(that)k(unlo)q(c)o(ks)f(the)h(\014le)f(corresp)q(onding)29
1043 y(to)e(the)g(\014le)g(descriptor)i(argumen)o(t)c Fj(fd)i
Fl(passed)h(to)f(it.)17 b(File)11 b(lo)q(c)o(king)g(is)h Fi(advisory)g
Fl(and)g(the)h(lo)q(c)o(k)e(is)h(on)g(the)h(i-no)q(de)e(\(\014le\),)29
1093 y(not)j(a)f(\014le)h(descriptor)h(n)o(um)o(b)q(er.)i(If)d(the)g(\014le)g
(is)g(already)f(lo)q(c)o(k)o(ed,)h(the)g(system)g(call)f(fails.)k(A)d(user)g
(program)f(can)h(op)q(en)29 1143 y(a)h(\014le)g(already)g(lo)q(c)o(k)o(ed)g
(\(b)o(y)g(some)f(other)i(pro)q(cess\),)h(but)e(it)g(cannot)g(lo)q(c)o(k)g
(the)g(\014le)g(un)o(til)g(the)g(other)h(pro)q(cess)h(unlo)q(c)o(ks)29
1192 y(the)d(\014le.)k(A)c(programmer)e(w)o(ould)h(t)o(ypically)f(co)q(de)j
(the)g(sequence)72 1275 y Fj(fd)22 b(=)f(open\(file_name_stri)o(ng,)e(...\);)
h(...)i(while)e(\(filock\(fd\))g(<)h(0\))h(sleep\(60\);)-13
1358 y Fl(This)17 b(assignmen)o(t)f(giv)o(es)h(the)g(studen)o(ts)i(more)d
(practice)i(with)e(implemen)o(ting)e(new)j(system)g(calls,)g(this)g(time)f
(in)g(FS)h(rather)-75 1408 y(than)g(MM.)f(They)h(also)f(ha)o(v)o(e)g(to)g
(devise)i(tests)g(for)e(the)h(correct)h(op)q(eration)f(of)f(the)h(new)g
(features)h(and)e(learn)h(ho)o(w)f(to)g(ev)n(aluate)-75 1458
y(their)e(testing.)-75 1574 y Fe(4.8)56 b(User-Lev)n(el)16
b(Message)i(P)n(assing)-75 1651 y Fl(This)g(w)o(as)g(the)h(most)e(di\016cult)
h(assignmen)o(t)f(for)h(the)g(spring)h(1993)e(studen)o(ts.)32
b(F)m(ortunately)18 b(they)h(had)f(already)g(had)g(practice)-75
1701 y(adding)13 b(new)h(system)g(calls)g(to)f(MINIX.)h(An)g(excerpt)i(from)c
(the)i(assignmen)o(t)f(follo)o(ws.)91 1784 y(Alter)i(MacMINIX,)g(sp)q
(eci\014cally)f(the)h(memory)d(manager)h(daemon,)g(so)i(that)f(user)i(pro)q
(cesses)h(\()p Fj(USER_Q)p Fl(\))d(can)g(do)29 1834 y(sync)o(hronous)j(\(blo)
q(c)o(king\))f(message)h(passing)f(\()p Fj(usend\(\))f Fl(and)i
Fj(ureceive\(\))p Fl(\).)24 b(This)16 b(is)h(to)f(b)q(e)i(completely)d
(distinct)29 1883 y(from)9 b(the)i(message)f(passing)h(\()p
Fj(send\(\))e Fl(and)i Fj(receive\(\))p Fl(\))e(done)i(b)q(et)o(w)o(een)h
(device)f(driv)o(er)g(tasks)g(and)g(the)g(t)o(w)o(o)f(daemons)29
1933 y(or)k(b)q(et)o(w)o(een)h(a)f(user)h(pro)q(cess)h(and)e(one)h(of)e(the)i
(t)o(w)o(o)e(daemons,)g(and)h(implemen)o(ted)e(in)i(the)g(k)o(ernel)h(where)g
(the)g(source)29 1983 y(and)e(destination)h(are)g(sp)q(eci\014ed)i(with)d
(pro)q(cess)j(table)e(slot)g(n)o(um)o(b)q(ers.)91 2033 y(Pic)o(k)19
b(new)g(system)g(call)f(n)o(um)o(b)q(ers)h(for)f Fj(usend\(\))g
Fl(and)g Fj(ureceive\(\))f Fl(and)i(ha)o(v)o(e)f(those)i(system)f(calls)f
(handled)29 2083 y(b)o(y)h(the)i(memory)c(manager.)35 b(Add)20
b(library)f(routines)h Fj(usend\(\))f Fl(and)g Fj(ureceive\(\))f
Fl(to)i(the)g(C)g(run-time)f(library)29 2132 y Fj(/usr/lib/libc.a)p
Fl(.)14 b(They)c(are)h(used)h(as)e(follo)o(ws.)15 b(T)m(o)10
b(send)i(a)e(message)g(to)g(another)h(pro)q(cess,)i(do)d(a)g
Fj(usend\(int)20 b(pid,)29 2182 y(int)h(message\))9 b Fl(where)i
Fj(pid)f Fl(is)g(the)h(pro)q(cess)h(id)e(of)f(the)i(recipien)o(t.)18
b(T)m(o)9 b(receiv)o(e)j(a)e(message)g(from)e(a)i(sp)q(eci\014c)i(pro)q
(cess,)g(do)29 2232 y(a)d Fj(ureceive\(int)19 b(pid,)9 b(\(int)20
b(*\))i(message\))7 b Fl(where)k(the)f(in)o(teger)g(message)f(will)e(b)q(e)j
(placed)g(at)f(the)h(address)h(giv)o(en)d(b)o(y)29 2282 y(the)k(second)g
(argumen)o(t.)k(T)m(o)11 b(receiv)o(e)h(a)f(message)g(from)f(an)o(yb)q(o)q
(dy)m(,)g(do)h(a)g Fj(ureceive\(ANY_USER,)d(\(int)20 b(*\))i(message\))29
2332 y Fl(where)15 b Fj(ANY_USER)d Fl(is)i(a)f(prede\014ned)j(constan)o(t)f
(\()p Fj(0)e Fl(or)h Fj(-1)p Fl(\).)91 2381 y(If)e(a)h Fj(usend\(\))e
Fl(results)j(in)e(the)h(sender)h(pro)q(cess)h(b)q(eing)d(queued)i(and)e(blo)q
(c)o(k)o(ed)h(due)g(to)g(no)f(matc)o(hing)f Fj(ureceive\(\))p
Fl(,)29 2431 y(then)16 b(the)f(memory)e(manager)h(defers)i(replying)f(to)f
(the)i Fj(usend\(\))e Fl(system)h(call)f(made)g(b)o(y)h(the)h(sender)g(pro)q
(cess.)24 b(If)14 b(a)29 2481 y Fj(ureceive\(\))9 b Fl(results)j(in)f(a)g
(sender)h(\014nally)e(b)q(eing)i(dequeued)g(and)f(un)o(blo)q(c)o(k)o(ed,)g
(then)h(the)g(memory)d(manager)g(is)i(\014nally)29 2531 y(doing)e(the)i
(reply)g(to)f(the)i(earlier)e Fj(usend\(\))f Fl(that)i(w)o(as)f(deferred,)i
(in)f(addition)e(to)h(replying)g(to)h(the)g(pro)q(cess)h(that)e(did)h(the)29
2581 y Fj(ureceive\(\))p Fl(.)19 b(See)d Fj(do_wait\(\))d Fl(in)h
Fj(/usr/src/mm/forkexi)o(t.c)e Fl(for)i(an)h(example)f(of)g(ho)o(w)h(the)g
(memory)e(manager)29 2631 y(defers)k(replying)e(to)g(a)h(pro)q(cess)h(making)
c(the)k Fj(wait)d Fl(system)i(call)f(un)o(til)g(a)g(later)h(time.)22
b(A)15 b(go)q(o)q(d)h(w)o(a)o(y)f(to)g(handle)h(the)29 2680
y(queueing)g(is)g(a)g(sc)o(heme)g(similar)e(to)i(the)g(w)o(a)o(y)g(the)h(k)o
(ernel)f(queues)i(pro)q(cesses)g(that)e(are)h(trying)f(to)g(send)h(a)e
(message)965 2828 y(6)p eop
%%Page: 7 7
bop 29 -30 a Fl(to)14 b(a)h(pro)q(cess)i(that)e(is)f(not)h(w)o(aiting)f(to)g
(receiv)o(e)i(a)f(message)f(\(see)j(page)e(103)f(of)g([8)o(]\).)21
b(Add)15 b(extra)g(\014elds)g(to)g(eac)o(h)g(slot)29 20 y(of)g(the)i(memory)c
(manager's)i(pro)q(cess)j(table)e(for)f(queue)i(p)q(oin)o(ters)g(to)f(the)g
(\014rst)h(and)f(subsequen)o(t)i(blo)q(c)o(k)o(ed)e(senders.)29
70 y(Return)f(the)g(message)f(passed)h(b)o(y)f(the)h(sender)h(as)e(a)h
(second)g(result)g(\(see)h Fj(reply\(\))d Fl(in)h Fj(/usr/src/mm/main)o(.c)p
Fl(\))d(and)29 120 y(ha)o(v)o(e)k(y)o(our)g Fj(ureceive.c)e
Fl(routine)i(in)g Fj(/usr/src/lib/posix)d Fl(store)k(that)f(second)h(result)g
(in)f(the)h(message)f(address)29 169 y(in)e(the)i(same)e(w)o(a)o(y)g(that)h
Fj(wait.c)e Fl(do)q(es)j(in)e Fj(/usr/src/lib/posix)p Fl(.)91
219 y(If)f(the)h(sender)h(queues)g(on)f(the)g(receiv)o(er)h(w)o(aiting)d(for)
h(the)h(receiv)o(er)h(to)f(execute)h Fj(ureceive\(\))c Fl(and)j(if)e(the)j
(receiv)o(er)29 269 y(exits)e(or)g(is)g(killed)f(b)o(y)h(a)f(signal)g(b)q
(efore)i(executing)g Fj(ureceive\(\))p Fl(,)d(then)i(ha)o(v)o(e)g
Fj(usend\(\))f Fl(return)i Fj(-1)e Fl(to)h(the)h(sender)g(and)29
319 y(set)g Fj(errno)e Fl(to)i Fj(EGONE)p Fl(.)d(Similarly)m(,)f(if)i(a)h
(pro)q(cess)i(blo)q(c)o(ks)f(w)o(aiting)e(to)h(receiv)o(e)i(a)e(message)g
(and)g(the)h(pro)q(cess)h(it)e(w)o(an)o(ts)g(to)29 369 y(receiv)o(e)i(from)d
(exits)i(or)g(is)g(killed)e(b)o(y)i(a)f(signal,)g(then)h(the)h
Fj(ureceive\(\))d Fl(returns)j Fj(-1)e Fl(and)h Fj(errno)f
Fl(is)g(set)i(to)f Fj(EGONE)p Fl(.)e(If)h(a)29 418 y(blo)q(c)o(k)o(ed)f
(sender)i(is)e(killed)g(b)o(y)g(a)g(signal,)f(then)i(the)g(memory)d(manager)h
(will)g(ha)o(v)o(e)h(to)g(searc)o(h)i(the)e(pro)q(cess)j(table)d(to)g(\014nd)
29 468 y(where)k(the)g(sender)g(w)o(as)f(queued.)20 b(See,)14
b(for)g(example,)e Fj(do_xit\(\))g Fl(in)i Fj(system.c)p Fl(.)j(If)c(a)h(pro)
q(cess)i(blo)q(c)o(k)o(ed)e(on)g(either)g(a)29 518 y Fj(usend)f
Fl(or)h Fj(ureceive)f Fl(system)h(call)f(gets)i(a)f(signal)f(for)h(whic)o(h)g
(it)g(has)h(a)f(handler)g(set)h(up,)f(then)h(the)g(system)f(call)f(fails)29
568 y(with)i Fj(errno)g Fl(set)i(to)f Fj(EINTR)p Fl(,)e(just)i(as)g(happ)q
(ens)h(with)f(the)g Fj(read)f Fl(system)h(call.)23 b(Both)16
b Fj(usend\(pid,)k(message\))14 b Fl(and)29 618 y Fj(ureceive\(pid,)19
b(&message\))14 b Fl(will)h(return)i Fj(-1)f Fl(if)f Fj(pid)g
Fl(is)h(out)g(of)g(range)g(or)g(do)q(es)h(not)f(matc)o(h)f(an)h(existing)f
(pro)q(cess)29 667 y(\(set)g Fj(errno)e Fl(to)g Fj(EINVAL)p
Fl(\).)-75 784 y Fe(4.9)56 b(Debugging)-75 860 y Fl(There)18
b(is)e(no)g(\\debugger")h(for)f(MacMINIX)h(except)h(the)f Fj(printf)e
Fl(statemen)o(t,)i(whic)o(h)f(can)h(b)q(e)g(placed)f(in)g(the)h(k)o(ernel,)g
(memory)-75 910 y(manager,)g(and)g(\014le)g(system)h(manager)e(source)i(co)q
(de)h(for)e(debugging)g(output.)29 b(When)18 b(MacMINIX)g(is)f(b)q(o)q(oted,)
h(t)o(w)o(o)f(windo)o(ws)-75 960 y(app)q(ear)f(on)g(the)g(Macin)o(tosh)g
(screen,)h(lab)q(eled)f Ff(tt)o(y0)g Fl(and)f Ff(tt)o(y1)p
Fl(.)23 b(Debugging)15 b(output)h(sho)o(ws)g(up)g(in)f(the)i
Ff(tt)o(y0)e Fl(windo)o(w.)23 b(The)16 b(user)-75 1010 y(can)e(log)f(in)g(to)
h(the)h Ff(tt)o(y1)e Fl(windo)o(w)g(to)h(a)o(v)o(oid)f(in)o(termixing)e(user)
k(program)d(output)i(with)g(k)o(ernel)g(debugging)g(output.)-13
1060 y(The)f(MacMINIX)g(men)o(u)f(bar)g(has)h(t)o(w)o(o)f(useful)g(en)o
(tries:)19 b Ff(Windo)o(ws)13 b Fl(and)f Ff(Debug)p Fl(.)19
b(The)13 b(former)e(can)i(b)q(e)g(used)h(to)e(rotate)h(windo)o(w)-75
1109 y(fo)q(cus)h(and)g(c)o(hange)g(fon)o(ts)g(and)g(p)q(oin)o(t)f(sizes;)i
(the)f(latter)g(can)g(b)q(e)h(used)g(to)e(dump)g(the)h(pro)q(cess)i(table)e
(and)g(memory)d(map)h(to)i Ff(tt)o(y0)p Fl(.)-75 1226 y Fe(4.10)56
b(Macin)n(tosh)19 b(v)n(ersus)f(IBM)h(PC)g(v)n(ersion)-75 1302
y Fl(As)e(men)o(tioned)e(ab)q(o)o(v)o(e,)h(the)h(ma)r(jor)d(di\013erences)19
b(b)q(et)o(w)o(een)e(the)g(IBM)g(PC)f(v)o(ersion)g(and)g(the)h(Macin)o(tosh)f
(v)o(ersion)h(of)e(MINIX,)h(in)-75 1352 y(terms)g(of)f(the)i(source)g(co)q
(de)g(and)f(ho)o(w)f(it)h(a\013ects)h(programming)12 b(assignmen)o(ts,)k(is)f
(in)h(the)g(device)h(driv)o(ers)g(for)e(the)i(\015opp)o(y)f(disk,)-75
1402 y(the)i(hard)g(disk,)g(the)g(k)o(eyb)q(oard,)g(and)f(the)h(screen,)i
(and)e(in)f(the)h(implemen)o(tati)o(on)d(of)i Fj(fork)f Fl(system)i(call)e
(due)i(to)g(the)g(di\013eren)o(t)-75 1452 y(memory)d(addressing)i(sc)o(hemes)
h(of)e(the)i(micropro)q(cessors.)28 b(This)17 b(will)e(ha)o(v)o(e)i(a)g(ma)r
(jor)e(impact)h(on)g(programming)e(assignmen)o(ts)-75 1501
y(in)o(v)o(olving)h(devices,)k(for)e(example)f(Exercises)k(33-35)c(on)h(page)
h(190)e(of)h([8)o(].)28 b(It)18 b(also)f(means)f(that)i(memory)d(compaction)h
(is)h(not)-75 1551 y(p)q(ossible)f(in)g(MacMINIX)h(and)f(cannot)g(b)q(e)h
(used)g(as)g(a)f(programmi)o(ng)d(assignmen)o(t,)i(as)i(it)e(w)o(as)i(in)e
([2].)24 b(A)16 b(MacMINIX)h(pro)q(cess)-75 1601 y(can)d(only)g(execute)i(in)
e(the)h(area)f(of)g(ph)o(ysical)g(memory)d(originally)h(allo)q(cated)i(to)g
(it;)g(the)h(pro)q(cess)h(cannot)e(b)q(e)h(mo)o(v)o(ed)e(once)i(it)f(has)-75
1651 y(b)q(egun)j(executing.)27 b(In)16 b(addition,)g(the)h(use)h(of)e(shado)
o(wing)f(to)i(implem)o(en)o(t)e Fj(fork)g Fl(mak)o(es)h(CPU)h(sc)o(heduling)f
(and)h(programmi)o(ng)-75 1701 y(assignmen)o(ts)c(in)o(v)o(olving)f(CPU)i(sc)
o(heduling)g(more)f(complicated.)-13 1751 y(In)i(spite)h(of)e(these)j(disadv)
n(an)o(tages,)d(the)i(Macin)o(tosh)f(and)g(MacMINIX)h(do)f(ha)o(v)o(e)g(some)
f(adv)n(an)o(tages)g(compared)h(to)g(the)h(IBM)-75 1800 y(PC)e(v)o(ersion)g
(when)g(used)h(in)f(an)f(op)q(erating)h(systems)g(w)o(orkshop.)-13
1883 y Fd(\017)21 b Fl(The)13 b(abilit)o(y)e(to)i(divide)f(the)i(Macin)o
(tosh)f(hard)g(disk)g(in)o(to)f(a)g(lo)q(c)o(k)o(ed)h(storage)h(partition)e
(and)g(a)h(w)o(orkspace)h(area)f(means)f(that)29 1933 y(MacMINIX)i(can)f(b)q
(e)h(stored)h(in)e(the)h(lo)q(c)o(k)o(ed)f(area,)g(where)i(it)e(cannot)g(b)q
(e)h(c)o(hanged)g(b)o(y)f(studen)o(ts.)19 b(When)14 b(they)g(w)o(an)o(t)f(to)
g(use)29 1983 y(MacMINIX,)h(particularly)f(to)h(mak)o(e)e(mo)q(di\014cations)
g(as)i(part)g(of)f(an)h(assignmen)o(t,)e(they)j(mak)o(e)d(a)i(w)o(orkspace)g
(cop)o(y)g(to)g(use.)-13 2066 y Fd(\017)21 b Fl(Since)12 b(MacMINIX)g(runs)h
(as)f(an)f(application)g(under)i(Multi\014nder)e(along)g(with)h(whatev)o(er)g
(other)h(applications)d(are)j(running,)29 2116 y(a)g(crash)i(of)e(MacMINIX)i
(usually)e(has)h(a)f(less)i(sev)o(ere)h(impact)c(that)i(if)f(it)g(w)o(ere)i
(running)f(nativ)o(e)f(on)h(the)h(bare)f(hardw)o(are.)-13 2199
y Fd(\017)21 b Fl(While)15 b(a)h(compile)e(of)h(the)i(whole)f(MacMINIX)g
(system)g(is)g(b)q(eing)g(done,)g(studen)o(ts)i(can)e(use)h(a)e(comm)o
(unications)e(pac)o(k)n(age)29 2249 y(lik)o(e)e(NCSA)i(T)m(elnet)f(to)g(log)f
(in)o(to)h(another)g(mac)o(hine)f(and)h(read)h(their)f(electronic)i(mail)9
b(or)j(w)o(ork)g(on)g(other)h(assignmen)o(ts,)e(etc.)-13 2332
y Fd(\017)21 b Fl(On)14 b(the)g(IBM)f(PC,)h(studen)o(ts)g(ha)o(v)o(e)g(to)f
(build)g(a)g(new)h(b)q(o)q(ot)f(disk)g(in)g(order)h(to)g(test)g(a)f(new)h(v)o
(ersion)g(of)f(the)h(k)o(ernel)f(as)h(part)g(of)29 2381 y(an)e(assignmen)o
(t,)f(then)h(reb)q(o)q(ot)h(the)g(mac)o(hine)e(with)h(the)h(new)f(b)q(o)q(ot)
g(disk.)18 b(On)12 b(the)h(Macin)o(tosh,)f(a)g(recompile)f(of)g(MacMINIX)29
2431 y(creates)18 b(a)e(new)h(application)e(named)g Ff(NEWmacb)q(o)q(ot)h
Fl(in)g(the)h(curren)o(t)g(folder.)25 b(T)m(o)16 b(test)h(the)g(new)g(k)o
(ernel)g(a)f(studen)o(t)h(need)29 2481 y(only)c(quit)g(the)i(curren)o(t)g
(application)e(and)g(double)h(clic)o(k)g(on)f Ff(NEWmacb)q(o)q(ot)p
Fl(.)18 b(This)c(tak)o(es)g(m)o(uc)o(h)f(less)i(time.)965 2828
y(7)p eop
%%Page: 8 8
bop -75 -30 a Fm(5)67 b(Alternativ)n(e)24 b(Approac)n(hes)f(for)f(OS)g(Labs)
-75 61 y Fl(There)14 b(are)f(other)g(approac)o(hes)h(to)e(pro)o(viding)g
(practical)g(learning)g(exp)q(eriences)j(for)e(studen)o(ts:)19
b(computer)12 b(and)h(op)q(erating)f(system)-75 111 y(sim)o(ulators)g([3)o(,)
i(6)o(],)f(and)h(small)e(op)q(erating)h(system)h(k)o(ernels)h(running)e(on)h
(the)h(hardw)o(are)f([4)o(,)g(5)o(].)-13 161 y(Nac)o(hos)116
146 y Fk(y)149 161 y Fl([1)o(])g(is)h(a)g(v)o(ery)g(simple,)e(but)i
(functional,)e(op)q(erating)i(system)g(for)f(em)o(ulated)g(hardw)o(are)h
(consisting)g(of)f(a)h(net)o(w)o(ork)g(of)-75 210 y(MIPS-lik)o(e)h(w)o
(orkstations.)24 b(In)17 b(a)e(series)j(of)e(pro)r(jects,)h(studen)o(ts)h
(design)e(and)g(implemen)o(t)e(impro)o(v)o(emen)o(ts)g(to)i(the)h
(functionalit)o(y)-75 260 y(and)g(p)q(erformance)g(of)f(the)i(ma)r(jor)e
(comp)q(onen)o(ts)g(of)h(Nac)o(hos.)28 b(The)17 b(C++)h(language)e(is)h(used)
h(and)f(the)h(pro)r(ject)g(m)o(ust)e(b)q(e)i(done)-75 310 y(on)d(a)f
(MIPS-based)i(w)o(orkstation,)e(suc)o(h)i(as)f(a)g(DECstation,)f(since)i(the)
g(nativ)o(e)e(compiler)g(is)h(used.)22 b(Supp)q(ort)15 b(for)g(SP)m(AR)o
(C-based)-75 360 y(w)o(orkstations)f(w)o(as)g(added)g(in)f(Septem)o(b)q(er)i
(1993.)-13 410 y(The)k(App)q(endix)f(of)f([6)o(])g(describ)q(es)j(a)e(pro)r
(ject)h(for)e(a)h(mac)o(hine-indep)q(enden)o(t)f(sim)o(ulator)f(for)h(pro)q
(cess)j(sc)o(heduling,)e(memory)-75 460 y(managemen)o(t,)10
b(and)j(pro)q(cess)h(sync)o(hronization.)k(The)13 b(sim)o(ulator)e(randomly)g
(generates)j(a)f(stream)f(of)g(jobs)h(with)f(random)g(c)o(harac-)-75
509 y(teristics)j(making)d(random)g(resource)k(requests.)-13
559 y(The)e Fd(O)q(S)s(P)i Fl(en)o(vironmen)o(t)c([3)o(])h(con)o(tains)f(a)h
(sp)q(ecial)g(mo)q(dule)e(that)i(pro)o(vides)g(a)g(virtual)f(mac)o(hine)f(b)o
(y)i(sim)o(ulating)d(the)k(hardw)o(are)-75 609 y(of)j(a)h(simple)e(computer.)
30 b(It)17 b(also)h(sim)o(ulates)e(a)i(collection)f(of)g(concurren)o(tly)i
(executing)g(pro)q(cesses)h(generating)e(requests)i(that)-75
659 y(need)c(op)q(erating)f(system)g(service.)24 b(Studen)o(ts)16
b(write)g(v)n(arious)e(mo)q(dules)g(for)h(the)h(op)q(erating)f(system)g(that)
g(in)o(terface)h(with)f(others)-75 709 y(pro)o(vided)f(in)f(binary)h(form)e
(b)o(y)h(the)i(instructor)g(to)e(form)g(a)g(complete)g(system.)-13
758 y(KMOS,)k(k)o(ernel)g(of)g(a)f(m)o(ultitasking)e(op)q(erating)j(system)f
([5],)g(is)h(a)f(pro)r(ject)i(that)f(implemen)o(ts)d(on)j(an)f(IBM)h(PC)g
(the)h(design)-75 808 y(sp)q(eci\014ed)k(in)e(detail)f(in)h(the)h(text.)38
b(The)20 b(k)o(ernel)h(supp)q(orts)h(in)o(terpro)q(cess)g(comm)o(unicatio)o
(n)c(and)i(sync)o(hronization,)h(in)o(terrupt)-75 858 y(managemen)o(t,)12
b(and)i(pro)q(cess)i(managemen)o(t.)h(It)e(is)f(not)g(a)h(complete)e(op)q
(erating)i(system,)f(but)g(can)h(b)q(e)g(used)g(for)g(em)o(b)q(edded)f(real-)
-75 908 y(time)f(systems.)18 b(The)c(MPX-PC)g(pro)r(ject)h(describ)q(ed)h(in)
d([4])g(is)h(similar)d(and)j(runs)h(\\under")f(MS-DOS)g(for)f(\014le)h
(system)g(supp)q(ort.)-13 958 y(There)g(are)g(adv)n(an)o(tages)e(and)h
(disadv)n(an)o(tages)g(of)f(these)j(di\013eren)o(t)f(approac)o(hes,)f(the)h
(MINIX)f(approac)o(h)g(v)o(ersus)i(the)e(sim)o(ulator)-75 1007
y(or)g(small)e(k)o(ernel)j(approac)o(h.)j(Sim)o(ulators)11
b(and)i(small)e(k)o(ernels)j(giv)o(e)f(the)h(studen)o(t)g(the)g(c)o(hance)g
(to)f(write)h(di\013eren)o(t)g(mo)q(dules)e(of)g(the)-75 1057
y(op)q(erating)g(system)g(from)e(scratc)o(h.)19 b(Lane)12 b(and)g(Mo)q(oney)h
(sa)o(y)f(in)f([4])g(that)h(studen)o(ts)i(learn)e(m)o(uc)o(h)f(more)g
(implemen)o(ting)e(a)j(small)e(OS)-75 1107 y(rather)j(than)g(studying)f(and)g
(mo)q(difying)e(or)i(enhancing)h(a)f(larger)g(OS.)h(This)f(assertion)h(can)g
(only)e(b)q(e)j(v)n(alidated)d(with)h(a)g(con)o(trolled)-75
1157 y(study)m(.)21 b(The)16 b(pro)r(jects)g(describ)q(ed)h(in)e(this)g(pap)q
(er)h(ha)o(v)o(e)e(b)q(een)j(used)f(in)e(the)i(classro)q(om)e(and)h(the)g
(feedbac)o(k)h(is)f(that)g(the)g(studen)o(ts)-75 1207 y(gained)i(v)n
(aluable,)e(practical)i(systems)g(programming)d(exp)q(erience)19
b(with)d(a)h(complete)f(w)o(orking)g(actual)h(op)q(erating)g(system.)27
b(In)-75 1257 y(the)14 b(w)o(ords)g(of)g(one)g(of)f(the)h(graduate)g(studen)o
(ts)h(at)f(the)g(end)h(of)e(the)h(spring)g(1993)f(o\013ering,)g(\\I)g(think)h
(the)g(hand-on)f(exp)q(erience)j(in)-75 1306 y(this)e(class)g(is)f(what)g
(really)g(mak)o(es)g(it)g(w)o(orth)o(while.)k(Ha)o(ving)12
b(tak)o(en)i(the)g(Op)q(erating)g(Systems)f(I)h(and)f(I)q(I)h(courses,)h
(there)f(is)g(not)f(to)q(o)-75 1356 y(m)o(uc)o(h)f(that)g(is)h(new)g
(material)e(but)i(the)g(exp)q(erience)i(of)d(using)g(the)i(concepts)g(in)e
(MINIX)h(w)o(as)g(great.)18 b(I)13 b(think)f(this)h(class)g(should)f(b)q(e)
-75 1406 y(tak)o(en)j(b)o(y)g(all)f(computer)h(science)h(studen)o(ts.)24
b(I)15 b(kno)o(w)f(from)g(w)o(ork)g(exp)q(erience)k(that)d(man)o(y)e(recen)o
(t)k(college)e(graduates)g(get)h(their)-75 1456 y(\014rst)e(job)f(in)f(a)h
(main)o(tenance)g(en)o(vironmen)o(t.)j(This)e(class)f(is)g(excellen)o(t)h
(preparation:)k(h)o(un)o(ting)13 b(through)g(the)h(MINIX)f(co)q(de)h(trying)
-75 1506 y(to)i(\014nd)g(out)g(ho)o(w)f(things)h(are)h(done)f(and)g(ho)o(w)f
(to)h(implemen)o(t)d(new)k(features)g(are)f(things)g(that)g(to)q(o)g(man)o(y)
e(p)q(eople)i(nev)o(er)h(do)f(as)-75 1555 y(college)e(studen)o(ts.")-75
1693 y Fm(6)67 b(Conclusions)-75 1784 y Fl(MINIX)16 b(is)f(a)h(complete,)f
(stand-alone)g(op)q(erating)g(system)h(that)f(comes)h(with)f(source)i(co)q
(de.)24 b(Therefore)17 b(it)e(can)h(b)q(e)g(mo)q(di\014ed)e(or)-75
1833 y(enhanced)19 b(in)e(an)o(y)h(w)o(a)o(y)f(the)h(user)h(desires.)31
b(Since)18 b(it)g(includes)g(a)f(C)h(compiler,)f(MINIX)h(can)g(serv)o(e)h(as)
f(its)f(o)o(wn)h(dev)o(elopmen)o(t)-75 1883 y(platform.)g(It)d(supp)q(orts)h
(nearly)e(all)g(of)g(the)h(v)o(ersion)g(7)g(UNIX)g(system)f(calls)g(and)h
(includes)g(nearly)g(all)e(of)h(the)i(standard)f(utilities)-75
1933 y(familia)o(r)c(to)j(UNIX)g(users)h(and)e(programmers.)j(F)m(or)e(these)
h(reasons)f(it)g(is)f(an)h(excellen)o(t)g(en)o(vironmen)o(t)f(for)g(an)g(op)q
(erating)h(systems)-75 1983 y(w)o(orkshop)g(or)g(lab)q(oratory)m(.)-13
2033 y(F)m(or)e(sev)o(eral)i(y)o(ears,)f(Drexel)f(Univ)o(ersit)o(y)h(has)g
(required)g(studen)o(ts)h(to)f(buy)g(or)f(ha)o(v)o(e)h(access)h(to)f(a)f
(Macin)o(tosh)g(computer.)18 b(There)-75 2082 y(are)g(some)g(10,000)e(on)i
(campus.)29 b(The)19 b(a)o(v)n(ailabili)o(t)o(y)c(of)j(a)f(Macin)o(tosh)h(v)o
(ersion)h(of)e(the)i(MINIX)f(soft)o(w)o(are)g(giv)o(es)g(studen)o(ts)h(with)
-75 2132 y(access)g(to)d(a)h(Macin)o(tosh)f(the)i(opp)q(ortunit)o(y)e(to)h
(gain)f(v)n(aluable,)g(practical,)g(systems)h(programming)d(exp)q(erience)k
(w)o(orking)e(with)-75 2182 y(the)e(in)o(ternal)g(op)q(erations)g(of)f(an)h
(actual)g(op)q(erating)f(system.)-13 2232 y(The)g(semaphore)g(and)f(user-lev)
o(el)h(message)g(passing)f(assignmen)o(ts)g(in)g(particular)h(w)o(ere)g(go)q
(o)q(d)f(pro)r(jects)i(b)q(ecause)h(of)d(the)h(man)o(y)-75
2282 y(di\013eren)o(t)j(parts)g(of)f(MINIX)g(that)h(had)f(to)g(b)q(e)h
(understo)q(o)q(d)g(and)f(mo)q(di\014ed,)f(with)h(the)h(c)o(hanges)g(in)o
(tegrated)f(together,)i(to)e(get)g(all)-75 2332 y(asp)q(ects)h(of)d(the)h
(assignmen)o(t)f(w)o(orking)g(correctly)m(.)-75 2469 y Fm(References)-54
2560 y Fl([1])19 b(W.)e(A.)g(Christopher,)i(S.)f(J.)f(Pro)q(cter,)j(and)d
(T.E.)g(Anderson,)j(\\The)d(Nac)o(hos)h(Instructional)g(Op)q(erating)g
(System,")g Fi(Pr)n(o)n(c.)10 2610 y(1993)e(Winter)f(USENIX)g(Confer)n(enc)n
(e)p Fl(,)e(Jan)o(uary)h(1993,)e(pp.)i(479-488.)p -75 2644
840 2 v -28 2672 a Fh(y)-11 2684 y Fg(Av)n(ailable)9 b(b)o(y)i(anon)o(ymous)e
Fa(ftp)h Fg(from)h Fa(ftp.cs.ber)o(kel)o(ey)o(.ed)o(u)e Fg(in)i(directory)e
Fa(ucb/nachos)o Fg(.)965 2828 y Fl(8)p eop
%%Page: 9 9
bop -54 -30 a Fl([2])19 b(Stephen.)c(J.)f(Hartley)m(,)f(\\Exp)q(erience)i
(with)f(MINIX)g(in)g(an)f(Op)q(erating)i(Systems)e(Lab,")g
Fi(A)o(CM)i(SIGCSE)g(Bul)r(letin)p Fl(,)f(V)m(ol.)e(22,)10
20 y(No.)i(3,)f(Sept.)h(1990.)-54 103 y([3])19 b(Mic)o(hael)h(Kifer)h(and)f
(Scott)h(A.)f(Smolk)n(a,)f Fd(O)q(S)s(P)s Fi(:)j(A)o(n)f(Envir)n(onment)g
(for)g(Op)n(er)n(ating)f(System)h(Pr)n(oje)n(cts)p Fl(.)f(Reading,)g(MA:)10
153 y(Addison-W)m(esley)m(,)13 b(1991.)-54 236 y([4])19 b(Malcolm)13
b(G.)i(Lane)g(and)g(James)g(D.)f(Mo)q(oney)m(,)h Fi(A)h(Pr)n(oje)n(ct)g
(Manual)h(to)f(A)n(c)n(c)n(omp)n(any)h(A)f(Pr)n(actic)n(al)f(Appr)n(o)n(ach)h
(to)g(Op)n(er)n(ating)10 286 y(Systems)p Fl(.)e(Boston,)g(MA:)f(Bo)o(yd)h(&)g
(F)m(raser,)g(1988.)-54 369 y([5])19 b(Milan)12 b(Milenk)o(o)o(vi)o(\023)-20
b(c,)12 b Fi(Op)n(er)n(ating)h(Systems)i(Conc)n(epts)f(and)h(Design)p
Fl(,)e(second)h(edition.)e(New)h(Y)m(ork,)g(NY:)f(McGra)o(w-Hill,)f(1992.)-54
452 y([6])19 b(William)10 b(A.)k(Sha)o(y)m(,)e Fi(Intr)n(o)n(duction)j(to)g
(Op)n(er)n(ating)g(Systems)p Fl(.)e(New)i(Y)m(ork,)e(NY:)g(Harp)q(er)i
(Collins,)d(1993.)-54 535 y([7])19 b(Andrew)11 b(S.)e(T)m(anen)o(baum,)f(F)m
(rans)i(Meulen)o(bro)q(oks,)h(Ra)o(ymond)c(Mic)o(hiels,)j(Jost)g(M)q(\177)-22
b(uller,)10 b(Joseph)h(Pic)o(k)o(ert,)f(Stev)o(en)h(Reiz,)f(Johan)10
584 y(W.)15 b(Stev)o(enson,)g Fi(MINIX)h(1.5)g(R)n(efer)n(enc)n(e)g(Manual)p
Fl(.)g(Englew)o(o)q(o)q(d)f(Cli\013s,)f(NJ:)h(Pren)o(tice-Hall,)g(1991)f
(\(Macin)o(tosh)h(v)o(ersion)h(of)10 634 y(the)f(soft)o(w)o(are\).)-54
717 y([8])k(Andrew)e(S.)f(T)m(anen)o(baum,)f Fi(Op)n(er)n(ating)h(Systems:)h
(Design)h(and)f(Implementation)p Fl(.)f(Englew)o(o)q(o)q(d)g(Cli\013s,)g(NJ:)
g(Pren)o(tice-Hall,)10 767 y(1987.)-54 850 y([9])j(R.)10 b(Guerrero,)i(L.)f
(Leguizamon,)e(and)h(R.)g(Gallard,)g(\\Implemen)o(tatio)o(n)e(and)j(Ev)n
(aluation)e(of)i(Alternativ)o(e)g(Pro)q(cess)h(Sc)o(hedulers)10
900 y(in)i(MINIX,")f Fi(A)o(CM)i(SIGOPS)g(OSR)p Fl(,)f(V)m(ol.)f(27,)f(No.)i
(1,)f(Jan.)g(1993.)965 2828 y(9)p eop
%%Trailer
end
userdict /end-hook known{end-hook}if
%%EOF

ZeroDay Forums Mini