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