$ od -c -N 50000 [_CDCSL_93-16_]<1>Cedar>release>NPGS>NPGSScan.mesa
0000000    -   -       f   i   l   e       N   P   G   S   S   c   a   n
0000020    .   m   e   s   a       r   e   w   r   i   t   t   e   n    
0000040    b   y       N   P   G   S   ,       D   e   c   e   m   b   e
0000060    r       1   0   ,       1   9   9   2       1   1   :   0   0
0000100    :   2   7       p   m       P   S   T  \n   -   -       N   P
0000120    G   S   S   c   a   n   .   p   g   s  \n   -   -       C   o
0000140    p   y   r   i   g   h   t     323       1   9   8   5   ,    
0000160    1   9   8   6   ,       1   9   8   8   ,       1   9   9   0
0000200        b   y       X   e   r   o   x       C   o   r   p   o   r
0000220    a   t   i   o   n   .           A   l   l       r   i   g   h
0000240    t   s       r   e   s   e   r   v   e   d   .  \n   -   -    
0000260    D   O       N   O   T       C   O   N   V   E   R   T       T
0000300    O       T   I   O   G   A       F   O   R   M   A   T   !    
0000320        (   N   P   G   S       r   e   q   u   i   r   e   s    
0000340    t   h   e       m   e   s   a   -   s   t   y   l   e       c
0000360    o   m   m   e   n   t   s   )  \n   -   -       R   u   s   s
0000400        A   t   k   i   n   s   o   n       (   R   R   A   )    
0000420    M   a   r   c   h       1   7   ,       1   9   8   8       1
0000440    0   :   1   4   :   2   2       a   m       P   S   T  \n   -
0000460    -       D   o   u   g       W   y   a   t   t   ,       M   a
0000500    y       1   5   ,       1   9   8   6       5   :   3   6   :
0000520    0   1       p   m       P   D   T  \n   -   -       J   K   F
0000540        M   a   y       2   4   ,       1   9   9   0       1   0
0000560    :   0   2   :   0   0       a   m       P   D   T  \n  \n   -
0000600    -       N   P   G   S       [   d   e   f   s   :       N   P
0000620    G   S   P   a   r   s   e   T   a   b   l   e   ,       g   r
0000640    a   m   m   a   r   :       N   P   G   S   ]     254       N
0000660    P   G   S   S   c   a   n   .   p   g   s  \n  \n   D   I   R
0000700    E   C   T   O   R   Y  \n  \t   I   O       U   S   I   N   G
0000720        [   S   T   R   E   A   M   ]   ,  \n  \t   N   P   G   S
0000740    1       U   S   I   N   G       [  \n  \t  \t   A   c   t   i
0000760    o   n   S   t   a   c   k   ,       I   n   d   e   x   ,    
0001000    L   i   n   k   S   t   a   c   k   ,       T   o   k   e   n
0001020    ,       V   a   l   u   e   ,       V   a   l   u   e   S   t
0001040    a   c   k   ,       n   u   l   l   V   a   l   u   e   ,    
0001060    I   n   p   u   t   L   o   c   ]   ,  \n  \t   N   P   G   S
0001100    P   a   r   s   e   T   a   b   l   e       U   S   I   N   G
0001120        [  \n  \t  \t   e   n   d   M   a   r   k   e   r   ,    
0001140    H   a   s   h   I   n   d   e   x   ,       H   a   s   h   T
0001160    a   b   l   e   R   e   f   ,       I   n   d   e   x   T   a
0001200    b   l   e   R   e   f   ,  \n  \t  \t   I   n   i   t   H   a
0001220    s   h   T   a   b   l   e   ,       I   n   i   t   I   n   d
0001240    e   x   T   a   b   l   e   ,       I   n   i   t   S   c   a
0001260    n   T   a   b   l   e   ,       I   n   i   t   V   o   c   a
0001300    b   u   l   a   r   y   ,  \n  \t  \t   P   r   o   d   D   a
0001320    t   a   R   e   f   ,       S   c   a   n   T   a   b   l   e
0001340    R   e   f   ,       T   S   y   m   b   o   l   ,       V   o
0001360    c   a   b   u   l   a   r   y   R   e   f   ,       t   o   k
0001400    e   n   I   D   ,       t   o   k   e   n   N   U   M   ,  \n
0001420   \t  \t   t   o   k   e   n   T   A   B   3   ,       t   o   k
0001440    e   n   T   A   B   4   ]   ,  \n  \t   N   P   G   S   C   o
0001460    n   D   e   f   s       U   S   I   N   G       [  \n  \t  \t
0001500    a   l   i   a   s   e   s   ,       a   l   t   e   r   n   a
0001520    t   e   L   i   m   ,      \n  \t  \t   C   u   s   p   P   r
0001540    e   S   e   t   P   r   i   o   r   i   t   y   T   o   k   e
0001560    n   A   r   r   a   y   ,       -   -       n   e   w       f
0001600    o   r       C   U   S   P  \n  \t  \t   e   o   f   M   a   r
0001620    k   ,       E   x   p   a   n   d   A   l   i   a   s   e   s
0001640    ,       E   x   p   a   n   d   P   r   o   d   I   n   f   o
0001660    ,       E   x   p   a   n   d   R   h   s   C   h   a   r   ,
0001700   \n  \t  \t   E   x   p   a   n   d   S   y   m   T   a   b   ,
0001720        f   l   a   g   s   ,       g   e   t   i   n   d   e   x
0001740    ,       i   n   c   h   a   r   ,       M   a   k   e   A   l
0001760    i   a   s   e   s   ,       M   a   k   e   P   r   o   d   I
0002000    n   f   o   ,  \n  \t  \t   M   a   k   e   R   h   s   C   h
0002020    a   r   ,       M   a   k   e   S   y   m   I   n   f   o   ,
0002040        M   a   k   e   S   y   m   T   a   b   ,       M   a   k
0002060    e   T   o   k   e   n   I   n   f   o   ,       m   a   x   P
0002100    r   o   d   ,  \n  \t  \t   m   a   x   R   h   s   S   y   m
0002120    b   o   l   s   ,       m   a   x   R   u   l   e   ,       n
0002140    e   x   t   A   l   i   a   s   ,       n   u   m   P   r   o
0002160    d   ,       n   u   m   R   u   l   e   s   ,       o   u   t
0002200    b   u   f   L   i   m   ,  \n  \t  \t   o   u   t   c   h   a
0002220    r   ,       o   u   t   e   o   l   ,       o   u   t   n   u
0002240    m   ,       o   u   t   s   t   r   i   n   g   ,       p   r
0002260    o   d   I   n   f   o   ,       p   s   s   L   i   m   ,    
0002300    r   e   s   e   t   o   u   t   s   t   r   e   a   m   ,  \n
0002320   \t  \t   r   h   s   C   h   a   r   ,       r   h   s   L   i
0002340    m   ,       s   e   t   e   r   r   s   t   r   e   a   m   ,
0002360        s   e   t   i   n   d   e   x   ,       s   e   t   o   u
0002400    t   s   t   r   e   a   m   ,       s   y   m   I   n   f   o
0002420    ,       s   y   m   T   a   b   ,  \n  \t  \t   s   y   m   T
0002440    a   b   S   i   z   e   ,       t   o   k   e   n   I   n   f
0002460    o   ,       t   o   k   e   n   S   i   z   e   ,       t   o
0002500    t   a   l   T   o   k   e   n   s   ,       w   a   r   n   i
0002520    n   g   s   L   o   g   g   e   d   ]   ,  \n  \t   N   P   G
0002540    S   T   y   p   e   s       U   S   I   N   G       [   O   p
0002560    t   i   o   n   s   ]   ,  \n  \t   R   o   p   e       U   S
0002600    I   N   G       [   F   r   o   m   R   e   f   T   e   x   t
0002620    ,       L   e   n   g   t   h   ,       R   O   P   E   ]   ;
0002640   \n  \t  \n   N   P   G   S   S   c   a   n   :       C   E   D
0002660    A   R       P   R   O   G   R   A   M  \n  \t   I   M   P   O
0002700    R   T   S       N   P   G   S   1   ,       N   P   G   S   C
0002720    o   n   D   e   f   s   ,       N   P   G   S   P   a   r   s
0002740    e   T   a   b   l   e   ,       R   o   p   e      \n  \t   E
0002760    X   P   O   R   T   S       N   P   G   S   1   ,       N   P
0003000    G   S   C   o   n   D   e   f   s  \n  \t   =       {       O
0003020    P   E   N       N   P   G   S   1   ,       N   P   G   S   P
0003040    a   r   s   e   T   a   b   l   e   ,       N   P   G   S   C
0003060    o   n   D   e   f   s   ;  \n  \t  \n  \t   R   O   P   E   :
0003100        T   Y   P   E       =       R   o   p   e   .   R   O   P
0003120    E   ;  \n  \t   S   T   R   E   A   M   :       T   Y   P   E
0003140        =       I   O   .   S   T   R   E   A   M   ;  \n  \t  \n
0003160    -   -       T   r   e   e   B   u   i   l   d   :       i   n
0003200    t   e   r   p   r   e   t   e   r       s   e   c   t   i   o
0003220    n  \n  \n  \t   -   -       i   n   t   e   r   p   r   e   t
0003240    e   r       s   t   a   t   e  \n  \t  \n  \t  \t   c   h   e
0003260    c   k   :       N   A   T       =       3   ;  \n  \t  \t   w
0003300    a   r   n   i   n   g   :       N   A   T       =       0   ;
0003320   \n  \t  \t   s   p   e   c   E   r   r   o   r   C   a   s   e
0003340    s   :       N   A   T       =       5   ;  \n  \t  \t  \n  \t
0003360   \t   t   o   k   e   n   ,       n   u   m   R   h   s   C   h
0003400    a   r   s   :       C   A   R   D   I   N   A   L     254    
0003420    0   ;  \n  \t  \t   l   i   n   e   W   i   d   t   h   :    
0003440    I   N   T   E   G   E   R   ;  \n  \t  \t   i   n   s   e   r
0003460    t   F   l   a   g   :       C   A   R   D   I   N   A   L   ;
0003500   \n  \t  \t  \n  \t  \t   H   a   s   h   C   h   a   i   n   A
0003520    r   r   a   y   :       T   Y   P   E       =       A   R   R
0003540    A   Y       [   1   .   .   s   y   m   T   a   b   S   i   z
0003560    e   /   4   ]       O   F       C   A   R   D   I   N   A   L
0003600    ;  \n  \t  \t   h   a   s   h   C   h   a   i   n   :       R
0003620    E   F       H   a   s   h   C   h   a   i   n   A   r   r   a
0003640    y   ;  \n  \t  \t  \n  \t   -   -       l   o   c   a   l    
0003660    d   a   t   a       b   a   s   e       (   s   u   p   p   l
0003700    i   e   d       b   y       p   a   r   s   e   r   )  \n  \t
0003720   \n  \t  \t   v   :       N   P   G   S   1   .   V   a   l   u
0003740    e   S   t   a   c   k   ;  \n  \t  \t   l   :       N   P   G
0003760    S   1   .   L   i   n   k   S   t   a   c   k   ;  \n  \t  \t
0004000   \n  \t  \t   q   :       N   P   G   S   1   .   A   c   t   i
0004020    o   n   S   t   a   c   k   ;  \n  \t  \t  \n  \t  \t   p   r
0004040    o   d   D   a   t   a   :       P   r   o   d   D   a   t   a
0004060    R   e   f   ;  \n  \t  \t  \n  \t   -   -       i   n   i   t
0004100    i   a   l   i   z   a   t   i   o   n   /   t   e   r   m   i
0004120    n   a   t   i   o   n  \n  \t  \n  \t  \t   A   s   s   i   g
0004140    n   D   e   s   c   r   i   p   t   o   r   s   :       P   U
0004160    B   L   I   C       P   R   O   C       [  \n  \t  \t  \t   q
0004200    d   :       N   P   G   S   1   .   A   c   t   i   o   n   S
0004220    t   a   c   k   ,       v   d   :       N   P   G   S   1   .
0004240    V   a   l   u   e   S   t   a   c   k   ,       l   d   :    
0004260    N   P   G   S   1   .   L   i   n   k   S   t   a   c   k   ,
0004300        p   p   :       P   r   o   d   D   a   t   a   R   e   f
0004320    ]       =       {  \n  \t  \t  \t   q     254       q   d   ;
0004340   \n  \t  \t  \t   v     254       v   d   ;  \n  \t  \t  \t   l
0004360      254       l   d   ;  \n  \t  \t  \t   p   r   o   d   D   a
0004400    t   a     254       p   p   ;  \n  \t  \t  \t   }   ;  \n  \t
0004420   \t  \t  \n  \t  \t   O   u   t   T   o   k   e   n   :       P
0004440    U   B   L   I   C       P   R   O   C       [   s   y   m   b
0004460    o   l   :       C   A   R   D   I   N   A   L   ]       R   E
0004500    T   U   R   N   S       [   C   A   R   D   I   N   A   L   ]
0004520        =       {  \n  \t  \t  \t   r   :       R   O   P   E    
0004540    =       "   *       *       *   "   ;  \n  \t  \t  \t   I   F
0004560        s   y   m   b   o   l       =       0       T   H   E   N
0004600        {   o   u   t   s   t   r   i   n   g   [   r   ]   ;    
0004620    R   E   T   U   R   N   [   R   o   p   e   .   L   e   n   g
0004640    t   h   [   r   ]   ]   }   ;  \n  \t  \t  \t   F   O   R    
0004660    i   :       C   A   R   D   I   N   A   L       I   N       [
0004700    0   .   .   s   y   m   I   n   f   o   [   s   y   m   b   o
0004720    l   ]   .   l   e   n   g   t   h   )       D   O  \n  \t  \t
0004740   \t  \t   o   u   t   c   h   a   r   [   s   y   m   T   a   b
0004760    [   s   y   m   b   o   l   *   t   o   k   e   n   S   i   z
0005000    e   +   i   ]   ,   1   ]   ;  \n  \t  \t  \t  \t   E   N   D
0005020    L   O   O   P   ;  \n  \t  \t  \t   R   E   T   U   R   N    
0005040    [   s   y   m   I   n   f   o   [   s   y   m   b   o   l   ]
0005060    .   l   e   n   g   t   h   ]   ;  \n  \t  \t  \t   }   ;  \n
0005100   \t  \t  \t  \n  \t  \t  \t  \n  \t   -   -       t   h   e    
0005120    i   n   t   e   r   p   r   e   t   a   t   i   o   n       r
0005140    u   l   e   s  \n  \t  \n  \t  \t   p   r   i   x   ,       c
0005160    h   i   x   :       C   A   R   D   I   N   A   L     254    
0005200    0   ;       -   -   i   n   d   e   x   e   s       i   n   t
0005220    o       p   r   o   d   I   n   f   o       a   n   d       r
0005240    h   s   C   h   a   r  \n  \t  \t   r   h   s   F   l   a   g
0005260    :       B   O   O   L   ;      \n  \t  \t   l   a   s   t   S
0005300    y   m   b   o   l   ,       l   h   s   D   e   f   :       C
0005320    A   R   D   I   N   A   L     254       0   ;  \n  \t  \t  \n
0005340   \t  \t   P   r   o   c   e   s   s   Q   u   e   u   e   :    
0005360    P   U   B   L   I   C       P   R   O   C       [   q   I   ,
0005400        t   o   p   :       C   A   R   D   I   N   A   L   ,    
0005420    c   u   s   p   :       B   O   O   L   ]       =       {  \n
0005440   \t  \t  \t   i   ,       j   ,       k   :       C   A   R   D
0005460    I   N   A   L   ;  \n  \t  \t  \t  \n  \t  \t  \t   -   -    
0005500    l   o   c   a   l       p   r   o   c   e   d   u   r   e   s
0005520   \n  \t  \t  \t  \t   P   r   i   n   t   T   a   b   l   e   H
0005540    e   a   d   :       P   R   O   C       [   c   :       C   H
0005560    A   R   ]       =       {  \n  \t  \t  \t  \t  \t   I   F    
0005600    f   l   a   g   s   [   e   c   h   o   ]       T   H   E   N
0005620        {   o   u   t   e   o   l   [   2   ]   ;       o   u   t
0005640    s   t   r   i   n   g   [   "   |   |   T   A   B   L   E   "
0005660    ]   ;       o   u   t   c   h   a   r   [   c   ,   1   ]   ;
0005700        o   u   t   e   o   l   [   1   ]   }   ;  \n  \t  \t  \t
0005720   \t  \t   }   ;  \n  \t  \t  \t  \t  \t  \n  \t  \t  \t  \t   S
0005740    e   t   R   u   l   e   C   h   a   i   n   :       P   R   O
0005760    C       [   r   u   l   e   :       C   A   R   D   I   N   A
0006000    L   ,       c   h   a   i   n   :       B   O   O   L   ]    
0006020    =       {  \n  \t  \t  \t  \t  \t   F   i   x   L   a   s   t
0006040    P   r   o   d   [   ]   ;  \n  \t  \t  \t  \t  \t   I   F    
0006060    p   r   i   x   =   p   r   o   d   I   n   f   o   .   l   e
0006100    n   g   t   h       T   H   E   N       -   -   p   r   o   d
0006120    u   c   t   i   o   n       t   a   b   l   e       o   v   e
0006140    r   f   l   o   w  \n  \t  \t  \t  \t  \t  \t   p   r   o   d
0006160    I   n   f   o     254       E   x   p   a   n   d   P   r   o
0006200    d   I   n   f   o   [   p   r   o   d   I   n   f   o   ,    
0006220    p   r   o   d   I   n   f   o   .   l   e   n   g   t   h   /
0006240    8   ]   ;  \n  \t  \t  \t  \t  \t   p   r   o   d   I   n   f
0006260    o   [   p   r   i   x   ]   .   c   h   a   i   n     254    
0006300    c   h   a   i   n   ;  \n  \t  \t  \t  \t  \t   n   u   m   R
0006320    u   l   e   s     254       M   A   X   [   n   u   m   R   u
0006340    l   e   s   ,       r   u   l   e   ]   ;  \n  \t  \t  \t  \t
0006360   \t   I   F       r   u   l   e   >   m   a   x   R   u   l   e
0006400        T   H   E   N       E   r   r   o   r   [   c   h   e   c
0006420    k   +   1   0   ,   -   5   ,   I   n   p   u   t   L   o   c
0006440    [   ]   ]       E   L   S   E       p   r   o   d   I   n   f
0006460    o   [   p   r   i   x   ]   .   r   u   l   e     254       r
0006500    u   l   e   ;  \n  \t  \t  \t  \t  \t   }   ;  \n  \t  \t  \t
0006520   \t  \t  \n  \t  \t  \t  \t   F   i   x   L   a   s   t   P   r
0006540    o   d   :       P   R   O   C       =       {  \n  \t  \t  \t
0006560   \t  \t   e   o   f   M   a   r   k   :       C   A   R   D   I
0006600    N   A   L     254       N   P   G   S   C   o   n   D   e   f
0006620    s   .   e   o   f   M   a   r   k   ;  \n  \t  \t  \t  \t  \t
0006640    p   r   o   d   I   n   f   o   [   p   r   i   x   -   1   ]
0006660    .   l   h   s     254       l   h   s   D   e   f   ;  \n  \t
0006700   \t  \t  \t  \t   I   F       p   r   o   d   I   n   f   o   [
0006720    p   r   i   x   -   1   ]   .   c   o   u   n   t   =   0    
0006740    T   H   E   N       t   o   k   e   n   I   n   f   o   [   l
0006760    h   s   D   e   f   -   e   o   f   M   a   r   k   ]   .   e
0007000    m   p   t   y     254       T   R   U   E   ;  \n  \t  \t  \t
0007020   \t  \t   I   F       r   h   s   F   l   a   g       T   H   E
0007040    N       {  \n  \t  \t  \t  \t  \t  \t   -   -       t   o   o
0007060        m   a   n   y       r   h   s   C   h   a   r   s  \n  \t
0007100   \t  \t  \t  \t  \t   r   h   s   F   l   a   g     254       F
0007120    A   L   S   E   ;  \n  \t  \t  \t  \t  \t  \t   E   r   r   o
0007140    r   [   c   h   e   c   k   +   5   ,       (   p   r   i   x
0007160    -   1   +   s   p   e   c   E   r   r   o   r   C   a   s   e
0007200    s   )   ,       I   n   p   u   t   L   o   c   [   ]   ]   ;
0007220   \n  \t  \t  \t  \t  \t  \t   }   ;  \n  \t  \t  \t  \t  \t   }
0007240    ;  \n  \t  \t  \t  \t  \t  \t  \n  \t  \t  \t  \t   P   r   o
0007260    d   H   e   a   d   e   r   :       P   R   O   C       [   n
0007300    e   w   :       B   O   O   L   ]       =       {  \n  \t  \t
0007320   \t  \t  \t   p   r   o   d   I   n   f   o   [   p   r   i   x
0007340    ]   .   i   n   d   e   x     254       c   h   i   x   ;  \n
0007360   \t  \t  \t  \t  \t   I   F       l   h   s   D   e   f   >   e
0007400    o   f   M   a   r   k       T   H   E   N       {  \n  \t  \t
0007420   \t  \t  \t  \t   I   F       t   o   k   e   n   I   n   f   o
0007440    [   l   h   s   D   e   f   -   e   o   f   M   a   r   k   ]
0007460    .   c   o   u   n   t   =   a   l   t   e   r   n   a   t   e
0007500    L   i   m       T   H   E   N       {  \n  \t  \t  \t  \t  \t
0007520   \t  \t   E   r   r   o   r   [   c   h   e   c   k   +   1   ,
0007540        l   h   s   D   e   f   ,   I   n   p   u   t   L   o   c
0007560    [   ]   ]   ;           -   -   t   o   o       m   a   n   y
0007600        a   l   t   e   r   n   a   t   i   v   e   s  \n  \t  \t
0007620   \t  \t  \t  \t  \t   t   o   k   e   n   I   n   f   o   [   l
0007640    h   s   D   e   f   -   e   o   f   M   a   r   k   ]   .   c
0007660    o   u   n   t     254   1   ;  \n  \t  \t  \t  \t  \t  \t  \t
0007700    }   ;  \n  \t  \t  \t  \t  \t  \t   t   o   k   e   n   I   n
0007720    f   o   [   l   h   s   D   e   f   -   e   o   f   M   a   r
0007740    k   ]   .   c   o   u   n   t     254       t   o   k   e   n
0007760    I   n   f   o   [   l   h   s   D   e   f   -   e   o   f   M
0010000    a   r   k   ]   .   c   o   u   n   t       +       1   ;  \n
0010020   \t  \t  \t  \t  \t  \t   }   ;  \n  \t  \t  \t  \t  \t   I   F
0010040        f   l   a   g   s   [   e   c   h   o   ]       T   H   E
0010060    N       {  \n  \t  \t  \t  \t  \t  \t   l   i   n   e   W   i
0010100    d   t   h     254       o   u   t   b   u   f   L   i   m   -
0010120    t   o   k   e   n   S   i   z   e   -   1   4   ;  \n  \t  \t
0010140   \t  \t  \t  \t   o   u   t   e   o   l   [   I   F       n   e
0010160    w       T   H   E   N       2       E   L   S   E       1   ]
0010200    ;  \n  \t  \t  \t  \t  \t  \t   o   u   t   n   u   m   [   p
0010220    r   i   x   ,   3   ]   ;  \n  \t  \t  \t  \t  \t  \t   o   u
0010240    t   s   t   r   i   n   g   [   I   F       p   r   o   d   I
0010260    n   f   o   [   p   r   i   x   ]   .   c   h   a   i   n    
0010300    T   H   E   N       "       C       "       E   L   S   E    
0010320    "               "   ]   ;  \n  \t  \t  \t  \t  \t  \t   o   u
0010340    t   n   u   m   [   p   r   o   d   I   n   f   o   [   p   r
0010360    i   x   ]   .   r   u   l   e   ,   3   ]   ;       o   u   t
0010400    c   h   a   r   [   '       ,   2   ]   ;  \n  \t  \t  \t  \t
0010420   \t  \t   o   u   t   c   h   a   r   [   '       ,   t   o   k
0010440    e   n   S   i   z   e   -   (   I   F       n   e   w       T
0010460    H   E   N       O   u   t   T   o   k   e   n   [   l   h   s
0010500    D   e   f   ]       E   L   S   E       0   )   ]   ;  \n  \t
0010520   \t  \t  \t  \t  \t   o   u   t   s   t   r   i   n   g   [   I
0010540    F       n   e   w       T   H   E   N       "       :   :   =
0010560        "       E   L   S   E       "               |       "   ]
0010600    ;  \n  \t  \t  \t  \t  \t  \t   }   ;  \n  \t  \t  \t  \t  \t
0010620    p   r   i   x     254       p   r   i   x   +   1   ;  \n  \t
0010640   \t  \t  \t  \t   }   ;  \n  \t  \t  \t  \t  \t  \n  \t  \t  \t
0010660   \t   L   h   s   S   y   m   b   o   l   :       P   R   O   C
0010700        [   s   y   m   b   o   l   :       C   A   R   D   I   N
0010720    A   L   ]       =       {  \n  \t  \t  \t  \t  \t   l   h   s
0010740    D   e   f     254       s   y   m   b   o   l   ;  \n  \t  \t
0010760   \t  \t  \t   I   F       l   h   s   D   e   f   <   =   e   o
0011000    f   M   a   r   k  \n  \t  \t  \t  \t  \t  \t       T   H   E
0011020    N       E   r   r   o   r   [   c   h   e   c   k   +   4   ,
0011040    l   h   s   D   e   f   ,   I   n   p   u   t   L   o   c   [
0011060    ]   ]  \n  \t  \t  \t  \t  \t  \t       -   -       u   n   d
0011100    e   f   i   n   e   d       o   r       t   e   r   m   i   n
0011120    a   l       s   y   m   b   o   l       b   e   f   o   r   e
0011140        :   :   =  \n  \t  \t  \t  \t  \t  \t       E   L   S   E
0011160   \n  \t  \t  \t  \t  \t  \t  \t       I   F       t   o   k   e
0011200    n   I   n   f   o   [   l   h   s   D   e   f   -   e   o   f
0011220    M   a   r   k   ]   .   i   n   d   e   x       =       0  \n
0011240   \t  \t  \t  \t  \t  \t  \t  \t   T   H   E   N       t   o   k
0011260    e   n   I   n   f   o   [   l   h   s   D   e   f   -   e   o
0011300    f   M   a   r   k   ]   .   i   n   d   e   x     254       p
0011320    r   i   x  \n  \t  \t  \t  \t  \t  \t  \t  \t   E   L   S   E
0011340        E   r   r   o   r   [   c   h   e   c   k   +   2   ,   l
0011360    h   s   D   e   f   ,   I   n   p   u   t   L   o   c   [   ]
0011400    ]   ;       -   -   m   u   l   t   i   p   l   e       d   e
0011420    f   i   n   i   t   i   o   n   s  \n  \t  \t  \t  \t  \t   P
0011440    r   o   d   H   e   a   d   e   r   [   T   R   U   E   ]   ;
0011460   \n  \t  \t  \t  \t  \t   }   ;  \n  \t  \t  \t   -   -       e
0011500    n   d       o   f       l   o   c   a   l       p   r   o   c
0011520    e   d   u   r   e   s  \n  \t  \t  \t  \n  \t  \t  \t  \t   F
0011540    O   R       q   j   :       C   A   R   D   I   N   A   L    
0011560    I   N       [   0   .   .   q   I   )       D   O  \n  \t  \t
0011600   \t  \t  \t   t   o   p     254       t   o   p   -   q   [   q
0011620    j   ]   .   t   a   g   .   p   L   e   n   g   t   h   +   1
0011640    ;  \n  \t  \t  \t  \t  \t   S   E   L   E   C   T       p   r
0011660    o   d   D   a   t   a   [   q   [   q   j   ]   .   t   r   a
0011700    n   s   i   t   i   o   n   ]   .   r   u   l   e       F   R
0011720    O   M  \n  \t  \t  \t  \t  \t  \n                            
0011740                                                                 
0011760            0           =   >       -   -       T   Y   P   E   :
0012000        N   P   G   S   P   a   r   s   e   T   a   b   l   e    
0012020        E   X   P   O   R   T   S   :       S   E   L   F  \n  \t
0012040   \t  \t  \t   -   -       G   O   A   L   :       g   r   a   m
0012060    m   a   r  \n  \t  \t  \t  \t   -   -       T   E   R   M   I
0012100    N   A   L   S   :  \n  \t  \t  \t  \t   -   -       s   y   m
0012120    b   o   l       n   u   m       '   ?       '   |       "   :
0012140    :   =   "       '   C       "   |   |   T   A   B   L   E   1
0012160    "       "   |   |   T   A   B   L   E   2   "       "   |   |
0012200    T   A   B   L   E   3   "  \n  \t  \t  \t  \t   -   -       "
0012220    |   |   T   A   B   L   E   4   "       "   |   |   I   N   P
0012240    U   T   "       "   |   |   C   H   A   I   N   "       "   |
0012260    |   L   I   S   T   S   "       "   |   |   P   R   I   N   T
0012300    L   R   "  \n  \t  \t  \t  \t   -   -       "   |   |   P   R
0012320    I   N   T   L   A   L   R   "       "   |   |   F   I   R   S
0012340    T   "       "   |   |   I   D   S   "       "   G   O   A   L
0012360    "  \n  \t  \t  \t  \t   -   -       A   L   I   A   S   E   S
0012400    :       s   y   m   b   o   l       t   o   k   e   n   I   D
0012420            n   u   m       t   o   k   e   n   N   U   M        
0012440    '   ?       t   o   k   e   n   Q   U   E   R   Y  \n  \t  \t
0012460   \t  \t   -   -       "   |   |   T   A   B   L   E   3   "    
0012500    t   o   k   e   n   T   A   B   3           "   |   |   T   A
0012520    B   L   E   4   "       t   o   k   e   n   T   A   B   4    
0012540        '   ?       i   n   i   t   i   a   l   S   y   m   b   o
0012560    l  \n  \t  \t  \t  \t   -   -       P   R   O   D   U   C   T
0012600    I   O   N   S   :  \n  \t  \t  \t  \t   -   -       g   r   a
0012620    m   m   a   r                                   :   :   =    
0012640    '   ?       h   e   a   d       r   u   l   e   s   e   t  \n
0012660   \t  \t  \t  \t   {  \n  \t  \t  \t  \t   F   i   x   L   a   s
0012700    t   P   r   o   d   [   ]   ;  \n  \t  \t  \t  \t   n   u   m
0012720    P   r   o   d     254       p   r   i   x   -   1   ;  \n  \t
0012740   \t  \t  \t   n   u   m   R   h   s   C   h   a   r   s     254
0012760        c   h   i   x   -   1   ;  \n  \t  \t  \t  \t   i     254
0013000        1   ;  \n  \t  \t  \t  \t   I   F       f   l   a   g   s
0013020    [   e   c   h   o   ]       T   H   E   N       o   u   t   e
0013040    o   l   [   1   ]   ;  \n  \t  \t  \t  \t   I   F       n   u
0013060    m   P   r   o   d       >       p   s   s   L   i   m       O
0013100    R       t   o   t   a   l   T   o   k   e   n   s       >    
0013120    p   s   s   L   i   m       T   H   E   N       E   r   r   o
0013140    r   [   c   h   e   c   k   +   6   ,   0   ,   I   n   p   u
0013160    t   L   o   c   [   ]   ]   ;  \n  \t  \t  \t  \t   I   F    
0013200    c   u   s   p       T   H   E   N       C   u   s   p   P   r
0013220    e   S   e   t   P   r   i   o   r   i   t   y   T   o   k   e
0013240    n   A   r   r   a   y   [   h   a   s   h   C   h   a   i   n
0013260    ]   ;       -   -       n   e   w       f   o   r       C   U
0013300    S   P  \n  \t  \t  \t  \t   h   a   s   h   C   h   a   i   n
0013320      254       N   I   L   ;  \n  \t  \t  \t  \t   W   H   I   L
0013340    E       s   y   m   I   n   f   o   [   i   ]   .   u   s   e
0013360    d       A   N   D       i       <   =       t   o   t   a   l
0013400    T   o   k   e   n   s       D   O  \n  \t  \t  \t  \t  \t   I
0013420    F       i       >       e   o   f   M   a   r   k       A   N
0013440    D       t   o   k   e   n   I   n   f   o   [   i   -   e   o
0013460    f   M   a   r   k   ]   .   i   n   d   e   x       =       0
0013500        T   H   E   N       E   X   I   T   ;  \n  \t  \t  \t  \t
0013520   \t   i     254       i   +   1   ;  \n  \t  \t  \t  \t  \t   E
0013540    N   D   L   O   O   P   ;  \n  \t  \t  \t  \t   I   F       i
0013560        <   =       t   o   t   a   l   T   o   k   e   n   s    
0013600    T   H   E   N       {  \n  \t  \t  \t  \t  \t   d   e   f   f
0013620    l   a   g   :       B   O   O   L     254       F   A   L   S
0013640    E   ;  \n  \t  \t  \t  \t  \t   l   i   n   e   W   i   d   t
0013660    h     254       0   ;       E   r   r   o   r   [   w   a   r
0013700    n   i   n   g   +   3   ,   0   ,   I   n   p   u   t   L   o
0013720    c   [   ]   ]   ;       s   e   t   e   r   r   s   t   r   e
0013740    a   m   [   ]   ;  \n  \t  \t  \t  \t  \t   F   O   R       i
0013760        I   N       [   i   .   .   t   o   t   a   l   T   o   k
0014000    e   n   s   ]       D   O  \n  \t  \t  \t  \t  \t  \t   j    
0014020  254       0   ;       I   F       ~   s   y   m   I   n   f   o
0014040    [   i   ]   .   u   s   e   d       T   H   E   N       j    
0014060  254       j   +   1   ;  \n  \t  \t  \t  \t  \t  \t   I   F    
0014100    i       >       e   o   f   M   a   r   k       A   N   D    
0014120    t   o   k   e   n   I   n   f   o   [   i   -   e   o   f   M
0014140    a   r   k   ]   .   i   n   d   e   x       =       0       T
0014160    H   E   N       j     254       j   +   2   ;  \n  \t  \t  \t
0014200   \t  \t  \t   I   F       j       #       0       T   H   E   N
0014220        {  \n  \t  \t  \t  \t  \t  \t  \t   I   F       (   l   i
0014240    n   e   W   i   d   t   h     254       l   i   n   e   W   i
0014260    d   t   h   +   (   k 254   (   1   1   +   j   )   /   2   )
0014300    )       >       o   u   t   b   u   f   L   i   m       T   H
0014320    E   N       {  \n  \t  \t  \t  \t  \t  \t  \t  \t   o   u   t
0014340    e   o   l   [   1   ]   ;       l   i   n   e   W   i   d   t
0014360    h     254       k   }   ;  \n  \t  \t  \t  \t  \t  \t  \t   o
0014400    u   t   n   u   m   [   i   ,   5   ]   ;  \n  \t  \t  \t  \t
0014420   \t  \t  \t   I   F       j   #   2       T   H   E   N       o
0014440    u   t   c   h   a   r   [   '   U   ,   1   ]       E   L   S
0014460    E       d   e   f   f   l   a   g     254       T   R   U   E
0014500    ;  \n  \t  \t  \t  \t  \t  \t  \t   I   F       j   >   1    
0014520    T   H   E   N       o   u   t   c   h   a   r   [   '   D   ,
0014540    1   ]   }   ;  \n  \t  \t  \t  \t  \t  \t   E   N   D   L   O
0014560    O   P   ;  \n  \t  \t  \t  \t  \t   o   u   t   e   o   l   [
0014600    1   ]   ;       r   e   s   e   t   o   u   t   s   t   r   e
0014620    a   m   [   ]   ;  \n  \t  \t  \t  \t  \t   I   F       d   e
0014640    f   f   l   a   g       T   H   E   N  \n  \t  \t  \t  \t  \t
0014660   \t   -   -       n   o   n   t   e   r   m   i   n   a   l    
0014700    u   s   e   d       b   u   t       n   o   t       d   e   f
0014720    i   n   e   d  \n  \t  \t  \t  \t  \t  \t   E   r   r   o   r
0014740    [   c   h   e   c   k   +   3   ,   -   2   ,   I   n   p   u
0014760    t   L   o   c   [   ]   ]   ;  \n  \t  \t  \t  \t  \t   }   ;
0015000   \n  \t  \t  \t  \t   F   O   R       i       I   N       [   1
0015020    .   .   n   u   m   P   r   o   d   ]       D   O  \n  \t  \t
0015040   \t  \t  \t   I   F       p   r   o   d   I   n   f   o   [   i
0015060    ]   .   c   h   a   i   n       T   H   E   N  \n  \t  \t  \t
0015100   \t  \t  \t   I   F       p   r   o   d   I   n   f   o   [   i
0015120    ]   .   c   o   u   n   t       #       1       O   R       r
0015140    h   s   C   h   a   r   [   p   r   o   d   I   n   f   o   [
0015160    i   ]   .   i   n   d   e   x   ]       <   =       e   o   f
0015200    M   a   r   k       T   H   E   N       {  \n  \t  \t  \t  \t
0015220   \t  \t  \t   E   r   r   o   r   [   w   a   r   n   i   n   g
0015240    +   2   ,       -   (   i   +   s   p   e   c   E   r   r   o
0015260    r   C   a   s   e   s   )   ,       I   n   p   u   t   L   o
0015300    c   [   ]   ]   ;  \n  \t  \t  \t  \t  \t  \t  \t   p   r   o
0015320    d   I   n   f   o   [   i   ]   .   c   h   a   i   n     254
0015340        F   A   L   S   E   ;  \n  \t  \t  \t  \t  \t  \t  \t   }
0015360    ;  \n  \t  \t  \t  \t  \t   E   N   D   L   O   O   P   ;  \n
0015400   \t  \t  \t  \t   F   i   n   i   s   h   I   n   p   u   t   [
0015420    ]   ;  \n  \t  \t  \t  \t   }   ;  \n  \t  \t  \t  \t  \n    
0015440                                                                 
0015460                                    1           =   >       -   -
0015500        h   e   a   d                                            
0015520    :   :   =       d   i   r   e   c   t   i   v   e   s       t
0015540    e   r   m   i   n   a   l   s       n   o   n   t   e   r   m
0015560    i   n   a   l   s       "   |   |   T   A   B   L   E   4   "
0015600   \n  \t  \t  \t  \t   -   -       h   e   a   d                
0015620                                :   :   =       d   i   r   e   c
0015640    t   i   v   e   s       t   e   r   m   i   n   a   l   s    
0015660    n   o   n   t   e   r   m   i   n   a   l   s       a   l   i
0015700    a   s   e   s       "   |   |   T   A   B   L   E   4   "  \n
0015720   \t  \t  \t  \t   {  \n  \t  \t  \t  \t   t   o   t   a   l   T
0015740    o   k   e   n   s     254       l   a   s   t   S   y   m   b
0015760    o   l   ;       P   r   i   n   t   T   a   b   l   e   H   e
0016000    a   d   [   '   4   ]   ;  \n  \t  \t  \t  \t   t   o   k   e
0016020    n   I   n   f   o     254       M   a   k   e   T   o   k   e
0016040    n   I   n   f   o   [   t   o   t   a   l   T   o   k   e   n
0016060    s   -   e   o   f   M   a   r   k   +   1   ]   ;  \n  \t  \t
0016100   \t  \t   n   u   m   R   u   l   e   s     254       0   ;  \n
0016120   \t  \t  \t  \t   p   r   o   d   I   n   f   o     254       M
0016140    a   k   e   P   r   o   d   I   n   f   o   [   m   a   x   P
0016160    r   o   d   +   1   ]   ;  \n  \t  \t  \t  \t   r   h   s   C
0016200    h   a   r     254       M   a   k   e   R   h   s   C   h   a
0016220    r   [   m   a   x   R   h   s   S   y   m   b   o   l   s   +
0016240    1   ]   ;  \n  \t  \t  \t  \t   F   O   R       i       I   N
0016260        [   0   .   .   t   o   t   a   l   T   o   k   e   n   s
0016300    -   e   o   f   M   a   r   k   ]       D   O  \n  \t  \t  \t
0016320   \t  \t   t   o   k   e   n   I   n   f   o   [   i   ]     254
0016340        [   c   o   u   n   t   :   0   ,       e   m   p   t   y
0016360    :   F   A   L   S   E   ,       i   n   d   e   x   :   0   ]
0016400    ;  \n  \t  \t  \t  \t  \t   E   N   D   L   O   O   P   ;  \n
0016420   \t  \t  \t  \t   p   r   o   d   I   n   f   o   [   0   ]    
0016440  254       [   c   o   u   n   t   :   2   ,       r   u   l   e
0016460    :   0   ,       c   h   a   i   n   :   F   A   L   S   E   ,
0016500        l   h   s   :   0   ,       i   n   d   e   x   :   0   ]
0016520    ;  \n  \t  \t  \t  \t   F   O   R       i       I   N       [
0016540    1   .   .   m   a   x   P   r   o   d   ]       D   O  \n  \t
0016560   \t  \t  \t  \t   p   r   o   d   I   n   f   o   [   i   ]    
0016600  254       [   c   o   u   n   t   :   0   ,       r   u   l   e
0016620    :   0   ,       c   h   a   i   n   :   F   A   L   S   E   ,
0016640        l   h   s   :   0   ,       i   n   d   e   x   :   0   ]
0016660    ;  \n  \t  \t  \t  \t  \t   E   N   D   L   O   O   P   ;  \n
0016700   \t  \t  \t  \t   I   F       f   l   a   g   s   [   e   c   h
0016720    o   ]       T   H   E   N       {  \n  \t  \t  \t  \t  \t   o
0016740    u   t   e   o   l   [   1   ]   ;  \n  \t  \t  \t  \t  \t   o
0016760    u   t   c   h   a   r   [   '       ,   2   0   ]   ;  \n  \t
0017000   \t  \t  \t  \t   o   u   t   s   t   r   i   n   g   [   "   G
0017020    O   A   L       :   :   =       "   ]   ;  \n  \t  \t  \t  \t
0017040   \t   [   ]     254       O   u   t   T   o   k   e   n   [   e
0017060    o   f   M   a   r   k   +   1   ]   ;       o   u   t   c   h
0017100    a   r   [   '       ,   1   ]   ;  \n  \t  \t  \t  \t  \t   [
0017120    ]     254       O   u   t   T   o   k   e   n   [   e   o   f
0017140    M   a   r   k   ]   ;  \n  \t  \t  \t  \t  \t   }   ;  \n  \t
0017160   \t  \t  \t   r   h   s   C   h   a   r   [   0   ]     254    
0017200    e   o   f   M   a   r   k   +   1   ;  \n  \t  \t  \t  \t   r
0017220    h   s   C   h   a   r   [   1   ]     254       e   o   f   M
0017240    a   r   k   ;  \n  \t  \t  \t  \t   s   y   m   I   n   f   o
0017260    [   e   o   f   M   a   r   k   +   1   ]   .   u   s   e   d
0017300      254       s   y   m   I   n   f   o   [   e   o   f   M   a
0017320    r   k   ]   .   u   s   e   d     254       T   R   U   E   ;
0017340   \n  \t  \t  \t  \t   p   r   i   x     254       1   ;       c
0017360    h   i   x     254       2   ;       l   h   s   D   e   f    
0017400  254       0   ;       r   h   s   F   l   a   g     254       F
0017420    A   L   S   E   ;  \n  \t  \t  \t  \t   }   ;  \n  \t  \t  \t
0017440   \t  \n                                                        
0017460                                                2           =   >
0017500        -   -       d   i   r   e   c   t   i   v   e   s        
0017520                :   :   =  \n  \t  \t  \t  \t   {   f   l   a   g
0017540    s     254       A   L   L   [   F   A   L   S   E   ]   ;    
0017560        l   [   t   o   p   ]     254       I   n   p   u   t   L
0017600    o   c   [   ]   }   ;  \n  \t  \t  \t  \t  \n                
0017620                                                                 
0017640                        3           =   >       -   -       d   i
0017660    r   e   c   t   i   v   e                           :   :   =
0017700        "   |   |   I   N   P   U   T   "  \n  \t  \t  \t  \t   {
0017720    f   l   a   g   s   [   e   c   h   o   ]     254       T   R
0017740    U   E   ;       s   e   t   o   u   t   s   t   r   e   a   m
0017760    [   "   .   e   c   h   o   "   ]   }   ;  \n  \t  \t  \t  \t
0020000   \n                                                            
0020020                                            4           =   >    
0020040    -   -       d   i   r   e   c   t   i   v   e                
0020060            :   :   =       "   |   |   C   H   A   I   N   "  \n
0020100   \t  \t  \t  \t   f   l   a   g   s   [   c   h   a   i   n   ]
0020120      254       T   R   U   E   ;  \n  \t  \t  \t  \t  \n        
0020140                                                                 
0020160                                5           =   >       -   -    
0020200    d   i   r   e   c   t   i   v   e                           :
0020220    :   =       "   |   |   L   I   S   T   S   "  \n  \t  \t  \t
0020240   \t   f   l   a   g   s   [   l   i   s   t   s   ]     254    
0020260    T   R   U   E   ;  \n  \t  \t  \t  \t  \n                    
0020300                                                                 
0020320                    6           =   >       -   -       d   i   r
0020340    e   c   t   i   v   e                           :   :   =    
0020360    "   |   |   P   R   I   N   T   L   R   "  \n  \t  \t  \t  \t
0020400    f   l   a   g   s   [   p   r   i   n   t   L   R   ]     254
0020420        T   R   U   E   ;  \n  \t  \t  \t  \t  \n                
0020440                                                                 
0020460                        7           =   >       -   -       d   i
0020500    r   e   c   t   i   v   e                           :   :   =
0020520        "   |   |   P   R   I   N   T   L   A   L   R   "  \n  \t
0020540   \t  \t  \t   f   l   a   g   s   [   p   r   i   n   t   L   A
0020560    L   R   ]     254       T   R   U   E   ;  \n  \t  \t  \t  \t
0020600   \n                                                            
0020620                                            8           =   >    
0020640    -   -       d   i   r   e   c   t   i   v   e                
0020660            :   :   =       "   |   |   F   I   R   S   T   "  \n
0020700   \t  \t  \t  \t   f   l   a   g   s   [   f   i   r   s   t   ]
0020720      254       T   R   U   E   ;  \n  \t  \t  \t  \t  \n        
0020740                                                                 
0020760                                9           =   >       -   -    
0021000    d   i   r   e   c   t   i   v   e                           :
0021020    :   =       "   |   |   I   D   S   "  \n  \t  \t  \t  \t   f
0021040    l   a   g   s   [   i   d   s   ]     254       T   R   U   E
0021060    ;  \n  \t  \t  \t  \t  \n                                    
0021100                                                                1
0021120    0           =   >       -   -       t   e   r   m   i   n   a
0021140    l   s                           :   :   =       "   |   |   T
0021160    A   B   L   E   1   "  \n  \t  \t  \t  \t   {  \n  \t  \t  \t
0021200   \t  \t   I   F       f   l   a   g   s   [   e   c   h   o   ]
0021220        T   H   E   N       {  \n  \t  \t  \t  \t  \t  \t   o   u
0021240    t   e   o   l   [   1   ]   ;  \n  \t  \t  \t  \t  \t  \t   F
0021260    O   R       o   p   t   :       N   P   G   S   T   y   p   e
0021300    s   .   O   p   t   i   o   n   s       I   N       N   P   G
0021320    S   T   y   p   e   s   .   O   p   t   i   o   n   s       D
0021340    O  \n  \t  \t  \t  \t  \t  \t  \t   I   F       f   l   a   g
0021360    s   [   o   p   t   ]       T   H   E   N       o   u   t   s
0021400    t   r   i   n   g   [  \n  \t  \t  \t  \t  \t  \t  \t  \t   S
0021420    E   L   E   C   T       o   p   t       F   R   O   M  \n  \t
0021440   \t  \t  \t  \t  \t  \t  \t  \t   e   c   h   o       =   >    
0021460    "   |   |   I   N   P   U   T       "   ,  \n  \t  \t  \t  \t
0021500   \t  \t  \t  \t  \t   c   h   a   i   n       =   >       "   |
0021520    |   C   H   A   I   N       "   ,  \n  \t  \t  \t  \t  \t  \t
0021540   \t  \t  \t   l   i   s   t   s       =   >       "   |   |   L
0021560    I   S   T   S       "   ,  \n  \t  \t  \t  \t  \t  \t  \t  \t
0021600   \t   p   r   i   n   t   L   R       =   >       "   |   |   P
0021620    R   I   N   T   L   R       "   ,  \n  \t  \t  \t  \t  \t  \t
0021640   \t  \t  \t   p   r   i   n   t   L   A   L   R       =   >    
0021660    "   |   |   P   R   I   N   T   L   A   L   R       "   ,  \n
0021700   \t  \t  \t  \t  \t  \t  \t  \t  \t   f   i   r   s   t       =
0021720    >       "   |   |   F   I   R   S   T       "   ,  \n  \t  \t
0021740   \t  \t  \t  \t  \t  \t  \t   E   N   D   C   A   S   E       =
0021760    >       "   |   |   I   D   S       "   ]   ;  \n  \t  \t  \t
0022000   \t  \t  \t  \t   E   N   D   L   O   O   P   ;  \n  \t  \t  \t
0022020   \t  \t  \t   }   ;  \n  \t  \t  \t  \t  \t   P   r   i   n   t
0022040    T   a   b   l   e   H   e   a   d   [   '   1   ]   ;  \n  \t
0022060   \t  \t  \t  \t   }   ;  \n  \t  \t  \t  \t  \t  \n            
0022100                                                                 
0022120                        1   1           =   >       -   -       t
0022140    e   r   m   i   n   a   l   s                           :   :
0022160    =       t   e   r   m   i   n   a   l   s       d   i   s   c
0022200    a   r   d       s   y   m   b   o   l  \n  \t  \t  \t  \t   -
0022220    -       n   o   n   t   e   r   m   i   n   a   l   s        
0022240        :   :   =       n   o   n   t   e   r   m   i   n   a   l
0022260    s       d   i   s   c   a   r   d       s   y   m   b   o   l
0022300       \n  \t  \t  \t  \t   {  \n  \t  \t  \t  \t  \t   l   a   s
0022320    t   S   y   m   b   o   l     254       v   [   t   o   p   +
0022340    2   ]   .   s   ;  \n  \t  \t  \t  \t  \t   I   F       f   l
0022360    a   g   s   [   e   c   h   o   ]       T   H   E   N       {
0022400   \n  \t  \t  \t  \t  \t  \t   o   u   t   n   u   m   [   l   a
0022420    s   t   S   y   m   b   o   l   ,       3   ]   ;       o   u
0022440    t   c   h   a   r   [   '       ,       2   ]   ;  \n  \t  \t
0022460   \t  \t  \t  \t   [   ]     254       O   u   t   T   o   k   e
0022500    n   [   l   a   s   t   S   y   m   b   o   l   ]   ;  \n  \t
0022520   \t  \t  \t  \t  \t   o   u   t   e   o   l   [   1   ]   }   ;
0022540   \n  \t  \t  \t  \t  \t   }   ;  \n  \t  \t  \t  \t  \t  \n    
0022560                                                                 
0022600                                1   2           =   >       -   -
0022620        n   o   n   t   e   r   m   i   n   a   l   s            
0022640    :   :   =       "   |   |   T   A   B   L   E   2   "  \n  \t
0022660   \t  \t  \t   {  \n  \t  \t  \t  \t  \t   P   r   i   n   t   T
0022700    a   b   l   e   H   e   a   d   [   '   2   ]   ;       e   o
0022720    f   M   a   r   k     254       l   a   s   t   S   y   m   b
0022740    o   l   ;  \n  \t  \t  \t  \t  \t   n   e   x   t   A   l   i
0022760    a   s     254       0   ;           -   -       a   s   s   e
0023000    r   t       T   A   B   L   E   3       e   m   p   t   y    
0023020    i   n       c   a   s   e       i   t       i   s       o   m
0023040    i   t   t   e   d  \n  \t  \t  \t  \t  \t   a   l   i   a   s
0023060    e   s     254       N   I   L   ;  \n  \t  \t  \t  \t  \t   }
0023100    ;  \n  \t  \t  \t  \t  \t  \n                                
0023120                                                                 
0023140    1   3           =   >       -   -       a   l   i   a   s   e
0023160    s                                   :   :   =       "   |   |
0023200    T   A   B   L   E   3   "  \n  \t  \t  \t  \t   {  \n  \t  \t
0023220   \t  \t  \t   P   r   i   n   t   T   a   b   l   e   H   e   a
0023240    d   [   '   3   ]   ;  \n  \t  \t  \t  \t  \t   a   l   i   a
0023260    s   e   s     254       M   a   k   e   A   l   i   a   s   e
0023300    s   [   6   4   ]   ;  \n  \t  \t  \t  \t  \t   }   ;  \n  \t
0023320   \t  \t  \t  \t  \n                                            
0023340                                                        1   4    
0023360        =   >       -   -       a   l   i   a   s   e   s        
0023400                            :   :   =       a   l   i   a   s   e
0023420    s       s   y   m   b   o   l       s   y   m   b   o   l  \n
0023440   \t  \t  \t  \t   {   t   e   m   p   :       U   N   S   P   E
0023460    C   I   F   I   E   D     254       N   P   G   S   C   o   n
0023500    D   e   f   s   .   e   o   f   M   a   r   k   ;  \n  \t  \t
0023520   \t  \t  \t   I   F       v   [   t   o   p   +   1   ]   .   s
0023540    >   t   e   m   p       T   H   E   N       E   r   r   o   r
0023560    [   c   h   e   c   k   +   7   ,   v   [   t   o   p   +   1
0023600    ]   .   s   ,   I   n   p   u   t   L   o   c   [   ]   ]   ;
0023620   \n  \t  \t  \t  \t  \t   I   F       v   [   t   o   p   +   2
0023640    ]   .   s   <   =   t   e   m   p       T   H   E   N       E
0023660    r   r   o   r   [   c   h   e   c   k   +   8   ,   v   [   t
0023700    o   p   +   2   ]   .   s   ,   I   n   p   u   t   L   o   c
0023720    [   ]   ]   ;  \n  \t  \t  \t  \t  \t   I   F       n   e   x
0023740    t   A   l   i   a   s   =   a   l   i   a   s   e   s   .   l
0023760    e   n   g   t   h       T   H   E   N  \n  \t  \t  \t  \t  \t
0024000   \t   a   l   i   a   s   e   s     254       E   x   p   a   n
0024020    d   A   l   i   a   s   e   s   [   a   l   i   a   s   e   s
0024040    ,       a   l   i   a   s   e   s   .   l   e   n   g   t   h
0024060    /   8   ]   ;  \n  \t  \t  \t  \t  \t   a   l   i   a   s   e
0024100    s   [   n   e   x   t   A   l   i   a   s   ]     254       [
0024120    v   [   t   o   p   +   1   ]   .   s   ,   v   [   t   o   p
0024140    +   2   ]   .   s   ]   ;       n   e   x   t   A   l   i   a
0024160    s     254       n   e   x   t   A   l   i   a   s   +   1   ;
0024200   \n  \t  \t  \t  \t  \t   I   F       f   l   a   g   s   [   e
0024220    c   h   o   ]       T   H   E   N       {  \n  \t  \t  \t  \t
0024240   \t  \t   o   u   t   c   h   a   r   [   '       ,   t   o   k
0024260    e   n   S   i   z   e   +   1   -   O   u   t   T   o   k   e
0024300    n   [   v   [   t   o   p   +   1   ]   .   s   ]   ]   ;    
0024320    o   u   t   c   h   a   r   [   '       ,   1   ]   ;  \n  \t
0024340   \t  \t  \t  \t  \t   j     254       C   A   R   D   I   N   A
0024360    L   [   v   [   t   o   p   +   2   ]   .   s   ]   *   t   o
0024400    k   e   n   S   i   z   e   ;  \n  \t  \t  \t  \t  \t  \t   F
0024420    O   R       i       I   N       [   j   .   .   j   +   t   o
0024440    k   e   n   S   i   z   e   )       W   H   I   L   E       s
0024460    y   m   T   a   b   [   i   ]   #   0   C       D   O       o
0024500    u   t   c   h   a   r   [   s   y   m   T   a   b   [   i   ]
0024520    ,   1   ]       E   N   D   L   O   O   P   ;  \n  \t  \t  \t
0024540   \t  \t  \t   o   u   t   e   o   l   [   1   ]   }   ;  \n  \t
0024560   \t  \t  \t  \t   }   ;  \n  \t  \t  \t  \t  \t  \n            
0024600                                                                 
0024620                        1   5           =   >       -   -       d
0024640    i   s   c   a   r   d                                   :   :
0024660    =  \n  \t  \t  \t  \t   l   [   t   o   p   ]     254       I
0024700    n   p   u   t   L   o   c   [   ]   ;       -   -       k   e
0024720    e   p       t   h   e       p   a   r   s   e   r       e   r
0024740    r   o   r       r   e   c   o   v   e   r   y       h   a   p
0024760    p   y  \n  \t  \t  \t  \t  \n                                
0025000                                                                 
0025020    1   6           =   >       -   -       r   u   l   e   g   r
0025040    o   u   p                           :   :   =       s   y   m
0025060    b   o   l       "   :   :   =   "  \n  \t  \t  \t  \t   {   S
0025100    e   t   R   u   l   e   C   h   a   i   n   [   p   r   i   x
0025120    ,       F   A   L   S   E   ]   ;       L   h   s   S   y   m
0025140    b   o   l   [   v   [   t   o   p   ]   .   s   ]   }   ;  \n
0025160   \t  \t  \t  \t  \n                                            
0025200                                                        1   7    
0025220        =   >       -   -       r   u   l   e   g   r   o   u   p
0025240                            :   :   =       p   r   e   f   i   x
0025260        s   y   m   b   o   l       "   :   :   =   "  \n  \t  \t
0025300   \t  \t   L   h   s   S   y   m   b   o   l   [   v   [   t   o
0025320    p   +   1   ]   .   s   ]   ;  \n  \t  \t  \t  \t  \n        
0025340                                                                 
0025360                            1   8           =   >       -   -    
0025400    r   u   l   e   g   r   o   u   p                           :
0025420    :   =       r   u   l   e   g   r   o   u   p       s   y   m
0025440    b   o   l       "   :   :   =   "  \n  \t  \t  \t  \t   {   S
0025460    e   t   R   u   l   e   C   h   a   i   n   [   p   r   i   x
0025500    ,       F   A   L   S   E   ]   ;       L   h   s   S   y   m
0025520    b   o   l   [   v   [   t   o   p   +   1   ]   .   s   ]   }
0025540    ;  \n  \t  \t  \t  \t  \n                                    
0025560                                                                1
0025600    9           =   >       -   -       r   u   l   e   g   r   o
0025620    u   p                           :   :   =       r   u   l   e
0025640    g   r   o   u   p       p   r   e   f   i   x       s   y   m
0025660    b   o   l       "   :   :   =   "  \n  \t  \t  \t  \t   L   h
0025700    s   S   y   m   b   o   l   [   v   [   t   o   p   +   2   ]
0025720    .   s   ]   ;  \n  \t  \t  \t  \t  \n                        
0025740                                                                 
0025760            2   0           =   >       -   -       r   u   l   e
0026000    g   r   o   u   p                           :   :   =       r
0026020    u   l   e   g   r   o   u   p       '   |  \n  \t  \t  \t  \t
0026040    {   S   e   t   R   u   l   e   C   h   a   i   n   [   p   r
0026060    i   x   ,       F   A   L   S   E   ]   ;       P   r   o   d
0026100    H   e   a   d   e   r   [   F   A   L   S   E   ]   }   ;  \n
0026120   \t  \t  \t  \t  \n                                            
0026140                                                        2   1    
0026160        =   >       -   -       r   u   l   e   g   r   o   u   p
0026200                            :   :   =       r   u   l   e   g   r
0026220    o   u   p       p   r   e   f   i   x       '   |  \n  \t  \t
0026240   \t  \t   P   r   o   d   H   e   a   d   e   r   [   F   A   L
0026260    S   E   ]   ;  \n  \t  \t  \t  \t  \n                        
0026300                                                                 
0026320            2   2           =   >       -   -       r   u   l   e
0026340    g   r   o   u   p                           :   :   =       r
0026360    u   l   e   g   r   o   u   p       s   y   m   b   o   l  \n
0026400   \t  \t  \t  \t   {   t   e   m   p   :       C   A   R   D   I
0026420    N   A   L     254       0   ;  \n  \t  \t  \t  \t  \t   i    
0026440  254       v   [   t   o   p   +   1   ]   .   s   ;       s   y
0026460    m   I   n   f   o   [   i   ]   .   u   s   e   d     254    
0026500    T   R   U   E   ;  \n  \t  \t  \t  \t  \t   I   F       i   =
0026520    e   o   f   M   a   r   k       O   R       i   =   e   o   f
0026540    M   a   r   k   +   1       T   H   E   N       E   r   r   o
0026560    r   [   c   h   e   c   k   +   9   ,   0   ,   I   n   p   u
0026600    t   L   o   c   [   ]   ]   ;       -   -   g   o   a   l    
0026620    s   y   m   b   o   l   s  \n  \t  \t  \t  \t  \t   I   F    
0026640    f   l   a   g   s   [   e   c   h   o   ]       T   H   E   N
0026660        {  \n  \t  \t  \t  \t  \t  \t   I   F       l   i   n   e
0026700    W   i   d   t   h   <   s   y   m   I   n   f   o   [   i   ]
0026720    .   l   e   n   g   t   h       T   H   E   N       {  \n  \t
0026740   \t  \t  \t  \t  \t  \t   o   u   t   e   o   l   [   1   ]   ;
0026760        o   u   t   c   h   a   r   [   '       ,   t   o   k   e
0027000    n   S   i   z   e   +   1   8   ]   ;       l   i   n   e   W
0027020    i   d   t   h     254       o   u   t   b   u   f   L   i   m
0027040        -       t   o   k   e   n   S   i   z   e   -   1   8   }
0027060    ;  \n  \t  \t  \t  \t  \t  \t   I   F       (   l   i   n   e
0027100    W   i   d   t   h     254       (   l   i   n   e   W   i   d
0027120    t   h   -   O   u   t   T   o   k   e   n   [   i   ]   -   1
0027140    )   )       >       0       T   H   E   N       o   u   t   c
0027160    h   a   r   [   '       ,       1   ]   }   ;  \n  \t  \t  \t
0027200   \t  \t   I   F       c   h   i   x   =   r   h   s   C   h   a
0027220    r   .   l   e   n   g   t   h       T   H   E   N  \n  \t  \t
0027240   \t  \t  \t  \t   r   h   s   C   h   a   r     254       E   x
0027260    p   a   n   d   R   h   s   C   h   a   r   [   r   h   s   C
0027300    h   a   r   ,       r   h   s   C   h   a   r   .   l   e   n
0027320    g   t   h   /   8   ]   ;  \n  \t  \t  \t  \t  \t   r   h   s
0027340    C   h   a   r   [   c   h   i   x   ] 254   i   ;       c   h
0027360    i   x     254       c   h   i   x       +   1   ;  \n  \t  \t
0027400   \t  \t  \t   I   F       p   r   o   d   I   n   f   o   [   p
0027420    r   i   x   -   1   ]   .   c   o   u   n   t       =       r
0027440    h   s   L   i   m       T   H   E   N       {  \n  \t  \t  \t
0027460   \t  \t  \t   p   r   o   d   I   n   f   o   [   p   r   i   x
0027500    -   1   ]   .   c   o   u   n   t     254       1   ;       r
0027520    h   s   F   l   a   g     254       T   R   U   E   }   ;  \n
0027540   \t  \t  \t  \t  \t   t   e   m   p     254       p   r   o   d
0027560    I   n   f   o   [   p   r   i   x   -   1   ]   .   c   o   u
0027600    n   t   ;  \n  \t  \t  \t  \t  \t   p   r   o   d   I   n   f
0027620    o   [   p   r   i   x   -   1   ]   .   c   o   u   n   t    
0027640  254       t   e   m   p   +   1   ;  \n  \t  \t  \t  \t  \t   }
0027660    ;  \n  \t  \t  \t  \t  \t  \n                                
0027700                                                                 
0027720    2   3           =   >       -   -       p   r   e   f   i   x
0027740                                        :   :   =       n   u   m
0027760   \n  \t  \t  \t  \t   S   e   t   R   u   l   e   C   h   a   i
0030000    n   [   v   [   t   o   p   ]   .   s   ,       F   A   L   S
0030020    E   ]   ;  \n  \t  \t  \t  \t  \n                            
0030040                                                                 
0030060        2   4           =   >       -   -       p   r   e   f   i
0030100    x                                       :   :   =       n   u
0030120    m       n   u   m  \n  \t  \t  \t  \t   -   -       p   r   e
0030140    f   i   x                                       :   :   =    
0030160    '   ?       n   u   m  \n  \t  \t  \t  \t   S   e   t   R   u
0030200    l   e   C   h   a   i   n   [   v   [   t   o   p   +   1   ]
0030220    .   s   ,       F   A   L   S   E   ]   ;  \n  \t  \t  \t  \t
0030240   \n                                                            
0030260                                        2   5           =   >    
0030300    -   -       p   r   e   f   i   x                            
0030320            :   :   =       d   i   s   c   a   r   d       '   C
0030340   \n  \t  \t  \t  \t   S   e   t   R   u   l   e   C   h   a   i
0030360    n   [   p   r   i   x   ,       T   R   U   E   ]   ;  \n  \t
0030400   \t  \t  \t  \n                                                
0030420                                                    2   6        
0030440    =   >       -   -       p   r   e   f   i   x                
0030460                        :   :   =       d   i   s   c   a   r   d
0030500        '   C       n   u   m  \n  \t  \t  \t  \t   S   e   t   R
0030520    u   l   e   C   h   a   i   n   [   v   [   t   o   p   +   2
0030540    ]   .   s   ,       T   R   U   E   ]   ;  \n  \t  \t  \t  \t
0030560   \n                                                            
0030600                                        2   7           =   >    
0030620    -   -       p   r   e   f   i   x                            
0030640            :   :   =       '   ?  \n  \t  \t  \t  \t   S   e   t
0030660    R   u   l   e   C   h   a   i   n   [   p   r   i   x   ,    
0030700    F   A   L   S   E   ]   ;  \n  \t  \t  \t  \t  \n            
0030720                                                                 
0030740                        2   8           =   >       -   -       d
0030760    i   r   e   c   t   i   v   e   s                       :   :
0031000    =       d   i   r   e   c   t   i   v   e   s       d   i   r
0031020    e   c   t   i   v   e  \n  \t  \t  \t  \t   -   -       d   i
0031040    s   c   a   r   d                                   :   :   =
0031060        n   u   m  \n  \t  \t  \t  \t   -   -       d   i   s   c
0031100    a   r   d                                   :   :   =       '
0031120    ?  \n  \t  \t  \t  \t   -   -       r   u   l   e   s   e   t
0031140                                    :   :   =   C       r   u   l
0031160    e   g   r   o   u   p  \n  \t  \t  \t  \t   -   -       r   u
0031200    l   e   s   e   t                                   :   :   =
0031220        g   o   a   l   r   u   l   e       r   u   l   e   g   r
0031240    o   u   p  \n  \t  \t  \t  \t   -   -       g   o   a   l   r
0031260    u   l   e                               :   :   =       "   G
0031300    O   A   L   "       "   :   :   =   "       s   y   m   b   o
0031320    l       s   y   m   b   o   l  \n  \t  \t  \t  \t   N   U   L
0031340    L   ;  \n  \t  \t  \t  \t   E   N   D   C   A   S   E       =
0031360    >       E   R   R   O   R   ;  \n  \t  \t  \t  \t   E   N   D
0031400    L   O   O   P   ;  \n  \t  \t  \t   }   ;  \n  \t  \t  \t  \t
0031420   \n   -   -       t   h   e       f   o   l   l   o   w   i   n
0031440    g       p   r   o   c   e   d   u   r   e       i   s       c
0031460    a   l   l   e   d       f   r   o   m       t   h   e       S
0031500    c   a   n   R   e   s   e   t       i   f       n   o       e
0031520    r   r   o   r   s  \n  \n  \t   F   i   n   i   s   h   I   n
0031540    p   u   t   :       P   R   O   C       =       {  \n  \t  \t
0031560    e   m   p   t   y   F   l   a   g   :       B   O   O   L    
0031600  254       T   R   U   E   ;  \n  \t  \t   j   ,       k   :    
0031620    C   A   R   D   I   N   A   L   ;  \n  \t  \t   -   -       c
0031640    o   m   p   u   t   e       n   o   n   t   e   r   m   i   n
0031660    a   l   s       d   e   r   i   v   i   n   g       e   m   p
0031700    t   y  \n  \t  \t   W   H   I   L   E       e   m   p   t   y
0031720    F   l   a   g       D   O  \n  \t  \t  \t   e   m   p   t   y
0031740    F   l   a   g     254       F   A   L   S   E   ;  \n  \t  \t
0031760   \t   F   O   R       i   :       C   A   R   D   I   N   A   L
0032000        I   N       [   1   .   .   t   o   t   a   l   T   o   k
0032020    e   n   s   -   e   o   f   M   a   r   k   ]       D   O    
0032040        -   -       e   a   c   h       n   o   n   t   e   r   m
0032060    i   n   a   l  \n  \t  \t  \t  \t   I   F       t   o   k   e
0032100    n   I   n   f   o   [   i   ]   .   e   m   p   t   y       T
0032120    H   E   N       L   O   O   P   ;           -   -   w   h   i
0032140    c   h       d   o   e   s       n   o   t       d   e   r   i
0032160    v   e       e   m   p   t   y  \n  \t  \t  \t  \t   j     254
0032200        t   o   k   e   n   I   n   f   o   [   i   ]   .   i   n
0032220    d   e   x   ;  \n  \t  \t  \t  \t   F   O   R       p   r   i
0032240    x   :       C   A   R   D   I   N   A   L       I   N       [
0032260    j   .   .   j   +   t   o   k   e   n   I   n   f   o   [   i
0032300    ]   .   c   o   u   n   t   )       D   O  \n  \t  \t  \t  \t
0032320   \t   -   -       e   a   c   h       p   r   o   d   u   c   t
0032340    i   o   n       o   f       t   h   e       n   o   n   t   e
0032360    r   m   i   n   a   l  \n  \t  \t  \t  \t  \t   k     254    
0032400    p   r   o   d   I   n   f   o   [   p   r   i   x   ]   .   i
0032420    n   d   e   x   ;  \n  \t  \t  \t  \t  \t   F   O   R       c
0032440    h   i   x   :       C   A   R   D   I   N   A   L       I   N
0032460        [   k   .   .   k   +   p   r   o   d   I   n   f   o   [
0032500    p   r   i   x   ]   .   c   o   u   n   t   )       D   O    
0032520            -   -       e   a   c   h       r   h   s       c   h
0032540    a   r   a   c   t   e   r  \n  \t  \t  \t  \t  \t  \t   I   F
0032560        r   h   s   C   h   a   r   [   c   h   i   x   ]   <   =
0032600    e   o   f   M   a   r   k       O   R       ~   t   o   k   e
0032620    n   I   n   f   o   [   r   h   s   C   h   a   r   [   c   h
0032640    i   x   ]   -   e   o   f   M   a   r   k   ]   .   e   m   p
0032660    t   y       T   H   E   N       E   X   I   T   ;  \n  \t  \t
0032700   \t  \t  \t  \t   R   E   P   E   A   T       F   I   N   I   S
0032720    H   E   D       =   >       {   t   o   k   e   n   I   n   f
0032740    o   [   i   ]   .   e   m   p   t   y     254       e   m   p
0032760    t   y   F   l   a   g     254       T   R   U   E   ;       E
0033000    X   I   T   }   ;  \n  \t  \t  \t  \t  \t  \t   E   N   D   L
0033020    O   O   P  \n  \t  \t  \t  \t  \t   E   N   D   L   O   O   P
0033040   \n  \t  \t  \t  \t   E   N   D   L   O   O   P  \n  \t  \t  \t
0033060    E   N   D   L   O   O   P   ;  \n  \t  \t   }   ;  \n  \t  \t
0033100   \t  \n  \t  \t   -   -       t   h   e       f   o   l   l   o
0033120    w   i   n   g       p   r   o   c   e   d   u   r   e       o
0033140    u   t   p   u   t   s       t   h   e       d   a   t   a    
0033160    s   t   r   u   c   t   u   r   e       c   o   n   t   e   n
0033200    t   s       i   n       t   h   e       t   a   b   l   e   s
0033220    :  \n  \t  \t   -   -       P   R   O   D   U   C   T   I   O
0033240    N   I   N   F   O                                            
0033260        T   O   K   E   N   I   N   F   O                        
0033300                                S   Y   M   I   N   F   O  \n  \t
0033320   \t   -   -       n   u   m       c   o   u   n   t       r   u
0033340    l   e       c   h   a   i   n       l   h   s       i   n   d
0033360    e   x               c   o   u   n   t       e   m   p   t   y
0033400        i   n   d   e   x               l   i   n   k       u   s
0033420    e   d       l   e   n   g   t   h               s   y   m   b
0033440    o   l  \n  \t  \t   -   -       4       1           3        
0033460            5                   1                   4            
0033500        5               2               3                       1
0033520                        5               2               4        
0033540        1                       3                   1           .
0033560    .   .  \n  \t  \t  \n  \t   C   h   e   c   k   O   u   t   :
0033600        P   U   B   L   I   C       P   R   O   C       =       {
0033620   \n  \t  \t   I   F       f   l   a   g   s   [   i   d   s   ]
0033640        T   H   E   N       {  \n  \t  \t  \t   s   e   t   e   r
0033660    r   s   t   r   e   a   m   [   ]   ;       o   u   t   e   o
0033700    l   [   1   ]   ;  \n  \t  \t  \t   o   u   t   s   t   r   i
0033720    n   g   [   "                               P   R   O   D   U
0033740    C   T   I   O   N   I   N   F   O                       T   O
0033760    K   E   N   I   N   F   O                   S   Y   M   I   N
0034000    F   O   "   ]   ;  \n  \t  \t  \t   F   O   R       i   :    
0034020    C   A   R   D   I   N   A   L       I   N       [   0   .   .
0034040    M   A   X   [   n   u   m   P   r   o   d   ,   t   o   t   a
0034060    l   T   o   k   e   n   s   ]   ]       D   O  \n  \t  \t  \t
0034100   \t   o   u   t   e   o   l   [   1   ]   ;       o   u   t   n
0034120    u   m   [   i   ,   4   ]   ;       o   u   t   c   h   a   r
0034140    [   '       ,   1   ]   ;  \n  \t  \t  \t  \t   I   F       i
0034160    >   n   u   m   P   r   o   d       T   H   E   N       o   u
0034200    t   c   h   a   r   [   '       ,   2   0   ]  \n  \t  \t  \t
0034220   \t   E   L   S   E       {  \n  \t  \t  \t  \t  \t   o   u   t
0034240    n   u   m   [   p   r   o   d   I   n   f   o   [   i   ]   .
0034260    c   o   u   n   t   ,   3   ]   ;       o   u   t   n   u   m
0034300    [   p   r   o   d   I   n   f   o   [   i   ]   .   r   u   l
0034320    e   ,   5   ]   ;  \n  \t  \t  \t  \t  \t   o   u   t   c   h
0034340    a   r   [   I   F       p   r   o   d   I   n   f   o   [   i
0034360    ]   .   c   h   a   i   n       T   H   E   N       '   C    
0034400    E   L   S   E       '       ,       1   ]   ;  \n  \t  \t  \t
0034420   \t  \t   o   u   t   n   u   m   [   p   r   o   d   I   n   f
0034440    o   [   i   ]   .   l   h   s   ,   4   ]   ;       o   u   t
0034460    n   u   m   [   p   r   o   d   I   n   f   o   [   i   ]   .
0034500    i   n   d   e   x   ,   5   ]   ;       o   u   t   c   h   a
0034520    r   [   '       ,   2   ]   }   ;  \n  \t  \t  \t  \t   I   F
0034540        i       I   N       (   0   .   .   t   o   t   a   l   T
0034560    o   k   e   n   s   ]       T   H   E   N       {  \n  \t  \t
0034600   \t  \t  \t   I   F       i   <   =   e   o   f   M   a   r   k
0034620        T   H   E   N       o   u   t   c   h   a   r   [   '    
0034640    ,   1   1   ]       E   L   S   E       {  \n  \t  \t  \t  \t
0034660   \t  \t   o   u   t   n   u   m   [   t   o   k   e   n   I   n
0034700    f   o   [   i   -   e   o   f   M   a   r   k   ]   .   c   o
0034720    u   n   t   ,   3   ]   ;  \n  \t  \t  \t  \t  \t  \t   o   u
0034740    t   c   h   a   r   [   I   F       t   o   k   e   n   I   n
0034760    f   o   [   i   -   e   o   f   M   a   r   k   ]   .   e   m
0035000    p   t   y       T   H   E   N       '   E       E   L   S   E
0035020        '       ,   1   ]   ;  \n  \t  \t  \t  \t  \t  \t   o   u
0035040    t   n   u   m   [   t   o   k   e   n   I   n   f   o   [   i
0035060    -   e   o   f   M   a   r   k   ]   .   i   n   d   e   x   ,
0035100    5   ]   ;       o   u   t   c   h   a   r   [   '       ,   2
0035120    ]   }   ;  \n  \t  \t  \t  \t  \t   o   u   t   n   u   m   [
0035140    s   y   m   I   n   f   o   [   i   ]   .   l   i   n   k   ,
0035160    4   ]   ;       o   u   t   c   h   a   r   [   I   F       s
0035200    y   m   I   n   f   o   [   i   ]   .   u   s   e   d       T
0035220    H   E   N       '   U       E   L   S   E       '       ,   1
0035240    ]   ;  \n  \t  \t  \t  \t  \t   o   u   t   n   u   m   [   s
0035260    y   m   I   n   f   o   [   i   ]   .   l   e   n   g   t   h
0035300    ,   3   ]   ;       o   u   t   c   h   a   r   [   '       ,
0035320    1   ]   ;       [   ]     254       O   u   t   T   o   k   e
0035340    n   [   i   ]   }  \n  \t  \t  \t  \t   E   N   D   L   O   O
0035360    P   ;  \n  \t  \t  \t   o   u   t   e   o   l   [   1   ]   ;
0035400        o   u   t   s   t   r   i   n   g   [   "   R   H   S   C
0035420    H   A   R   "   ]   ;       l   i   n   e   W   i   d   t   h
0035440      254       o   u   t   b   u   f   L   i   m   ;  \n  \t  \t
0035460   \t   F   O   R       i   :       C   A   R   D   I   N   A   L
0035500        I   N       [   0   .   .   n   u   m   R   h   s   C   h
0035520    a   r   s   ]       D   O  \n  \t  \t  \t  \t   l   i   n   e
0035540    W   i   d   t   h     254       l   i   n   e   W   i   d   t
0035560    h   +   t   o   k   e   n   S   i   z   e   +   1   ;  \n  \t
0035600   \t  \t  \t   I   F       l   i   n   e   W   i   d   t   h    
0035620    >       o   u   t   b   u   f   L   i   m       T   H   E   N
0035640        {   o   u   t   e   o   l   [   1   ]   ;       o   u   t
0035660    n   u   m   [   i   ,   4   ]   ;       l   i   n   e   W   i
0035700    d   t   h     254       4   }   ;  \n  \t  \t  \t  \t   o   u
0035720    t   c   h   a   r   [   '       ,   1   ]   ;       [   ]    
0035740  254       O   u   t   T   o   k   e   n   [   r   h   s   C   h
0035760    a   r   [   i   ]   ]   ;  \n  \t  \t  \t  \t   E   N   D   L
0036000    O   O   P   ;  \n  \t  \t  \t   o   u   t   e   o   l   [   1
0036020    ]   ;       r   e   s   e   t   o   u   t   s   t   r   e   a
0036040    m   [   ]   ;  \n  \t  \t  \t   }   ;  \n  \t  \t   }   ;  \n
0036060   \t  \t  \t  \n  \t  \t  \t  \n  \t   -   -       e   r   r   o
0036100    r       r   e   c   o   v   e   r   y  \n  \t  \n  \t  \t   T
0036120    o   k   e   n   V   a   l   u   e   :       P   U   B   L   I
0036140    C       P   R   O   C       [   s   :       T   S   y   m   b
0036160    o   l   ]       R   E   T   U   R   N   S       [   N   P   G
0036200    S   1   .   V   a   l   u   e   ]       =       {  \n  \t  \t
0036220   \t   R   E   T   U   R   N       [   N   P   G   S   1   .   n
0036240    u   l   l   V   a   l   u   e   ]   ;  \n  \t  \t  \t   }   ;
0036260                   \n  \t  \t  \n   -   -       S   c   a   n   n
0036300    e   r   :       t   e   x   t       i   n   p   u   t       a
0036320    n   d       e   r   r   o   r       r   o   u   t   i   n   e
0036340    s  \n  \n  \t   -   -       t   a   b   l   e       i   n   s
0036360    t   a   l   l   a   t   i   o   n  \n  \t  \n  \t  \t   h   a
0036400    s   h   T   a   b   :       H   a   s   h   T   a   b   l   e
0036420    R   e   f   ;  \n  \t  \t   s   c   a   n   T   a   b   :    
0036440    S   c   a   n   T   a   b   l   e   R   e   f   ;  \n  \t  \t
0036460    v   o   c   a   b   :       V   o   c   a   b   u   l   a   r
0036500    y   R   e   f   ;  \n  \t  \t   v   o   c   a   b   I   n   d
0036520    e   x   :       I   n   d   e   x   T   a   b   l   e   R   e
0036540    f   ;  \n  \t  \t  \n  \t  \t   I   n   s   t   a   l   l   S
0036560    c   a   n   T   a   b   l   e   :       P   U   B   L   I   C
0036600        P   R   O   C       =       {  \n  \t  \t  \t   h   a   s
0036620    h   T   a   b     254       N   P   G   S   P   a   r   s   e
0036640    T   a   b   l   e   .   I   n   i   t   H   a   s   h   T   a
0036660    b   l   e   [   ]   ;  \n  \t  \t  \t   s   c   a   n   T   a
0036700    b     254       N   P   G   S   P   a   r   s   e   T   a   b
0036720    l   e   .   I   n   i   t   S   c   a   n   T   a   b   l   e
0036740    [   ]   ;  \n  \t  \t  \t   v   o   c   a   b     254       N
0036760    P   G   S   P   a   r   s   e   T   a   b   l   e   .   I   n
0037000    i   t   V   o   c   a   b   u   l   a   r   y   [   ]   ;  \n
0037020   \t  \t  \t   v   o   c   a   b   I   n   d   e   x     254    
0037040    N   P   G   S   P   a   r   s   e   T   a   b   l   e   .   I
0037060    n   i   t   I   n   d   e   x   T   a   b   l   e   [   ]   ;
0037100   \n  \t  \t  \t   }   ;  \n  \t  \t  \t  \n   -   -       s   c
0037120    a   n   n   e   r       s   t   a   t   e  \n  \n  \t   s   t
0037140    r   e   a   m   :       S   T   R   E   A   M     254       N
0037160    I   L   ;                   -   -       t   h   e       i   n
0037200    p   u   t       s   t   r   e   a   m       (   a       d   u
0037220    m   m   y       f   o   r       n   o   w   )  \n  \t   L   o
0037240    g   g   e   r   :       P   R   O   C       [   P   R   O   C
0037260        [   l   o   g   :       S   T   R   E   A   M   ]   ]    
0037300  254       N   I   L   ;  \n  \t  \n  \t   N   U   L   :       C
0037320    H   A   R       =       '   \   0   0   0   ;  \n  \t  \n  \t
0037340    b   u   f   f   e   r   :       R   E   F       T   E   X   T
0037360      254       N   I   L   ;                   -   -       t   o
0037400    k   e   n       a   s   s   e   m   b   l   y       a   r   e
0037420    a  \n  \t  \n  \t   n   T   o   k   e   n   s   :       C   A
0037440    R   D   I   N   A   L     254       0   ;                    
0037460        -   -       t   o   k   e   n       c   o   u   n   t  \n
0037500   \t   n   E   r   r   o   r   s   :       C   A   R   D   I   N
0037520    A   L   ;                           -   -       l   e   x   i
0037540    c   a   l       e   r   r   o   r   s  \n  \t  \n  \t   c   h
0037560    a   r   :       C   H   A   R   ;           -   -       c   u
0037600    r   r   e   n   t       (   m   o   s   t       r   e   c   e
0037620    n   t   l   y       s   c   a   n   n   e   d   )       c   h
0037640    a   r   a   c   t   e   r  \n  \t   t   I   :       C   A   R
0037660    D   I   N   A   L     254       0   ;           -   -       i
0037700    t   s       (   s   t   r   e   a   m   )       i   n   d   e
0037720    x  \n  \t   e   o   f   :       B   O   O   L   ;  \n  \t  \n
0037740   \t   N   e   x   t   C   h   a   r   :       P   R   O   C    
0037760    =       {           -   -       a   l   s   o       e   x   p
0040000    a   n   d   e   d       i   n   l   i   n   e       w   i   t
0040020    h   i   n       A   t   o   m  \n  \t  \t   t   I     254    
0040040    t   I       +       1   ;           [   c   h   a   r   ,    
0040060    e   o   f   ]     254       i   n   c   h   a   r   [   ]   }
0040100    ;  \n  \t  \t  \n  \t  \t  \n  \t   N   e   x   t   T   o   k
0040120    e   n   :       P   U   B   L   I   C       P   R   O   C    
0040140    R   E   T   U   R   N   S   [   t   :       T   o   k   e   n
0040160    ]       =       {  \n  \t  \t   -   -   O   P   E   N       t
0040200    ;  \n  \t  \t  \n  \t  \t   L   o   c   a   t   e   T   o   k
0040220    e   n   :       P   R   O   C   [   s   t   r   i   n   g   :
0040240        R   E   F       T   E   X   T   ]       R   E   T   U   R
0040260    N   S   [   C   A   R   D   I   N   A   L   ]       =       {
0040300   \n  \t  \t  \t   -   -       r   e   t   u   r   n   s       t
0040320    o   k   e   n       c   o   r   r   e   s   p   o   n   d   i
0040340    n   g       t   o       s   t   r   i   n   g  \n  \t  \t  \t
0040360    i   ,       j   :       C   A   R   D   I   N   A   L   ;  \n
0040400   \t  \t  \t   j     254       h   a   s   h   C   h   a   i   n
0040420    [   (   s   t   r   i   n   g   .   l   e   n   g   t   h   *
0040440    2   5   6   +   (   s   t   r   i   n   g   [   0   ]   .   O
0040460    R   D   )   )       M   O   D       (   s   y   m   T   a   b
0040500    S   i   z   e   /   4   )       +       1   ]   ;  \n  \t  \t
0040520   \t   W   H   I   L   E       j       #       0       D   O  \n
0040540   \t  \t  \t  \t   I   F       s   y   m   I   n   f   o   [   j
0040560    ]   .   l   e   n   g   t   h       =       s   t   r   i   n
0040600    g   .   l   e   n   g   t   h       T   H   E   N       {  \n
0040620   \t  \t  \t  \t  \t   i     254       j   *   t   o   k   e   n
0040640    S   i   z   e   ;  \n  \t  \t  \t  \t  \t   F   O   R       k
0040660    :       C   A   R   D   I   N   A   L       I   N       [   0
0040700    .   .   s   t   r   i   n   g   .   l   e   n   g   t   h   )
0040720        D   O  \n  \t  \t  \t  \t  \t  \t   I   F       s   y   m
0040740    T   a   b   [   i   +   k   ]   #   s   t   r   i   n   g   [
0040760    k   ]       T   H   E   N       E   X   I   T  \n  \t  \t  \t
0041000   \t  \t  \t   R   E   P   E   A   T       F   I   N   I   S   H
0041020    E   D       =   >       R   E   T   U   R   N       [   j   ]
0041040   \n  \t  \t  \t  \t  \t  \t   E   N   D   L   O   O   P   ;  \n
0041060   \t  \t  \t  \t  \t   }   ;  \n  \t  \t  \t  \t   j     254    
0041100    s   y   m   I   n   f   o   [   j   ]   .   l   i   n   k   ;
0041120   \n  \t  \t  \t  \t   E   N   D   L   O   O   P   ;  \n  \t  \t
0041140   \t   R   E   T   U   R   N       [   0   ]   ;  \n  \t  \t  \t
0041160    }   ;  \n  \t  \t  \t  \n  \t  \t   T   o   k   e   n   T   o
0041200    S   y   m   T   a   b   :       P   R   O   C   [   s   t   r
0041220    i   n   g   :       R   E   F       T   E   X   T   ,       t
0041240    o   k   e   n   :       C   A   R   D   I   N   A   L   ]    
0041260    =       {  \n  \t  \t  \t   i   ,       j   :       C   A   R
0041300    D   I   N   A   L   ;  \n  \t  \t  \t   i     254       t   o
0041320    k   e   n   *   t   o   k   e   n   S   i   z   e   ;  \n  \t
0041340   \t  \t   F   O   R       j       I   N       [   0   .   .   s
0041360    t   r   i   n   g   .   l   e   n   g   t   h   )       D   O
0041400        s   y   m   T   a   b   [   i   +   j   ]     254       s
0041420    t   r   i   n   g   [   j   ]       E   N   D   L   O   O   P
0041440    ;  \n  \t  \t  \t   s   y   m   I   n   f   o   [   t   o   k
0041460    e   n   ]   .   l   e   n   g   t   h     254       s   t   r
0041500    i   n   g   .   l   e   n   g   t   h   ;       s   y   m   I
0041520    n   f   o   [   t   o   k   e   n   ]   .   u   s   e   d    
0041540  254       F   A   L   S   E   ;  \n  \t  \t  \t   j     254    
0041560    (   s   t   r   i   n   g   .   l   e   n   g   t   h   *   2
0041600    5   6   +   (   s   t   r   i   n   g   [   0   ]   .   O   R
0041620    D   )   )       M   O   D       (   s   y   m   T   a   b   S
0041640    i   z   e   /   4   )       +       1   ;  \n  \t  \t  \t   s
0041660    y   m   I   n   f   o   [   t   o   k   e   n   ]   .   l   i
0041700    n   k     254       h   a   s   h   C   h   a   i   n   [   j
0041720    ]   ;  \n  \t  \t  \t   h   a   s   h   C   h   a   i   n   [
0041740    j   ]     254       t   o   k   e   n   ;  \n  \t  \t  \t   }
0041760    ;  \n  \t  \t  \t  \n  \t  \t   T   o   k   e   n   O   r   I
0042000    d   :       P   R   O   C   [   s   u   b   :       C   A   R
0042020    D   I   N   A   L   ]       =       {  \n  \t  \t  \t   j   ,
0042040        s   1   ,       s   2   :       C   A   R   D   I   N   A
0042060    L   ;  \n  \t  \t  \t   h   :       H   a   s   h   I   n   d
0042100    e   x   ;  \n  \t  \t  \t   W   H   I   L   E       c   h   a
0042120    r       N   O   T       I   N       [   N   U   L   .   .   '
0042140        ]       D   O  \n  \t  \t  \t  \t   I   F       s   u   b
0042160    <   t   o   k   e   n   S   i   z   e       T   H   E   N    
0042200    b   u   f   f   e   r   [   s   u   b   ]     254       c   h
0042220    a   r   ;  \n  \t  \t  \t  \t   s   u   b     254       s   u
0042240    b       +       1   ;       N   e   x   t   C   h   a   r   [
0042260    ]   ;  \n  \t  \t  \t  \t   E   N   D   L   O   O   P   ;  \n
0042300   \t  \t  \t   I   F       s   u   b   >   t   o   k   e   n   S
0042320    i   z   e       T   H   E   N       {  \n  \t  \t  \t  \t   b
0042340    u   f   f   e   r   .   l   e   n   g   t   h     254       s
0042360    u   b     254       t   o   k   e   n   S   i   z   e   ;    
0042400    E   r   r   o   r   [   1   ,   -   1   ,   t   .   i   n   d
0042420    e   x   ]   }   ;       -   -   o   v   e   r   l   e   n   g
0042440    t   h  \n  \t  \t  \t   I   F       s   u   b       =       1
0042460        T   H   E   N       {  \n  \t  \t  \t  \t   t   .   c   l
0042500    a   s   s     254       s   c   a   n   T   a   b   [   b   u
0042520    f   f   e   r   [   0   ]   ]   ;  \n  \t  \t  \t  \t   I   F
0042540        t   .   c   l   a   s   s       #       0       T   H   E
0042560    N       R   E   T   U   R   N   }   ;  \n  \t  \t  \t   j    
0042600  254       b   u   f   f   e   r   [   0   ]       -       0   C
0042620    ;  \n  \t  \t  \t   h     254       (   (   j   *   1   2   8
0042640    -   j   )       +       C   A   R   D   I   N   A   L   [   b
0042660    u   f   f   e   r   [   s   u   b   -   1   ]   -   0   C   ]
0042700    )       M   O   D       H   a   s   h   I   n   d   e   x   .
0042720    L   A   S   T       +       1   ;  \n  \t  \t  \t   W   H   I
0042740    L   E       (   j     254       h   a   s   h   T   a   b   [
0042760    h   ]   .   s   y   m   b   o   l   )       #       0       D
0043000    O      \n  \t  \t  \t  \t   I   F       v   o   c   a   b   I
0043020    n   d   e   x   [   j   ]   -   (   s   2 254   v   o   c   a
0043040    b   I   n   d   e   x   [   j   -   1   ]   )       =       s
0043060    u   b       T   H   E   N  \n  \t  \t  \t  \t  \t   F   O   R
0043100        s   1       I   N       [   0       .   .       s   u   b
0043120    )       D   O      \n  \t  \t  \t  \t  \t  \t   I   F       b
0043140    u   f   f   e   r   [   s   1   ]       #       v   o   c   a
0043160    b   .   t   e   x   t   [   s   2   ]       T   H   E   N    
0043200    E   X   I   T   ;  \n  \t  \t  \t  \t  \t  \t   s   2     254
0043220        s   2   +   1   ;  \n  \t  \t  \t  \t  \t  \t   R   E   P
0043240    E   A   T       F   I   N   I   S   H   E   D       =   >    
0043260    {  \n  \t  \t  \t  \t  \t  \t  \t   I   F       j       =    
0043300    t   o   k   e   n   T   A   B   3       T   H   E   N       i
0043320    n   s   e   r   t   F   l   a   g     254       2       E   L
0043340    S   E  \n  \t  \t  \t  \t  \t  \t  \t  \t   I   F       j    
0043360    =       t   o   k   e   n   T   A   B   4       T   H   E   N
0043400        i   n   s   e   r   t   F   l   a   g     254       3   ;
0043420   \n  \t  \t  \t  \t  \t  \t  \t   I   F       j   <   =   t   o
0043440    k   e   n   N   U   M       T   H   E   N       E   X   I   T
0043460    ;  \n  \t  \t  \t  \t  \t  \t  \t   t   .   c   l   a   s   s
0043500      254       j   ;       R   E   T   U   R   N   }   ;  \n  \t
0043520   \t  \t  \t  \t  \t   E   N   D   L   O   O   P   ;  \n  \t  \t
0043540   \t  \t   I   F       (   h     254       h   a   s   h   T   a
0043560    b   [   h   ]   .   l   i   n   k   )       =       0       T
0043600    H   E   N       E   X   I   T   ;  \n  \t  \t  \t  \t   E   N
0043620    D   L   O   O   P   ;  \n  \t  \t  \t   b   u   f   f   e   r
0043640    .   l   e   n   g   t   h     254       s   u   b   ;       t
0043660    .   c   l   a   s   s     254       t   o   k   e   n   I   D
0043700    ;       t   .   v   a   l   u   e   .   s     254       L   o
0043720    c   a   t   e   T   o   k   e   n   [   b   u   f   f   e   r
0043740    ]   ;  \n  \t  \t  \t   S   E   L   E   C   T       i   n   s
0043760    e   r   t   F   l   a   g       F   R   O   M  \n  \t  \t  \t
0044000   \t   1       =   >  \n  \t  \t  \t  \t   -   -       r   e   a
0044020    d   i   n   g       t   e   r   m   i   n   a   l   s       a
0044040    n   d       n   o   n   t   e   r   m   i   n   a   l   s  \n
0044060   \t  \t  \t  \t  \t   I   F       t   .   v   a   l   u   e    
0044100    #       N   P   G   S   1   .   n   u   l   l   V   a   l   u
0044120    e  \n  \t  \t  \t  \t  \t  \t       T   H   E   N       E   r
0044140    r   o   r   [   c   h   e   c   k   +   2   ,   t   .   v   a
0044160    l   u   e   .   s   ,   t   .   i   n   d   e   x   ]        
0044200    -   -       m   u   l   t   i   p   l   y       d   e   f   i
0044220    n   e   d       s   y   m   b   o   l  \n  \t  \t  \t  \t  \t
0044240   \t       E   L   S   E       {  \n  \t  \t  \t  \t  \t  \t  \t
0044260        I   F       t   o   k   e   n   =   s   y   m   T   a   b
0044300    .   l   e   n   g   t   h       T   H   E   N       {  \n  \t
0044320   \t  \t  \t  \t  \t  \t  \t       s   y   m   T   a   b     254
0044340        E   x   p   a   n   d   S   y   m   T   a   b   [   s   y
0044360    m   T   a   b   ,       s   y   m   T   a   b   .   l   e   n
0044400    g   t   h   /   1   6   ]   ;  \n  \t  \t  \t  \t  \t  \t  \t
0044420   \t       s   y   m   T   a   b     254       E   x   p   a   n
0044440    d   S   y   m   T   a   b   [   s   y   m   T   a   b   ,    
0044460    s   y   m   I   n   f   o   .   l   e   n   g   t   h   /   1
0044500    6   ]   ;  \n  \t  \t  \t  \t  \t  \t  \t  \t       }   ;  \n
0044520   \t  \t  \t  \t  \t  \t   T   o   k   e   n   T   o   S   y   m
0044540    T   a   b   [   b   u   f   f   e   r   ,       t   o   k   e
0044560    n   ]   ;  \n  \t  \t  \t  \t  \t  \t   t   .   v   a   l   u
0044600    e   .   s     254       t   o   k   e   n   ;       -   -   [
0044620    s   c   a   l   a   r   [   t   o   k   e   n   ]   ]   ;  \n
0044640   \t  \t  \t  \t  \t  \t   t   o   k   e   n     254       t   o
0044660    k   e   n   +   1   ;  \n  \t  \t  \t  \t  \t  \t   }   ;  \n
0044700   \t  \t  \t  \t   2       =   >  \n  \t  \t  \t  \t   -   -    
0044720    p   r   o   c   e   s   s   i   n   g       a   l   i   a   s
0044740    e   s  \n  \t  \t  \t  \t   I   F       t   .   v   a   l   u
0044760    e   =   N   P   G   S   1   .   n   u   l   l   V   a   l   u
0045000    e       T   H   E   N       {  \n  \t  \t  \t  \t  \t   s   1
0045020      254       t   o   k   e   n   *   t   o   k   e   n   S   i
0045040    z   e   ;  \n  \t  \t  \t  \t  \t   I   F       t   o   k   e
0045060    n   =   s   y   m   T   a   b   .   l   e   n   g   t   h    
0045100    T   H   E   N  \n  \t  \t  \t  \t  \t  \t   s   y   m   T   a
0045120    b     254       E   x   p   a   n   d   S   y   m   T   a   b
0045140    [   s   y   m   T   a   b   ,       s   y   m   T   a   b   .
0045160    l   e   n   g   t   h   /   1   6   ]   ;  \n  \t  \t  \t  \t
0045200   \t   F   O   R       j       I   N       [   0   .   .   b   u
0045220    f   f   e   r   .   l   e   n   g   t   h   )       D   O    
0045240    s   y   m   T   a   b   [   s   1   +   j   ]     254       b
0045260    u   f   f   e   r   [   j   ]       E   N   D   L   O   O   P
0045300    ;  \n  \t  \t  \t  \t  \t   t   .   v   a   l   u   e   .   s
0045320      254       t   o   k   e   n   ;       -   -   [   s   c   a
0045340    l   a   r   [   t   o   k   e   n   ]   ]   ;  \n  \t  \t  \t
0045360   \t  \t   t   o   k   e   n     254       t   o   k   e   n   +
0045400    1   ;  \n  \t  \t  \t  \t  \t   }   ;  \n  \t  \t  \t  \t   3
0045420        =   >  \n  \t  \t  \t  \t   -   -       p   r   o   c   e
0045440    s   s   i   n   g       p   r   o   d   u   c   t   i   o   n
0045460    s  \n  \t  \t  \t  \t  \t   I   F       t   .   v   a   l   u
0045500    e       =       N   P   G   S   1   .   n   u   l   l   V   a
0045520    l   u   e       T   H   E   N       E   r   r   o   r   [   c
0045540    h   e   c   k   +   3   ,   -   3   ,   t   .   i   n   d   e
0045560    x   ]   ;           -   -   s   y   m   b   o   l       n   o
0045600    t       d   e   f   i   n   e   d  \n  \t  \t  \t  \t   E   N
0045620    D   C   A   S   E   ;  \n  \t  \t  \t   }   ;  \n  \t  \t  \t
0045640   \t  \n  \t  \t   D   O  \n  \t  \t  \t   W   H   I   L   E    
0045660    c   h   a   r       I   N       [   N   U   L   .   .   '    
0045700    ]       D   O      \n  \t  \t  \t  \t   S   E   L   E   C   T
0045720        c   h   a   r       F   R   O   M  \n  \t  \t  \t  \t  \t
0045740    '   \   0   3   2       -   -   ^   Z   -   -       =   >  \n
0045760   \t  \t  \t  \t  \t  \t   U   N   T   I   L       c   h   a   r
0046000        =       '   \   n       D   O  \n  \t  \t  \t  \t  \t  \t
0046020   \t   I   F       e   o   f       T   H   E   N       G   O    
0046040    T   O       E   n   d   F   i   l   e   ;  \n  \t  \t  \t  \t
0046060   \t  \t  \t   N   e   x   t   C   h   a   r   [   ]   ;  \n  \t
0046100   \t  \t  \t  \t  \t   E   N   D   L   O   O   P   ;  \n  \t  \t
0046120   \t  \t  \t   E   N   D   C   A   S   E   ;  \n  \t  \t  \t  \t
0046140    I   F       e   o   f       T   H   E   N       G   O       T
0046160    O       E   n   d   F   i   l   e   ;  \n  \t  \t  \t  \t   N
0046200    e   x   t   C   h   a   r   [   ]   ;  \n  \t  \t  \t  \t   E
0046220    N   D   L   O   O   P   ;  \n  \t  \t  \t   t   .   i   n   d
0046240    e   x     254       t   I   ;  \n  \t  \t  \t   t   .   v   a
0046260    l   u   e   .   s     254       N   P   G   S   1   .   n   u
0046300    l   l   V   a   l   u   e   ;  \n  \t  \t  \t  \n  \t  \t  \t
0046320    S   E   L   E   C   T       c   h   a   r       F   R   O   M
0046340   \n  \t  \t  \t  \t   I   N       [   '   0   .   .   '   9   ]
0046360        =   >       {  \n  \t  \t  \t  \t  \t   v   a   l   :    
0046400    C   A   R   D   I   N   A   L     254       0   ;  \n  \t  \t
0046420   \t  \t  \t   v   a   l   i   d   :       B   O   O   L     254
0046440        T   R   U   E   ;  \n  \t  \t  \t  \t  \t   m   a   x   V
0046460    a   l   :       C   A   R   D   I   N   A   L       =       C
0046500    A   R   D   I   N   A   L   .   L   A   S   T   ;  \n  \t  \t
0046520   \t  \t  \t   W   H   I   L   E       c   h   a   r       I   N
0046540        [   '   0   .   .   '   9   ]       D   O  \n  \t  \t  \t
0046560   \t  \t  \t   I   F       v   a   l   i   d       T   H   E   N
0046600        {  \n  \t  \t  \t  \t  \t  \t  \t   d   :       [   0   .
0046620    .   9   ]       =       c   h   a   r   .   O   R   D   -   '
0046640    0   .   O   R   D   ;  \n  \t  \t  \t  \t  \t  \t  \t   v   a
0046660    l   i   d     254       v   a   l   <   m   a   x   V   a   l
0046700    /   1   0       O   R       (   v   a   l   =   m   a   x   V
0046720    a   l   /   1   0       A   N   D       d   <   =   (   m   a
0046740    x   V   a   l       M   O   D       1   0   )   )   ;  \n  \t
0046760   \t  \t  \t  \t  \t  \t   I   F       v   a   l   i   d       T
0047000    H   E   N       v   a   l     254       1   0   *   v   a   l
0047020    +   d   }   ;  \n  \t  \t  \t  \t  \t  \t   N   e   x   t   C
0047040    h   a   r   [   ]   ;  \n  \t  \t  \t  \t  \t  \t   E   N   D
0047060    L   O   O   P   ;  \n  \t  \t  \t  \t  \t   I   F       ~   v
0047100    a   l   i   d       T   H   E   N       v   a   l     254    
0047120    m   a   x   V   a   l   ;  \n  \t  \t  \t  \t  \t   t   .   c
0047140    l   a   s   s     254       t   o   k   e   n   N   U   M   ;
0047160        t   .   v   a   l   u   e   .   s     254       v   a   l
0047200    ;       G   O       T   O       G   o   t   N   e   x   t   }
0047220    ;       -   -   [   s   c   a   l   a   r   [   v   a   l   ]
0047240    ]   ;       G   O       T   O       G   o   t   N   e   x   t
0047260    }   ;  \n  \t  \t  \t  \t   '   -       =   >       {  \n  \t
0047300   \t  \t  \t  \t   N   e   x   t   C   h   a   r   [   ]   ;  \n
0047320   \t  \t  \t  \t  \t   I   F       c   h   a   r       #       '
0047340    -       T   H   E   N       {   b   u   f   f   e   r   [   0
0047360    ]     254       '   -   ;       T   o   k   e   n   O   r   I
0047400    d   [   1   ]   ;       G   O       T   O       G   o   t   N
0047420    e   x   t   }   ;  \n  \t  \t  \t  \t  \t   c   h   a   r    
0047440  254       N   U   L   ;  \n  \t  \t  \t  \t  \t   D   O  \n  \t
0047460   \t  \t  \t  \t  \t   p   C   h   a   r   :       C   H   A   R
0047500        =       c   h   a   r   ;  \n  \t  \t  \t  \t  \t  \t   I
0047520    F       e   o   f       T   H   E   N       G   O       T   O
0047540        E   n   d   F   i   l   e   ;  \n  \t  \t  \t  \t  \t  \t
0047560    N   e   x   t   C   h   a   r   [   ]   ;  \n  \t  \t  \t  \t
0047600   \t  \t   S   E   L   E   C   T       c   h   a   r       F   R
0047620    O   M  \n  \t  \t  \t  \t  \t  \t  \t   '   -       =   >    
0047640        I   F       p   C   h   a   r       =       '   -       T
0047660    H   E   N       E   X   I   T   ;  \n  \t  \t  \t  \t  \t  \t
0047700   \t   '   \   n       =   >           E   X   I   T   ;  \n  \t
0047720   \t  \t  \t  \t  \t  \t   E   N   D   C   A   S   E   ;  \n  \t
0047740   \t  \t  \t  \t  \t   E   N   D   L   O   O   P   ;  \n  \t  \t
0047760   \t  \t  \t   N   e   x   t   C   h   a   r   [   ]   ;  \n  \t
0050000   \t  \t  \t  \t   }   ;  \n  \t  \t  \t  \t   E   N   D   C   A
0050020    S   E       =   >       {   T   o   k   e   n   O   r   I   d
0050040    [   0   ]   ;       G   O       T   O       G   o   t   N   e
0050060    x   t   }   ;  \n  \t  \t  \t   R   E   P   E   A   T  \n  \t
0050100   \t  \t   G   o   t   N   e   x   t       =   >           N   U
0050120    L   L   ;  \n  \t  \t  \t   E   n   d   F   i   l   e       =
0050140    >       {   t   .   c   l   a   s   s     254       e   n   d
0050160    M   a   r   k   e   r   ;       t   .   i   n   d   e   x    
0050200  254       t   I   ;       t   .   v   a   l   u   e   .   s    
0050220  254       N   P   G   S   1   .   n   u   l   l   V   a   l   u
0050240    e   }   ;  \n  \t  \t  \t   E   N   D   L   O   O   P   ;  \n
0050260   \t  \t   n   T   o   k   e   n   s     254       n   T   o   k
0050300    e   n   s       +       1   ;  \n  \t  \t   }   ;  \n  \t  \t
0050320   \n  \t   -   -       i   n   i   t   i   a   l   i   z   a   t
0050340    i   o   n   /   f   i   n   a   l   i   z   a   t   i   o   n
0050360   \n  \t  \n  \t  \t   S   c   a   n   I   n   i   t   :       P
0050400    U   B   L   I   C       P   R   O   C       [   s   o   u   r
0050420    c   e   :       S   T   R   E   A   M   ,       l   o   g   g
0050440    e   r   :       P   R   O   C       [   P   R   O   C       [
0050460    l   o   g   :       S   T   R   E   A   M   ]   ]   ]       =
0050500        {  \n  \t  \t  \t   s   t   r   e   a   m     254       s
0050520    o   u   r   c   e   ;           L   o   g   g   e   r     254
0050540        l   o   g   g   e   r   ;  \n  \t  \t  \t   b   u   f   f
0050560    e   r     254       N   E   W   [   T   E   X   T   [   t   o
0050600    k   e   n   S   i   z   e   ]   ]   ;  \n  \t  \t  \t   t   I
0050620      254       0   ;  \n  \t  \t  \t   [   c   h   a   r   ,    
0050640    e   o   f   ]     254       i   n   c   h   a   r   [   ]   ;
0050660   \n  \t  \t  \t   n   T   o   k   e   n   s     254       n   E
0050700    r   r   o   r   s     254       0   ;  \n  \t  \t  \t   b   u
0050720    f   f   e   r   .   l   e   n   g   t   h     254       t   o
0050740    k   e   n   S   i   z   e   ;  \n  \t  \t  \t  \n  \t  \t  \t
0050760    -   -       i   n   i   t   i   a   l   i   s   e       s   y
0051000    m   b   o   l       t   a   b   l   e  \n  \t  \t  \t   t   o
0051020    k   e   n     254       1   ;       i   n   s   e   r   t   F
0051040    l   a   g     254       1   ;  \n  \t  \t  \t   s   y   m   T
0051060    a   b     254       M   a   k   e   S   y   m   T   a   b   [
0051100    (   s   y   m   T   a   b   S   i   z   e   +   1   )   *   t
0051120    o   k   e   n   S   i   z   e   ]   ;  \n  \t  \t  \t   s   y
0051140    m   I   n   f   o     254       M   a   k   e   S   y   m   I
0051160    n   f   o   [   s   y   m   T   a   b   S   i   z   e   +   1
0051200    ]   ;  \n  \t  \t  \t   F   O   R       i   :       C   A   R
0051220    D   I   N   A   L       I   N       [   1   .   .   s   y   m
0051240    T   a   b   S   i   z   e   ]       D   O  \n  \t  \t  \t  \t
0051260    s   y   m   I   n   f   o   [   i   ]     254       [   l   i
0051300    n   k   :   0   ,       l   e   n   g   t   h   :   0   ,    
0051320    u   s   e   d   :   F   A   L   S   E   ]   ;  \n  \t  \t  \t
0051340   \t   E   N   D   L   O   O   P   ;  \n  \t  \t  \t   h   a   s
0051360    h   C   h   a   i   n     254       N   E   W   [   H   a   s
0051400    h   C   h   a   i   n   A   r   r   a   y     254       A   L
0051420    L   [   0   ]   ]   ;  \n  \t  \t  \t   }   ;  \n  \t  \t  \t
0051440   \n  \t  \t   S   c   a   n   R   e   s   e   t   :       P   U
0051460    B   L   I   C       P   R   O   C       =       {  \n  \t  \t
0051500   \t   s   t   r   e   a   m     254       N   I   L   ;  \n  \t
0051520   \t  \t   L   o   g   g   e   r     254       N   I   L   ;  \n
0051540   \t  \t  \t   C   h   e   c   k   O   u   t   [   ]   ;  \n  \t
0051560   \t  \t   b   u   f   f   e   r     254       N   I   L   ;  \n
0051600   \t  \t  \t   }   ;  \n  \t  \t  \t  \n  \t  \t   S   c   a   n
0051620    S   t   a   t   s   :       P   U   B   L   I   C       P   R
0051640    O   C       R   E   T   U   R   N   S   [   C   A   R   D   I
0051660    N   A   L   ,       C   A   R   D   I   N   A   L   ]       =
0051700        {  \n  \t  \t  \t   R   E   T   U   R   N       [   n   T
0051720    o   k   e   n   s   ,       n   E   r   r   o   r   s   ]   ;
0051740   \n  \t  \t  \t   }   ;  \n  \t  \t  \t  \n  \t   -   -       e
0051760    r   r   o   r       h   a   n   d   l   i   n   g  \n  \t  \n
0052000   \t  \t   R   e   s   e   t   S   c   a   n   I   n   d   e   x
0052020    :       P   U   B   L   I   C       P   R   O   C   [   i   n
0052040    d   e   x   :       C   A   R   D   I   N   A   L   ]       R
0052060    E   T   U   R   N   S   [   s   u   c   c   e   s   s   :    
0052100    B   O   O   L 254   T   R   U   E   ]       =       {  \n  \t
0052120   \t  \t   I   F       i   n   d   e   x       =       t   I    
0052140    T   H   E   N       R   E   T   U   R   N   ;  \n  \t  \t  \t
0052160    s   e   t   i   n   d   e   x   [   i   n   d   e   x   ]   ;
0052200   \n  \t  \t  \t   [   c   h   a   r   ,       e   o   f   ]    
0052220  254       i   n   c   h   a   r   [   ]   ;  \n  \t  \t  \t   t
0052240    I     254       i   n   d   e   x   ;  \n  \t  \t  \t   }   ;
0052260   \n  \t  \t  \t  \n  \t  \t   P   r   i   n   t   T   e   x   t
0052300    L   i   n   e   :       P   R   O   C   [   o   r   i   g   i
0052320    n   :       C   A   R   D   I   N   A   L   ]       R   E   T
0052340    U   R   N   S   [   s   t   a   r   t   :       C   A   R   D
0052360    I   N   A   L   ]       =       {  \n  \t  \t  \t   l   i   n
0052400    e   I   n   d   e   x   :       C   A   R   D   I   N   A   L
0052420    ;  \n  \t  \t  \t   c   h   a   r   :       C   H   A   R   ;
0052440   \n  \t  \t  \t   n   :       [   1   .   .   1   0   0   ]   ;
0052460   \n  \t  \t  \t   s   t   a   r   t     254       l   i   n   e
0052500    I   n   d   e   x     254       o   r   i   g   i   n   ;  \n
0052520   \t  \t  \t   F   O   R       n       I   N       [   1   .   .
0052540    1   0   0   ]       U   N   T   I   L       l   i   n   e   I
0052560    n   d   e   x       =       0       D   O  \n  \t  \t  \t  \t
0052600    l   i   n   e   I   n   d   e   x     254       l   i   n   e
0052620    I   n   d   e   x       -       1   ;  \n  \t  \t  \t  \t   s
0052640    e   t   i   n   d   e   x   [   l   i   n   e   I   n   d   e
0052660    x   ]   ;  \n  \t  \t  \t  \t   I   F       i   n   c   h   a
0052700    r   [   ]   .   c       =       '   \   n       T   H   E   N
0052720        E   X   I   T   ;  \n  \t  \t  \t  \t   s   t   a   r   t
0052740      254       l   i   n   e   I   n   d   e   x   ;  \n  \t  \t
0052760   \t  \t   E   N   D   L   O   O   P   ;  \n  \t  \t  \t   s   e
0053000    t   i   n   d   e   x   [   s   t   a   r   t   ]   ;  \n  \t
0053020   \t  \t   F   O   R       n       I   N       [   1   .   .   1
0053040    0   0   ]       U   N   T   I   L       (   [   c   :       c
0053060    h   a   r   ]     254       i   n   c   h   a   r   [   ]   )
0053100    .   e   n   d       D   O  \n  \t  \t  \t  \t   S   E   L   E
0053120    C   T       c   h   a   r       F   R   O   M  \n  \t  \t  \t
0053140   \t  \t   '   \   n   ,       '   \   0   3   2       -   -   ^
0053160    Z   -   -       =   >       E   X   I   T   ;  \n  \t  \t  \t
0053200   \t  \t   E   N   D   C   A   S   E       =   >       o   u   t
0053220    c   h   a   r   [   c   h   a   r   ,   1   ]   ;  \n  \t  \t
0053240   \t  \t   E   N   D   L   O   O   P   ;  \n  \t  \t  \t   o   u
0053260    t   e   o   l   [   1   ]   ;  \n  \t  \t  \t   }   ;  \n  \t
0053300   \t  \t  \n  \t  \t   E   r   r   o   r   C   o   n   t   e   x
0053320    t   :       P   U   B   L   I   C       P   R   O   C       [
0053340    t   o   :       S   T   R   E   A   M   ,       m   e   s   s
0053360    a   g   e   :       R   O   P   E   ,       t   o   k   e   n
0053400    I   n   d   e   x   :       C   A   R   D   I   N   A   L   ]
0053420        =       {  \n  \t  \t  \t   s   a   v   e   I   n   d   e
0053440    x   :       C   A   R   D   I   N   A   L       =       g   e
0053460    t   i   n   d   e   x   [   ]   ;  \n  \t  \t  \t   o   r   i
0053500    g   i   n   :       C   A   R   D   I   N   A   L       =    
0053520    t   o   k   e   n   I   n   d   e   x   ;  \n  \t  \t  \t   c
0053540    h   a   r   :       C   H   A   R   ;  \n  \t  \t  \t   s   e
0053560    t   i   n   d   e   x   [   P   r   i   n   t   T   e   x   t
0053600    L   i   n   e   [   o   r   i   g   i   n   ]   ]   ;  \n  \t
0053620   \t  \t   U   N   T   I   L       g   e   t   i   n   d   e   x
0053640    [   ]       =       o   r   i   g   i   n       O   R       (
0053660    [   c   :       c   h   a   r   ]     254       i   n   c   h
0053700    a   r   [   ]   )   .   e   n   d       D   O  \n  \t  \t  \t
0053720   \t   o   u   t   c   h   a   r   [   I   F       c   h   a   r
0053740        =       '   \   n       T   H   E   N       '   \   n    
0053760    E   L   S   E       '       ,   1   ]   ;  \n  \t  \t  \t  \t
0054000    E   N   D   L   O   O   P   ;  \n  \t  \t  \t   o   u   t   s
0054020    t   r   i   n   g   [   "   ^       [   "   ]   ;       o   u
0054040    t   n   u   m   [   t   o   k   e   n   I   n   d   e   x   ,
0054060    1   ]   ;  \n  \t  \t  \t   o   u   t   c   h   a   r   [   '
0054100    ]   ,   1   ]   ;           o   u   t   e   o   l   [   1   ]
0054120    ;           o   u   t   s   t   r   i   n   g   [   m   e   s
0054140    s   a   g   e   ]   ;  \n  \t  \t  \t   s   e   t   i   n   d
0054160    e   x   [   s   a   v   e   I   n   d   e   x   ]   ;  \n  \t
0054200   \t  \t   }   ;  \n  \t  \t  \t  \n  \t  \t  \t  \n  \t  \t   E
0054220    r   r   o   r   :       P   R   O   C       [   c   o   d   e
0054240    :       C   A   R   D   I   N   A   L   ,       c   o   n   t
0054260    r   o   l   :       I   N   T   E   G   E   R   ,       i   n
0054300    d   e   x   :       C   A   R   D   I   N   A   L   ]       =
0054320        {  \n  \t  \t  \n  \t  \t  \t   I   n   n   e   r   :    
0054340    P   R   O   C       [   l   o   g   :       S   T   R   E   A
0054360    M       -   -       a       d   u   m   m   y       f   o   r
0054400        n   o   w       -   -   ]       ~       {  \n  \t  \t  \t
0054420   \t   E   r   r   o   r   C   o   n   t   e   x   t   [   l   o
0054440    g   ,  \n  \t  \t  \t  \t  \t   S   E   L   E   C   T       c
0054460    o   d   e       F   R   O   M  \n  \t  \t  \t  \t  \t  \t   1
0054500            =   >       "   W   A   R   N   I   N   G       -    
0054520    O   v   e   r   l   e   n   g   t   h       s   y   m   b   o
0054540    l       (   i   n   c   r   e   a   s   e       T   O   K   E
0054560    N   S   I   Z   E   ?   )       t   r   u   n   c   a   t   e
0054600    d       t   o       -       "   ,  \n  \t  \t  \t  \t  \t  \t
0054620    2           =   >       "   W   A   R   N   I   N   G       -
0054640        N   o   t       a       c   h   a   i   n       p   r   o
0054660    d   u   c   t   i   o   n       -       "   ,  \n  \t  \t  \t
0054700   \t  \t  \t   3           =   >       "   W   A   R   N   I   N
0054720    G       -       U   n   u   s   e   d   (   U   )       o   r
0054740        u   n   d   e   f   i   n   e   d   (   D   )   s   y   m
0054760    b   o   l   s       (   r   e   f   e   r       t   o       T
0055000    A   B   L   E   1       a   n   d       2   )   "   ,  \n  \t
0055020   \t  \t  \t  \t  \t   4           =   >       "   E   R   R   O
0055040    R       -       N   o   n   t   e   r   m   i   n   a   l    
0055060    w   i   t   h       t   o   o       m   a   n   y       r   u
0055100    l   e   s       (   i   n   c   r   e   a   s   e       A   L
0055120    T   E   R   N   A   T   E   L   I   M   ?   )       -       "
0055140    ,  \n  \t  \t  \t  \t  \t  \t   5           =   >       "   E
0055160    R   R   O   R       -       M   u   l   t   i   p   l   e    
0055200    d   e   f   i   n   i   t   i   o   n   s       o   f       s
0055220    y   m   b   o   l       -       "   ,  \n  \t  \t  \t  \t  \t
0055240   \t   6           =   >       "   E   R   R   O   R       -    
0055260    S   y   m   b   o   l       n   o   t       d   e   f   i   n
0055300    e   d       -       "   ,  \n  \t  \t  \t  \t  \t  \t   7    
0055320        =   >       "   E   R   R   O   R       -       T   e   r
0055340    m   i   n   a   l       p   r   e   c   e   d   e   s       :
0055360    :   =       -       "   ,  \n  \t  \t  \t  \t  \t  \t   8    
0055400        =   >       "   E   R   R   O   R       -       T   o   o
0055420        m   a   n   y       r   h   s       s   y   m   b   o   l
0055440    s       i   n       p   r   o   d   u   c   t   i   o   n    
0055460    (   i   n   c   r   e   a   s   e       R   H   S   L   I   M
0055500    ?   )       -       "   ,  \n  \t  \t  \t  \t  \t  \t   9    
0055520        =   >       "   E   R   R   O   R       -       I   n   t
0055540    e   r   n   a   l       f   i   e   l   d       w   i   l   l
0055560        o   v   e   r   f   l   o   w       -       i   n   c   r
0055600    e   a   s   e       P   S   S   L   I   M   "   ,  \n  \t  \t
0055620   \t  \t  \t  \t   1   0       =   >       "   E   R   R   O   R
0055640        -       A   l   i   a   s   e   d       s   y   m   b   o
0055660    l       n   o   t       a       t   e   r   m   i   n   a   l
0055700        s   y   m   b   o   l       -       "   ,  \n  \t  \t  \t
0055720   \t  \t  \t   1   1       =   >       "   E   R   R   O   R    
0055740    -       A   l   i   a   s   e   s       m   u   s   t       n
0055760    o   t       b   e       t   e   r   m   i   n   a   l       s
0056000    y   m   b   o   l   s       -       "   ,  \n  \t  \t  \t  \t
0056020   \t  \t   1   2       =   >       "   E   R   R   O   R       -
0056040        G   o   a   l       s   y   m   b   o   l   s       u   s
0056060    e   d       i   n       r   h   s   "   ,  \n  \t  \t  \t  \t
0056100   \t  \t   1   3       =   >       "   E   R   R   O   R       -
0056120        N   u   m   b   e   r       g   r   e   a   t   e   r    
0056140    t   h   a   n       "   ,  \n  \t  \t  \t  \t  \t  \t   E   N
0056160    D   C   A   S   E       =   >       N   I   L   ,  \n  \t  \t
0056200   \t  \t  \t   i   n   d   e   x   ]   ;  \n  \t  \t  \t  \t   S
0056220    E   L   E   C   T       -   c   o   n   t   r   o   l       F
0056240    R   O   M  \n  \t  \t  \t  \t  \t   <   0       =   >       [
0056260    ]     254       O   u   t   T   o   k   e   n   [   c   o   n
0056300    t   r   o   l   ]   ;  \n  \t  \t  \t  \t  \t   0       =   >
0056320        N   U   L   L   ;  \n  \t  \t  \t  \t  \t   1       =   >
0056340        o   u   t   s   t   r   i   n   g   [   R   o   p   e   .
0056360    F   r   o   m   R   e   f   T   e   x   t   [   b   u   f   f
0056400    e   r   ]   ]   ;  \n  \t  \t  \t  \t  \t   2       =   >    
0056420    o   u   t   s   t   r   i   n   g   [   "   s   e   e       p
0056440    r   e   v   i   o   u   s       m   e   s   s   a   g   e   "
0056460    ]   ;  \n  \t  \t  \t  \t  \t   3       =   >       {   o   u
0056500    t   s   t   r   i   n   g   [   R   o   p   e   .   F   r   o
0056520    m   R   e   f   T   e   x   t   [   b   u   f   f   e   r   ]
0056540    ]   ;       o   u   t   s   t   r   i   n   g   [   "       n
0056560    o   t       i   n       T   A   B   L   E   1       o   r    
0056600    2   "   ]   }   ;  \n  \t  \t  \t  \t  \t   4       =   >    
0056620    N   U   L   L   ;           -   -       n   o   t       u   s
0056640    e   d  \n  \t  \t  \t  \t  \t   5       =   >       o   u   t
0056660    s   t   r   i   n   g   [   "   M   A   X   R   U   L   E   "
0056700    ]   ;  \n  \t  \t  \t  \t  \t   E   N   D   C   A   S   E    
0056720    =   >       o   u   t   n   u   m   [   -   c   o   n   t   r
0056740    o   l   -   s   p   e   c   E   r   r   o   r   C   a   s   e
0056760    s   ,       5   ]   ;  \n  \t  \t  \t  \t   o   u   t   e   o
0057000    l   [   2   ]   ;  \n  \t  \t  \t  \t   }   ;  \n  \t  \t  \t
0057020   \t  \n  \t  \t  \t   L   o   g   g   e   r   [   I   n   n   e
0057040    r   ]   ;  \n  \t  \t  \t   I   F       c   o   d   e   >   c
0057060    h   e   c   k       T   H   E   N       n   E   r   r   o   r
0057100    s     254       n   E   r   r   o   r   s   +   1       E   L
0057120    S   E       w   a   r   n   i   n   g   s   L   o   g   g   e
0057140    d     254       T   R   U   E   ;  \n  \t  \t  \t   }   ;  \n
0057160   \t  \t  \t  \n  \t  \t   }   .  \n  \n                        
0057172