$ od -c -N 50000 [eris]<LispCore>SOURCES>CMLARRAY!9
0000000 ( D E F I N E - F I L E - I N F
0000020 O 247 R E A D T A B L E " X C
0000040 L " 247 P A C K A G E " I N T
0000060 E R L I S P " ) \r 006 001 ( f i l e
0000100 c r e a t e d " 1 7 - O c t -
0000120 8 6 1 7 : 4 7 : 4 2 " 006 004 {
0000140 e r i s } < l i s p c o r e > s
0000160 o u r c e s > c m l a r r a y .
0000200 \ ; 9 006 001 1 2 9 3 8 7 \r \r
0000220 | c h a n g e s | |
0000240 t o : | ( f n s % g e t -
0000260 c a n o n i c a l - c m l - t y
0000300 p e ) \r
0000320 ( v a r s
0000340 c m l a r r a y c o m s ) \r
0000360
0000400 ( f u n c t i o n s
0000420 b i t ) \r \r | p r
0000440 e v i o u s | | d a t e : |
0000460 " 1 4 - O c t - 8 6 1 4 : 3 2
0000500 : 1 3 " { e r i s } < l i s p
0000520 c o r e > s o u r c e s > c m l
0000540 a r r a y . \ ; 7 ) \r \r \r ; C
0000560 o p y r i g h t ( c ) 1 9 8
0000600 6 b y X e r o x C o r p o
0000620 r a t i o n . A l l r i g
0000640 h t s r e s e r v e d . \r \r (
0000660 p r e t t y c o m p r i n t c
0000700 m l a r r a y c o m s ) \r \r ( r
0000720 p a q q 006 002 c m l a r r a y c
0000740 o m s 006 001 \r ( (
0000760 * | ; ; | " C o n t a i n s
0001000 t a b l e d r i v e n m a
0001020 c r o s " ) \r (
0001040 d e c l a r e \ : d o n t c o
0001060 p y e v a l @ c o m p i l e
0001100 ( e x p o r t ( f i l e s (
0001120 s y s l o a d f r o m v a l
0001140 u e o f d i r e c t o r i e s
0001160 ) \r
0001200
*
0001240 c m l a r r
0001260 a y - s u p p o r t ) ) ) \r
0001300 ( * | ; ; | " U
0001320 s e r e n t r y p o i n t s
0001340 " ) \r ( f u n c
0001360 t i o n s c l : a d j u s t -
0001400 a r r a y c l : a d j u s t a
0001420 b l e - a r r a y - p c l : a
0001440 r r a y - d i m e n s i o n c
0001460 l : a r r a y - d i m e n s i o
0001500 n s \r
0001520 c l : a r r a y - e l e m
0001540 e n t - t y p e c l : a r r a
0001560 y - h a s - f i l l - p o i n t
0001600 e r - p a r r a y - n e e d s
0001620 - i n d i r e c t i o n - p \r
0001640 c
0001660 l : a r r a y - r a n k c l :
0001700 a r r a y - t o t a l - s i z e
0001720 b i t c l : b i t - a n d
0001740 c l : b i t - a n d c 1 c l :
0001760 b i t - a n d c 2 b i t - a r
0002000 r a y - p \r
0002020 c l : b i t - e q v
0002040 c l : b i t - i o r c l : b
0002060 i t - n a n d c l : b i t - n
0002100 o r c l : b i t - n o t c l
0002120 : b i t - o r c 1 c l : b i t
0002140 - o r c 2 \r
0002160 c l : b i t - v e c
0002200 t o r - p c l : b i t - x o r
0002220 c h a r c l : a r r a y p
0002240 c l : s t r i n g p c o p y -
0002260 a r r a y d i s p l a c e d -
0002300 a r r a y - p \r
0002320 e q u a l - d i
0002340 m e n s i o n s - p e x t e n
0002360 d a b l e - a r r a y - p f i
0002400 l l - a r r a y c l : f i l l
0002420 - p o i n t e r f i l l - v e
0002440 c t o r \r
0002460 c l : m a k e - a r r
0002500 a y m a k e - v e c t o r r
0002520 e a d - o n l y - a r r a y - p
0002540 c l : s b i t c l : s c h a
0002560 r s e t - f i l l - p o i n t
0002600 e r \r
0002620 s i m p l e - a r r a y -
0002640 p c l : s i m p l e - b i t -
0002660 v e c t o r - p c l : s i m p
0002700 l e - s t r i n g - p c l : s
0002720 i m p l e - v e c t o r - p \r
0002740 s
0002760 t r i n g - a r r a y - p c l
0003000 : s v r e f v e c t o r - l e
0003020 n g t h c l : v e c t o r - p
0003040 o p c l : v e c t o r - p u s
0003060 h \r
0003100 c l : v e c t o r - p u s h
0003120 - e x t e n d c l : v e c t o
0003140 r p ) \r ( f n s
0003160 % c o p y - t o - n e w - a r
0003200 r a y c l : a r e f c l : a
0003220 r r a y - i n - b o u n d s - p
0003240 c l : a r r a y - r o w - m a
0003260 j o r - i n d e x a s e t c
0003300 l : v e c t o r ) \r
0003320 ( * | ; ; | " O b s o l
0003340 e t e b u t r e t a i n e d
0003360 t o a v o i d r e c o m p
0003400 i l a t i o n " ) \r
0003420 ( f n s s c h a r s e t )
0003440 \r ( * | ; ; |
0003460 " V a r s e t c " ) \r
0003500 ( * \ ; " * P R I
0003520 N T - A R R A Y * i s d e f
0003540 i n e d i n A P R I N T " )
0003560 \r ( v a r i a b
0003600 l e s c l : a r r a y - r a n
0003620 k - l i m i t c l : a r r a y
0003640 - t o t a l - s i z e - l i m i
0003660 t c l : a r r a y - d i m e n
0003700 s i o n - l i m i t \r
0003720 * d e f a
0003740 u l t - p u s h - e x t e n s i
0003760 o n - s i z e * ) \r
0004000 ( * | ; ; | " I n t e r
0004020 n a l s t u f f " ) \r
0004040 ( f n s % a l t e r -
0004060 a s - d i s p l a c e d - a r r
0004100 a y % a l t e r - a s - d i s
0004120 p l a c e d - t o - b a s e - a
0004140 r r a y % a r e f 0 % a r e
0004160 f 1 % a r e f 2 \r
0004200 % a r r a y - b
0004220 a s e % a r r a y - c o n t e
0004240 n t - i n i t i a l i z e % a
0004260 r r a y - e l e m e n t - i n i
0004300 t i a l i z e % a r r a y - o
0004320 f f s e t \r
0004340 % a r r a y - t y p e -
0004360 n u m b e r % a s e t 0 % a
0004400 s e t 1 % a s e t 2 % c h e
0004420 c k - s e q u e n c e - d i m e
0004440 n s i o n s % d o - l o g i c
0004460 a l - o p \r
0004500 % e x t e n d - a r r a
0004520 y % f a s t - c o p y - b a s
0004540 e % f a t - s t r i n g - a r
0004560 r a y - p % f i l l - a r r a
0004600 y - f r o m - s e q u e n c e
0004620 \r % f
0004640 l a t t e n - a r r a y % m a
0004660 k e - a r r a y - w r i t e a b
0004700 l e % m a k e - d i s p l a c
0004720 e d - a r r a y % m a k e - g
0004740 e n e r a l - a r r a y \r
0004760 % m a k e
0005000 - o n e d - a r r a y % m a k
0005020 e - s t r i n g - a r r a y - f
0005040 a t % m a k e - t w o d - a r
0005060 r a y % t o t a l - s i z e
0005100 s h r i n k - v e c t o r ) \r
0005120 ( * \ ; " F o
0005140 r I n t e r l i s p s t r i
0005160 n g h a c k " ) \r
0005200 ( f n s % s e t - a r r a
0005220 y - o f f s e t % s e t - a r
0005240 r a y - t y p e - n u m b e r )
0005260 \r ( * \ ; "
0005300 F a s t e r p r e d i c a t e
0005320 s n o t i n c l u d i n g
0005340 I L : S T R I N G P ' s " ) \r
0005360 ( f n s % a r r
0005400 a y p % s i m p l e - a r r a
0005420 y - p % s i m p l e - s t r i
0005440 n g - p % s t r i n g p % v
0005460 e c t o r p ) \r
0005500 ( * \ ; " L o w l e v e l
0005520 p r e d i c a t e s " ) \r
0005540 ( f n s % g e n e
0005560 r a l - a r r a y - p % o n e
0005600 d - a r r a y - p % t h i n -
0005620 s t r i n g - a r r a y - p %
0005640 t w o d - a r r a y - p ) \r
0005660 ( * \ ; " R e c
0005700 o r d d e f ' s " ) \r
0005720 ( d e c l a r e \ : d
0005740 o n t c o p y d o e v a l @ c
0005760 o m p i l e ( e x p o r t (
0006000 r e c o r d s a r r a y - h e
0006020 a d e r g e n e r a l - a r r
0006040 a y o n e d - a r r a y \r
0006060
*
0006140 t w o d - a r
0006160 r a y ) ) ) \r (
0006200 i n i t r e c o r d s g e n e
0006220 r a l - a r r a y o n e d - a
0006240 r r a y t w o d - a r r a y )
0006260 \r ( s y s r e c
0006300 o r d s g e n e r a l - a r r
0006320 a y o n e d - a r r a y t w
0006340 o d - a r r a y ) \r
0006360 ( p r o p d o p v a l %
0006400 a r e f 1 % a r e f 2 % a s
0006420 e t 1 % a s e t 2 ) \r
0006440 ( * | ; ; | " I / O
0006460 " ) \r ( f n s
0006500 % d e f p r i n t - a r r a y
0006520 % d e f p r i n t - b i t v e c
0006540 t o r % d e f p r i n t - g e
0006560 n e r i c - a r r a y % d e f
0006600 p r i n t - v e c t o r \r
0006620 % d e f p
0006640 r i n t - s t r i n g % p r i
0006660 n t - a r r a y - c o n t e n t
0006700 s ) \r ( p ( d
0006720 e f p r i n t ' o n e d - a r
0006740 r a y ' % d e f p r i n t - v
0006760 e c t o r ) \r
0007000 ( d e f p r i n t ' t w o
0007020 d - a r r a y ' % d e f p r i
0007040 n t - a r r a y ) \r
0007060 ( d e f p r i n t '
0007100 g e n e r a l - a r r a y ' %
0007120 d e f p r i n t - a r r a y ) )
0007140 \r ( * | ; ; |
0007160 " N e e d e d a t r u n
0007200 t i m e . l o w l e v e l
0007220 f u n c t i o n s f o r a c
0007240 c e s s i n g , s e t t i n g
0007260 , a n d a l l o c a t i n g
0007300 r a w s t o r a g e . a l
0007320 s o i n c l u d e s c m l
0007340 t y p e t o t y p e n u m b
0007360 e r c o n v e r t e r s " \r
0007400 ) \r
0007420 ( f n s % a r r a y -
0007440 r e a d % a r r a y - w r i t
0007460 e % c m l - t y p e - t o - t
0007500 y p e n u m b e r % g e t - c
0007520 a n o n i c a l - c m l - t y p
0007540 e \r
0007560 % g e t - e n c l o s i n g - s
0007600 i g n e d - b y t e % g e t -
0007620 e n c l o s i n g - u n s i g n
0007640 e d - b y t e % m a k e - a r
0007660 r a y - s t o r a g e \r
0007700 % r e d u c
0007720 e - i n t e g e r % r e d u c
0007740 e - m o d % s l o w - a r r a
0007760 y - r e a d % s l o w - a r r
0010000 a y - w r i t e ) \r
0010020 ( * | ; ; | " C o m p i
0010040 l e r o p t i o n s " ) \r
0010060 ( d e c l a r e \ :
0010100 d o n t e v a l @ l o a d d
0010120 o e v a l @ c o m p i l e d o
0010140 n t c o p y ( l o c a l v a r
0010160 s . t ) ) \r
0010200 ( p r o p f i l e t y p e c
0010220 m l a r r a y ) \r
0010240 ( d e c l a r e \ : d o n t
0010260 e v a l @ l o a d d o e v a l
0010300 @ c o m p i l e d o n t c o p
0010320 y c o m p i l e r v a r s \r
0010340 ( a
0010360 d d v a r s ( n l a m a ) \r
0010400
0010420 ( n l a m l ) \r
0010440
0010460 ( l a m a c l : v e c t
0010500 o r a s e t c l : a r r a y
0010520 - r o w - m a j o r - i n d e x
0010540 c l : a r r a y - i n - b o u
0010560 n d s - p c l : a r e f ) ) )
0010600 ) ) \r \r \r \r 006 004 ( * | ; ; |
0010620 " C o n t a i n s t a b l e
0010640 d r i v e n m a c r o s " ) 006
0010660 001 \r \r ( d e c l a r e \ : d o
0010700 n t c o p y e v a l @ c o m p
0010720 i l e \r ( * F O L L O W I N
0010740 G D E F I N I T I O N S E X
0010760 P O R T E D ) \r \r \r ( f i l e s
0011000 l o a d ( s y s l o a d f r
0011020 o m v a l u e o f d i r e c
0011040 t o r i e s ) \r c
0011060 m l a r r a y - s u p p o r t )
0011100 \r \r \r ( * E N D E X P O R T
0011120 E D D E F I N I T I O N S ) \r
0011140 \r ) \r \r \r \r 006 004 ( * | ; ; |
0011160 " U s e r e n t r y p o i n
0011200 t s " ) 006 001 \r \r ( c l : d e f u
0011220 n 006 002 c l : a d j u s t - a r
0011240 r a y 006 001 ( a d j u s t a b l
0011260 e - a r r a y d i m e n s i o
0011300 n s & k e y ( e l e m e n t
0011320 - t y p e n i l e l e m e n
0011340 t - t y p e - p ) \r
0011360
0011400 ( i n i t
0011420 i a l - e l e m e n t n i l
0011440 i n i t i a l - e l e m e n t -
0011460 p ) \r
0011500
0011520 ( i n i t i a l - c o n
0011540 t e n t s n i l i n i t i a
0011560 l - c o n t e n t s - p ) \r
0011600
0011620 (
0011640 d i s p l a c e d - t o n i l
0011660 d i s p l a c e d - t o - p )
0011700 \r
0011720
0011740 ( d i s p l a c e d - t o -
0011760 b a s e n i l d i s p l a c
0012000 e d - t o - b a s e - p ) \r
0012020
0012040 (
0012060 d i s p l a c e d - i n d e x -
0012100 o f f s e t 0 d i s p l a c
0012120 e d - i n d e x - o f f s e t -
0012140 p ) \r
0012160
0012200 ( c l : f i l l - p o i
0012220 n t e r n i l f i l l - p o
0012240 i n t e r - p ) \r
0012260
0012300 f a t p )
0012320 " D o s o m e t h i n g w o
0012340 n d e r f u l " \r
0012360 \r 006 003
0012400 ( * * " S t r i n g s a r
0012420 e b y d e f a u l t t h i
0012440 n u n l e s s F A T P i s
0012460 T " ) 006 001 \r \r ( c l : i
0012500 f ( n o t ( e x t e n d a b
0012520 l e - a r r a y - p a d j u s
0012540 t a b l e - a r r a y ) ) \r
0012560 ( c l : e r r o
0012600 r " N o t a n a d j u s t
0012620 a b l e o r e x t e n d a b
0012640 l e a r r a y " ) ) \r (
0012660 c l : i f ( n o t ( c l : l
0012700 i s t p d i m e n s i o n s )
0012720 ) \r ( s e t
0012740 q d i m e n s i o n s ( l i
0012760 s t d i m e n s i o n s ) ) )
0013000 \r ( c l : i f ( c l : d
0013020 o l i s t ( d i m d i m e n
0013040 s i o n s n i l ) \r
0013060 ( c l :
0013100 i f ( o r ( < d i m 0 )
0013120 \r
0013140 ( > =
0013160 d i m c l : a r r a y - d i
0013200 m e n s i o n - l i m i t ) ) \r
0013220
0013240 ( r e t u r n
0013260 t ) ) ) \r (
0013300 c l : e r r o r " D i m e n s
0013320 i o n s o u t o f b o u n
0013340 d s ~ S " d i m e n s i o n
0013360 s ) ) \r ( l e t ( ( a d
0013400 j u s t a b l e - a r r a y - e
0013420 l e m e n t - t y p e ( c l :
0013440 a r r a y - e l e m e n t - t y
0013460 p e a d j u s t a b l e - a r
0013500 r a y ) ) \r (
0013520 n e l t s ( % t o t a l - s i
0013540 z e d i m e n s i o n s ) ) \r
0013560 ( r a n k (
0013600 l e n g t h d i m e n s i o n
0013620 s ) ) \r ( e x
0013640 t e n d a b l e - p ( n o t
0013660 ( c l : a d j u s t a b l e - a
0013700 r r a y - p a d j u s t a b l
0013720 e - a r r a y ) ) ) ) \r
0013740 \r
0013760 006 003 ( * * " C o n s i s t
0014000 e n c y c h e c k s " ) 006 001 \r
0014020 \r ( c l : i f
0014040 ( > = r a n k c l : a r r a
0014060 y - r a n k - l i m i t ) \r
0014100 ( c l
0014120 : e r r o r " T o o m a n y
0014140 d i m e n s i o n s : ~ A "
0014160 r a n k ) ) \r
0014200 ( c l : i f ( > = n e l t s
0014220 c l : a r r a y - t o t a l -
0014240 s i z e - l i m i t ) \r
0014260 ( c l : e
0014300 r r o r " T o o m a n y e
0014320 l e m e n t s : ~ A " n e l
0014340 t s ) ) \r ( c l
0014360 : i f ( n o t ( e q l r a
0014400 n k ( c l : a r r a y - r a n
0014420 k a d j u s t a b l e - a r r
0014440 a y ) ) ) \r
0014460 ( c l : e r r o r "
0014500 R a n k m i s m a t c h ~ S
0014520 " d i m e n s i o n s ) ) \r
0014540 ( c l : i f e l
0014560 e m e n t - t y p e - p ( c l
0014600 : i f ( n o t ( e q u a l
0014620 e l e m e n t - t y p e a d j
0014640 u s t a b l e - a r r a y - e l
0014660 e m e n t - t y p e ) ) \r
0014700
*
0014740 ( c l : e r r o r " A D J
0014760 U S T A B L E - A R R A Y n o
0015000 t o f s p e c i f i e d e
0015020 l e m e n t - t y p e : ~ A "
0015040 \r
0015060
0015100 e l
0015120 e m e n t - t y p e ) ) \r
0015140 ( s e t
0015160 q e l e m e n t - t y p e a
0015200 d j u s t a b l e - a r r a y -
0015220 e l e m e n t - t y p e ) ) \r
0015240 ( c l : i f ( a
0015260 n d f i l l - p o i n t e r -
0015300 p ( n u l l c l : f i l l -
0015320 p o i n t e r ) \r
0015340 ( c l
0015360 : a r r a y - h a s - f i l l -
0015400 p o i n t e r - p a d j u s t
0015420 a b l e - a r r a y ) ) \r
0015440 ( c l :
0015460 e r r o r " A D J U S T A B L
0015500 E - A R R A Y h a s f i l l
0015520 p o i n t e r " ) ) \r
0015540 ( c l : i f ( o r (
0015560 a n d d i s p l a c e d - t o
0015600 - p ( o r i n i t i a l - e
0015620 l e m e n t - p i n i t i a l
0015640 - c o n t e n t s - p d i s p
0015660 l a c e d - t o - b a s e - p )
0015700 ) \r
0015720 ( a n d d i s p l a
0015740 c e d - t o - b a s e - p ( o
0015760 r i n i t i a l - e l e m e n
0016000 t - p i n i t i a l - c o n t
0016020 e n t s - p d i s p l a c e d
0016040 - t o - p ) ) \r
0016060 ( a n d
0016100 f i l l - p o i n t e r - p c
0016120 l : f i l l - p o i n t e r (
0016140 n o t ( e q l r a n k 1 )
0016160 ) ) \r
0016200 ( a n d d i s p l
0016220 a c e d - i n d e x - o f f s e
0016240 t - p ( n o t ( o r d i s
0016260 p l a c e d - t o - p d i s p
0016300 l a c e d - t o - b a s e - p )
0016320 ) ) \r
0016340 ( a n d i n i t i
0016360 a l - e l e m e n t - p i n i
0016400 t i a l - c o n t e n t s - p )
0016420 ) \r
0016440 ( c l : e r r o r " I n c o
0016460 n s i s t e n t o p t i o n s
0016500 t o a d j u s t - a r r a y
0016520 " ) ) \r ( c l :
0016540 i f d i s p l a c e d - t o -
0016560 p ( c o n d \r
0016600
0016620 ( ( n o t (
0016640 % a r r a y p d i s p l a c e
0016660 d - t o ) ) \r
0016700
0016720 ( c l : e r r
0016740 o r " C a n n o t d i s p l
0016760 a c e t o a n I n t e r l
0017000 i s p a r r a y / s t r i n g
0017020 " ) ) \r
0017040
0017060 ( ( n o t ( e q u a
0017100 l a d j u s t a b l e - a r r
0017120 a y - e l e m e n t - t y p e
0017140 ( c l : a r r a y - e l e m e n
0017160 t - t y p e \r
0017200
*
0017300 d i s p l a c e d - t o
0017320 ) ) ) \r
0017340
0017360 ( c l : e r r o r
0017400 " N o t d i s p l a c e d t
0017420 o a n a r r a y o f t h
0017440 e s a m e e l e m e n t - t
0017460 y p e : " ) ) \r
0017500
0017520 ( ( > ( +
0017540 d i s p l a c e d - i n d e x -
0017560 o f f s e t n e l t s ) \r
0017600
*
0017640 ( c l : a r r a y - t o t
0017660 a l - s i z e d i s p l a c e
0017700 d - t o ) ) \r
0017720
0017740 ( c l : e r r
0017760 o r " M o r e e l e m e n t
0020000 s t h a n d i s p l a c e d
0020020 - t o a r r a y " ) ) ) ) \r
0020040 ( c l : i f c l
0020060 : f i l l - p o i n t e r ( c
0020100 o n d \r
0020120
0020140 ( ( e q c l : f i
0020160 l l - p o i n t e r t ) \r
0020200
*
0020240 ( s e t q c l : f i l l - p
0020260 o i n t e r n e l t s ) ) \r
0020300
*
0020340 ( ( n o t ( a n d ( > =
0020360 c l : f i l l - p o i n t e r
0020400 0 ) \r
0020420
*
0020460 ( < = c l : f i l l - p o i n
0020500 t e r n e l t s ) ) ) \r
0020520
*
0020560 ( c l : e r r o r " F i l l
0020600 p o i n t e r o u t o f b
0020620 o u n d s ~ A " c l : f i l
0020640 l - p o i n t e r ) ) ) \r
0020660 ( c l :
0020700 i f ( c l : a r r a y - h a s
0020720 - f i l l - p o i n t e r - p
0020740 a d j u s t a b l e - a r r a y
0020760 ) \r
0021000 ( s e t q c l
0021020 : f i l l - p o i n t e r ( m
0021040 i n ( c l : f i l l - p o i n
0021060 t e r a d j u s t a b l e - a
0021100 r r a y ) \r
0021120
*
0021160 n e l t s ) ) ) )
0021200 \r ( c l : i f
0021220 e x t e n d a b l e - p ( c o
0021240 n d \r
0021260
0021300 ( ( o r d i s p l a c e d
0021320 - t o - p d i s p l a c e d -
0021340 t o - b a s e - p ) \r
0021360
0021400 ( c l : e
0021420 r r o r " C a n n o t a d j
0021440 u s t a n e x t e n d a b l
0021460 e a r r a y t o b e d i
0021500 s p l a c e d " ) ) \r
0021520
0021540 ( ( < n e
0021560 l t s ( c l : a r r a y - t o
0021600 t a l - s i z e a d j u s t a
0021620 b l e - a r r a y ) ) \r
0021640
0021660 ( c l :
0021700 e r r o r " C a n n o t e x
0021720 t e n d a n e x t e n d a b
0021740 l e a r r a y t o h a v e
0021760 f e w e r e l e m e n t s "
0022000 ) \r
0022020
0022040 ) ) ) \r
0022060 \r 006 003 ( *
0022100 * " S p e c s r e a d y ,
0022120 d o t h e s u r g u r y " )
0022140 006 001 \r \r ( c o n
0022160 d \r ( d i
0022200 s p l a c e d - t o - p ( % a
0022220 l t e r - a s - d i s p l a c e
0022240 d - a r r a y a d j u s t a b
0022260 l e - a r r a y d i m e n s i
0022300 o n s d i s p l a c e d - t o
0022320 \r
0022340
0022360 d i s p l a c e d - i n
0022400 d e x - o f f s e t c l : f i
0022420 l l - p o i n t e r ) ) \r
0022440 ( d i s p l a c
0022460 e d - t o - b a s e - p ( % a
0022500 l t e r - a s - d i s p l a c e
0022520 d - t o - b a s e - a r r a y
0022540 a d j u s t a b l e - a r r a y
0022560 d i m e n s i o n s \r
0022600
*
0022640 e l e m e n t - t y p e
0022660 d i s p l a c e d - t o - b a
0022700 s e d i s p l a c e d - i n d
0022720 e x - o f f s e t \r
0022740
*
0023000 c l : f i l l - p o i n t e
0023020 r f a t p ) ) \r
0023040 ( t ( c l : i f ( e
0023060 q u a l ( c l : a r r a y - d
0023100 i m e n s i o n s a d j u s t
0023120 a b l e - a r r a y ) \r
0023140
0023160 d i m e n s i o
0023200 n s ) \r
0023220 ( c l : i f
0023240 c l : f i l l - p o i n t e r
0023260 ( s e t - f i l l - p o i n t e
0023300 r a d j u s t a b l e - a r r
0023320 a y c l : f i l l - p o i n t
0023340 e r ) ) \r
0023360 ( l e t (
0023400 ( n e w - a r r a y ( c l : m
0023420 a k e - a r r a y d i m e n s
0023440 i o n s : e l e m e n t - t y
0023460 p e e l e m e n t - t y p e
0023500 : f a t p \r
0023520
*
0023560 ( % f a t - s t r i n g -
0023600 a r r a y - p a d j u s t a b
0023620 l e - a r r a y ) ) ) ) \r
0023640
0023660 ( c o n d \r
0023700
0023720 ( i n i t i
0023740 a l - c o n t e n t s - p ( %
0023760 a r r a y - c o n t e n t - i n
0024000 i t i a l i z e n e w - a r r
0024020 a y \r
0024040
*
0024100 i n i t
0024120 i a l - c o n t e n t s ) ) \r
0024140
0024160 ( t (
0024200 c l : i f i n i t i a l - e l
0024220 e m e n t - p ( % a r r a y -
0024240 e l e m e n t - i n i t i a l i
0024260 z e n e w - a r r a y \r
0024300
*
0024360 i n
0024400 i t i a l - e l e m e n t ) ) \r
0024420
*
0024460 ( % c o p y - t o - n e w - a r
0024500 r a y ( c l : a r r a y - d i
0024520 m e n s i o n s a d j u s t a
0024540 b l e - a r r a y ) \r
0024560
*
0024620 ( % f l a t t e n - a r r a
0024640 y a d j u s t a b l e - a r r
0024660 a y ) \r
0024700
0024720 0 d i m
0024740 e n s i o n s ( % f l a t t e
0024760 n - a r r a y n e w - a r r a
0025000 y ) \r
0025020
0025040 0 ) ) ) \r
0025060
0025100 ( % e x t e n
0025120 d - a r r a y a d j u s t a b
0025140 l e - a r r a y n e w - a r r
0025160 a y d i m e n s i o n s c l
0025200 : f i l l - p o i n t e r ) ) )
0025220 ) ) \r \r
0025240 006 003 ( * * "
0025260 R e t u r n t h e a d j u s
0025300 t e d a r r a y " ) 006 001 \r \r
0025320 a d j u s t a b l
0025340 e - a r r a y ) ) \r \r ( c l : d
0025360 e f u n 006 002 c l : a d j u s t
0025400 a b l e - a r r a y - p 006 001 (
0025420 a r r a y ) \r
0025440 \r 006 003 (
0025460 * * ) 006 001 \r ( c o n d \r
0025500 ( ( % a r r a y p a r r a
0025520 y ) \r ( 006 002 | f e t c
0025540 h | 006 001 ( a r r a y - h e a d
0025560 e r a d j u s t a b l e - p )
0025600 006 002 | o f | 006 001 a r r a y )
0025620 ) \r ( ( s t r i n g p
0025640 a r r a y ) \r n i l )
0025660 \r ( t ( c l : e r r o
0025700 r " N o t a n a r r a y
0025720 ~ S " a r r a y ) ) ) ) \r \r (
0025740 c l : d e f u n 006 002 c l : a r
0025760 r a y - d i m e n s i o n 006 001
0026000 ( a r r a y d i m e n s i o n
0026020 ) \r \r
0026040 006 003 ( * * ) 006
0026060 001 \r ( c o n d \r ( ( %
0026100 o n e d - a r r a y - p a r r
0026120 a y ) \r ( c l : i f
0026140 ( e q l 0 d i m e n s i o n
0026160 ) \r ( 006
0026200 002 | f e t c h | 006 001 ( a r r a
0026220 y - h e a d e r t o t a l - s
0026240 i z e ) 006 002 | o f | 006 001 a r
0026260 r a y ) \r
0026300 ( c l : e r r o r " D i m e
0026320 n s i o n o u t o f b o u
0026340 n d s : ~ A " d i m e n s i
0026360 o n ) ) ) \r ( ( % t w o
0026400 d - a r r a y - p a r r a y )
0026420 \r ( c a s e d i m e
0026440 n s i o n ( 0 ( 006 002 | f f e
0026460 t c h | 006 001 ( t w o d - a r r
0026500 a y b o u n d 0 ) 006 002 | o f
0026520 | 006 001 a r r a y ) ) \r
0026540 ( 1 ( 006 002 | f f
0026560 e t c h | 006 001 ( t w o d - a r
0026600 r a y b o u n d 1 ) 006 002 | o
0026620 f | 006 001 a r r a y ) ) \r
0026640 ( c l : o t h e
0026660 r w i s e ( c l : e r r o r
0026700 " D i m e n s i o n o u t o
0026720 f b o u n d s : ~ A " d i
0026740 m e n s i o n ) ) ) ) \r
0026760 ( ( % g e n e r a l - a r r a y
0027000 - p a r r a y ) \r (
0027020 l e t * ( ( d i m s ( 006 002 |
0027040 f f e t c h | 006 001 ( g e n e r
0027060 a l - a r r a y d i m s ) 006
0027100 002 | o f | 006 001 a r r a y ) ) \r
0027120 ( r a n
0027140 k ( l e n g t h d i m s ) )
0027160 ) \r ( c l
0027200 : i f ( n o t ( < - 1 d
0027220 i m e n s i o n r a n k ) ) \r
0027240
0027260 ( c l : e r r o r " D i m
0027300 e n s i o n o u t o f b o
0027320 u n d s : ~ A " d i m e n s
0027340 i o n ) ) \r
0027360 ( c l : i f ( e q l r a n
0027400 k 1 ) \r
0027420 ( 006 002 | f e t c h
0027440 | 006 001 ( a r r a y - h e a d e
0027460 r t o t a l - s i z e ) 006 002
0027500 | o f | 006 001 a r r a y ) \r
0027520
0027540 ( c l : n t h d i m e n s i o
0027560 n d i m s ) ) ) ) \r (
0027600 ( s t r i n g p a r r a y )
0027620
*
0027660 006 003 ( * " H a
0027700 c k t o h a n d l e I L :
0027720 S T R I N G P ' s " ) 006 001 \r
0027740 ( c l : i f ( e q l d
0027760 i m e n s i o n 0 ) \r
0030000 ( n c h a r s
0030020 a r r a y ) \r
0030040 ( c l : e r r o r " D i
0030060 m e n s i o n o u t o f b
0030100 o u n d s : ~ A " d i m e n
0030120 s i o n ) ) ) \r ( t (
0030140 c l : e r r o r " N o t a n
0030160 a r r a y ~ S " a r r a y
0030200 ) ) ) ) \r \r ( c l : d e f u n
0030220 006 002 c l : a r r a y - d i m e n
0030240 s i o n s 006 001 ( a r r a y )
0030260 006 003 006 001
0030300 006 003 ( *
0030320 | j o p : | " 5 - S e p - 8
0030340 6 1 2 : 5 5 " ) 006 001 \r
0030360 \r
0030400 006 003 ( * * ) 006 001 \r \r (
0030420 c o n d \r ( ( % o n
0030440 e d - a r r a y - p a r r a y
0030460 ) \r ( l i s t (
0030500 006 002 | f f e t c h | 006 001 ( o n
0030520 e d - a r r a y t o t a l - s
0030540 i z e ) 006 002 | o f | 006 001 a r
0030560 r a y ) ) ) \r ( ( %
0030600 t w o d - a r r a y - p a r r
0030620 a y ) \r ( l i s t
0030640 ( 006 002 | f f e t c h | 006 001 (
0030660 t w o d - a r r a y b o u n d
0030700 0 ) 006 002 | o f | 006 001 a r r a
0030720 y ) \r
0030740 ( 006 002 | f f e t c h | 006 001 ( t
0030760 w o d - a r r a y b o u n d 1
0031000 ) 006 002 | o f | 006 001 a r r a y
0031020 ) ) ) \r ( ( % g e n
0031040 e r a l - a r r a y - p a r r
0031060 a y ) \r ( 006 002 | f
0031100 f e t c h | 006 001 ( g e n e r a
0031120 l - a r r a y d i m s ) 006 002
0031140 | o f | 006 001 a r r a y ) ) \r
0031160 ( ( s t r i n g p a
0031200 r r a y )
0031220
0031240 006 003 ( *
0031260 " H a c k t o h a n d l e
0031300 I L : S T R I N G P ' s " ) 006
0031320 001 \r ( l i s t (
0031340 n c h a r s a r r a y ) ) ) \r
0031360 ( t ( c l : e r r
0031400 o r " N o t a n a r r a y
0031420 ~ S " a r r a y ) ) ) ) \r \r
0031440 ( c l : d e f u n 006 002 c l : a
0031460 r r a y - e l e m e n t - t y p
0031500 e 006 001 ( a r r a y ) \r
0031520 \r
0031540 006 003 ( * * ) 006 001 \r ( c o
0031560 n d \r ( ( % a r r a y p
0031600 a r r a y ) \r ( % t
0031620 y p e n u m b e r - t o - c m l
0031640 - t y p e ( % a r r a y - t y
0031660 p e - n u m b e r a r r a y )
0031700 ) ) \r ( ( s t r i n g p
0031720 a r r a y )
0031740
*
0032000 006 003 ( * " H a c k t o h a
0032020 n d l e I L : S T R I N G P '
0032040 s " ) 006 001 \r ' c l : s
0032060 t r i n g - c h a r ) \r
0032100 ( t ( c l : e r r o r " N o
0032120 t a n a r r a y ~ S " a
0032140 r r a y ) ) ) ) \r \r ( c l : d e
0032160 f u n 006 002 c l : a r r a y - h
0032200 a s - f i l l - p o i n t e r -
0032220 p 006 001 ( a r r a y ) \r
0032240 \r
0032260 006 003 ( * * ) 006 001 \r ( c o
0032300 n d \r ( ( % a r r a y p
0032320 a r r a y ) \r ( 006 002
0032340 | f e t c h | 006 001 ( a r r a y
0032360 - h e a d e r f i l l - p o i
0032400 n t e r - p ) 006 002 | o f | 006 001
0032420 a r r a y ) ) \r ( ( s
0032440 t r i n g p a r r a y )
0032460
*
0032520 006 003 ( * " H a c k
0032540 t o h a n d l e I L : S T
0032560 R I N G P ' s " ) 006 001 \r
0032600 n i l ) \r ( t ( c l
0032620 : e r r o r " N o t a n a
0032640 r r a y ~ S " a r r a y ) )
0032660 ) ) \r \r ( c l : d e f u n 006 002
0032700 a r r a y - n e e d s - i n d i
0032720 r e c t i o n - p 006 001 ( a r r
0032740 a y ) \r \r
0032760 006 003 ( * *
0033000 ) 006 001 \r ( c o n d \r (
0033020 ( o r ( % o n e d - a r r a y
0033040 - p a r r a y ) \r
0033060 ( % t w o d - a r r a y -
0033100 p a r r a y ) \r
0033120 ( s t r i n g p a r r a y
0033140 ) ) \r n i l ) \r
0033160 ( ( % g e n e r a l - a r r a
0033200 y - p a r r a y ) \r
0033220 ( 006 002 | f e t c h | 006 001 ( a r
0033240 r a y - h e a d e r i n d i r
0033260 e c t - p ) 006 002 | o f | 006 001
0033300 a r r a y ) ) \r ( t (
0033320 c l : e r r o r " N o t a n
0033340 a r r a y ~ S " a r r a y
0033360 ) ) ) ) \r \r ( c l : d e f u n
0033400 006 002 c l : a r r a y - r a n k 006
0033420 001 ( a r r a y ) \r
0033440 \r
0033460 006 003 ( * * ) 006 001 \r ( c o n d
0033500 \r ( ( % o n e d - a r r
0033520 a y - p a r r a y ) \r
0033540 1 ) \r ( ( % t w o d -
0033560 a r r a y - p a r r a y ) \r
0033600 2 ) \r ( ( % g e
0033620 n e r a l - a r r a y - p a r
0033640 r a y ) \r ( l e n g t
0033660 h ( 006 002 | f f e t c h | 006 001
0033700 ( g e n e r a l - a r r a y d
0033720 i m s ) 006 002 | o f | 006 001 a r
0033740 r a y ) ) ) \r ( ( s t r
0033760 i n g p a r r a y )
0034000
*
0034040 006 003 ( * " H a c k t
0034060 o h a n d l e I L : S T R I
0034100 N G P ' s " ) 006 001 \r 1
0034120 ) \r ( t ( c l : e r r
0034140 o r " N o t a n a r r a y
0034160 ~ S " a r r a y ) ) ) ) \r \r
0034200 ( c l : d e f u n 006 002 c l : a
0034220 r r a y - t o t a l - s i z e 006
0034240 001 ( a r r a y ) \r
0034260 \r
0034300 006 003 ( * * ) 006 001 \r ( c o n d
0034320 \r ( ( % a r r a y p a
0034340 r r a y ) \r ( 006 002 | f
0034360 e t c h | 006 001 ( a r r a y - h
0034400 e a d e r t o t a l - s i z e
0034420 ) 006 002 | o f | 006 001 a r r a y
0034440 ) ) \r ( ( s t r i n g p
0034460 a r r a y )
0034500
*
0034540 006 003 ( * " H a c k t o h a
0034560 n d l e I L : S T R I N G P '
0034600 s " ) 006 001 \r ( n c h a
0034620 r s a r r a y ) ) \r (
0034640 t ( c l : e r r o r " N o t
0034660 a n a r r a y ~ S " a r
0034700 r a y ) ) ) ) \r \r ( c l : d e f
0034720 u n 006 002 b i t 006 001 ( b i t -
0034740 a r r a y & r e s t i n d i
0034760 c e s ) ( c l : a s s e r t
0035000 ( t y p e p b i t - a r r a y
0035020 ' ( c l : a r r a y b i t )
0035040 ) \r
0035060
*
0035120 ( b i t - a r r a y ) \r
0035140
*
0035200 " N o t
0035220 a b i t - a r r a y : ~ S
0035240 " b i t - a r r a y ) \r
0035260
*
0035320 ( c l : a p p l y (
0035340 f u n c t i o n c l : a r e f
0035360 ) \r
0035400
*
0035440 b i t - a r r a y i n d i c
0035460 e s ) ) \r \r ( c l : d e f u n
0035500 006 002 c l : b i t - a n d 006 001 (
0035520 b i t - a r r a y 1 b i t - a
0035540 r r a y 2 & o p t i o n a l
0035560 b i t - r e s u l t ) \r
0035600 \r
0035620 006 003 ( * * ) 006 001 \r ( % e
0035640 x p a n d - b i t - o p a n d
0035660 b i t - a r r a y 1 b i t -
0035700 a r r a y 2 b i t - r e s u l
0035720 t ) ) \r \r ( c l : d e f u n 006
0035740 002 c l : b i t - a n d c 1 006 001
0035760 ( b i t - a r r a y 1 b i t -
0036000 a r r a y 2 & o p t i o n a l
0036020 b i t - r e s u l t ) \r
0036040 \r
0036060 006 003 ( * * ) 006 001 \r ( %
0036100 e x p a n d - b i t - o p a n
0036120 d c 1 b i t - a r r a y 1 b
0036140 i t - a r r a y 2 b i t - r e
0036160 s u l t ) ) \r \r ( c l : d e f u
0036200 n 006 002 c l : b i t - a n d c 2
0036220 006 001 ( b i t - a r r a y 1 b
0036240 i t - a r r a y 2 & o p t i o
0036260 n a l b i t - r e s u l t )
0036300 \r \r
0036320 006 003 ( * * ) 006 001 \r
0036340 ( % e x p a n d - b i t - o p
0036360 a n d c 2 b i t - a r r a y
0036400 1 b i t - a r r a y 2 b i t
0036420 - r e s u l t ) ) \r \r ( c l : d
0036440 e f u n 006 002 b i t - a r r a y
0036460 - p 006 001 ( a r r a y ) ( a n
0036500 d ( % a r r a y p a r r a y
0036520 ) \r
0036540
0036560 ( 006 002 | f e t c h | 006
0036600 001 ( a r r a y - h e a d e r
0036620 b i t - p ) 006 002 | o f | 006 001
0036640 a r r a y ) ) ) \r \r ( c l : d e
0036660 f u n 006 002 c l : b i t - e q v
0036700 006 001 ( b i t - a r r a y 1 b
0036720 i t - a r r a y 2 & o p t i o
0036740 n a l b i t - r e s u l t )
0036760 \r \r
0037000 006 003 ( * * ) 006 001 \r
0037020 ( % e x p a n d - b i t - o p
0037040 e q v b i t - a r r a y 1
0037060 b i t - a r r a y 2 b i t - r
0037100 e s u l t ) ) \r \r ( c l : d e f
0037120 u n 006 002 c l : b i t - i o r 006
0037140 001 ( b i t - a r r a y 1 b i
0037160 t - a r r a y 2 & o p t i o n
0037200 a l b i t - r e s u l t ) \r
0037220 \r
0037240 006 003 ( * * ) 006 001 \r
0037260 ( % e x p a n d - b i t - o p
0037300 i o r b i t - a r r a y 1 b
0037320 i t - a r r a y 2 b i t - r e
0037340 s u l t ) ) \r \r ( c l : d e f u
0037360 n 006 002 c l : b i t - n a n d 006
0037400 001 ( b i t - a r r a y 1 b i
0037420 t - a r r a y 2 & o p t i o n
0037440 a l b i t - r e s u l t ) \r
0037460 \r
0037500 006 003 ( * * ) 006 001 \r
0037520 ( % e x p a n d - b i t - o p
0037540 n a n d b i t - a r r a y 1
0037560 b i t - a r r a y 2 b i t - r
0037600 e s u l t ) ) \r \r ( c l : d e f
0037620 u n 006 002 c l : b i t - n o r 006
0037640 001 ( b i t - a r r a y 1 b i
0037660 t - a r r a y 2 & o p t i o n
0037700 a l b i t - r e s u l t ) \r
0037720 \r
0037740 006 003 ( * * ) 006 001 \r
0037760 ( % e x p a n d - b i t - o p
0040000 006 002 n o r 006 001 b i t - a r r a
0040020 y 1 b i t - a r r a y 2 b i
0040040 t - r e s u l t ) ) \r \r ( c l :
0040060 d e f u n 006 002 c l : b i t - n
0040100 o t 006 001 ( b i t - a r r a y
0040120 & o p t i o n a l r e s u l t
0040140 - b i t - a r r a y ) 006 003 006 001
0040160 006 003 ( * | j o p : | " 9
0040200 - S e p - 8 6 1 7 : 0 5 " ) 006
0040220 001 \r \r
0040240 006 003 ( * * ) 006 001
0040260 \r \r ( c l : i f ( n o t
0040300 ( b i t - a r r a y - p b i
0040320 t - a r r a y ) ) \r
0040340 ( c l : e r r o r " B
0040360 I T - A R R A Y n o t a b
0040400 i t a r r a y " ) ) \r (
0040420 c o n d \r ( ( n u l
0040440 l r e s u l t - b i t - a r r
0040460 a y ) \r ( s e t q
0040500 r e s u l t - b i t - a r r a
0040520 y ( c l : m a k e - a r r a y
0040540 ( c l : a r r a y - d i m e n
0040560 s i o n s b i t - a r r a y )
0040600 \r
0040620
0040640 : e l e m e n t - t
0040660 y p e \r
0040700
0040720 ' b i t ) ) )
0040740 \r ( ( e q r e s u
0040760 l t - b i t - a r r a y t ) \r
0041000 ( s e t q r e s
0041020 u l t - b i t - a r r a y b i
0041040 t - a r r a y ) ) \r
0041060 ( ( n o t ( a n d ( b i t -
0041100 a r r a y - p r e s u l t - b
0041120 i t - a r r a y ) \r
0041140 ( e q u a
0041160 l - d i m e n s i o n s - p b
0041200 i t - a r r a y r e s u l t -
0041220 b i t - a r r a y ) ) ) \r
0041240 ( c l : e r r o r " I
0041260 l l e g a l r e s u l t a r
0041300 r a y " ) ) ) \r ( % d o -
0041320 l o g i c a l - o p ' n o t
0041340 b i t - a r r a y r e s u l t
0041360 - b i t - a r r a y ) \r r
0041400 e s u l t - b i t - a r r a y )
0041420 \r \r ( c l : d e f u n 006 002 c l
0041440 : b i t - o r c 1 006 001 ( b i t
0041460 - a r r a y 1 b i t - a r r a
0041500 y 2 & o p t i o n a l b i t
0041520 - r e s u l t ) \r
0041540 \r 006
0041560 003 ( * * ) 006 001 \r ( % e x p a
0041600 n d - b i t - o p o r c 1 b
0041620 i t - a r r a y 1 b i t - a r
0041640 r a y 2 b i t - r e s u l t )
0041660 ) \r \r ( c l : d e f u n 006 002 c
0041700 l : b i t - o r c 2 006 001 ( b i
0041720 t - a r r a y 1 b i t - a r r
0041740 a y 2 & o p t i o n a l b i
0041760 t - r e s u l t ) \r
0042000 \r
0042020 006 003 ( * * ) 006 001 \r ( % e x p
0042040 a n d - b i t - o p o r c 2
0042060 b i t - a r r a y 1 b i t - a
0042100 r r a y 2 b i t - r e s u l t
0042120 ) ) \r \r ( c l : d e f u n 006 002
0042140 c l : b i t - v e c t o r - p 006
0042160 001 ( c l : v e c t o r ) \r
0042200 \r
0042220 006 003 ( * * ) 006 001 \r (
0042240 a n d ( % v e c t o r p c l
0042260 : v e c t o r ) \r (
0042300 006 002 | f e t c h | 006 001 ( a r r
0042320 a y - h e a d e r b i t - p )
0042340 006 002 | o f | 006 001 c l : v e c
0042360 t o r ) ) ) \r \r ( c l : d e f u
0042400 n 006 002 c l : b i t - x o r 006 001
0042420 ( b i t - a r r a y 1 b i t
0042440 - a r r a y 2 & o p t i o n a
0042460 l b i t - r e s u l t ) \r
0042500 \r
0042520 006 003 ( * * ) 006 001 \r (
0042540 % e x p a n d - b i t - o p x
0042560 o r b i t - a r r a y 1 b i
0042600 t - a r r a y 2 b i t - r e s
0042620 u l t ) ) \r \r ( c l : d e f u n
0042640 006 002 c h a r 006 001 ( s t r i n
0042660 g i n d e x ) ( c l : a s s
0042700 e r t ( t y p e p s t r i n
0042720 g ' s t r i n g ) \r
0042740
*
0043000 ( s t r i n g ) \r
0043020
0043040 " N
0043060 o t a s t r i n g : ~ S "
0043100 s t r i n g ) \r
0043120
0043140 ( c l : a r e f
0043160 s t r i n g i n d e x ) ) \r \r
0043200 ( c l : d e f u n 006 002 c l : a
0043220 r r a y p 006 001 ( a r r a y )
0043240 006 003 006 001
0043260
0043300 006 003 ( * | j o p : |
0043320 " 5 - S e p - 8 6 1 2 : 5
0043340 3 " ) 006 001 \r
0043360 \r 006 003 ( *
0043400 * ) 006 001 \r \r ( a n d ( o
0043420 r ( % a r r a y p a r r a y
0043440 ) \r ( s
0043460 t r i n g p a r r a y ) ) \r
0043500 t ) ) \r \r ( c l :
0043520 d e f u n 006 002 c l : s t r i n
0043540 g p 006 001 ( s t r i n g ) ( a
0043560 n d ( o r ( % s t r i n g p
0043600 s t r i n g ) \r
0043620
*
0043660 ( s t r i n g p s t r i n g )
0043700 ) \r
0043720
0043740 t ) ) \r \r ( c l : d e
0043760 f u n 006 002 c o p y - a r r a y
0044000 006 001 ( f r o m - a r r a y &
0044020 o p t i o n a l t o - a r r a
0044040 y ) ( c l : i f ( n o t (
0044060 % a r r a y p f r o m - a r r
0044100 a y ) ) \r
0044120
*
0044200 ( c l : e r r o r " N o t
0044220 a n a r r a y : ~ S " f r
0044240 o m - a r r a y ) ) \r
0044260
*
0044340 ( c o n d \r
0044360
*
0044420 ( (
0044440 n u l l t o - a r r a y ) \r
0044460
*
0044540 ( s e t q t o
0044560 - a r r a y ( c l : m a k e -
0044600 a r r a y ( \r
0044620
*
0044720 c l : a r r
0044740 a y - d i m e n s i o n s \r
0044760
*
0045100 f r o m - a r r a y
0045120 ) \r
0045140
*
0045240 : e l e m e n t - t y p e \r
0045260
*
0045360 ( c
0045400 l : a r r a y - e l e m e n t -
0045420 t y p e \r
0045440
*
0045540 f r o m - a r r a y )
0045560 \r
0045600
*
0045700 : f a t p \r
0045720
*
0046020 ( % f a t - s t r i n
0046040 g - a r r a y - p \r
0046060
*
0046160 f r o m - a
0046200 r r a y ) ) ) ) \r
0046220
*
0046300 ( ( n o t ( e q u a l - d i
0046320 m e n s i o n s - p f r o m -
0046340 a r r a y t o - a r r a y \r
0046360
*
0046460 ) ) \r
0046500
*
0046560 ( c l : e r r o r " D i m e n
0046600 s i o n a l i t y m i s m a t
0046620 c h " ) ) ) \r
0046640
*
0046700 ( c l :
0046720 i f ( 006 002 | f e t c h | 006 001
0046740 ( a r r a y - h e a d e r r e
0046760 a d - o n l y - p ) \r
0047000
*
0047060 006 002 | o f |
0047100 006 001 t o - a r r a y ) \r
0047120
*
0047200 ( % m a k e -
0047220 a r r a y - w r i t e a b l e
0047240 t o - a r r a y ) ) \r
0047260
*
0047340 ( l e t ( ( f r o m - t y p e
0047360 - n u m b e r ( % a r r a y -
0047400 t y p e - n u m b e r \r
0047420
*
0047520 f r o m - a
0047540 r r a y ) ) \r
0047560
*
0047640 ( t o - t y p e - n u m b e
0047660 r ( % a r r a y - t y p e - n
0047700 u m b e r \r
0047720
*
0050020 t o - a r r a
0050040 y ) ) ) \r
0050060
*
0050120 (
0050140 c l : w h e n ( a n d ( % f
0050160 a t - c h a r - t y p e - p \r
0050200
*
0050300 f
0050320 r o m - t y p e - n u m b e r )
0050340 \r
0050360
*
0050440 ( % t h i n -
0050460 c h a r - t y p e - p \r
0050500
*
0050600 t o - t
0050620 y p e - n u m b e r ) ) \r
0050640
*
0050720 ( %
0050740 m a k e - s t r i n g - a r r a
0050760 y - f a t t o - a r r a y ) \r
0051000
*
0051100 ( s e t q t o - t y p e - n
0051120 u m b e r ( \r
0051140
*
0051240 % a r r a
0051260 y - t y p e - n u m b e r \r
0051300
*
0051420 t o - a r r a y ) ) )
0051440 \r
0051460
*
0051520 ( c l : i
0051540 f ( n o t ( e q f r o m -
0051560 t y p e - n u m b e r \r
0051600
*
0051700 t o - t y p e - n
0051720 u m b e r ) ) \r
0051740
*
0052020 ( c l : e r r
0052040 o r \r
0052060
*
0052140 " A r r a y s h a v
0052160 e d i f f e r e n t t y p e
0052200 n u m b e r s " \r
0052220
*
0052320 ) ) \r
0052340
*
0052400 (
0052420 % f a s t - c o p y - b a s e
0052440 ( % a r r a y - b a s e f r o
0052460 m - a r r a y ) \r
0052500
*
0052560 ( % a r r a
0052600 y - o f f s e t f r o m - a r
0052620 r a y ) \r
0052640
*
0052720 ( % a r r a y - b a
0052740 s e t o - a r r a y ) \r
0052760
*
0053040 ( %
0053060 a r r a y - o f f s e t t o -
0053100 a r r a y ) \r
0053120
*
0053200 ( 006 002 | f e t c
0053220 h | 006 001 ( a r r a y - h e a d
0053240 e r t o t a l - s i z e ) \r
0053260
*
0053360 006 002 | o f | 006 001 f r o m
0053400 - a r r a y ) \r
0053420
*
0053500 f r o m - t y
0053520 p e - n u m b e r ) \r
0053540
*
0053620 t o - a r r a y ) ) \r
0053640 \r ( c l : d e f u n 006 002 d i s
0053660 p l a c e d - a r r a y - p 006 001
0053700 ( a r r a y ) \r
0053720 \r 006
0053740 003 ( * * ) 006 001 \r ( c o n d \r
0053760 ( ( % a r r a y p a r
0054000 r a y ) \r ( 006 002 | f e
0054020 t c h | 006 001 ( a r r a y - h e
0054040 a d e r d i s p l a c e d - p
0054060 ) 006 002 | o f | 006 001 a r r a y
0054100 ) ) \r ( ( s t r i n g p
0054120 a r r a y ) \r n i l
0054140 ) \r ( t ( c l : e r r
0054160 o r " N o t a n a r r a y
0054200 ~ S " a r r a y ) ) ) ) \r \r
0054220 ( c l : d e f u n 006 002 e q u a
0054240 l - d i m e n s i o n s - p 006 001
0054260 ( a r r a y - 1 a r r a y -
0054300 2 ) \r ( c o n d \r
0054320 ( ( % o n e d - a r r a y -
0054340 p a r r a y - 1 ) \r
0054360 ( c o n d \r
0054400 ( ( % o n e d - a r r a y -
0054420 p a r r a y - 2 ) \r
0054440 ( e q l ( 006 002 | f
0054460 e t c h | 006 001 ( a r r a y - h
0054500 e a d e r t o t a l - s i z e
0054520 ) 006 002 | o f | 006 001 a r r a y
0054540 - 1 ) \r
0054560 ( 006 002 | f e t c h | 006 001
0054600 ( a r r a y - h e a d e r t
0054620 o t a l - s i z e ) 006 002 | o f
0054640 | 006 001 a r r a y - 2 ) ) ) \r
0054660 ( ( % t w o d
0054700 - a r r a y - p a r r a y - 2
0054720 ) \r n i l
0054740 ) \r ( ( % g
0054760 e n e r a l - a r r a y - p a
0055000 r r a y - 2 ) \r
0055020 ( a n d ( e q 1 ( l
0055040 e n g t h ( 006 002 | f f e t c h
0055060 | 006 001 ( g e n e r a l - a r r
0055100 a y d i m s ) 006 002 | o f | 006
0055120 001 a r r a y - 2 ) ) ) \r
0055140 ( e q
0055160 l ( 006 002 | f e t c h | 006 001 (
0055200 a r r a y - h e a d e r t o t
0055220 a l - s i z e ) 006 002 | o f | 006
0055240 001 a r r a y - 1 ) \r
0055260
0055300 ( 006 002 | f e t c h | 006 001 ( a r
0055320 r a y - h e a d e r t o t a l
0055340 - s i z e ) 006 002 | o f | 006 001
0055360 a r r a y - 2 ) ) ) ) \r
0055400 ( t n i l ) ) ) \r
0055420 ( ( % t w o d - a r
0055440 r a y - p a r r a y - 1 ) \r
0055460 ( c o n d \r
0055500 ( ( % o n e d - a r
0055520 r a y - p a r r a y - 2 ) \r
0055540 n i l ) \r
0055560 ( ( % t w o d
0055600 - a r r a y - p a r r a y - 2
0055620 ) \r ( a n
0055640 d ( e q l ( 006 002 | f f e t c
0055660 h | 006 001 ( t w o d - a r r a y
0055700 b o u n d 0 ) 006 002 | o f | 006
0055720 001 a r r a y - 1 ) \r
0055740
0055760 ( 006 002 | f f e t c h | 006 001 ( t
0056000 w o d - a r r a y b o u n d 0
0056020 ) 006 002 | o f | 006 001 a r r a y
0056040 - 2 ) ) \r
0056060 ( e q l ( 006 002 | f f
0056100 e t c h | 006 001 ( t w o d - a r
0056120 r a y b o u n d 1 ) 006 002 | o
0056140 f | 006 001 a r r a y - 1 ) \r
0056160
0056200 ( 006 002 | f f e t c h | 006 001
0056220 ( t w o d - a r r a y b o u
0056240 n d 1 ) 006 002 | o f | 006 001 a r
0056260 r a y - 2 ) ) ) ) \r
0056300 ( ( % g e n e r a l - a
0056320 r r a y - p a r r a y - 2 ) \r
0056340 ( l e t
0056360 ( ( d i m s ( 006 002 | f f e t c
0056400 h | 006 001 ( g e n e r a l - a r
0056420 r a y d i m s ) 006 002 | o f |
0056440 006 001 a r r a y - 2 ) ) ) \r
0056460 ( a
0056500 n d ( e q 2 ( l e n g t h
0056520 d i m s ) ) \r
0056540 ( a n
0056560 d ( e q l ( 006 002 | f f e t c
0056600 h | 006 001 ( t w o d - a r r a y
0056620 b o u n d 0 ) 006 002 | o f | 006
0056640 001 a r r a y - 1 ) \r
0056660
0056700 ( c a r d
0056720 i m s ) ) \r
0056740
0056760 ( e q l ( 006 002 | f f e t c h |
0057000 006 001 ( t w o d - a r r a y b
0057020 o u n d 1 ) 006 002 | o f | 006 001
0057040 a r r a y - 1 ) \r
0057060
0057100 ( c a d r d i
0057120 m s ) ) ) ) ) ) \r
0057140 ( t n i l ) ) ) \r
0057160 ( ( % g e n e r a l - a r
0057200 r a y - p a r r a y - 1 ) \r
0057220 ( l e t ( ( d i m
0057240 s ( 006 002 | f f e t c h | 006 001
0057260 ( g e n e r a l - a r r a y d
0057300 i m s ) 006 002 | o f | 006 001 a r
0057320 r a y - 1 ) ) ) \r
0057340 ( c o n d \r
0057360 ( ( % o n e
0057400 d - a r r a y - p a r r a y -
0057420 2 ) \r
0057440 ( a n d ( e q 1 ( l
0057460 e n g t h d i m s ) ) \r
0057500
0057520 ( e q l ( 006 002 | f e t c h
0057540 | 006 001 ( a r r a y - h e a d e
0057560 r t o t a l - s i z e ) 006 002
0057600 | o f | 006 001 a r r a y - 1 ) \r
0057620
0057640 ( 006 002 | f e
0057660 t c h | 006 001 ( a r r a y - h e
0057700 a d e r t o t a l - s i z e )
0057720 006 002 | o f | 006 001 a r r a y -
0057740 2 ) ) ) ) \r
0057760 ( ( % t w o d - a r r
0060000 a y - p a r r a y - 2 ) \r
0060020 ( a
0060040 n d ( e q 2 ( l e n g t h
0060060 d i m s ) ) \r
0060100 ( a n
0060120 d ( e q l ( c a r d i m s
0060140 ) \r
0060160
0060200 ( 006 002 | f f e t c h | 006 001 (
0060220 t w o d - a r r a y b o u n d
0060240 0 ) 006 002 | o f | 006 001 a r r a
0060260 y - 2 ) ) \r
0060300
0060320 ( e q l ( c a d r d i m s )
0060340 \r
0060360
0060400 ( 006 002 | f f e t c h | 006 001 ( t
0060420 w o d - a r r a y b o u n d 1
0060440 ) 006 002 | o f | 006 001 a r r a y
0060460 - 2 ) ) ) ) ) \r
0060500 ( ( % g e n e r a
0060520 l - a r r a y - p a r r a y -
0060540 2 ) \r
0060560 ( e q u a l d i m s (
0060600 006 002 | f f e t c h | 006 001 ( g e
0060620 n e r a l - a r r a y d i m s
0060640 ) 006 002 | o f | 006 001 a r r a y
0060660 - 2 ) ) ) \r
0060700 ( t n i l ) ) ) ) \r
0060720 ( t n i l ) ) ) \r
0060740 \r ( c l : d e f u n 006 002 e x t
0060760 e n d a b l e - a r r a y - p 006
0061000 001 ( a r r a y ) \r
0061020 \r
0061040 006 003 ( * * ) 006 001 \r ( c o n d
0061060 \r ( ( % a r r a y p a
0061100 r r a y ) \r ( 006 002 | f
0061120 e t c h | 006 001 ( a r r a y - h
0061140 e a d e r e x t e n d a b l e
0061160 - p ) 006 002 | o f | 006 001 a r r
0061200 a y ) ) \r ( ( s t r i n
0061220 g p a r r a y ) \r n
0061240 i l ) \r ( t ( c l : e
0061260 r r o r " N o t a n a r r
0061300 a y ~ S " a r r a y ) ) ) )
0061320 \r \r ( c l : d e f u n 006 002 f i
0061340 l l - a r r a y 006 001 ( a r r a
0061360 y v a l u e ) ( c l : i f
0061400 ( n o t ( % a r r a y p a r
0061420 r a y ) ) \r
0061440
*
0061500 ( c l : e r r o r " N o t a
0061520 n a r r a y : ~ S " a r r
0061540 a y ) ) \r
0061560
0061600 ( l e t ( ( t
0061620 o t a l - s i z e ( 006 002 | f e
0061640 t c h | 006 001 ( a r r a y - h e
0061660 a d e r t o t a l - s i z e )
0061700 006 002 | o f | 006 001 a r r a y )
0061720 ) \r
0061740
0061760 ( t y p e
0062000 - n u m b e r ( % a r r a y -
0062020 t y p e - n u m b e r a r r a
0062040 y ) ) ) \r
0062060
0062100 ( c l
0062120 : i f ( 006 002 | f e t c h | 006 001
0062140 ( a r r a y - h e a d e r r
0062160 e a d - o n l y - p ) 006 002 | o
0062200 f | 006 001 a r r a y ) \r
0062220
*
0062260 ( % m a k
0062300 e - a r r a y - w r i t e a b l
0062320 e a r r a y ) ) \r
0062340
*
0062400 ( c l : w h e n ( > t o
0062420 t a l - s i z e 0 ) \r
0062440
*
0062500 ( c l : w
0062520 h e n ( a n d ( % t h i n -
0062540 c h a r - t y p e - p t y p e
0062560 - n u m b e r ) \r
0062600
*
0062660 ( % f a t - s t r i
0062700 n g - c h a r - p v a l u e )
0062720 ) \r
0062740
*
0063000 ( % m a k e - s
0063020 t r i n g - a r r a y - f a t
0063040 a r r a y ) \r
0063060
*
0063120 ( s e
0063140 t q t y p e - n u m b e r (
0063160 % a r r a y - t y p e - n u m b
0063200 e r a r r a y ) ) ) \r
0063220
*
0063260 ( c l : i
0063300 f ( n o t ( % l l a r r a y
0063320 - t y p e p t y p e - n u m b
0063340 e r v a l u e ) ) \r
0063360
*
0063440 ( c l : e r r o r \r
0063460
*
0063540 " V a l u e o f i
0063560 n c o r r e c t t y p e f o
0063600 r t h i s a r r a y : ~ S
0063620 " \r
0063640
*
0063720 v a l u e ) ) \r
0063740
*
0064000 ( l e t ( ( b a
0064020 s e ( % a r r a y - b a s e
0064040 a r r a y ) ) \r
0064060
*
0064120 ( o f
0064140 f s e t ( % a r r a y - o f f
0064160 s e t a r r a y ) ) ) \r
0064200
*
0064260 006 003 ( * "
0064300 S t a r t t h i n g s o f f
0064320 " ) 006 001 \r
0064340
*
0064400 ( % a r r a y
0064420 - w r i t e v a l u e b a s
0064440 e t y p e - n u m b e r o f
0064460 f s e t ) \r
0064500
*
0064560 006 003 ( * " A n o v e r
0064600 l a p p i n g b l t " ) 006 001 \r
0064620
*
0064700 ( % f a s t - c o p y -
0064720 b a s e b a s e o f f s e t
0064740 b a s e ( c l : 1 + o f f
0064760 s e t ) \r
0065000
*
0065060 ( c l : 1 - t o t a l - s i z
0065100 e ) \r
0065120
*
0065160 t y
0065200 p e - n u m b e r ) ) ) \r
0065220
*
0065260 a r r a y ) ) \r \r ( c
0065300 l : d e f u n 006 002 c l : f i l
0065320 l - p o i n t e r 006 001 ( c l :
0065340 v e c t o r ) \r
0065360 \r 006 003
0065400 ( * * ) 006 001 \r ( c o n d \r
0065420 ( ( a n d ( o r ( % o
0065440 n e d - a r r a y - p c l : v
0065460 e c t o r ) \r
0065500 ( % g e n e r a l - a
0065520 r r a y - p c l : v e c t o r
0065540 ) ) \r ( 006 002
0065560 | f e t c h | 006 001 ( a r r a y
0065600 - h e a d e r f i l l - p o i
0065620 n t e r - p ) 006 002 | o f | 006 001
0065640 c l : v e c t o r ) ) \r
0065660 ( 006 002 | f e t c h | 006 001 (
0065700 a r r a y - h e a d e r c l :
0065720 f i l l - p o i n t e r ) 006 002
0065740 | o f | 006 001 c l : v e c t o r
0065760 ) ) \r ( ( o r ( % v e
0066000 c t o r p c l : v e c t o r )
0066020 \r ( s t r i n
0066040 g p c l : v e c t o r ) ) \r
0066060 ( c l : e r r o r " v
0066100 e c t o r h a s n o f i l
0066120 l p o i n t e r " ) ) \r
0066140 ( t ( c l : e r r o r " N
0066160 o t a v e c t o r ~ S "
0066200 c l : v e c t o r ) ) ) ) \r \r (
0066220 c l : d e f u n 006 002 f i l l -
0066240 v e c t o r 006 001 ( c l : v e c
0066260 t o r v a l u e & k e y (
0066300 s t a r t 0 ) \r
0066320
0066340 e n d ) ( c l : i
0066360 f ( n o t ( % v e c t o r p
0066400 c l : v e c t o r ) ) \r
0066420
*
0066460 ( c l : e r r o r
0066500 " N o t a v e c t o r : ~
0066520 S " c l : v e c t o r ) ) \r
0066540
*
0066600 ( c l : i f ( < s t a r t
0066620 0 ) \r
0066640
0066660 ( c l
0066700 : e r r o r " I n v a l i d
0066720 : s t a r t a r g : ~ S "
0066740 s t a r t ) ) \r
0066760
0067000 ( c o n d \r
0067020
*
0067060 ( ( n u l l e n d )
0067100 \r
0067120
0067140 ( s e t q e n d
0067160 ( 006 002 | f e t c h | 006 001 ( a
0067200 r r a y - h e a d e r t o t a
0067220 l - s i z e ) 006 002 | o f | 006 001
0067240 c l : v e c t o r ) ) ) \r
0067260
*
0067320 ( ( n o t ( < = 0 e
0067340 n d ( 006 002 | f e t c h | 006 001
0067360 ( a r r a y - h e a d e r t o
0067400 t a l - s i z e ) 006 002 | o f |
0067420 006 001 \r
0067440
*
0067560 c l : v e c t o r \r
0067600
*
0067660 ) ) ) \r
0067700
*
0067740 ( c l : e r r o r " I n v a l
0067760 i d : e n d a r g : ~ S "
0070000 e n d ) ) ) \r
0070020
0070040 ( l e t (
0070060 ( c n t ( - e n d s t a r
0070100 t ) ) \r
0070120
0070140 ( t y p
0070160 e - n u m b e r ( % a r r a y
0070200 - t y p e - n u m b e r c l :
0070220 v e c t o r ) ) ) \r
0070240
*
0070300 ( c l : i f ( 006 002 | f e t c
0070320 h | 006 001 ( a r r a y - h e a d
0070340 e r r e a d - o n l y - p )
0070360 006 002 | o f | 006 001 c l : v e c t
0070400 o r ) \r
0070420
*
0070460 ( % m a k e - a r r a y - w
0070500 r i t e a b l e c l : v e c t
0070520 o r ) ) \r
0070540
0070560 ( c l :
0070600 w h e n ( > c n t 0 ) \r
0070620
*
0070660 ( c l
0070700 : w h e n ( a n d ( % t h i
0070720 n - c h a r - t y p e - p t y
0070740 p e - n u m b e r ) \r
0070760
*
0071040 ( % f a t - s t r
0071060 i n g - c h a r - p v a l u e
0071100 ) ) \r
0071120
*
0071160 ( % m a k e - s
0071200 t r i n g - a r r a y - f a t
0071220 c l : v e c t o r ) \r
0071240
*
0071320 ( s e t q t y p e - n u m b e
0071340 r ( % a r r a y - t y p e - n
0071360 u m b e r c l : v e c t o r )
0071400 \r
0071420
*
0071460 ) ) \r
0071500
*
0071540 ( c l : i f (
0071560 n o t ( % l l a r r a y - t y
0071600 p e p t y p e - n u m b e r
0071620 v a l u e ) ) \r
0071640
*
0071700 ( c l
0071720 : e r r o r \r
0071740
*
0072020 " V a l u e o f i n c o r
0072040 r e c t t y p e f o r t h
0072060 i s a r r a y : ~ S " \r
0072100
*
0072160 v a l u e
0072200 ) ) \r
0072220
*
0072260 ( l e t ( ( b a s e ( % a
0072300 r r a y - b a s e c l : v e c
0072320 t o r ) ) \r
0072340
*
0072400 ( o f f s e
0072420 t ( + s t a r t ( % a r r
0072440 a y - o f f s e t c l : v e c
0072460 t o r ) ) ) ) \r
0072500
*
0072560 006 003 ( * " S t a r t
0072600 t h i n g s o f f " ) 006 001 \r
0072620
*
0072700 ( % a r r a y - w r i t e
0072720 v a l u e b a s e t y p e
0072740 - n u m b e r o f f s e t ) \r
0072760
*
0073040 006 003 (
0073060 * " A n o v e r l a p p i n
0073100 g b l t " ) 006 001 \r
0073120
*
0073160 ( % f
0073200 a s t - c o p y - b a s e b a
0073220 s e o f f s e t b a s e (
0073240 c l : 1 + o f f s e t ) \r
0073260
*
0073340 ( c l : 1 - c
0073360 n t ) \r
0073400
*
0073440 t y
0073460 p e - n u m b e r ) ) ) \r
0073500
*
0073540 c l : v e c t o r ) ) \r
0073560 \r ( c l : d e f u n 006 002 c l :
0073600 m a k e - a r r a y 006 001 ( d i
0073620 m e n s i o n s & k e y ( e
0073640 l e m e n t - t y p e t ) \r
0073660
0073700 ( i
0073720 n i t i a l - e l e m e n t n
0073740 i l i n i t i a l - e l e m e
0073760 n t - p ) \r
0074000
0074020 ( i n i t i a l - c o
0074040 n t e n t s n i l i n i t i
0074060 a l - c o n t e n t s - p ) \r
0074100
0074120 ( d
0074140 i s p l a c e d - t o n i l
0074160 d i s p l a c e d - t o - p ) \r
0074200
0074220 (
0074240 d i s p l a c e d - t o - b a s
0074260 e n i l d i s p l a c e d -
0074300 t o - b a s e - p ) \r
0074320
0074340 ( d i s p l
0074360 a c e d - i n d e x - o f f s e
0074400 t 0 d i s p l a c e d - i n
0074420 d e x - o f f s e t - p ) \r
0074440
0074460 c l :
0074500 f i l l - p o i n t e r a d j
0074520 u s t a b l e e x t e n d a b
0074540 l e f a t p r e a d - o n l
0074560 y - p ) \r
0074600
*
0074640 "
0074660 M a k e a n a r r a y f o
0074700 l l o w i n g t h e k e y
0074720 w o r d s p e c s " \r
0074740 \r
0074760 006 003 ( * * " S t r i n g
0075000 a r e b y d e f a u l t t
0075020 h i n u n l e s s F A T P
0075040 i s T . D I S P L A C E D -
0075060 T O - B A S E i n d i c a t e
0075100 s d i s p l a c e m e n t t
0075120 o a r a w s t o r a g e
0075140 b l o c k . R E A D - O N L Y
0075160 - P i n d i c a t e s a r
0075200 e a d o n l y a r r a y " )
0075220 006 001 \r \r ( c l : i f ( n
0075240 o t ( c l : l i s t p d i m
0075260 e n s i o n s ) ) \r
0075300 ( s e t q d i m e n s
0075320 i o n s ( l i s t d i m e n
0075340 s i o n s ) ) ) \r ( c l :
0075360 i f ( c l : d o l i s t ( d
0075400 i m d i m e n s i o n s n i
0075420 l ) \r
0075440 ( c l : i f ( o r (
0075460 < d i m 0 ) \r
0075500
0075520 ( > = d i m c l :
0075540 a r r a y - d i m e n s i o n -
0075560 l i m i t ) ) \r
0075600
0075620 ( r e t u r n t ) ) ) \r
0075640 ( c l : e r r o r
0075660 " D i m e n s i o n s o u t
0075700 o f b o u n d s ~ S " d
0075720 i m e n s i o n s ) ) \r (
0075740 l e t ( ( r a n k ( l e n g
0075760 t h d i m e n s i o n s ) ) \r
0076000 ( n e l t s
0076020 ( % t o t a l - s i z e d i m
0076040 e n s i o n s ) ) \r
0076060 a r r a y ) \r
0076100 \r 006
0076120 003 ( * * " C o n s i s t e n
0076140 c y c h e c k s " ) 006 001 \r \r
0076160 ( c l : i f ( >
0076200 = r a n k c l : a r r a y -
0076220 r a n k - l i m i t ) \r
0076240 ( c l : e
0076260 r r o r " T o o m a n y d
0076300 i m e n s i o n s : ~ A " r
0076320 a n k ) ) \r ( c
0076340 l : i f ( > = n e l t s c
0076360 l : a r r a y - t o t a l - s i
0076400 z e - l i m i t ) \r
0076420 ( c l : e r r
0076440 o r " T o o m a n y e l e
0076460 m e n t s : ~ A " n e l t s
0076500 ) ) \r ( c l : i
0076520 f ( o r ( a n d d i s p l
0076540 a c e d - t o - p ( o r i n
0076560 i t i a l - e l e m e n t - p
0076600 i n i t i a l - c o n t e n t s
0076620 - p d i s p l a c e d - t o -
0076640 b a s e - p ) ) \r
0076660 ( a n d
0076700 d i s p l a c e d - t o - b a
0076720 s e - p ( o r i n i t i a l
0076740 - e l e m e n t - p i n i t i
0076760 a l - c o n t e n t s - p d i
0077000 s p l a c e d - t o - p ) ) \r
0077020
0077040 ( a n d c l : f i l l - p
0077060 o i n t e r ( n o t ( e q l
0077100 r a n k 1 ) ) ) \r
0077120 ( a
0077140 n d d i s p l a c e d - i n d
0077160 e x - o f f s e t - p ( n o t
0077200 ( o r d i s p l a c e d - t
0077220 o - p d i s p l a c e d - t o
0077240 - b a s e - p ) ) ) \r
0077260 ( a
0077300 n d i n i t i a l - e l e m e
0077320 n t - p i n i t i a l - c o n
0077340 t e n t s - p ) \r
0077360 ( a n d
0077400 a d j u s t a b l e e x t e
0077420 n d a b l e ) \r
0077440 ( a n d
0077460 r e a d - o n l y - p ( o r
0077500 e x t e n d a b l e a d j u s
0077520 t a b l e ) ) ) \r
0077540 ( c l : e r r o
0077560 r " I n c o n s i s t e n t
0077600 o p t i o n s t o m a k e -
0077620 a r r a y " ) ) \r
0077640 ( c l : i f d i s p l a c e
0077660 d - t o - p ( c o n d \r
0077700
0077720 ( (
0077740 n o t ( % a r r a y p d i s
0077760 p l a c e d - t o ) ) \r
0100000
0100020 ( c
0100040 l : e r r o r " C a n n o t
0100060 d i s p l a c e t o a n I
0100100 n t e r l i s p a r r a y / s
0100120 t r i n g " ) ) \r
0100140
0100160 ( ( n o t
0100200 ( e q u a l ( % g e t - c a n
0100220 o n i c a l - c m l - t y p e
0100240 e l e m e n t - t y p e ) \r
0100260
*
0100320 ( c l :
0100340 a r r a y - e l e m e n t - t y
0100360 p e d i s p l a c e d - t o )
0100400 ) ) \r
0100420
0100440 ( c l : e r r o r "
0100460 N o t d i s p l a c e d t o
0100500 a n a r r a y o f t h e
0100520 s a m e e l e m e n t - t y
0100540 p e " ) ) \r
0100560
0100600 ( ( > ( + d i
0100620 s p l a c e d - i n d e x - o f
0100640 f s e t n e l t s ) \r
0100660
*
0100720 ( c l : a r r a y - t o t a l
0100740 - s i z e d i s p l a c e d -
0100760 t o ) ) \r
0101000
0101020 ( c l : e r r o r
0101040 " d i s p l a c e d a r r a
0101060 y o u t o f b o u n d s "
0101100 ) ) ) ) \r ( c l
0101120 : i f c l : f i l l - p o i n
0101140 t e r ( c o n d \r
0101160
0101200 ( ( e q
0101220 c l : f i l l - p o i n t e r
0101240 t ) \r
0101260
0101300 ( s e t q c l :
0101320 f i l l - p o i n t e r n e l
0101340 t s ) ) \r
0101360
0101400 ( ( n o t ( a n
0101420 d ( > = c l : f i l l - p o
0101440 i n t e r 0 ) \r
0101460
*
0101520 ( < = c l : f i l
0101540 l - p o i n t e r n e l t s )
0101560 ) ) \r
0101600
0101620 ( c l : e r r o r
0101640 " F i l l p o i n t e r o u
0101660 t o f b o u n d s ~ A "
0101700 c l : f i l l - p o i n t e r )
0101720 ) ) ) \r \r
0101740 006 003 ( * *
0101760 " S p e c s r e a d y , m a
0102000 k e t h e a r r a y b y
0102020 c a s e " ) 006 001 \r \r
0102040 ( s e t q a r r a y ( c
0102060 o n d \r
0102100 ( d i s p
0102120 l a c e d - t o - p ( % m a k
0102140 e - d i s p l a c e d - a r r a
0102160 y n e l t s d i m e n s i o
0102200 n s e l e m e n t - t y p e
0102220 \r
0102240
0102260 d
0102300 i s p l a c e d - t o d i s p
0102320 l a c e d - i n d e x - o f f s
0102340 e t c l : f i l l - p o i n t
0102360 e r \r
0102400
*
0102440 r e a d - o n l y - p a d
0102460 j u s t a b l e e x t e n d a
0102500 b l e ) ) \r
0102520 ( d i
0102540 s p l a c e d - t o - b a s e
0102560 ( c l : i f ( o r ( > r a
0102600 n k 1 ) \r
0102620
*
0102660 a d j u s
0102700 t a b l e ) \r
0102720
*
0102760 ( % m a k e - g
0103000 e n e r a l - a r r a y n e l
0103020 t s d i m e n s i o n s e l
0103040 e m e n t - t y p e \r
0103060
*
0103140 c l : f i l l - p o i n
0103160 t e r f a t p r e a d - o n
0103200 l y - p a d j u s t a b l e
0103220 \r
0103240
*
0103300 e x t e n d a
0103320 b l e d i s p l a c e d - t o
0103340 - b a s e \r
0103360
*
0103420 d
0103440 i s p l a c e d - i n d e x - o
0103460 f f s e t ) \r
0103500
*
0103540 ( % m a k e - o
0103560 n e d - a r r a y n e l t s
0103600 e l e m e n t - t y p e c l :
0103620 f i l l - p o i n t e r \r
0103640
*
0103720 f a t p r e a d -
0103740 o n l y - p e x t e n d a b l
0103760 e d i s p l a c e d - t o - b
0104000 a s e \r
0104020
*
0104060 d i s
0104100 p l a c e d - i n d e x - o f f
0104120 s e t ) ) ) \r
0104140 ( (
0104160 a n d ( e q r a n k 1 ) \r
0104200
0104220 ( n o
0104240 t a d j u s t a b l e ) ) \r
0104260
0104300 ( % m a k e - o n
0104320 e d - a r r a y n e l t s e
0104340 l e m e n t - t y p e c l : f
0104360 i l l - p o i n t e r f a t p
0104400 r e a d - o n l y - p \r
0104420
0104440 e x t
0104460 e n d a b l e ) ) \r
0104500
0104520 ( ( a n d ( e q r a n k
0104540 2 ) \r
0104560
0104600 ( n o t a d j u s t a b l e )
0104620 ) \r
0104640 ( % m a k e
0104660 - t w o d - a r r a y n e l t
0104700 s d i m e n s i o n s e l e
0104720 m e n t - t y p e f a t p r
0104740 e a d - o n l y - p e x t e n
0104760 d a b l e ) ) \r
0105000 (
0105020 t ( % m a k e - g e n e r a l
0105040 - a r r a y n e l t s d i m
0105060 e n s i o n s e l e m e n t -
0105100 t y p e c l : f i l l - p o i
0105120 n t e r f a t p \r
0105140
0105160 r e a d
0105200 - o n l y - p a d j u s t a b
0105220 l e e x t e n d a b l e ) ) )
0105240 ) \r \r
0105260 006 003 ( * * " I
0105300 n i t i a l i z e t h e s t
0105320 o r a g e " ) 006 001 \r \r
0105340 ( c o n d \r
0105360 ( i n i t i a l - c o n
0105400 t e n t s - p ( % a r r a y -
0105420 c o n t e n t - i n i t i a l i
0105440 z e a r r a y i n i t i a l
0105460 - c o n t e n t s ) ) \r
0105500 ( i n i t i a l -
0105520 e l e m e n t - p ( % a r r a
0105540 y - e l e m e n t - i n i t i a
0105560 l i z e a r r a y i n i t i
0105600 a l - e l e m e n t ) ) ) \r
0105620 \r
0105640 006 003 ( * * " R e t u r
0105660 n t h e a r r a y " ) 006 001 \r
0105700 \r a r r a y ) )
0105720 \r \r ( c l : d e f u n 006 002 m a
0105740 k e - v e c t o r 006 001 ( s i z
0105760 e & k e y ( e l e m e n t -
0106000 t y p e t ) \r
0106020
0106040 ( i n i t i a l - e l e
0106060 m e n t n i l i n i t i a l
0106100 - e l e m e n t - p ) \r
0106120
0106140 f a t p ) " M
0106160 a k e a v e c t o r " ( c
0106200 l : i f ( o r ( < s i z e
0106220 0 ) \r
0106240
*
0106320 ( > = s i z e c l : a r r
0106340 a y - t o t a l - s i z e - l i
0106360 m i t ) ) \r
0106400
*
0106440 (
0106460 c l : e r r o r " S i z e o
0106500 u t o f b o u n d s : ~ A
0106520 " s i z e ) ) \r
0106540
*
0106600 ( l e t
0106620 ( ( c l : v e c t o r ( % m a
0106640 k e - o n e d - a r r a y s i
0106660 z e \r
0106700
*
0106760 e l
0107000 e m e n t - t y p e n i l f
0107020 a t p ) ) ) \r
0107040
*
0107100 ( c
0107120 l : i f i n i t i a l - e l e
0107140 m e n t - p ( f i l l - a r r
0107160 a y c l : v e c t o r \r
0107200
*
0107320 i n i t i a l - e l e m
0107340 e n t \r
0107360
*
0107460 ) ) \r
0107500
*
0107560 c l : v e c t o r ) )
0107600 \r \r ( c l : d e f u n 006 002 r e
0107620 a d - o n l y - a r r a y - p 006
0107640 001 ( a r r a y ) \r
0107660 \r
0107700 006 003 ( * * ) 006 001 \r ( c o n d
0107720 \r ( ( % a r r a y p a
0107740 r r a y ) \r ( 006 002 | f
0107760 e t c h | 006 001 ( a r r a y - h
0110000 e a d e r r e a d - o n l y -
0110020 p ) 006 002 | o f | 006 001 a r r a
0110040 y ) ) \r ( ( s t r i n g
0110060 p a r r a y ) \r n i
0110100 l ) \r ( t ( c l : e r
0110120 r o r " N o t a n a r r a
0110140 y ~ S " a r r a y ) ) ) ) \r
0110160 \r ( c l : d e f u n 006 002 c l :
0110200 s b i t 006 001 ( s i m p l e - b
0110220 i t - a r r a y & r e s t i
0110240 n d i c e s ) ( c l : a s s e
0110260 r t ( t y p e p s i m p l e
0110300 - b i t - a r r a y \r
0110320
*
0110420 ' ( c l : s i m p l e - a r r a
0110440 y b i t ) ) \r
0110460
*
0110540 ( s i m p l e - b i t - a r
0110560 r a y ) \r
0110600
*
0110640 "
0110660 N o t a b i t - a r r a y :
0110700 ~ S " s i m p l e - b i t -
0110720 a r r a y ) \r
0110740
*
0111000 ( c l : a p
0111020 p l y ( f u n c t i o n c l
0111040 : a r e f ) \r
0111060
*
0111140 s i m p l e - b i t - a r r a
0111160 y i n d i c e s ) ) \r \r ( c l
0111200 : d e f u n 006 002 c l : s c h a
0111220 r 006 001 ( c l : s i m p l e - s
0111240 t r i n g i n d e x ) ( c l
0111260 : a s s e r t ( t y p e p c
0111300 l : s i m p l e - s t r i n g
0111320 ' c l : s i m p l e - s t r i n
0111340 g ) \r
0111360
*
0111420 ( c l : s i m p l e
0111440 - s t r i n g ) \r
0111460
*
0111520 " N o t
0111540 a s i m p l e - s t r i n g
0111560 : ~ S " c l : s i m p l e -
0111600 s t r i n g ) \r
0111620
*
0111660 ( c l : a r e f c l :
0111700 s i m p l e - s t r i n g i n
0111720 d e x ) ) \r \r ( c l : d e f u n
0111740 006 002 s e t - f i l l - p o i n
0111760 t e r 006 001 ( c l : v e c t o r
0112000 n e w v a l u e ) 006 003 006 001
0112020 006 003 ( *
0112040 | j o p : | " 5 - S e p -
0112060 8 6 1 2 : 5 5 " ) 006 001 \r
0112100 \r
0112120 006 003 ( * * ) 006 001 \r \r
0112140 ( c o n d \r ( ( a n
0112160 d ( o r ( % o n e d - a r r
0112200 a y - p c l : v e c t o r ) \r
0112220
0112240 ( % g e n e r a l - a r r a y -
0112260 p c l : v e c t o r ) ) \r
0112300 ( 006 002 | f e
0112320 t c h | 006 001 ( a r r a y - h e
0112340 a d e r f i l l - p o i n t e
0112360 r - p ) 006 002 | o f | 006 001 c l
0112400 : v e c t o r ) ) \r
0112420 ( c l : i f ( n o t ( < =
0112440 0 n e w v a l u e ( 006 002 |
0112460 f e t c h | 006 001 ( a r r a y -
0112500 h e a d e r t o t a l - s i z
0112520 e ) 006 002 | o f | 006 001 c l : v
0112540 e c t o r ) ) ) \r
0112560 ( c l : e r r o r
0112600 " F i l l p o i n t e r o
0112620 u t o f b o u n d s : ~ A
0112640 " n e w v a l u e ) ) \r
0112660 ( 006 002 | r e p l a c e |
0112700 006 001 ( a r r a y - h e a d e r
0112720 c l : f i l l - p o i n t e r
0112740 ) 006 002 | o f | 006 001 c l : v e
0112760 c t o r 006 002 | w i t h | 006 001
0113000 n e w v a l u e ) \r
0113020 n e w v a l u e ) \r
0113040 ( ( o r ( % v e c t o r p
0113060 c l : v e c t o r ) \r
0113100 ( s t r i n g p c
0113120 l : v e c t o r ) ) \r
0113140 ( c l : e r r o r " V e c
0113160 t o r h a s n o f i l l
0113200 p o i n t e r " ) ) \r
0113220 ( t ( c l : e r r o r " N
0113240 o t a v e c t o r ~ S "
0113260 c l : v e c t o r ) ) ) ) \r \r (
0113300 c l : d e f u n 006 002 s i m p l
0113320 e - a r r a y - p 006 001 ( a r r
0113340 a y ) \r \r
0113360 006 003 ( * *
0113400 ) 006 001 \r ( a n d ( o r ( %
0113420 s i m p l e - a r r a y - p a
0113440 r r a y ) \r
0113460 ( s t r i n g p a r r a y ) )
0113500 \r t ) ) \r \r ( c l :
0113520 d e f u n 006 002 c l : s i m p l
0113540 e - b i t - v e c t o r - p 006 001
0113560 ( c l : v e c t o r ) \r
0113600 \r
0113620 006 003 ( * * ) 006 001 \r ( a
0113640 n d ( % o n e d - a r r a y -
0113660 p c l : v e c t o r ) \r
0113700 ( 006 002 | f e t c h | 006 001
0113720 ( a r r a y - h e a d e r s i
0113740 m p l e - p ) 006 002 | o f | 006 001
0113760 c l : v e c t o r ) \r
0114000 ( 006 002 | f e t c h | 006 001 (
0114020 a r r a y - h e a d e r b i t
0114040 - p ) 006 002 | o f | 006 001 c l :
0114060 v e c t o r ) ) ) \r \r ( c l : d
0114100 e f u n 006 002 c l : s i m p l e
0114120 - s t r i n g - p 006 001 ( s t r
0114140 i n g ) \r
0114160 \r 006 003 ( *
0114200 * ) 006 001 \r ( a n d ( o r (
0114220 % s i m p l e - s t r i n g - p
0114240 s t r i n g ) \r
0114260 ( s t r i n g p s t r i
0114300 n g ) ) \r t ) ) \r \r
0114320 ( c l : d e f u n 006 002 c l : s
0114340 i m p l e - v e c t o r - p 006 001
0114360 ( c l : v e c t o r ) 006 003 006
0114400 001
0114420 006 003 ( * | j o p : |
0114440 " 5 - S e p - 8 6 1 2 : 5
0114460 4 " ) 006 001 \r
0114500 \r 006 003 ( *
0114520 * ) 006 001 \r \r ( a n d ( %
0114540 o n e d - a r r a y - p c l :
0114560 v e c t o r ) \r
0114600 ( 006 002 | f e t c h | 006 001 ( a r
0114620 r a y - h e a d e r s i m p l
0114640 e - p ) 006 002 | o f | 006 001 c l
0114660 : v e c t o r ) \r
0114700 ( e q ( c l : a r r a y - e
0114720 l e m e n t - t y p e c l : v
0114740 e c t o r ) \r
0114760 t ) ) ) \r \r ( c l : d e f
0115000 u n 006 002 s t r i n g - a r r a
0115020 y - p 006 001 ( a r r a y ) \r
0115040 \r
0115060 006 003 ( * * ) 006 001 \r (
0115100 % c h a r - t y p e - p ( % a
0115120 r r a y - t y p e - n u m b e r
0115140 a r r a y ) ) ) \r \r ( c l : d
0115160 e f u n 006 002 c l : s v r e f 006
0115200 001 ( c l : s i m p l e - v e c
0115220 t o r i n d e x ) ( c l : a
0115240 s s e r t ( t y p e p c l :
0115260 s i m p l e - v e c t o r ' c
0115300 l : s i m p l e - v e c t o r )
0115320 \r
0115340
*
0115400 ( c l : s i m p l e - v
0115420 e c t o r ) \r
0115440
*
0115500 " N o t a
0115520 s i m p l e - v e c t o r :
0115540 ~ S " c l : s i m p l e - v e
0115560 c t o r ) \r
0115600
*
0115640 ( c l : a r e f c l : s i
0115660 m p l e - v e c t o r i n d e
0115700 x ) ) \r \r ( c l : d e f u n 006
0115720 002 v e c t o r - l e n g t h 006 001
0115740 ( c l : v e c t o r ) 006 003 006
0115760 001
0116000 006 003 ( * |
0116020 j o p : | " 5 - S e p - 8 6
0116040 1 2 : 5 5 " ) 006 001 \r ( c
0116060 o n d \r ( ( % v e c
0116100 t o r p c l : v e c t o r ) \r
0116120 ( 006 002 | f e t c h
0116140 | 006 001 ( a r r a y - h e a d e
0116160 r c l : f i l l - p o i n t e
0116200 r ) 006 002 | o f | 006 001 c l : v
0116220 e c t o r ) ) \r ( (
0116240 s t r i n g p c l : v e c t o
0116260 r ) \r ( n c h a r
0116300 s c l : v e c t o r ) ) \r
0116320 ( t ( c l : e r r o r
0116340 " N o t a v e c t o r :
0116360 ~ s " c l : v e c t o r ) ) )
0116400 ) \r \r ( c l : d e f u n 006 002 c
0116420 l : v e c t o r - p o p 006 001 (
0116440 c l : v e c t o r ) 006 003 006 001
0116460
0116500 006 003 ( * | j o
0116520 p : | " 5 - S e p - 8 6 1
0116540 2 : 5 5 " ) 006 001 \r
0116560 \r 006 003
0116600 ( * * ) 006 001 \r \r ( c o n
0116620 d \r ( ( a n d ( o
0116640 r ( % o n e d - a r r a y - p
0116660 c l : v e c t o r ) \r
0116700 ( % g e
0116720 n e r a l - a r r a y - p c l
0116740 : v e c t o r ) ) \r
0116760 ( 006 002 | f e t c h |
0117000 006 001 ( a r r a y - h e a d e r
0117020 f i l l - p o i n t e r - p )
0117040 006 002 | o f | 006 001 c l : v e c
0117060 t o r ) ) \r ( l e
0117100 t ( ( c l : f i l l - p o i n
0117120 t e r ( 006 002 | f e t c h | 006 001
0117140 ( a r r a y - h e a d e r c
0117160 l : f i l l - p o i n t e r )
0117200 006 002 | o f | 006 001 c l : v e c t
0117220 o r ) ) ) \r
0117240 ( c l : i f ( < = c l :
0117260 f i l l - p o i n t e r 0 ) \r
0117300
0117320 ( c l : e r r o r " C a
0117340 n ' t p o p f r o m z e r
0117360 o f i l l p o i n t e r " )
0117400 ) \r ( s
0117420 e t q c l : f i l l - p o i n
0117440 t e r ( c l : 1 - c l : f i
0117460 l l - p o i n t e r ) ) \r
0117500 ( 006 002 | r e p
0117520 l a c e | 006 001 ( a r r a y - h
0117540 e a d e r c l : f i l l - p o
0117560 i n t e r ) 006 002 | o f | 006 001
0117600 c l : v e c t o r 006 002 | w i t
0117620 h | 006 001 c l : f i l l - p o i
0117640 n t e r ) \r
0117660 ( c l : a r e f c l : v e
0117700 c t o r c l : f i l l - p o i
0117720 n t e r ) ) ) \r ( (
0117740 o r ( % v e c t o r p c l :
0117760 v e c t o r ) \r
0120000 ( s t r i n g p c l : v
0120020 e c t o r ) ) \r (
0120040 c l : e r r o r " V e c t o r
0120060 h a s n o f i l l p o i
0120100 n t e r " ) ) \r ( t
0120120 ( c l : e r r o r " N o t
0120140 a v e c t o r ~ S " c l :
0120160 v e c t o r ) ) ) ) \r \r ( c l :
0120200 d e f u n 006 002 c l : v e c t o
0120220 r - p u s h 006 001 ( n e w - e l
0120240 e m e n t c l : v e c t o r )
0120260 006 003 006 001
0120300 006 003 ( * | j o p : | " 5
0120320 - S e p - 8 6 1 2 : 5 5 " ) 006
0120340 001 \r \r
0120360 006 003 ( * * ) 006 001
0120400 \r \r ( c o n d \r
0120420 ( ( a n d ( o r ( % o n e
0120440 d - a r r a y - p c l : v e c
0120460 t o r ) \r
0120500 ( % g e n e r a l - a
0120520 r r a y - p c l : v e c t o r
0120540 ) ) \r (
0120560 006 002 | f e t c h | 006 001 ( a r r
0120600 a y - h e a d e r f i l l - p
0120620 o i n t e r - p ) 006 002 | o f |
0120640 006 001 c l : v e c t o r ) ) \r
0120660 ( l e t ( ( c l :
0120700 f i l l - p o i n t e r ( 006 002
0120720 | f e t c h | 006 001 ( a r r a y
0120740 - h e a d e r c l : f i l l -
0120760 p o i n t e r ) 006 002 | o f | 006
0121000 001 c l : v e c t o r ) ) ) \r
0121020 ( c l : w
0121040 h e n ( < c l : f i l l - p
0121060 o i n t e r ( 006 002 | f e t c h
0121100 | 006 001 ( a r r a y - h e a d e
0121120 r t o t a l - s i z e ) 006 002
0121140 | o f | 006 001 c l : v e c t o r
0121160 ) ) \r
0121200 ( a s e t n e w -
0121220 e l e m e n t c l : v e c t o
0121240 r c l : f i l l - p o i n t e
0121260 r ) \r
0121300 ( 006 002 | r e p l a c
0121320 e | 006 001 ( a r r a y - h e a d
0121340 e r c l : f i l l - p o i n t
0121360 e r ) 006 002 | o f | 006 001 c l :
0121400 v e c t o r 006 002 | w i t h | 006
0121420 001 ( c l : 1 + \r
0121440
*
0121560 c l : f i l l - p o i n t e r \r
0121600
*
0121720 ) ) \r
0121740
0121760 c l : f i l l - p o i n t e r )
0122000 ) ) \r ( ( o r ( %
0122020 v e c t o r p c l : v e c t o
0122040 r ) \r ( s
0122060 t r i n g p c l : v e c t o r
0122100 ) ) \r ( c l : e r
0122120 r o r " V e c t o r h a s
0122140 n o f i l l p o i n t e r "
0122160 ) ) \r ( t ( c l :
0122200 e r r o r " N o t a v e c
0122220 t o r ~ S " c l : v e c t o
0122240 r ) ) ) ) \r \r ( c l : d e f u n
0122260 006 002 c l : v e c t o r - p u s
0122300 h - e x t e n d 006 001 ( n e w -
0122320 e l e m e n t c l : v e c t o
0122340 r & o p t i o n a l ( e x t
0122360 e n s i o n - s i z e \r
0122400
*
0122500 * d e f a u l t - p u
0122520 s h - e x t e n s i o n - s i z
0122540 e * \r
0122560
*
0122640 ) ) " L
0122660 i k e V E C T O R - P U S H
0122700 e x c e p t i f V E C T O R
0122720 i s a d j u s t a b l e -
0122740 - i n w h i c h c a s e
0122760 a p u s h b e y o n d ( a
0123000 r r a y - t o t a l - s i z e
0123020 V E C T O R ) w i l l c a
0123040 l l a d j u s t - a r r a y "
0123060 \r ( l e t ( ( n e w - i
0123100 n d e x ( c l : v e c t o r -
0123120 p u s h n e w - e l e m e n t
0123140 c l : v e c t o r ) ) ) \r
0123160 ( c l : i f ( n u
0123200 l l n e w - i n d e x ) \r
0123220 ( c o
0123240 n d \r
0123260 ( ( > e x t e n s i
0123300 o n - s i z e 0 ) \r
0123320 ( c
0123340 l : a d j u s t - a r r a y c
0123360 l : v e c t o r ( + ( c l :
0123400 a r r a y - t o t a l - s i z e
0123420 c l : v e c t o r ) \r
0123440
*
0123500 e x t
0123520 e n s i o n - s i z e ) ) \r
0123540
0123560 ( c l : v e c t o r - p u s h
0123600 n e w - e l e m e n t c l :
0123620 v e c t o r ) ) \r
0123640 ( t ( c
0123660 l : e r r o r " E x t e n s i
0123700 o n - s i z e n o t g r e a
0123720 t e r t h a n z e r o " ) )
0123740 ) \r
0123760 n e w - i n d e x ) ) ) \r \r (
0124000 c l : d e f u n 006 002 c l : v e
0124020 c t o r p 006 001 ( c l : v e c t
0124040 o r ) 006 003 006 001
0124060
0124100 006 003 ( * | j o p : |
0124120 " 5 - S e p - 8 6 1 2 : 5 5
0124140 " ) 006 001 \r \r
0124160 006 003 ( * *
0124200 ) 006 001 \r \r ( a n d ( o r
0124220 ( % v e c t o r p c l : v e
0124240 c t o r ) \r
0124260 ( s t r i n g p c l : v e
0124300 c t o r ) ) \r t
0124320 ) ) \r \r ( d e f i n e q \r \r ( 006
0124340 004 % c o p y - t o - n e w - a r
0124360 r a y 006 001 \r ( l a m b d a
0124400 ( o l d - d i m s o l d - a r
0124420 r a y o l d - o f f s e t n
0124440 e w - d i m s n e w - a r r a
0124460 y n e w - o f f s e t ) 006 003 006
0124500 001 \r
0124520
*
0124560 006
0124600 003 ( * | j o p : | " 2 1 - S
0124620 e p - 8 6 1 6 : 5 5 " ) 006 001 \r
0124640 \r
0124660 006 003 ( * * " I t
0124700 i s a s s u m e d t h a t
0124720 O L D - A R R A Y a n d N E
0124740 W - A R R A Y a r e o f t
0124760 h e s a m e r a n k " ) 006 001
0125000 \r \r ( l e t ( ( s i z
0125020 e ( m i n ( c a r o l d -
0125040 d i m s ) \r
0125060 ( c a r
0125100 n e w - d i m s ) ) ) ) \r
0125120 ( c l : i f ( c d
0125140 r o l d - d i m s ) \r
0125160 ( c l :
0125200 d o t i m e s ( i s i z e )
0125220 \r
0125240 ( 006 002 % c o p y
0125260 - t o - n e w - a r r a y 006 001
0125300 ( c d r o l d - d i m s ) \r
0125320
0125340 o l d
0125360 - a r r a y \r
0125400
0125420 ( c l : * ( c a d r
0125440 o l d - d i m s ) \r
0125460
0125500 (
0125520 + o l d - o f f s e t i ) )
0125540 \r
0125560 (
0125600 c d r n e w - d i m s ) \r
0125620
0125640 n e w -
0125660 a r r a y \r
0125700
0125720 ( c l : * ( c a d r
0125740 n e w - d i m s ) \r
0125760
0126000 ( +
0126020 n e w - o f f s e t i ) ) )
0126040 ) \r
0126060 ( l e t ( ( o l d - t y p
0126100 e - n u m b e r ( 006 002 % a r r
0126120 a y - t y p e - n u m b e r 006 001
0126140 o l d - a r r a y ) ) \r
0126160
0126200 ( n e w - t y p e - n u m
0126220 b e r ( 006 002 % a r r a y - t y
0126240 p e - n u m b e r 006 001 n e w -
0126260 a r r a y ) ) ) \r
0126300
*
0126360 006 003 ( * \r 006 001
0126400
*
0126440 006 003 " C a n o n l y
0126460 d o a f a s t c o p y w
0126500 h e n a r r a y s h a v e
0126520 t h e s a m e t y p e n u
0126540 m b e r " ) 006 001 \r
0126560 ( c
0126600 l : i f ( e q o l d - t y p
0126620 e - n u m b e r n e w - t y p
0126640 e - n u m b e r ) \r
0126660
0126700 ( 006 002 % f a s t - c
0126720 o p y - b a s e 006 001 ( 006 002 % a
0126740 r r a y - b a s e 006 001 o l d -
0126760 a r r a y ) \r
0127000
0127020 o l d - o f
0127040 f s e t \r
0127060
0127100 ( 006 002 % a r r a
0127120 y - b a s e 006 001 n e w - a r r
0127140 a y ) \r
0127160
0127200 n e w - o f f s e
0127220 t s i z e o l d - t y p e -
0127240 n u m b e r ) \r
0127260
0127300 ( c l : e r r o r " A
0127320 r r a y s h a v e d i f f e
0127340 r i n g t y p e n u m b e r
0127360 s " ) ) ) ) ) ) ) \r \r ( 006 004 c l
0127400 : a r e f 006 001 \r ( l a m b d
0127420 a a r g s 006 003 006 001
0127440
*
0127500 006 003 ( * | j
0127520 o p : | " 2 1 - S e p - 8 6
0127540 1 5 : 0 0 " ) 006 001 \r
0127560 \r 006
0127600 003 ( * * ) 006 001 \r \r ( c
0127620 l : i f ( < a r g s 1 ) \r
0127640 ( c l : e
0127660 r r o r " A r e f t a k e s
0127700 a t l e a s t o n e a r
0127720 g " ) ) \r ( l e t ( (
0127740 a r r a y ( a r g a r g s
0127760 1 ) ) ) \r ( c
0130000 a s e a r g s ( 1 ( 006 002 %
0130020 a r e f 0 006 001 a r r a y ) ) \r
0130040 (
0130060 2 ( 006 002 % a r e f 1 006 001 a r
0130100 r a y ( a r g a r g s 2 )
0130120 ) ) \r
0130140 ( 3 ( 006 002 % a r e f 2 006 001
0130160 a r r a y ( a r g a r g s
0130200 2 ) \r
0130220 ( a r
0130240 g a r g s 3 ) ) ) \r
0130260 ( c l : o
0130300 t h e r w i s e ( c o n d \r
0130320
0130340 (
0130360 ( n o t ( 006 002 % a r r a y p 006
0130400 001 a r r a y ) ) \r
0130420
0130440 ( c l : e
0130460 r r o r " N o t a n a r r
0130500 a y ~ S " a r r a y ) ) \r
0130520
0130540 (
0130560 ( n o t ( e q l ( c l : a r
0130600 r a y - r a n k a r r a y ) \r
0130620
*
0130660 ( c l : 1
0130700 - a r g s ) ) ) \r
0130720
0130740 ( c l : e
0130760 r r o r " R a n k m i s m a
0131000 t c h " ) ) \r
0131020
0131040 ( t \r
0131060 \r
0131100 006 003 ( * * " I f w e ' v e
0131120 g o t t e n t h i s f a r
0131140 A R R A Y m u s t b e a
0131160 g e n e r a l a r r a y " )
0131200 006 001 \r
0131220
*
0131300 006 003 ( * " C h e c k i n d i
0131320 c e s i n b o u n d s " ) 006
0131340 001 \r
0131360
0131400 ( c l : d o ( ( i
0131420 2 ( c l : 1 + i ) ) \r
0131440
*
0131500 ( d i m l i s t
0131520 ( 006 002 | f f e t c h | 006 001 (
0131540 g e n e r a l - a r r a y d i
0131560 m s ) 006 002 | o f | 006 001 a r r
0131600 a y ) \r
0131620
*
0131660 ( c d r d i m l i
0131700 s t ) ) \r
0131720
*
0131760 i n d e x ) \r
0132000
*
0132040 ( ( > i a r g s ) ) \r
0132060
*
0132120 ( s e t q i n
0132140 d e x ( a r g a r g s i )
0132160 ) \r
0132200
0132220 ( c l :
0132240 i f ( n o t ( a n d ( > =
0132260 i n d e x 0 ) \r
0132300
*
0132360 ( < i n d e x ( c
0132400 a r d i m l i s t ) ) ) ) \r
0132420
*
0132500 ( c l : e r r o r " I n d e x
0132520 o u t o f b o u n d s :
0132540 ~ A " i n d e x ) ) ) \r
0132560
*
0132640 006 003 ( * "
0132660 N o w p r o c e e d t o e
0132700 x t r a c t t h e e l e m e
0132720 n t " ) 006 001 \r
0132740
0132760 ( l e t (
0133000 ( r o w - m a j o r - i n d e x
0133020 ( c l : d o ( ( i 2 ( c
0133040 l : 1 + i ) ) \r
0133060
*
0133140 ( d i m l
0133160 i s t ( c d r ( 006 002 | f f e
0133200 t c h | 006 001 \r
0133220
*
0133320 ( g e n e r a l
0133340 - a r r a y \r
0133360
*
0133460 d i m s ) 006
0133500 002 | o f | 006 001 a r r a y ) ) \r
0133520
*
0133620 ( c d r d i
0133640 m l i s t ) ) \r
0133660
*
0133740 ( t o t a l
0133760 0 ) ) \r
0134000
*
0134060 ( ( e q l i a r
0134100 g s ) \r
0134120
*
0134200 ( + t o t a l (
0134220 a r g a r g s a r g s ) ) )
0134240 \r
0134260
*
0134340 ( s e t q t o t a l \r
0134360
*
0134460 ( c l : * ( c a r d i m l i
0134500 s t ) \r
0134520
*
0134600 ( + t
0134620 o t a l ( a r g a r g s i
0134640 ) ) ) ) ) ) \r
0134660
*
0134720 ( b a s e - a r r a y a r r a
0134740 y ) ) \r
0134760
0135000 ( % g e
0135020 n e r a l - a r r a y - a d j u
0135040 s t - b a s e b a s e - a r r
0135060 a y r o w - m a j o r - i n d
0135100 e x ) \r
0135120
0135140 ( 006 002 %
0135160 a r r a y - r e a d 006 001 ( 006 002
0135200 | f e t c h | 006 001 ( a r r a y
0135220 - h e a d e r b a s e ) 006 002
0135240 | o f | 006 001 b a s e - a r r a
0135260 y ) \r
0135300
*
0135340 ( 006 002 | f e t c h | 006 001 (
0135360 a r r a y - h e a d e r t y p
0135400 e - n u m b e r ) 006 002 | o f |
0135420 006 001 b a s e - a r r a y ) \r
0135440
*
0135500 ( +
0135520 ( % g e t - a r r a y - o f f
0135540 s e t b a s e - a r r a y ) \r
0135560
*
0135640 r o w - m a j o r - i n d e
0135660 x ) ) ) ) ) ) ) ) ) ) \r \r ( 006 004
0135700 c l : a r r a y - i n - b o u n
0135720 d s - p 006 001 \r ( l a m b d a
0135740 a r g s 006 003 006 001
0135760
*
0136020 006 003 ( * | j o
0136040 p : | " 5 - S e p - 8 6 1
0136060 1 : 2 2 " ) 006 001 \r
0136100 \r 006 003
0136120 ( * * ) 006 001 \r \r ( c l
0136140 : i f ( < a r g s 1 ) \r
0136160 ( c l : e r
0136200 r o r " A r r a y - i n - b o
0136220 u n d s - p t a k e s a t
0136240 l e a s t o n e a r g " ) )
0136260 \r ( l e t ( ( a r r a
0136300 y ( a r g a r g s 1 ) ) )
0136320 \r ( c o n d \r
0136340 ( ( n o
0136360 t ( c l : a r r a y p a r r
0136400 a y ) ) \r
0136420 ( c l : e r r o r " N o t
0136440 a n a r r a y ~ S " a r
0136460 r a y ) ) \r
0136500 ( ( n o t ( e q l ( c l
0136520 : a r r a y - r a n k a r r a
0136540 y ) \r
0136560 ( c l : 1 -
0136600 a r g s ) ) ) \r
0136620 ( c l : e r r o r
0136640 " R a n k m i s m a t c h " )
0136660 ) \r ( t
0136700 ( % c h e c k - i n d i c e s
0136720 a r r a y 2 a r g s ) ) )
0136740 ) ) ) \r \r ( 006 004 c l : a r r a y
0136760 - r o w - m a j o r - i n d e x
0137000 006 001 \r ( l a m b d a a r g
0137020 s 006 003 006 001
0137040
*
0137100 006 003 ( * | j o p : |
0137120 " 5 - S e p - 8 6 1 1 : 2 3
0137140 " ) 006 001 \r \r
0137160 006 003 ( * *
0137200 ) 006 001 \r \r ( c l : i f
0137220 ( < a r g s 1 ) \r
0137240 ( c l : e r r o r
0137260 " A r r a y - r o w - m a j o r
0137300 - i n d e x t a k e s a t
0137320 l e a s t o n e a r g " ) )
0137340 \r ( l e t * ( ( a r r
0137360 a y ( a r g a r g s 1 ) )
0137400 \r ( r a n
0137420 k ( c l : a r r a y - r a n k
0137440 a r r a y ) ) ) \r
0137460 ( c o n d \r
0137500 ( ( n o t ( e q
0137520 l r a n k ( c l : 1 - a r
0137540 g s ) ) ) \r
0137560 ( c l : e r r o r " R
0137600 a n k m i s m a t c h " ) ) \r
0137620 ( ( n
0137640 o t ( % c h e c k - i n d i c
0137660 e s a r r a y 2 a r g s )
0137700 ) \r
0137720 ( c l : e r r o r " I n d e x
0137740 o u t o f b o u n d s " )
0137760 ) \r (
0140000 t ( c l : d o ( ( i 2 (
0140020 c l : 1 + i ) ) \r
0140040
0140060 ( t o t a l 0 ) ) \r
0140100
0140120 ( ( e q l i a r g s
0140140 ) \r
0140160 ( + t o t
0140200 a l ( a r g a r g s a r g
0140220 s ) ) ) \r
0140240 ( s e t
0140260 q t o t a l ( c l : * ( c
0140300 l : a r r a y - d i m e n s i o
0140320 n a r r a y ( c l : 1 - i
0140340 ) ) \r
0140360
0140400 ( + t
0140420 o t a l ( a r g a r g s i
0140440 ) ) ) ) ) ) ) ) ) ) \r \r ( 006 004 a
0140460 s e t 006 001 \r ( l a m b d a
0140500 a r g s 006 003 006 001
0140520
*
0140560 006 003 ( * | j o p
0140600 : | " 2 1 - S e p - 8 6 1 8
0140620 : 5 7 " ) 006 001 \r
0140640 \r 006 003 (
0140660 * * ) 006 001 \r \r ( c l :
0140700 i f ( < a r g s 2 ) \r
0140720 ( c l : e r r
0140740 o r " A s e t t a k e s a
0140760 t l e a s t t w o a r g s
0141000 " ) ) \r ( l e t ( ( n
0141020 e w v a l u e ( a r g a r g
0141040 s 1 ) ) \r
0141060 ( a r r a y ( a r g a r g s
0141100 2 ) ) ) \r (
0141120 c a s e a r g s ( 2 ( 006 002
0141140 % a s e t 0 006 001 n e w v a l u
0141160 e a r r a y ) ) \r
0141200 ( 3 ( 006 002 %
0141220 a s e t 1 006 001 n e w v a l u e
0141240 a r r a y ( a r g a r g s
0141260 3 ) ) ) \r
0141300 ( 4 ( 006 002 % a s e t
0141320 2 006 001 n e w v a l u e a r r
0141340 a y ( a r g a r g s 3 ) \r
0141360
0141400 ( a r g a r
0141420 g s 4 ) ) ) \r
0141440 ( c l : o t h e r
0141460 w i s e ( c o n d \r
0141500
0141520