$ od -c -N 50000 [Erinyes]<LispManual>RandomIO.IM!9
0000000 \r \r { B e g i n S u b S e c
0000020 R a n d o m A c c e s s F i
0000040 l e O p e r a t i o n s } \r {
0000060 T i t l e R a n d o m A c c
0000100 e s s F i l e O p e r a t i
0000120 o n s } \r { T e x t \r \r { i n d
0000140 e x * P R I M A R Y * R a n
0000160 d o m l y a c c e s s i b l e
0000200 f i l e s } \r { T a g R a n
0000220 d o m I O } \r \r F o r m o s t
0000240 a p p l i c a t i o n s , f
0000260 i l e s a r e r e a d s t
0000300 a r t i n g a t t h e i r
0000320 b e g i n n i n g a n d p r
0000340 o c e e d i n g s e q u e n t
0000360 i a l l y , i . e . , t h e
0000400 n e x t c h a r a c t e r
0000420 r e a d i s t h e o n e
0000440 i m m e d i a t e l y f o l l
0000460 o w i n g t h e l a s t c
0000500 h a r a c t e r r e a d .
0000520 S i m i l a r l y , f i l e s
0000540 a r e w r i t t e n s e q
0000560 u e n t i a l l y . H o w e
0000600 v e r , f o r f i l e s o
0000620 n s o m e d e v i c e s ,
0000640 i t i s a l s o p o s s i
0000660 b l e t o r e a d / w r i t
0000700 e c h a r a c t e r s a t
0000720 a r b i t r a r y p o s i t i
0000740 o n s i n a f i l e , e
0000760 s s e n t i a l l y t r e a t
0001000 i n g t h e f i l e a s
0001020 a l a r g e b l o c k o f
0001040 a u x i l i a r y s t o r a
0001060 g e . F o r e x a m p l e
0001100 , o n e a p p l i c a t i o
0001120 n m i g h t i n v o l v e
0001140 w r i t i n g a n e x p r e
0001160 s s i o n a t t h e { i t
0001200 b e g i n n i n g } o f t
0001220 h e f i l e , a n d t h e
0001240 n r e a d i n g a n e x p
0001260 r e s s i o n f r o m a s
0001300 p e c i f i e d p o i n t i
0001320 n i t s { i t m i d d l e
0001340 } . T h i s p a r t i c u
0001360 l a r e x a m p l e r e q u
0001400 i r e s t h e f i l e b e
0001420 o p e n f o r { i t b o
0001440 t h } i n p u t a n d o u
0001460 t p u t . H o w e v e r ,
0001500 r a n d o m f i l e i n p u
0001520 t o r o u t p u t c a n
0001540 a l s o b e p e r f o r m e
0001560 d o n f i l e s t h a t
0001600 h a v e b e e n o p e n e d
0001620 f o r o n l y i n p u t
0001640 o r o n l y o u t p u t . \r
0001660 \r { i n d e x * P R I M A R Y
0001700 * F i l e p o i n t e r s }
0001720 \r \r A s s o c i a t e d w i t
0001740 h e a c h f i l e i s a
0001760 " f i l e p o i n t e r "
0002000 t h a t p o i n t s t o t
0002020 h e l o c a t i o n w h e r
0002040 e t h e n e x t c h a r a
0002060 c t e r i s t o b e r e
0002100 a d f r o m o r w r i t t
0002120 e n t o . T h e f i l e
0002140 p o s i t i o n o f a b
0002160 y t e i s t h e n u m b e
0002200 r o f b y t e s t h a t
0002220 p r e c e d e i t i n t h
0002240 e f i l e , i . e . , 0
0002260 i s t h e p o s i t i o n
0002300 o f t h e b e g i n n i n g
0002320 o f t h e f i l e . T
0002340 h e f i l e p o i n t e r
0002360 t o a f i l e i s a u t
0002400 o m a t i c a l l y a d v a n
0002420 c e d a f t e r e a c h i
0002440 n p u t o r o u t p u t o
0002460 p e r a t i o n . T h i s
0002500 s e c t i o n d e s c r i b e
0002520 s f u n c t i o n s w h i c
0002540 h c a n b e u s e d t o
0002560 { i t r e p o s i t i o n }
0002600 t h e f i l e p o i n t e
0002620 r o n t h o s e f i l e s
0002640 t h a t c a n b e r a n
0002660 d o m l y a c c e s s e d .
0002700 A f i l e u s e d i n
0002720 t h i s f a s h i o n i s
0002740 m u c h l i k e a n a r r
0002760 a y i n t h a t i t h a
0003000 s a c e r t a i n n u m b
0003020 e r o f a d d r e s s a b l
0003040 e l o c a t i o n s t h a t
0003060 c h a r a c t e r s c a n
0003100 b e p u t i n t o o r t
0003120 a k e n f r o m . H o w e
0003140 v e r , u n l i k e a r r a
0003160 y s , f i l e s c a n b e
0003200 e n l a r g e d . F o r
0003220 e x a m p l e , i f t h e
0003240 f i l e p o i n t e r i s
0003260 p o s i t i o n e d a t t h
0003300 e e n d o f a f i l e
0003320 a n d a n y t h i n g i s
0003340 w r i t t e n , t h e f i l
0003360 e " g r o w s . " I t i
0003400 s a l s o p o s s i b l e
0003420 t o p o s i t i o n t h e
0003440 f i l e p o i n t e r { i t
0003460 b e y o n d } t h e e n d
0003500 o f f i l e a n d t h e
0003520 n t o w r i t e . ( I f
0003540 t h e p r o g r a m a t t
0003560 e m p t s t o { i t r e a
0003600 d } b e y o n d t h e e n
0003620 d o f f i l e , a n { l
0003640 i s p E N D O F F I L E }
0003660 { i n d e x E N D O F F I
0003700 L E E r r o r } e r r o r
0003720 o c c u r s . ) I n t h i
0003740 s c a s e , t h e f i l e
0003760 i s e n l a r g e d , a n
0004000 d a " h o l e " i s c r
0004020 e a t e d , w h i c h c a n
0004040 l a t e r b e w r i t t e
0004060 n i n t o . N o t e t h
0004100 a t t h i s e n l a r g e m
0004120 e n t o n l y t a k e s p
0004140 l a c e a t t h e { i t
0004160 e n d } o f a f i l e ;
0004200 i t i s n o t p o s s i b
0004220 l e t o m a k e m o r e
0004240 r o o m i n t h e m i d d
0004260 l e o f a f i l e . I
0004300 n o t h e r w o r d s , i
0004320 f e x p r e s s i o n { l i
0004340 s p A } b e g i n s a t
0004360 p o s i t i o n 1 0 0 0 , a
0004400 n d e x p r e s s i o n { l
0004420 i s p B } a t 1 1 0 0 ,
0004440 a n d t h e p r o g r a m
0004460 a t t e m p t s t o o v e r
0004500 w r i t e { l i s p A } w
0004520 i t h e x p r e s s i o n {
0004540 l i s p C } , w h o s e p
0004560 r i n t e d r e p r e s e n t
0004600 a t i o n i s 2 0 0 b y t
0004620 e s l o n g , p a r t o f
0004640 { l i s p B } w i l l b
0004660 e a l t e r e d . \r \r \r W a r
0004700 n i n g : F i l e p o s i
0004720 t i o n s a r e a l w a y s
0004740 i n t e r m s o f b y t
0004760 e s , n o t c h a r a c t e
0005000 r s . T h e u s e r s h
0005020 o u l d t h u s b e v e r
0005040 y c a r e f u l a b o u t
0005060 c o m p u t i n g t h e s p
0005100 a c e n e e d e d f o r a
0005120 n e x p r e s s i o n . I
0005140 n p a r t i c u l a r , { i
0005160 n d e x N S c h a r a c t e
0005200 r s } { i n d e x N S c h a
0005220 r a c t e r I / O } N S c
0005240 h a r a c t e r s m a y t a
0005260 k e m u l t i p l e b y t e
0005300 s ( s e e { P a g e R e f
0005320 T e r m N S c h a r a c t e
0005340 r I / O } ) . A l s o ,
0005360 t h e { i n d e x E n d - o
0005400 f - l i n e c h a r a c t e r
0005420 } e n d - o f - l i n e c h a
0005440 r a c t e r ( s e e { P a g
0005460 e R e f T e r m E n d - o f
0005500 - l i n e c h a r a c t e r }
0005520 ) m a y b e r e p r e s e
0005540 n t e d b y a d i f f e r
0005560 e n t n u m b e r o f c h
0005600 a r a c t e r s i n d i f f
0005620 e r e n t i m p l e m e n t a
0005640 t i o n s . O u t p u t f
0005660 u n c t i o n s m a y a l s
0005700 o i n t r o d u c e e n d -
0005720 o f - l i n e ' s a s a r
0005740 e s u l t o f { f n L I N
0005760 E L E N G T H } c o n s i d e
0006000 r a t i o n s . T h e r e f
0006020 o r e { f n N C H A R S }
0006040 ( { P a g e R e f F n N C H
0006060 A R S } ) d o e s { i t n
0006100 o t } s p e c i f y h o w
0006120 m a n y b y t e s a n e x
0006140 p r e s s i o n t a k e s t
0006160 o p r i n t , e v e n i g
0006200 n o r i n g l i n e l e n g
0006220 t h c o n s i d e r a t i o n
0006240 s . \r \r \r { F n D e f { F n N
0006260 a m e G E T F I L E P T R }
0006300 { F n A r g s F I L E } \r { T
0006320 e x t \r R e t u r n s t h e
0006340 c u r r e n t p o s i t i o n
0006360 o f t h e f i l e p o i
0006400 n t e r f o r { a r g F I
0006420 L E } , i . e . , t h e b
0006440 y t e a d d r e s s a t w
0006460 h i c h t h e n e x t i n
0006500 p u t / o u t p u t o p e r a
0006520 t i o n w i l l c o m m e n
0006540 c e . \r } } \r \r \r { F n D e f
0006560 { F n N a m e S E T F I L E P
0006600 T R } { F n A r g s F I L E
0006620 A D R } \r { T e x t \r S e t s
0006640 t h e f i l e p o i n t e
0006660 r { i n d e x F i l e p o i
0006700 n t e r s } f o r { a r g
0006720 F I L E } t o t h e p o s
0006740 i t i o n { a r g A D R } ;
0006760 r e t u r n s { a r g A D
0007000 R } . T h e s p e c i a l
0007020 v a l u e { a r g A D R }
0007040 = { l i s p - 1 } i s i n
0007060 t e r p r e t e d t o m e a
0007100 n t h e a d d r e s s o f
0007120 t h e e n d o f f i l e
0007140 . \r \r N o t e : I f a f
0007160 i l e i s o p e n e d f o
0007200 r o u t p u t o n l y , t
0007220 h e e n d o f f i l e i
0007240 s i n i t i a l l y z e r o
0007260 , e v e n i f a n o l d
0007300 f i l e b y t h e s a m
0007320 e n a m e h a d e x i s t
0007340 e d ( s e e { f n O P E N
0007360 S T R E A M } , { P a g e R e
0007400 f f n O P E N S T R E A M }
0007420 ) . I f a f i l e i s
0007440 o p e n e d f o r b o t h
0007460 i n p u t a n d o u t p u
0007500 t , t h e i n i t i a l f
0007520 i l e p o i n t e r i s t
0007540 h e b e g i n n i n g o f
0007560 t h e f i l e , b u t { l
0007600 i s p ( S E T F I L E P T R
0007620 { a r g F I L E } - 1 ) }
0007640 s e t s i t t o t h e e
0007660 n d o f t h e f i l e .
0007700 I f t h e f i l e h a d
0007720 b e e n o p e n e d i n
0007740 a p p e n d m o d e b y {
0007760 l i s p ( O P E N S T R E A M
0010000 { a r g F I L E } ' A P P
0010020 E N D ) } , t h e f i l e
0010040 p o i n t e r r i g h t a f
0010060 t e r o p e n i n g w o u l
0010100 d b e s e t t o t h e
0010120 e n d o f t h e e x i s t
0010140 i n g f i l e , i n w h i
0010160 c h c a s e a { f n S E
0010200 T F I L E P T R } t o p o s
0010220 i t i o n t h e f i l e a
0010240 t t h e e n d w o u l d
0010260 b e u n n e c e s s a r y . \r
0010300 } } \r \r \r { F n D e f { F n N
0010320 a m e G E T E O F P T R } {
0010340 F n A r g s F I L E } \r { T e
0010360 x t \r R e t u r n s t h e b
0010400 y t e a d d r e s s o f t
0010420 h e e n d o f f i l e ,
0010440 i . e . , t h e n u m b e r
0010460 o f b y t e s i n t h e
0010500 f i l e . E q u i v a l e
0010520 n t t o p e r f o r m i n g
0010540 { l i s p ( S E T F I L E P
0010560 T R { a r g F I L E } - 1
0010600 ) } a n d r e t u r n i n g
0010620 { l i s p ( G E T F I L E P
0010640 T R { a r g F I L E } ) }
0010660 e x c e p t t h a t i t d
0010700 o e s n o t c h a n g e t
0010720 h e c u r r e n t f i l e
0010740 p o i n t e r . \r } } \r \r \r \r {
0010760 F n D e f { F n N a m e R A
0011000 N D A C C E S S P } { F n A r
0011020 g s F I L E } \r { T e x t \r R
0011040 e t u r n s { a r g F I L E
0011060 } i f { a r g F I L E }
0011100 i s r a n d o m l y a c c e
0011120 s s i b l e , { l i s p N I
0011140 L } o t h e r w i s e . T
0011160 h e f i l e { l i s p T }
0011200 i s n o t r a n d o m l y
0011220 a c c e s s i b l e , n o r
0011240 a r e c e r t a i n n e t
0011260 w o r k f i l e c o n n e c
0011300 t i o n s i n I n t e r l i
0011320 s p - D . { a r g F I L E
0011340 } m u s t b e o p e n o
0011360 r a n e r r o r i s g e
0011400 n e r a t e d , { l i s p F
0011420 I L E N O T O P E N } { i n
0011440 d e x F I L E N O T O P E
0011460 N E r r o r } . \r } } \r \r \r {
0011500 F n D e f { F n N a m e C O
0011520 P Y B Y T E S } { F n A r g s
0011540 S R C F I L D S T F I L S
0011560 T A R T E N D } \r { T e x t \r
0011600 C o p i e s b y t e s f r o
0011620 m { a r g S R C F I L } t
0011640 o { a r g D S T F I L } ,
0011660 s t a r t i n g f r o m p o
0011700 s i t i o n { a r g S T A R
0011720 T } a n d u p t o b u t
0011740 n o t i n c l u d i n g p
0011760 o s i t i o n { a r g E N D
0012000 } . B o t h { a r g S R
0012020 C F I L } a n d { a r g D
0012040 S T F I L } m u s t b e o
0012060 p e n . R e t u r n s { l
0012100 i s p T } . \r \r I f { a r g
0012120 E N D } = { l i s p N I L }
0012140 , { a r g S T A R T } i s
0012160 i n t e r p r e t e d a s
0012200 t h e n u m b e r o f b y
0012220 t e s t o c o p y ( s t a
0012240 r t i n g a t t h e c u r
0012260 r e n t p o s i t i o n ) .
0012300 I f { a r g S T A R T }
0012320 i s a l s o { l i s p N I
0012340 L } , b y t e s a r e c o
0012360 p i e d u n t i l t h e e
0012400 n d o f t h e f i l e i
0012420 s r e a c h e d . \r \r W a r n
0012440 i n g : { f n C O P Y B Y
0012460 T E S } d o e s n o t t a
0012500 k e a n y a c c o u n t o
0012520 f m u l t i - b y t e N S
0012540 c h a r a c t e r s ( { P a g
0012560 e R e f T e r m N S C h a
0012600 r a c t e r s } ) . { f n
0012620 C O P Y C H A R S } ( b e l o
0012640 w ) s h o u l d b e u s e
0012660 d w h e n e v e r c o p y i
0012700 n g i n f o r m a t i o n t
0012720 h a t m i g h t i n c l u d
0012740 e N S c h a r a c t e r s .
0012760 \r } } \r \r \r { F n D e f { F n
0013000 N a m e C O P Y C H A R S }
0013020 { F n A r g s S R C F I L D
0013040 S T F I L S T A R T E N D }
0013060 \r { T e x t \r L i k e { f n
0013100 C O P Y B Y T E S } e x c e p
0013120 t t h a t i t c o p i e s
0013140 { i n d e x N S c h a r a
0013160 c t e r s } N S c h a r a c t
0013200 e r s ( { P a g e R e f T e
0013220 r m N S C h a r a c t e r s
0013240 } ) , a n d p e r f o r m s
0013260 t h e p r o p e r c o n v
0013300 e r s i o n i f t h e e n
0013320 d - o f - l i n e c o n v e n
0013340 t i o n s o f { a r g S R
0013360 C F I L } a n d { a r g D
0013400 S T F I L } a r e n o t t
0013420 h e s a m e ( s e e { P a
0013440 g e R e f T e r m E n d - o
0013460 f - l i n e c h a r a c t e r
0013500 } ) . { a r g S T A R T }
0013520 a n d { a r g E N D } a
0013540 r e i n t e r p r e t e d t
0013560 h e s a m e a s w i t h
0013600 { f n C O P Y B Y T E S } ,
0013620 i . e . , a s b y t e ( n
0013640 o t c h a r a c t e r ) s p
0013660 e c i f i c a t i o n s i n
0013700 { a r g S R C F I L } . T
0013720 h e n u m b e r o f b y t
0013740 e s a c t u a l l y o u t p
0013760 u t t o { a r g D S T F I
0014000 L } m i g h t b e m o r e
0014020 o r l e s s t h a n t h
0014040 e n u m b e r o f b y t e
0014060 s s p e c i f i e d b y {
0014100 a r g S T A R T } a n d {
0014120 a r g E N D } , d e p e n d
0014140 i n g o n w h a t t h e
0014160 e n d - o f - l i n e c o n v
0014200 e n t i o n s a r e . I n
0014220 t h e c a s e w h e r e
0014240 t h e e n d - o f - l i n e
0014260 c o n v e n t i o n s h a p p
0014300 e n t o b e t h e s a m
0014320 e , { f n C O P Y C H A R S
0014340 } s i m p l y c a l l s {
0014360 f n C O P Y B Y T E S } . \r }
0014400 } \r \r \r \r \r { i n d e x * P R
0014420 I M A R Y * S e a r c h i n g
0014440 f i l e s } \r \r \r { F n D e f
0014460 { F n N a m e F I L E P O S
0014500 } { F n A r g s P A T T E R
0014520 N F I L E S T A R T E N D
0014540 S K I P T A I L C A S E A
0014560 R R A Y } \r { T e x t \r A n a l
0014600 o g o u s t o { i n d e x
0014620 S T R P O S F N } { f n S T
0014640 R P O S } ( { P a g e R e f
0014660 F n S T R P O S } ) , b u t
0014700 s e a r c h e s a f i l e
0014720 r a t h e r t h a n a s
0014740 t r i n g . { f n F I L E
0014760 P O S } s e a r c h e s { a
0015000 r g F I L E } f o r t h e
0015020 s t r i n g { a r g P A T
0015040 T E R N } . \r S e a r c h b e
0015060 g i n s a t { a r g S T A
0015100 R T } ( o r t h e c u r r
0015120 e n t p o s i t i o n o f
0015140 t h e f i l e p o i n t e r
0015160 , i f { a r g S T A R T }
0015200 = { l i s p N I L } ) , a n
0015220 d g o e s t o { a r g E
0015240 N D } ( o r t h e e n d
0015260 o f { a r g F I L E } , i
0015300 f { a r g E N D } = { l i s
0015320 p N I L } ) . R e t u r n
0015340 s t h e a d d r e s s o f
0015360 t h e s t a r t o f t h
0015400 e m a t c h , o r { l i s
0015420 p N I L } i f n o t f o
0015440 u n d . \r \r { a r g S K I P }
0015460 c a n b e u s e d t o
0015500 s p e c i f y a c h a r a c
0015520 t e r w h i c h m a t c h e
0015540 s a n y c h a r a c t e r
0015560 i n t h e f i l e . I f
0015600 { a r g T A I L } i s {
0015620 l i s p T } , a n d t h e
0015640 s e a r c h i s s u c c e
0015660 s s f u l , t h e v a l u e
0015700 i s t h e a d d r e s s
0015720 o f t h e f i r s t c h a
0015740 r a c t e r { i t a f t e r
0015760 } t h e s e q u e n c e o
0016000 f c h a r a c t e r s c o r
0016020 r e s p o n d i n g t o { a
0016040 r g P A T T E R N } , i n s
0016060 t e a d o f t h e s t a r
0016100 t i n g a d d r e s s o f
0016120 t h e s e q u e n c e . I
0016140 n e i t h e r c a s e , t
0016160 h e f i l e i s l e f t
0016200 s o t h a t t h e n e x t
0016220 i / o o p e r a t i o n b
0016240 e g i n s a t t h e a d d
0016260 r e s s r e t u r n e d a s
0016300 t h e v a l u e o f { i
0016320 n d e x F I L E P O S F N }
0016340 { f n F I L E P O S } . \r \r {
0016360 a r g C A S E A R R A Y } s
0016400 h o u l d b e a " c a s e
0016420 a r r a y " { i n d e x C a
0016440 s e a r r a y s } t h a t
0016460 s p e c i f i e s t h a t c
0016500 e r t a i n c h a r a c t e r
0016520 s s h o u l d b e t r a n
0016540 s f o r m e d t o o t h e r
0016560 c h a r a c t e r s b e f o
0016600 r e m a t c h i n g . C a
0016620 s e a r r a y s a r e r e
0016640 t u r n e d b y { f n C A
0016660 S E A R R A Y } o r { f n
0016700 S E P R C A S E } b e l o w .
0016720 { a r g C A S E A R R A Y
0016740 } = { l i s p N I L } m e a
0016760 n s n o t r a n s f o r m a
0017000 t i o n w i l l b e p e r
0017020 f o r m e d . \r \r A c a s e
0017040 a r r a y i s a n i m p l
0017060 e m e n t a t i o n - d e p e n
0017100 d e n t o b j e c t t h a t
0017120 i s l o g i c a l l y a n
0017140 a r r a y o f c h a r a c
0017160 t e r c o d e s w i t h o
0017200 n e e n t r y f o r e a c
0017220 h p o s s i b l e c h a r a
0017240 c t e r . { f n F I L E P
0017260 O S } m a p s e a c h c h
0017300 a r a c t e r i n t h e f
0017320 i l e " t h r o u g h " { a
0017340 r g C A S E A R R A Y } i n
0017360 t h e s e n s e t h a t
0017400 e a c h c h a r a c t e r c
0017420 o d e i s t r a n s f o r m
0017440 e d i n t o t h e c o r r
0017460 e s p o n d i n g c h a r a c
0017500 t e r c o d e f r o m { a
0017520 r g C A S E A R R A Y } b e
0017540 f o r e m a t c h i n g .
0017560 T h u s i f t w o c h a r
0017600 a c t e r s m a p i n t o
0017620 t h e s a m e v a l u e ,
0017640 t h e y a r e t r e a t e d
0017660 a s e q u i v a l e n t b
0017700 y { f n F I L E P O S } .
0017720 { f n C A S E A R R A Y }
0017740 a n d { f n S E T C A S E A
0017760 R R A Y } p r o v i d e a n
0020000 i m p l e m e n t a t i o n -
0020020 i n d e p e n d e n t i n t e
0020040 r f a c e t o c a s e a r
0020060 r a y s . \r \r \r F o r e x
0020100 a m p l e , t o s e a r c h
0020120 w i t h o u t r e g a r d
0020140 t o u p p e r a n d l o w
0020160 e r c a s e d i f f e r e n
0020200 c e s , { a r g C A S E A R
0020220 R A Y } w o u l d b e a
0020240 c a s e a r r a y w h e r e
0020260 a l l c h a r a c t e r s
0020300 m a p t o t h e m s e l v e
0020320 s , e x c e p t f o r l o
0020340 w e r c a s e c h a r a c t
0020360 e r s , w h o s e c o r r e
0020400 s p o n d i n g e l e m e n t
0020420 s w o u l d b e t h e u
0020440 p p e r c a s e c h a r a c
0020460 t e r s . T o s e a r c h
0020500 f o r a d e l i m i t e d
0020520 a t o m , o n e c o u l d
0020540 u s e " { a r g A T O M
0020560 } " a s t h e p a t t e
0020600 r n , a n d s p e c i f y
0020620 a c a s e a r r a y i n
0020640 w h i c h a l l o f t h e
0020660 b r e a k a n d s e p a r
0020700 a t o r c h a r a c t e r s
0020720 m a p p e d i n t o t h e
0020740 s a m e c o d e a s s p a
0020760 c e . \r } } \r \r \r F o r a p p
0021000 l i c a t i o n s c a l l i n
0021020 g f o r e x t e n s i v e
0021040 f i l e s e a r c h e s , t
0021060 h e f u n c t i o n { f n
0021100 F F I L E P O S } i s o f t
0021120 e n f a s t e r t h a n {
0021140 f n F I L E P O S } . \r \r { F
0021160 n D e f { F n N a m e F F I
0021200 L E P O S } { F n A r g s P
0021220 A T T E R N F I L E S T A R
0021240 T E N D S K I P T A I L
0021260 C A S E A R R A Y } \r { T e x t
0021300 \r L i k e { f n F I L E P O
0021320 S } , e x c e p t m u c h
0021340 f a s t e r i n m o s t a
0021360 p p l i c a t i o n s . { f
0021400 n F F I L E P O S } i s a
0021420 n i m p l e m e n t a t i o n
0021440 o f t h e B o y e r - M o
0021460 o r e f a s t s t r i n g
0021500 s e a r c h i n g a l g o r i
0021520 t h m { i n d e x B o y e r -
0021540 M o o r e f a s t s t r i n
0021560 g s e a r c h i n g a l g o
0021600 r i t h m } . T h i s a l
0021620 g o r i t h m p r e p r o c e
0021640 s s e s t h e s t r i n g
0021660 b e i n g s e a r c h e d f
0021700 o r a n d t h e n s c a n
0021720 s t h r o u g h t h e f i
0021740 l e i n s t e p s u s u a
0021760 l l y e q u a l t o t h e
0022000 l e n g t h o f t h e s
0022020 t r i n g . T h u s , { f
0022040 n F F I L E P O S } s p e e
0022060 d s u p r o u g h l y i n
0022100 p r o p o r t i o n t o t
0022120 h e l e n g t h o f t h e
0022140 s t r i n g , e . g . , a
0022160 s t r i n g o f l e n g t
0022200 h 1 0 w i l l b e f o u
0022220 n d t w i c e a s f a s t
0022240 a s a s t r i n g o f
0022260 l e n g t h 5 i n t h e
0022300 s a m e p o s i t i o n . \r \r
0022320 B e c a u s e o f c e r t a
0022340 i n f i x e d o v e r h e a
0022360 d s , i t i s g e n e r a
0022400 l l y b e t t e r t o u s
0022420 e { f n F I L E P O S } f
0022440 o r s h o r t s e a r c h e
0022460 s o r s h o r t s t r i n
0022500 g s . \r } } \r \r \r { F n D e f
0022520 { N a m e C A S E A R R A Y }
0022540 { A r g s O L D A R R A Y }
0022560 \r { T e x t \r C r e a t e s a
0022600 n d r e t u r n s a n e w
0022620 c a s e a r r a y , w i t
0022640 h a l l e l e m e n t s s
0022660 e t t o t h e m s e l v e s
0022700 , t o i n d i c a t e t h
0022720 e i d e n t i t y m a p p i
0022740 n g . I f { a r g O L D
0022760 A R R A Y } i s g i v e n ,
0023000 i t i s r e u s e d . \r }
0023020 } \r \r \r { F n D e f { N a m e
0023040 S E T C A S E A R R A Y } {
0023060 A r g s C A S E A R R A Y F
0023100 R O M C O D E T O C O D E } \r
0023120 { T e x t \r M o d i f i e s t
0023140 h e c a s e a r r a y { a
0023160 r g C A S E A R R A Y } s o
0023200 t h a t c h a r a c t e r
0023220 c o d e { a r g F R O M C O
0023240 D E } i s m a p p e d t o
0023260 c h a r a c t e r c o d e
0023300 { a r g T O C O D E } . \r } }
0023320 \r \r \r { F n D e f { N a m e
0023340 G E T C A S E A R R A Y } { A
0023360 r g s C A S E A R R A Y F R
0023400 O M C O D E } \r { T e x t \r R e
0023420 t u r n s t h e c h a r a c
0023440 t e r c o d e t h a t { a
0023460 r g F R O M C O D E } i s
0023500 m a p p e d t o i n { a r
0023520 g C A S E A R R A Y } . \r } }
0023540 \r \r \r { F n D e f { F n N a m
0023560 e S E P R C A S E } { F n A
0023600 r g s C L F L G } \r { T e x t
0023620 \r R e t u r n s a n e w c
0023640 a s e a r r a y s u i t a b
0023660 l e f o r u s e b y { f
0023700 n F I L E P O S } o r { f
0023720 n F F I L E P O S } i n w
0023740 h i c h a l l o f t h e
0023760 b r e a k / s e p a r a t o r s
0024000 o f { v a r F I L E R D T
0024020 B L } a r e m a p p e d i
0024040 n t o c h a r a c t e r c o
0024060 d e z e r o . I f { a r
0024100 g C L F L G } i s n o n -
0024120 { l i s p N I L } , t h e n
0024140 a l l C L I S P c h a r a
0024160 c t e r s a r e m a p p e d
0024200 i n t o t h i s c h a r a
0024220 c t e r a s w e l l . T
0024240 h i s i s u s e f u l f o
0024260 r f i n d i n g a d e l i
0024300 m i t e d a t o m i n a
0024320 f i l e . F o r e x a m p
0024340 l e , i f { a r g P A T T
0024360 E R N } i s { l i s p "
0024400 F O O " } , a n d { l i s
0024420 p ( S E P R C A S E T ) }
0024440 i s u s e d f o r { a r g
0024460 C A S E A R R A Y } , t h e
0024500 n { f n F I L E P O S } w
0024520 i l l f i n d { l i s p "
0024540 ( F O O _ " } . \r } } \r \r \r { V
0024560 a r D e f { N a m e U P P E
0024600 R C A S E A R R A Y } \r { T e x
0024620 t \r V a l u e i s a c a s
0024640 e a r r a y i n w h i c h
0024660 e v e r y l o w e r c a s e
0024700 c h a r a c t e r i s m a
0024720 p p e d i n t o t h e c o
0024740 r r e s p o n d i n g u p p e
0024760 r c a s e c h a r a c t e r .
0025000 U s e f u l f o r s e a
0025020 r c h i n g t e x t f i l e
0025040 s . \r } } \r \r \r \r } { E n d S
0025060 u b S e c R a n d o m A c c
0025100 e s s F i l e O p e r a t i
0025120 o n s } \r \r \r \r \r { B e g i n
0025140 S u b S e c I n p u t / O u t
0025160 p u t O p e r a t i o n s w
0025200 i t h C h a r a c t e r s a
0025220 n d B y t e s } \r { T i t l e
0025240 I n p u t / O u t p u t O p
0025260 e r a t i o n s w i t h C h
0025300 a r a c t e r s a n d B y t
0025320 e s } \r { T e x t \r \r { i n d e
0025340 x * P R I M A R Y * C h a r
0025360 a c t e r I / O } \r { i n d e
0025400 x * P R I M A R Y * N S c
0025420 h a r a c t e r I / O } \r \r I
0025440 n t e r l i s p - D s u p p o
0025460 r t s t h e 1 6 - b i t N
0025500 S c h a r a c t e r s e t
0025520 ( s e e { P a g e R e f T e
0025540 r m N S c h a r a c t e r s
0025560 } ) . A l l o f t h e
0025600 s t a n d a r d s t r i n g
0025620 a n d p r i n t n a m e f
0025640 u n c t i o n s a c c e p t
0025660 l i t a t o m s a n d s t r
0025700 i n g s c o n t a i n i n g
0025720 N S c h a r a c t e r s .
0025740 I n a l m o s t a l l c a
0025760 s e s , a p r o g r a m d
0026000 o e s n o t h a v e t o
0026020 d i s t i n g u i s h b e t w
0026040 e e n N S c h a r a c t e r
0026060 s o r 8 - b i t c h a r a
0026100 c t e r s . T h e e x c e
0026120 p t i o n t o t h i s r u
0026140 l e i s t h e h a n d l i
0026160 n g o f i n p u t / o u t p
0026200 u t o p e r a t i o n s . \r \r
0026220 { i n d e x C h a r a c t e r
0026240 s e t s } \r { i n d e x * P
0026260 R I M A R Y * R u n - e n c o
0026300 d i n g o f N S c h a r a
0026320 c t e r s } \r \r I n t e r l i s
0026340 p - D u s e s t w o w a y
0026360 s o f w r i t i n g 1 6 -
0026400 b i t N S c h a r a c t e r
0026420 s o n f i l e s . O n e
0026440 w a y i s t o w r i t e
0026460 t h e f u l l 1 6 - b i t
0026500 s ( t w o b y t e s ) e v
0026520 e r y t i m e a c h a r a
0026540 c t e r i s o u t p u t .
0026560 T h e o t h e r w a y i
0026600 s t o u s e " r u n - e n
0026620 c o d i n g . " E a c h 1
0026640 6 N S c h a r a c t e r c
0026660 a n b e d e c o d e d i n
0026700 t o a c h a r a c t e r s
0026720 e t ( a n i n t e g e r f
0026740 r o m 0 t o 2 5 4 i n c
0026760 l u s i v e ) a n d a c h
0027000 a r a c t e r n u m b e r (
0027020 a l s o a n i n t e g e r
0027040 f r o m 0 t o 2 5 4 i n
0027060 c l u s i v e ) . I n r u
0027100 n - e n c o d i n g , t h e
0027120 b y t e 2 5 5 ( i l l e g a
0027140 l a s e i t h e r a c h
0027160 a r a c t e r s e t n u m b
0027200 e r o r a c h a r a c t e
0027220 r n u m b e r ) i s u s e
0027240 d t o s i g n a l a c h
0027260 a n g e t o a g i v e n
0027300 c h a r a c t e r s e t , a
0027320 n d t h e f o l l o w i n g
0027340 b y t e s a r e a l l a
0027360 s s u m e d t o c o m e f
0027400 r o m t h e s a m e c h a
0027420 r a c t e r s e t ( u n t i
0027440 l t h e n e x t c h a n g
0027460 e - c h a r a c t e r s e t
0027500 s e q u e n c e ) . R u n -
0027520 e n c o d i n g c a n r e d
0027540 u c e t h e n u m b e r o
0027560 f b y t e s r e q u i r e d
0027600 t o e n c o d e a s t r
0027620 i n g o f N S c h a r a c
0027640 t e r s , a s l o n g a s
0027660 t h e r e a r e l o n g
0027700 s e q u e n c e s o f c h a
0027720 r a c t e r s f r o m t h e
0027740 s a m e c h a r a c t e r
0027760 s e t ( u s u a l l y t h e
0030000 c a s e ) . \r \r \r { i t N o
0030020 t e t h a t c h a r a c t e
0030040 r s a r e n o t t h e s
0030060 a m e a s b y t e s . }
0030100 A s i n g l e c h a r a c t
0030120 e r c a n t a k e a n y w
0030140 h e r e f r o m o n e t o
0030160 f o u r b y t e s b y t e
0030200 s , d e p e n d i n g o n
0030220 w h e t h e r i t i s i n
0030240 t h e s a m e c h a r a c
0030260 t e r s e t a s t h e p
0030300 r e c e e d i n g c h a r a c
0030320 t e r , a n d w h e t h e r
0030340 r u n - e n c o d i n g i s
0030360 e n a b l e d . P r o g r
0030400 a m s w h i c h a s s u m e
0030420 t h a t c h a r a c t e r s
0030440 a r e e q u a l t o b y
0030460 t e s m u s t b e c h a n
0030500 g e d t o w o r k w i t h
0030520 N S c h a r a c t e r s . \r
0030540 \r T h e f u n c t i o n s {
0030560 f n B I N } ( { P a g e R e
0030600 f F n B I N } ) a n d {
0030620 f n B O U T } ( { P a g e R
0030640 e f F n B O U T } ) s h o
0030660 u l d o n l y b e u s e d
0030700 t o r e a d a n d w r i
0030720 t e s i n g l e e i g h t -
0030740 b i t b y t e s . T h e
0030760 f u n c t i o n s { f n R E
0031000 A D C C O D E } ( { P a g e R
0031020 e f F n R E A D C C O D E }
0031040 ) a n d { f n P R I N T C C
0031060 O D E } ( { P a g e R e f F
0031100 n P R I N T C C O D E } ) s
0031120 h o u l d b e u s e d t o
0031140 r e a d a n d w r i t e
0031160 s i n g l e c h a r a c t e r
0031200 c o d e s , i n t e r p r e
0031220 t i n g r u n - e n c o d e d
0031240 N S c h a r a c t e r s .
0031260 { f n C O P Y B Y T E S }
0031300 ( { P a g e R e f F n C O P
0031320 Y B Y T E S } ) s h o u l d
0031340 o n l y b e u s e d t o
0031360 c o p y b l o c k s o f 8
0031400 - b i t d a t a ; { f n C
0031420 O P Y C H A R S } s h o u l d
0031440 b e u s e d t o c o p y
0031460 c h a r a c t e r s . M o
0031500 s t I / O f u n c t i o n s
0031520 ( { f n R E A D C } , { f
0031540 n P R I N 1 } , e t c . )
0031560 r e a d o r w r i t e 1 6
0031600 - b i t N S c h a r a c t e
0031620 r s . \r \r { i n d e x F i l e
0031640 p o i n t e r s } \r \r T h e
0031660 u s e o f N S c h a r a c
0031700 t e r s h a s s e r i o u s
0031720 c o n s e q u e n c e s f o
0031740 r a n y p r o g r a m t h
0031760 a t u s e s f i l e p o i
0032000 n t e r s t o a c c e s s
0032020 a f i l e i n a r a n d
0032040 o m a c c e s s m a n n e r
0032060 . A t a n y p o i n t
0032100 w h e n a f i l e i s b
0032120 e i n g r e a d o r w r i
0032140 t t e n , i t h a s a "
0032160 c u r r e n t c h a r a c t e
0032200 r s e t . " I f t h e
0032220 f i l e p o i n t e r i s
0032240 c h a n g e d w i t h { f n
0032260 S E T F I L E P T R } ( { P
0032300 a g e R e f F n S E T F I L
0032320 E P T R } ) t o a p a r t
0032340 o f t h e f i l e w i t
0032360 h a d i f f e r e n t c h
0032400 a r a c t e r s e t , a n y
0032420 c h a r a c t e r s r e a d
0032440 o r w r i t t e n m a y
0032460 h a v e t h e w r o n g c
0032500 h a r a c t e r s e t . T
0032520 h e c u r r e n t c h a r a
0032540 c t e r s e t c a n b e
0032560 a c c e s s e d w i t h t h
0032600 e f o l l o w i n g f u n c
0032620 t i o n : \r \r { F n D e f { N
0032640 a m e C H A R S E T } { A r
0032660 g s S T R E A M C H A R A C
0032700 T E R S E T } \r { T e x t \r R e
0032720 t u r n s t h e c u r r e n
0032740 t c h a r a c t e r s e t
0032760 o f t h e s t r e a m { a
0033000 r g S T R E A M } . I f
0033020 { a r g C H A R A C T E R S E
0033040 T } i s n o n - { l i s p
0033060 N I L } , t h e c u r r e n
0033100 t c h a r a c t e r s e t
0033120 f o r { a r g S T R E A M }
0033140 i s s e t . N o t e t
0033160 h a t f o r o u t p u t s
0033200 t r e a m s t h i s m a y
0033220 c a u s e b y t e s t o b
0033240 e w r i t t e n t o t h e
0033260 s t r e a m . \r \r I f { a r
0033300 g C H A R A C T E R S E T }
0033320 i s { l i s p T } , r u n
0033340 e n c o d i n g f o r { a
0033360 r g S T R E A M } i s d i
0033400 s a b l e d : b o t h t h e
0033420 c h a r a c t e r s e t a
0033440 n d t h e c h a r a c t e r
0033460 n u m b e r ( t w o b y t
0033500 e s t o t a l ) w i l l b
0033520 e w r i t t e n t o t h e
0033540 s t r e a m f o r e a c h
0033560 c h a r a c t e r p r i n t
0033600 e d . \r } } \r \r \r } { E n d
0033620 S u b S e c I n p u t / O u
0033640 t p u t O p e r a t i o n s
0033660 w i t h C h a r a c t e r s
0033700 a n d B y t e s } \r \r \0 \0 \0 \0
0033720 \0 005 \0 002 \0 ( \0 \0 \0 \0 \0 \0 \0 \0 \0 \0
0033740 \0 \0 002 001 \0 \0 \0 \0 \0 \0 \0 \0 \0 \0 \0 \0
0033760 \0 \0 \0 \0 \0 \0 \0 \0 \0 \0 \0 \0 \0 ( \0 \0
0034000 \0 \0 \0 \0 \0 \0 \0 \0 \0 \0 002 001 \0 \0 \0 \0
0034020 \0 \0 \0 \0 \0 \0 \0 \0 \0 \0 \0 \0 \0 \0 \0 \0
0034040 \0 \0 \0 \0 \0 \0 \0 \0 \0 004 \0 002 \0 ? \0 1
0034060 ( D E F A U L T F O N T 1 (
0034100 G A C H A 1 0 ) ( G A C H A
0034120 8 ) ( T E R M I N A L 8 )
0034140 ) \0 \n \0 \0 \0 \0 \0 \0 \0 \0 \0 ? \0 1 (
0034160 D E F A U L T F O N T 1 ( G
0034200 A C H A 1 0 ) ( G A C H A
0034220 8 ) ( T E R M I N A L 8 ) )
0034240 \0 \n \0 \0 \0 \0 \0 \0 \0 \0 \0 \0 \0 \0 \0 002
0034260 \0 002 \0 \0 \0 001 \0 \0 \0 \0 002 \0 \0 \0 \0 \0
0034300 002 \0 002 \0 \0 \0 001 \0 \0 \0 \0 002 \0 \0 \0 \0
0034320 \0 002 \0 002 \0 \0 \0 - \0 \0 \0 \0 002 \0 \0 \0
0034340 \0 \0 002 \0 002 \0 \0 \0 & \0 \0 \0 \0 002 \0 \0
0034360 \0 \0 \0 002 \0 002 \0 \0 \0 006 \0 \0 \0 \0 002 \0
0034400 \0 \0 \0 \0 002 \0 002 \0 \0 \0 001 \0 \0 \0 \0 002
0034420 \0 \0 \0 \0 \0 002 \0 002 \0 \0 \0 , \0 \0 \0 \0
0034440 002 \0 \0 \0 \0 \0 002 \0 002 \0 \0 \0 017 \0 \0 \0
0034460 \0 002 \0 \0 \0 \0 \0 002 \0 002 \0 \0 \0 001 \0 \0
0034500 \0 \0 002 \0 \0 \0 \0 \0 002 \0 002 \0 \0 003 030 \0
0034520 \0 \0 \0 002 \0 \0 \0 \0 \0 002 \0 002 \0 \0 \0 001
0034540 \0 \0 \0 \0 002 \0 \0 \0 \0 \0 002 \0 002 \0 \0 \0
0034560 \0 \0 \0 \0 002 \0 \0 \0 \0 \0 002 \0 002 \0 \0
0034600 \0 001 \0 \0 \0 \0 002 \0 \0 \0 \0 \0 002 \0 002 \0
0034620 \0 005 351 \0 \0 \0 \0 002 \0 \0 \0 \0 \0 002 \0 002
0034640 \0 \0 \0 001 \0 \0 \0 \0 002 \0 \0 \0 \0 \0 002 \0
0034660 002 \0 \0 \0 001 \0 \0 \0 \0 002 \0 \0 \0 \0 \0 002
0034700 \0 002 \0 \0 002 346 \0 \0 \0 \0 002 \0 \0 \0 \0 \0
0034720 002 \0 002 \0 \0 \0 001 \0 \0 \0 \0 002 \0 \0 \0 \0
0034740 \0 002 \0 002 \0 \0 \0 001 \0 \0 \0 \0 002 \0 \0 \0
0034760 \0 \0 002 \0 002 \0 \0 \0 ) \0 \0 \0 \0 002 \0 \0
0035000 \0 \0 \0 002 \0 002 \0 \0 \0 006 \0 \0 \0 \0 002 \0
0035020 \0 \0 \0 \0 002 \0 002 \0 \0 \0 220 \0 \0 \0 \0 002
0035040 \0 \0 \0 \0 \0 002 \0 002 \0 \0 \0 003 \0 \0 \0 \0
0035060 002 \0 \0 \0 \0 \0 002 \0 002 \0 \0 \0 001 \0 \0 \0
0035100 \0 002 \0 \0 \0 \0 \0 002 \0 002 \0 \0 \0 001 \0 \0
0035120 \0 \0 002 \0 \0 \0 \0 \0 002 \0 002 \0 \0 \0 - \0
0035140 \0 \0 \0 002 \0 \0 \0 \0 \0 002 \0 002 \0 \0 \0 006
0035160 \0 \0 \0 \0 002 \0 \0 \0 \0 \0 002 \0 002 \0 \0 \0
0035200 306 \0 \0 \0 \0 002 \0 \0 \0 \0 \0 002 \0 002 \0 \0
0035220 \0 001 \0 \0 \0 \0 002 \0 \0 \0 \0 \0 002 \0 002 \0
0035240 \0 002 ] \0 \0 \0 \0 002 \0 \0 \0 \0 \0 002 \0 002
0035260 \0 \0 \0 003 \0 \0 \0 \0 002 \0 \0 \0 \0 \0 002 \0
0035300 002 \0 \0 \0 001 \0 \0 \0 \0 002 \0 \0 \0 \0 \0 002
0035320 \0 002 \0 \0 \0 001 \0 \0 \0 \0 002 \0 \0 \0 \0 \0
0035340 002 \0 002 \0 \0 \0 ( \0 \0 \0 \0 002 \0 \0 \0 \0
0035360 \0 002 \0 002 \0 \0 \0 006 \0 \0 \0 \0 002 \0 \0 \0
0035400 \0 \0 002 \0 002 \0 \0 \0 366 \0 \0 \0 \0 002 \0 \0
0035420 \0 \0 \0 002 \0 002 \0 \0 \0 003 \0 \0 \0 \0 002 \0
0035440 \0 \0 \0 \0 002 \0 002 \0 \0 \0 001 \0 \0 \0 \0 002
0035460 \0 \0 \0 \0 \0 002 \0 002 \0 \0 \0 001 \0 \0 \0 \0
0035500 002 \0 \0 \0 \0 \0 002 \0 002 \0 \0 \0 001 \0 \0 \0
0035520 \0 002 \0 \0 \0 \0 \0 002 \0 002 \0 \0 \0 * \0 \0
0035540 \0 \0 002 \0 \0 \0 \0 \0 002 \0 002 \0 \0 \0 006 \0
0035560 \0 \0 \0 002 \0 \0 \0 \0 \0 002 \0 002 \0 \0 001 033
0035600 \0 \0 \0 \0 002 \0 \0 \0 \0 \0 002 \0 002 \0 \0 \0
0035620 003 \0 \0 \0 \0 002 \0 \0 \0 \0 \0 002 \0 002 \0 \0
0035640 \0 001 \0 \0 \0 \0 002 \0 \0 \0 \0 \0 002 \0 002 \0
0035660 \0 \0 001 \0 \0 \0 \0 002 \0 \0 \0 \0 \0 002 \0 002
0035700 \0 \0 \0 ; \0 \0 \0 \0 002 \0 \0 \0 \0 \0 002 \0
0035720 002 \0 \0 \0 006 \0 \0 \0 \0 002 \0 \0 \0 \0 \0 002
0035740 \0 002 \0 \0 \0 310 \0 \0 \0 \0 002 \0 \0 \0 \0 \0
0035760 002 \0 002 \0 \0 \0 001 \0 \0 \0 \0 002 \0 \0 \0 \0
0036000 \0 002 \0 002 \0 \0 \0 322 \0 \0 \0 \0 002 \0 \0 \0
0036020 \0 \0 002 \0 002 \0 \0 \0 001 \0 \0 \0 \0 002 \0 \0
0036040 \0 \0 \0 002 \0 002 \0 \0 \0 325 \0 \0 \0 \0 002 \0
0036060 \0 \0 \0 \0 002 \0 002 \0 \0 \0 003 \0 \0 \0 \0 002
0036100 \0 \0 \0 \0 \0 002 \0 002 \0 \0 \0 001 \0 \0 \0 \0
0036120 002 \0 \0 \0 \0 \0 002 \0 002 \0 \0 \0 001 \0 \0 \0
0036140 \0 002 \0 \0 \0 \0 \0 002 \0 002 \0 \0 \0 ; \0 \0
0036160 \0 \0 002 \0 \0 \0 \0 \0 002 \0 002 \0 \0 \0 006 \0
0036200 \0 \0 \0 002 \0 \0 \0 \0 \0 002 \0 002 \0 \0 002 310
0036220 \0 \0 \0 \0 002 \0 \0 \0 \0 \0 002 \0 002 \0 \0 \0
0036240 003 \0 \0 \0 \0 002 \0 \0 \0 \0 \0 002 \0 002 \0 \0
0036260 \0 001 \0 \0 \0 \0 002 \0 \0 \0 \0 \0 002 \0 002 \0
0036300 \0 \0 001 \0 \0 \0 \0 002 \0 \0 \0 \0 \0 002 \0 002
0036320 \0 \0 \0 001 \0 \0 \0 \0 002 \0 \0 \0 \0 \0 002 \0
0036340 002 \0 \0 \0 001 \0 \0 \0 \0 002 \0 \0 \0 \0 \0 002
0036360 \0 002 \0 \0 \0 " \0 \0 \0 \0 002 \0 \0 \0 \0 \0
0036400 002 \0 002 \0 \0 \0 001 \0 \0 \0 \0 002 \0 \0 \0 \0
0036420 \0 002 \0 002 \0 \0 \0 001 \0 \0 \0 \0 002 \0 \0 \0
0036440 \0 \0 002 \0 002 \0 \0 \0 L \0 \0 \0 \0 002 \0 \0
0036460 \0 \0 \0 002 \0 002 \0 \0 \0 006 \0 \0 \0 \0 002 \0
0036500 \0 \0 \0 \0 002 \0 002 \0 \0 \0 253 \0 \0 \0 \0 002
0036520 \0 \0 \0 \0 \0 002 \0 002 \0 \0 \0 376 \0 \0 \0 \0
0036540 002 \0 \0 \0 \0 \0 002 \0 002 \0 \0 \0 001 \0 \0 \0
0036560 \0 002 \0 \0 \0 \0 \0 002 \0 002 \0 \0 001 310 \0 \0
0036600 \0 \0 002 \0 \0 \0 \0 \0 002 \0 002 \0 \0 \0 001 \0
0036620 \0 \0 \0 002 \0 \0 \0 \0 \0 002 \0 002 \0 \0 001 )
0036640 \0 \0 \0 \0 002 \0 \0 \0 \0 \0 002 \0 002 \0 \0 \0
0036660 001 \0 \0 \0 \0 002 \0 \0 \0 \0 \0 002 \0 002 \0 \0
0036700 002 037 \0 \0 \0 \0 002 \0 \0 \0 \0 \0 002 \0 002 \0
0036720 \0 \0 001 \0 \0 \0 \0 002 \0 \0 \0 \0 \0 002 \0 002
0036740 \0 \0 \0 001 \0 \0 \0 \0 002 \0 \0 \0 \0 \0 002 \0
0036760 002 \0 \0 001 272 \0 \0 \0 \0 002 \0 \0 \0 \0 \0 002
0037000 \0 002 \0 \0 \0 003 \0 \0 \0 \0 002 \0 \0 \0 \0 \0
0037020 002 \0 002 \0 \0 \0 001 \0 \0 \0 \0 002 \0 \0 \0 \0
0037040 \0 002 \0 002 \0 \0 \0 001 \0 \0 \0 \0 002 \0 \0 \0
0037060 \0 \0 002 \0 002 \0 \0 \0 t \0 \0 \0 \0 002 \0 \0
0037100 \0 \0 \0 002 \0 002 \0 \0 \0 001 \0 \0 \0 \0 002 \0
0037120 \0 \0 \0 \0 002 \0 002 \0 \0 \0 M \0 \0 \0 \0 002
0037140 \0 \0 \0 \0 \0 002 \0 002 \0 \0 \0 006 \0 \0 \0 \0
0037160 002 \0 \0 \0 \0 \0 002 \0 002 \0 \0 002 016 \0 \0 \0
0037200 \0 002 \0 \0 \0 \0 \0 002 \0 002 \0 \0 \0 001 \0 \0
0037220 \0 \0 002 \0 \0 \0 \0 \0 002 \0 002 \0 \0 \0 t \0
0037240 \0 \0 \0 002 \0 \0 \0 \0 \0 002 \0 002 \0 \0 \0 003
0037260 \0 \0 \0 \0 002 \0 \0 \0 \0 \0 002 \0 002 \0 \0 \0
0037300 001 \0 \0 \0 \0 002 \0 \0 \0 \0 \0 002 \0 002 \0 \0
0037320 \0 001 \0 \0 \0 \0 002 \0 \0 \0 \0 \0 002 \0 002 \0
0037340 \0 \0 ( \0 \0 \0 \0 002 \0 \0 \0 \0 \0 002 \0 002
0037360 \0 \0 \0 006 \0 \0 \0 \0 002 \0 \0 \0 \0 \0 002 \0
0037400 002 \0 \0 \0 230 \0 \0 \0 \0 002 \0 \0 \0 \0 \0 002
0037420 \0 002 \0 \0 \0 003 \0 \0 \0 \0 002 \0 \0 \0 \0 \0
0037440 002 \0 002 \0 \0 \0 001 \0 \0 \0 \0 002 \0 \0 \0 \0
0037460 \0 002 \0 002 \0 \0 \0 001 \0 \0 \0 \0 002 \0 \0 \0
0037500 \0 \0 002 \0 002 \0 \0 \0 < \0 \0 \0 \0 002 \0 \0
0037520 \0 \0 \0 002 \0 002 \0 \0 \0 006 \0 \0 \0 \0 002 \0
0037540 \0 \0 \0 \0 002 \0 002 \0 \0 \0 x \0 \0 \0 \0 002
0037560 \0 \0 \0 \0 \0 002 \0 002 \0 \0 \0 003 \0 \0 \0 \0
0037600 002 \0 \0 \0 \0 \0 002 \0 002 \0 \0 \0 001 \0 \0 \0
0037620 \0 002 \0 \0 \0 \0 \0 002 \0 002 \0 \0 \0 001 \0 \0
0037640 \0 \0 002 \0 \0 \0 \0 \0 002 \0 002 \0 \0 \0 5 \0
0037660 \0 \0 \0 002 \0 \0 \0 \0 \0 002 \0 002 \0 \0 \0 006
0037700 \0 \0 \0 \0 002 \0 \0 \0 \0 \0 002 \0 002 \0 \0 \0
0037720 P \0 \0 \0 \0 002 \0 \0 \0 \0 \0 002 \0 002 \0 \0
0037740 \0 003 \0 \0 \0 \0 002 \0 \0 \0 \0 \0 002 \0 002 \0
0037760 \0 \0 001 \0 \0 \0 \0 002 \0 \0 \0 \0 \0 002 \0 002
0040000 \0 \0 \0 001 \0 \0 \0 \0 002 \0 \0 \0 \0 \0 002 \0
0040020 002 \0 \0 \0 ( \0 \0 \0 \0 002 \0 \0 \0 \0 \0 002
0040040 \0 002 \0 \0 \0 006 \0 \0 \0 \0 002 \0 \0 \0 \0 \0
0040060 002 \0 002 \0 \0 001 330 \0 \0 \0 \0 002 \0 \0 \0 \0
0040100 \0 002 \0 002 \0 \0 \0 003 \0 \0 \0 \0 002 \0 \0 \0
0040120 \0 \0 002 \0 002 \0 \0 \0 001 \0 \0 \0 \0 002 \0 \0
0040140 \0 \0 \0 002 \0 002 \0 \0 \0 001 \0 \0 \0 \0 002 \0
0040160 \0 \0 \0 \0 002 \0 002 \0 \0 \0 036 \0 \0 \0 \0 002
0040200 \0 \0 \0 \0 \0 002 \0 002 \0 \0 \0 006 \0 \0 \0 \0
0040220 002 \0 \0 \0 \0 \0 002 \0 002 \0 \0 \0 221 \0 \0 \0
0040240 \0 002 \0 \0 \0 \0 \0 002 \0 002 \0 \0 \0 003 \0 \0
0040260 \0 \0 002 \0 \0 \0 \0 \0 002 \0 002 \0 \0 \0 001 \0
0040300 \0 \0 \0 002 \0 \0 \0 \0 \0 002 \0 002 \0 \0 \0 001
0040320 \0 \0 \0 \0 002 \0 \0 \0 \0 \0 002 \0 002 \0 \0 \0
0040340 001 \0 \0 \0 \0 002 \0 \0 \0 \0 \0 002 \0 002 \0 \0
0040360 \0 , \0 \0 \0 \0 002 \0 \0 \0 \0 \0 002 \0 002 \0
0040400 \0 \0 001 \0 \0 \0 \0 002 \0 \0 \0 \0 \0 002 \0 002
0040420 \0 \0 \0 001 \0 \0 \0 \0 002 \0 \0 \0 \0 \0 002 \0
0040440 002 \0 \0 \0 001 \0 \0 \0 \0 002 \0 \0 \0 \0 \0 002
0040460 \0 002 \0 \0 \0 001 \0 \0 \0 \0 002 \0 \0 \0 \0 \0
0040500 002 \0 002 \0 \0 \0 A \0 \0 \0 \0 002 \0 \0 \0 \0
0040520 \0 002 \0 002 \0 \0 \0 : \0 \0 \0 \0 002 \0 \0 \0
0040540 \0 \0 002 \0 002 \0 \0 \0 006 \0 \0 \0 \0 002 \0 \0
0040560 \0 \0 \0 002 \0 002 \0 \0 \0 001 \0 \0 \0 \0 002 \0
0040600 \0 \0 \0 \0 002 \0 002 \0 \0 \0 \0 \0 \0 \0 002
0040620 \0 \0 \0 \0 \0 002 \0 002 \0 \0 \0 # \0 \0 \0 \0
0040640 002 \0 \0 \0 \0 \0 002 \0 002 \0 \0 \0 001 \0 \0 \0
0040660 \0 002 \0 \0 \0 \0 \0 002 \0 002 \0 \0 001 p \0 \0
0040700 \0 \0 002 \0 \0 \0 \0 \0 002 \0 002 \0 \0 \0 001 \0
0040720 \0 \0 \0 002 \0 \0 \0 \0 \0 002 \0 002 \0 \0 \0 027
0040740 \0 \0 \0 \0 001 \0 \0 \0 \0 \0 002 \0 002 \0 \0 \0
0040760 0 \0 \0 \0 \0 002 \0 \0 \0 \0 \0 002 \0 002 \0 \0
0041000 \0 001 \0 \0 \0 \0 002 \0 \0 \0 \0 \0 002 \0 002 \0
0041020 \0 003 0 \0 \0 \0 \0 002 \0 \0 \0 \0 \0 002 \0 002
0041040 \0 \0 \0 001 \0 \0 \0 \0 002 \0 \0 \0 \0 \0 002 \0
0041060 002 \0 \0 \0 001 \0 \0 \0 \0 002 \0 \0 \0 \0 \0 002
0041100 \0 002 \0 \0 001 V \0 \0 \0 \0 002 \0 \0 \0 \0 \0
0041120 002 \0 002 \0 \0 \0 001 \0 \0 \0 \0 002 \0 \0 \0 \0
0041140 \0 002 \0 002 \0 \0 002 3 \0 \0 \0 \0 002 \0 \0 \0
0041160 \0 \0 002 \0 002 \0 \0 \0 001 \0 \0 \0 \0 002 \0 \0
0041200 \0 \0 \0 002 \0 002 \0 \0 \0 026 \0 \0 \0 \0 002 \0
0041220 \0 \0 \0 \0 002 \0 002 \0 \0 \0 001 \0 \0 \0 \0 002
0041240 \0 \0 \0 \0 \0 002 \0 002 \0 \0 001 352 \0 \0 \0 \0
0041260 002 \0 \0 \0 \0 \0 002 \0 002 \0 \0 \0 001 \0 \0 \0
0041300 \0 002 \0 \0 \0 \0 \0 002 \0 001 \0 \0 \0 1 \0 \0
0041320 \0 \0 001 \0 \0 \0 \0 \0 002 \0 001 \0 \0 \0 006 \0
0041340 \0 \0 \0 001 \0 \0 \0 \0 \0 002 \0 001 \0 \0 \0 353
0041360 \0 \0 \0 \0 001 \0 \0 \0 \0 \0 002 \0 001 \0 \0 \0
0041400 001 \0 \0 \0 \0 001 \0 \0 \0 \0 \0 002 \0 001 \0 \0
0041420 \0 314 \0 \0 \0 \0 001 \0 \0 \0 \0 \0 002 \0 001 \0
0041440 \0 \0 003 \0 \0 \0 \0 001 \0 \0 \0 \0 \0 002 \0 002
0041460 \0 \0 \0 001 \0 \0 \0 \0 002 \0 \0 \0 \0 \0 002 \0
0041500 002 \0 \0 \0 001 \0 \0 \0 \0 002 \0 \0 \0 \0 \0 002
0041520 \0 002 \0 \0 \0 @ \0 \0 \0 \0 002 \0 \0 \0 \0 \0
0041540 002 \0 002 \0 \0 \0 001 \0 \0 \0 \0 002 \0 \0 \0 \0
0041560 \0 002 \0 002 \0 \0 7 314 001 E z 272
0041574