$ od -c -N 50000 [Indigo]<AltoSource>KPMSOURCE.DM!1
0000000  377  \0  \0   K   P   M   .   b   c   p   l  \0 376 001  \0 221
0000020  002   /   /       K   P   M   .   b   c   p   l       -   -    
0000040    t   e   s   t       f   o   r       K   P   M   T   e   m   p
0000060    l   a   t   e       p   a   c   k   a   g   e  \r   /   /    
0000100    C   o   p   y   r   i   g   h   t       X   e   r   o   x    
0000120    C   o   r   p   o   r   a   t   i   o   n       1   9   7   9
0000140   \r  \r   e   x   t   e   r   n   a   l  \r   [  \r   S   e   t
0000160    u   p   R   e   a   d   P   a   r   a   m   ;       R   e   a
0000200    d   P   a   r   a   m  \r   M   a   k   e   K   P   M   T   e
0000220    m   p   l   a   t   e   ;       M   a   t   c   h   K   P   M
0000240    T   e   m   p   l   a   t   e  \r   P   u   t   s   ;       W
0000260    s   ;       F   r   e   e  \r  \r   s   y   s   Z   o   n   e
0000300    ;       d   s   p  \r   ]  \r  \r   s   t   r   u   c   t   u
0000320    r   e       S   t   r   i   n   g   :       [       l   e   n
0000340    g   t   h       b   y   t   e   ;       c   h   a   r   ^   1
0000360    ,   2   5   5       b   y   t   e       ]  \r  \r  \r   /   /
0000400    -   -   -   -   -   -   -   -   -   -   -   -   -   -   -   -
0000420    - 376 001  \0  \n 024   -   -   -   -   -   -   -   -   -   -
0000440    -   -   -   -   -   -   -   -   -   -   -   -   -   -   -   -
*
0000500    -   -   -   -   -   -  \r   l   e   t       K   P   M   (   )
0000520        b   e  \r   /   /   -   -   -   -   -   -   -   -   -   -
0000540    -   -   -   -   -   -   -   -   -   -   -   -   -   -   -   -
*
0000620    -   -   -   -   -   -   -  \r   [  \r   l   e   t       p   a
0000640    t   t   e   r   n   ,       s   t   r   i   n   g       =    
0000660    v   e   c       1   2   7   ,       v   e   c       1   2   7
0000700   \r   S   e   t   u   p   R   e   a   d   P   a   r   a   m   (
0000720    )  \r               [  \r               R   e   a   d   P   a
0000740    r   a   m   (   $   P   ,       "   P   a   t   t   e   r   n
0000760    :       "   ,       p   a   t   t   e   r   n   )  \r        
0001000        R   e   a   d   P   a   r   a   m   (   $   P   ,       "
0001020    S   t   r   i   n   g 376 001  \0   \   i   :       "   ,    
0001040    s   t   r   i   n   g   )  \r               l   e   t       t
0001060    e   m   p   l   a   t   e       =       M   a   k   e   K   P
0001100    M   T   e   m   p   l   a   t   e   (   p   a   t   t   e   r
0001120    n   )  \r               l   e   t       c   o   d   e       =
0001140        M   a   t   c   h   K   P   M   T   e   m   p   l   a   t
0001160    e   (   s   t   r   i   n   g   ,       t   e   m   p   l   a
0001200    t   e   )  \r               t   e   s   t       c   o   d   e
0001220        e   q       0  \r                           i   f   s   o
0001240        W   s   (   "   S   t   r   i   n   g       m   a   t   c
0001260    h   e   s       p   a   t   t   e   r   n   .   *   n   "   )
0001300   \r                           i   f   n   o   t       t   e   s
0001320    t       c   o   d   e       e   q       1  \r                
0001340                        i   f   s   o       W   s   (   "   S   t
0001360    r   i   n   g       d   o   e   s   n   '   t       m   a   t
0001400    c   h       p   a   t   t   e   r   n       a   t       a   l
0001420    l   .   *   n   "   )  \r                 376  \0 345   * 334
0001440                        i   f   n   o   t  \r                    
0001460                                [  \r                            
0001500                        W   s   (   "   S   t   r   i   n   g    
0001520    m   a   t   c   h   e   s       p   a   t   t   e   r   n    
0001540    o   n   l   y       t   h   r   o   u   g   h       *   "   "
0001560    )  \r                                                   f   o
0001600    r       i       =       1       t   o       c   o   d   e   -
0001620    1       d   o       P   u   t   s   (   d   s   p   ,       s
0001640    t   r   i   n   g   >   >   S   t   r   i   n   g   .   c   h
0001660    a   r   ^   i   )  \r                                        
0001700            W   s   (   "   *   "   *   n   "   )  \r            
0001720                                        ]  \r               F   r
0001740    e   e   (   s   y   s   Z   o   n   e   ,       t   e   m   p
0001760    l   a   t   e   )  \r               ]       r   e   p   e   a
0002000    t  \r   ]  \r  \r 377  \0  \0   K   P   M   T   e   m   p   l
0002020    a   t   e   b   .   b   c   p   l  \0 376 001  \0 201 376   /
0002040    /       K   P   M   T   e   m   p   l   a   t   e   b   .   b
0002060    c   p   l  \r   /   /       K   n   u   t   h   -   P   r   a
0002100    t   t   -   M   o   r   r   i   s       p   a   t   t   e   r
0002120    n       m   a   t   c   h   e   r       f   o   r       I   F
0002140    S       (   b   c   p   l       p   o   r   t   i   o   n   )
0002160   \r   /   /       C   o   p   y   r   i   g   h   t       X   e
0002200    r   o   x       C   o   r   p   o   r   a   t   i   o   n    
0002220    1   9   7   9  \r  \r   e   x   t   e   r   n   a   l  \r   [
0002240   \r   /   /   o   u   t   g   o   i   n   g       p   r   o   c
0002260    e   d   u   r   e   s  \r   M   a   k   e   K   P   M   T   e
0002300    m   p   l   a   t   e  \r  \r   /   /   i   n   c   o   m   i
0002320    n   g       p   r   o   c   e   d   u   r   e   s  \r   A   l
0002340    l   o   c   a   t   e   ;       Z   e   r   o  \r  \r   /   /
0002360    i   n   c   o   m   i   n   g       s   t   a   t   i   c   s
0002400   \r   s   y   s   Z   o   n   e  \r   ]  \r  \r  \r   /   /   a
0002420    l   l       t   h   e       f   o   l   l   o   w   i   n 376
0002440  001  \0   l   a   g       d   e   c   l   a   r   a   t   i   o
0002460    n   s       a   r   e       k   n   o   w   n       a   b   o
0002500    u   t       b   y       t   h   e       c   o   d   e  \r   /
0002520    /   i   n       K   P   M   T   e   m   p   l   a   t   e   a
0002540    .   a   s   m  \r  \r   s   t   r   u   c   t   u   r   e    
0002560    T   T   :           /   /   T   e   m   p   l   a   t   e    
0002600    t   o   k   e   n  \r   [  \r   f   a   i   l       b   y   t
0002620    e  \t   /   /   f   a   i   l       p   o   i   n   t   e   r
0002640   \r   c   h   a   r       b   y   t   e  \t   /   /   c   h   a
0002660    r   a   c   t   e   r       o   r       s   p   e   c   i   a
0002700    l       m   a   t   c   h       c   o   d   e  \r   ]  \r  \r
0002720    s   t   r   u   c   t   u   r   e       T   ^   1   ,   2   5
0002740    5       @   T   T           /   /   T   e   m   p   l   a   t
0002760    e  \r  \r   m   a   n   i   f   e   s   t  \r   [  \r   /   /
0003000    s   p   e   c   i   a   l       m   a   t   c   h       c   o
0003020    d   e   s       (   i   n       p   l   a   c   e       o   f
0003040        c   h   a 376 001  \0   6   )   r   a   c   t   e   r   )
0003060   \r   m   c   E   n   d       =       0  \t   /   /   e   n   d
0003100        o   f       t   e   m   p   l   a   t   e   ,       n   o
0003120        t   r   a   i   l   i   n   g       "   *   "  \r   m   c
0003140    S   t   a   r       =       1  \t   /   /   "   *   "       m
0003160    a   t   c   h       c   h   a   r   a   c   t   e   r       h
0003200    e   r   e  \r   m   c   E   n   d   S   t   a   r       =    
0003220    2  \t   /   /   "   *   "       m   a   t   c   h       c   h
0003240    a   r   a   c   t   e   r       h   e   r   e   ,       e   n
0003260    d   i   n   g       t   e   m   p   l   a   t   e  \r   m   c
0003300    F   a   i   l       =       3  \t   /   /   i   m   m   e   d
0003320    i   a   t   e       f   a   i   l       i   f       y   o   u
0003340        g   e   t       h   e   r   e  \r  \r   m   c   M   a   x
0003360        =       3  \t   /   /   h   i   g   h   e   s   t       s
0003400    p   e   c   i   a   l       m   a   t   c   h       c   o   d
0003420    e  \r   ]  \r  \r   /   /   a   n       n   -   c   h   a   r
0003440    a   c   t   e   r       t   e   m 376 001  \0   5 264   p   l
0003460    a   t   e       h   a   s       n   +   2       t   o   k   e
0003500    n   s   .  \r   /   /   t   h   e       l   a   s   t       t
0003520    w   o       a   r   e       m   c   E   n   d       a   n   d
0003540        m   c   F   a   i   l   .  \r   /   /   f   a   i   l   u
0003560    r   e   s       f   r   o   m       t   h   e       n   o   n
0003600    -   *       p   r   e   f   i   x       (   i   f       a   n
0003620    y   )       g   o       t   o       t   h   e       m   c   F
0003640    a   i   l       t   o   k   e   n   .  \r   /   /   f   a   i
0003660    l   u   r   e       f   r   o   m       t   h   e       m   c
0003700    E   n   d       t   o   k   e   n       g   o       b   a   c
0003720    k       t   o       t   h   e       l   a   s   t       "   *
0003740    "       i   f       t   h   e   r   e  \r   /   /   w   a   s
0003760        o   n   e   ,       o   r       t   o       t   h   e    
0004000    m   c   F   a   i   l       t   o   k   e   n       o   t   h
0004020    e   r   w   i   s   e   .  \r  \r   s   t   r   u   c   t   u
0004040    r   e       S   t   r   i   n   g       [       l   e 376 001
0004060   \0 352   C   n   g   t   h       b   y   t   e   ;       c   h
0004100    a   r   ^   1   ,   2   5   5       b   y   t   e       ]  \r
0004120   \f  \r   /   /   -   -   -   -   -   -   -   -   -   -   -   -
0004140    -   -   -   -   -   -   -   -   -   -   -   -   -   -   -   -
*
0004220    -   -   -   -   -  \r   l   e   t       M   a   k   e   K   P
0004240    M   T   e   m   p   l   a   t   e   (   p   a   t   t   e   r
0004260    n   )       =       v   a   l   o   f  \r   /   /   -   -   -
0004300    -   -   -   -   -   -   -   -   -   -   -   -   -   -   -   -
*
0004360    -   -   -   -   -   -   -   -   -   -   -   -   -   -  \r   /
0004400    /   b   u   i   l   d   s       a   n   d       r   e   t   u
0004420    r   n   s       a       t   e   m   p   l   a   t   e       f
0004440    o   r       t   h   e       s   u   p   p   l   i   e   d    
0004460    p   a   t 376 001  \0 202 302   t   e   r   n       s   t   r
0004500    i   n   g   .  \r   [  \r   l   e   t       l   e   n   g   t
0004520    h       =       p   a   t   t   e   r   n   >   >   S   t   r
0004540    i   n   g   .   l   e   n   g   t   h  \r   l   e   t       t
0004560    e   m   p   l   a   t   e       =       A   l   l   o   c   a
0004600    t   e   (   s   y   s   Z   o   n   e   ,       l   e   n   g
0004620    t   h   +   2   )  \r   Z   e   r   o   (   t   e   m   p   l
0004640    a   t   e   ,       l   e   n   g   t   h   +   2   )  \r   l
0004660    e   t       t   B   a   s   e       =       n   i   l        
0004700    /   /   b   a   s   e       o   f       c   u   r   r   e   n
0004720    t       n   o   n   -   "   *   "       s   u   b   s   t   r
0004740    i   n   g  \r   l   e   t       t   i       =       n   i   l
0004760            /   /   i   n   d   e   x       i   n       c   u   r
0005000    r   e   n   t       n   o   n   -   "   *   "       s   u   b
0005020    s   t   r   i   n   g  \r   l   e   t       f   i       =    
0005040    n   i   l           /   /   c   u   r   r   e   n   t       f
0005060    a   i   l       p   o   i   n 376 001  \0   7 311   t   e   r
0005100   \r   l   e   t       e   x   a   c   t       =       t   r   u
0005120    e           /   /   e   x   a   c   t       m   a   t   c   h
0005140        r   e   q   u   i   r   e   d       u   n   t   i   l    
0005160    w   e       e   n   c   o   u   n   t   e   r       "   *   "
0005200   \r   f   o   r       i       =       1       t   o       l   e
0005220    n   g   t   h   +   1       d   o  \r               [  \r    
0005240            l   e   t       c       =       (   i       l   e    
0005260    l   e   n   g   t   h   ?       p   a   t   t   e   r   n   >
0005300    >   S   t   r   i   n   g   .   c   h   a   r   ^   i   ,    
0005320    m   c   E   n   d   )  \r               i   f       c       g
0005340    e       $   a       &       c       l   e       $   z       t
0005360    h   e   n       c       =       c   -   (   $   a   -   $   A
0005400    )  \r               t   e   s   t       c       e   q       $
0005420    *   *  \r                           i   f   n   o   t  \r    
0005440                                    [  \r                        
0005460                t   e   m   p   l   a   t   e   >   > 376 001  \0
0005500  215   1   T   ^   i   .   c   h   a   r       =       c  \r    
0005520                                    t   e   s   t       e   x   a
0005540    c   t  \r                                                   i
0005560    f   s   o       t   e   m   p   l   a   t   e   >   >   T   ^
0005600    i   .   f   a   i   l       =       l   e   n   g   t   h   +
0005620    2  \r                                                   i   f
0005640    n   o   t  \r                                                
0005660                [  \r                                            
0005700                    t   i       =       t   i   +   1  \r        
0005720                                                        i   f    
0005740    t   i       g   r       1       t   h   e   n  \r            
0005760                                                                [
0006000   \r                                                            
0006020                f   i       =       f   i   +   1  \r            
0006040                                                                t
0006060    B   a   s   e   >   >   T   ^   t   i   .   f   a   i   l    
0006100    =     376 001  \0 205 353   (   c       n   e       t   B   a
0006120    s   e   >   >   T   ^   f   i   .   c   h   a   r   ?  \r    
0006140                                                                 
0006160            f   i   ,       t   B   a   s   e   >   >   T   ^   f
0006200    i   .   f   a   i   l   )  \r                                
0006220                                            w   h   i   l   e    
0006240    f   i       n   e       0       &       c       n   e       t
0006260    B   a   s   e   >   >   T   ^   f   i   .   c   h   a   r    
0006300    d   o  \r                                                    
0006320                                    f   i       =       t   B   a
0006340    s   e   >   >   T   ^   f   i   .   f   a   i   l  \r        
0006360                                                                 
0006400    ]  \r                                                        
0006420        ]  \r                                       ]  \r        
0006440                    i   f   s   o  \r                            
0006460            [  \r                                       t   e   m
0006500    p   l   a   t   e   >   > 376 001  \0   g   b   T   ^   i   .
0006520    c   h   a   r       =       (   i       e   q       l   e   n
0006540    g   t   h   ?       m   c   E   n   d   S   t   a   r   ,    
0006560    m   c   S   t   a   r   )  \r                                
0006600        t   B   a   s   e       =       t   e   m   p   l   a   t
0006620    e   +   i  \r                                       e   x   a
0006640    c   t       =       f   a   l   s   e  \r                    
0006660                    t   i   ,       f   i       =       0   ,    
0006700    0  \r                                       ]  \r            
0006720    ]  \r   t   e   m   p   l   a   t   e   >   >   T   ^   (   l
0006740    e   n   g   t   h   +   2   )   .   c   h   a   r       =    
0006760    m   c   F   a   i   l           /   /   a   p   p   e   n   d
0007000        s   p   e   c   i   a   l       f   a   i   l       t   o
0007020    k   e   n  \r   r   e   s   u   l   t   i   s       t   e   m
0007040    p   l   a   t   e  \r   ]  \r  \f  \r   /   /   t   h   e    
0007060    f   o   l   l   o   w   i   n   g       p   r   o   c   e   d
0007100    u   r   e       i   s       h   a   n   d   - 376 001  \0 256
0007120  342   c   o   d   e   d       i   n       K   P   M   T   e   m
0007140    p   l   a   t   e   a   .   a   s   m  \r  \r   /   /   -   -
0007160    -   -   -   -   -   -   -   -   -   -   -   -   -   -   -   -
*
0007240    -   -   -   -   -   -   -   -   -   -   -   -   -   -   -  \r
0007260    /   /   a   n   d       M   a   t   c   h   K   P   M   T   e
0007300    m   p   l   a   t   e   (   s   t   r   i   n   g   ,       t
0007320    e   m   p   l   a   t   e   )       =       v   a   l   o   f
0007340   \r   /   /   -   -   -   -   -   -   -   -   -   -   -   -   -
0007360    -   -   -   -   -   -   -   -   -   -   -   -   -   -   -   -
*
0007440    -   -   -   -  \r   /   /   m   a   t   c   h   e   s       s
0007460    t   r   i   n   g       a   g   a   i   n   s   t       t   e
0007500    m   p   l   a   t   e   ,       r   e   t   u   r   n   i   n
0007520    g 376 001  \0 356   s       z   e   r   o       i   f       t
0007540    h   e   y       m   a   t   c   h  \r   /   /   a   n   d    
0007560    t   h   e       i   n   d   e   x       o   f       t   h   e
0007600        f   i   r   s   t       n   o   n   -   m   a   t   c   h
0007620    i   n   g       c   h   a   r   a   c   t   e   r       o   t
0007640    h   e   r   w   i   s   e   .  \r   /   /   [  \r   /   /   l
0007660    e   t       t   i       =       0           /   /   t   e   m
0007700    p   l   a   t   e       i   n   d   e   x  \r   /   /   f   o
0007720    r       s   i       =       1       t   o       s   t   r   i
0007740    n   g   >   >   S   t   r   i   n   g   .   l   e   n   g   t
0007760    h       d   o  \r   /   /               [  \r   /   /        
0010000        l   e   t       c       =       s   t   r   i   n   g   >
0010020    >   S   t   r   i   n   g   .   c   h   a   r   ^   s   i  \r
0010040    /   /               i   f       c       g   e       $   a    
0010060    &       c       l   e       $   z       t   h   e   n       c
0010100        =       c   -   (   $   a   -   $   A   )  \r   /   /    
0010120            t   i       = 376 001  \0 272   v       t   i   +   1
0010140   \r   /   /               w   h   i   l   e       t   i       n
0010160    e       0       &       c       n   e       t   e   m   p   l
0010200    a   t   e   >   >   T   ^   t   i   .   c   h   a   r       d
0010220    o  \r   /   /                           [  \r   /   /        
0010240                    t   e   s   t       t   e   m   p   l   a   t
0010260    e   >   >   T   ^   t   i   .   c   h   a   r       l   e    
0010300    m   c   M   a   x           /   /   s   p   e   c   i   a   l
0010320        m   a   t   c   h       c   o   d   e   ?  \r   /   /    
0010340                                    i   f   n   o   t       t   i
0010360        =       t   e   m   p   l   a   t   e   >   >   T   ^   t
0010400    i   .   f   a   i   l  \r   /   /                            
0010420            i   f   s   o       s   w   i   t   c   h   o   n    
0010440    t   e   m   p   l   a   t   e   >   >   T   ^   t   i   .   c
0010460    h   a   r       i   n   t   o  \r   /   /                    
0010500                                [  \r   /   /                    
0010520                                c   a   s   e 376 001  \0   1   ,
0010540        m   c   S   t   a   r   :           /   /   "   *   "    
0010560    -       s   t   a   r   t       n   e   w       m   a   t   c
0010600    h  \r   /   /                                                
0010620                [       t   e   m   p   l   a   t   e       =    
0010640    t   e   m   p   l   a   t   e   +   t   i   ;       t   i    
0010660    =       1   ;       e   n   d   c   a   s   e       ]  \r   /
0010700    /                                                   c   a   s
0010720    e       m   c   E   n   d   S   t   a   r   :           /   /
0010740    "   *   "       a   t       e   n   d       o   f       t   e
0010760    m   p   l   a   t   e   ,       d   o   n   e  \r   /   /    
0011000                                                            r   e
0011020    s   u   l   t   i   s       0  \r   /   /                    
0011040                                c   a   s   e       m   c   E   n
0011060    d   :           /   /   r   a   n       o   f   f       e   n
0011100    d       o   f       t   e   m   p   l   a   t   e   ,       f
0011120    a   l   l       b   a   c   k  \r   /   /                    
0011140  376 001  \0 267 035                                           [
0011160        t   i       =       t   e   m   p   l   a   t   e   >   >
0011200    T   ^   t   i   .   f   a   i   l   ;       e   n   d   c   a
0011220    s   e       ]  \r   /   /                                    
0011240                c   a   s   e       m   c   F   a   i   l   :    
0011260        /   /   f   a   i   l   e   d       b   e   f   o   r   e
0011300        f   i   r   s   t       "   *   "  \r   /   /            
0011320                                                    r   e   s   u
0011340    l   t   i   s       s   i  \r   /   /                        
0011360                            ]  \r   /   /                        
0011400    ]  \r   /   /               ]  \r  \r   /   /   i   f       w
0011420    e       r   u   n       o   f   f       t   h   e       e   n
0011440    d       o   f       t   h   e       s   t   r   i   n   g   ,
0011460        t   h   e       n   e   x   t       t   e   m   p   l   a
0011500    t   e  \r   /   /   t   o   k   e   n       m   u   s   t    
0011520    b   e       a   n       "   e   n   d   "       o   r       "
0011540    e   n   d   *   " 376  \0   s   Y 336  \r   /   /   l   e   t
0011560        t   c       =       t   e   m   p   l   a   t   e   >   >
0011600    T   ^   (   t   i   +   1   )   .   c   h   a   r  \r   /   /
0011620    r   e   s   u   l   t   i   s       (   t   c       e   q    
0011640    m   c   E   n   d       %       t   c       e   q       m   c
0011660    E   n   d   S   t   a   r   ?  \r   /   /       0   ,       s
0011700    t   r   i   n   g   >   >   S   t   r   i   n   g   .   l   e
0011720    n   g   t   h   +   1   )  \r   /   /   ]  \r  \r 377  \0  \0
0011740    K   P   M   T   e   m   p   l   a   t   e   a   .   a   s   m
0011760   \0 376 001  \0 025   _   ;       K   P   M   T   e   m   p   l
0012000    a   t   e   a   .   a   s   m       -   -       a   s   s   e
0012020    m   b   l   y       p   o   r   t   i   o   n       o   f    
0012040    K   P   M       p   a   t   t   e   r   n       m   a   t   c
0012060    h   e   r  \r   ;       C   o   p   y   r   i   g   h   t    
0012100    X   e   r   o   x       C   o   r   p   o   r   a   t   i   o
0012120    n       1   9   7   9  \r  \r   .   b   e   x   t       M   a
0012140    t   c   h   K   P   M   T   e   m   p   l   a   t   e  \r  \r
0012160    .   s   r   e   l  \r  \r   M   a   t   c   h   K   P   M   T
0012200    e   m   p   l   a   t   e   :       .   M   a   t   c   h   K
0012220    P   M   T   e   m   p   l   a   t   e  \r  \r   .   n   r   e
0012240    l  \r  \r   ;       M   a   t   c   h   K   P   M   T   e   m
0012260    p   l   a   t   e   (   s   t   r   i   n   g   ,       t   e
0012300    m   p   l   a   t   e   )       =       0       o   r       i
0012320    n   d   e   x       o   f       f   a   i   l   i   n   g    
0012340    c   h   a   r  \r   ;       m   a   t   c   h   e   s       s
0012360    t   r   i   n   g     376 001  \0   E 266   a   g   a   i   n
0012400    s   t       t   e   m   p   l   a   t   e   .  \r   ;       s
0012420    e   e       K   P   M   T   e   m   p   l   a   t   e   b   .
0012440    b   c   p   l       f   o   r       b   c   p   l       v   e
0012460    r   s   i   o   n       o   f       t   h   i   s       p   r
0012500    o   c   e   d   u   r   e   .  \r   ;       *   *   *       t
0012520    h   i   s       v   e   r   s   i   o   n       i   s       n
0012540    o   t       r   e   e   n   t   r   a   n   t       *   *   *
0012560   \r  \r   .   M   a   t   c   h   K   P   M   T   e   m   p   l
0012600    a   t   e   :  \r  \t   s   t   a       3       1       2  \r
0012620   \t   s   t   a       0       2       2  \t  \t   ;   s   t   r
0012640    i   n   g  \r  \t   s   t   a       1       3       2  \t  \t
0012660    ;   t   e   m   p   l   a   t   e  \r  \t   l   d   a       0
0012700        @   2       2  \t  \t   ;   g   e   t       s   t   r   i
0012720    n   g       l   e   n   g   t   h  \r  \t   l   d   a       1
0012740        c   1   7   7   4   0   0  \r  \t   a   n   d   s       1
0012760        0  \r  \t   i   n   c       0       0 376 001  \0 312   c
0013000   \t  \t  \t   ;   a   d   d       1  \r  \t   s   t   a       0
0013020        s   C   o   u   n   t  \t  \t   ;   s   t   o   r   e    
0013040    c   o   u   n   t  \r  \t   s   t   a       0       i   C   o
0013060    u   n   t  \t  \t   ;   i   n   i   t   i   a   l       c   o
0013100    u   n   t  \r  \t   m   k   o   n   e       0       0  \t  \t
0013120    ;   s   t   a   r   t       o   n       r   i   g   h   t    
0013140    b   y   t   e  \r  \t   s   t   a       0       s   B   y   t
0013160    e  \r  \r   ;       b   a   c   k       h   e   r   e       w
0013200    h   e   n       a   l   l       m   a   t   c   h   e   s    
0013220    h   a   v   e       f   a   i   l   e   d       a   n   d    
0013240    w   e       n   e   e   d       t   o       r   e   s   t   a
0013260    r   t  \r   ;       t   h   e       m   a   t   c   h       w
0013300    i   t   h       a       n   e   w       s   t   r   i   n   g
0013320        c   h   a   r   a   c   t   e   r   .  \r   r   e   s   t
0013340    i   n   :  \t   m   k   z   e   r   o       0       0  \t  \t
0013360    ;   i   n   i   t   i   a   l   i   z   e       t   e   m   p
0013400  376 001  \0   ? 240   l   a   t   e       i   n   d   e   x  \r
0013420   \t   s   t   a       0       t   I   n   d   e   x  \r  \r   ;
0013440        g   e   t       n   e   x   t       s   t   r   i   n   g
0013460        c   h   a   r   a   c   t   e   r  \r   s   t   r   n   x
0013500    t   :  \t   d   s   z       s   C   o   u   n   t  \t  \t   ;
0013520    d   e   c   r   e   m   e   n   t       a   n   d       t   e
0013540    s   t       s   t   r   i   n   g       c   o   u   n   t  \r
0013560   \t       j   m   p       .   +   2  \r  \t       j   m   p    
0013600    s   t   r   e   n   d  \t  \t   ;   e   n   d       o   f    
0013620    s   t   r   i   n   g  \r  \t   l   d   a       0       @   2
0013640        2  \t  \t   ;   g   e   t       w   o   r   d       c   o
0013660    n   t   a   i   n   i   n   g       n   e   x   t       b   y
0013700    t   e  \r  \t   d   s   z       s   B   y   t   e  \t  \t   ;
0013720    w   h   i   c   h       b   y   t   e       n   e   x   t   ?
0013740   \r  \t       j   m   p       s   t   r   l   f   t  \t  \t   ;
0013760    l   e   f   t  \r  \t   l   d   a       1       c   3   7   7
0014000   \t  \t   ;   r   i 376 001  \0 320 307   g   h   t   ,       m
0014020    a   s   k       i   t  \r  \t   a   n   d       1       0  \r
0014040   \t   i   s   z       2       2  \t  \t  \t   ;   a   d   v   a
0014060    n   c   e       p   o   i   n   t   e   r       f   o   r    
0014100    n   e   x   t  \r  \t   j   m   p       c   h   k   l   w   c
0014120   \r  \r   s   t   r   l   f   t   :  \t   l   d   a       1    
0014140    c   1   7   7   4   0   0  \t  \t   ;   l   e   f   t   ,    
0014160    m   a   s   k       a   n   d       s   w   a   p  \r  \t   a
0014200    n   d   s       1       0  \r  \t   m   k   o   n   e       1
0014220        1  \t  \t   ;   n   e   x   t       b   y   t   e       i
0014240    s       r   i   g   h   t  \r  \t   s   t   a       1       s
0014260    B   y   t   e  \r  \r   c   h   k   l   w   c   :  \t   l   d
0014300    a       1       c   1   4   0  \t  \t   ;   l   o   w   e   r
0014320    -   c   a   s   e       l   e   t   t   e   r   ?  \r  \t   s
0014340    g   t       0       1  \r  \t       j   m   p       t   m   p
0014360    n   x   t  \t  \t   ;   n   o  \r  \t   l   d   a       1    
0014400    c   1   7   2  \r  \t   s   l   e     376 001  \0 177 227   0
0014420        1  \r  \t       j   m   p       t   m   p   n   x   t  \t
0014440   \t   ;   n   o  \r  \t   l   d   a       1       c   4   0  \t
0014460   \t   ;   y   e   s   ,       c   o   n   v   e   r   t       t
0014500    o       u   p   p   e   r  \r  \t   s   u   b       1       0
0014520   \r  \r   ;       a   d   v   a   n   c   e       t   e   m   p
0014540    l   a   t   e       i   n   d   e   x  \r   t   m   p   n   x
0014560    t   :  \t   i   s   z       t   I   n   d   e   x  \r  \t   l
0014600    d   a       1       t   I   n   d   e   x  \r  \f  \r   ;    
0014620    M   a   t   c   h   K   P   M   T   e   m   p   l   a   t   e
0014640        (   c   o   n   t   '   d   )  \r  \r   ;       c   o   m
0014660    p   a   r   e       c   u   r   r   e   n   t       s   t   r
0014700    i   n   g       c   h   a   r   a   c   t   e   r       a   g
0014720    a   i   n   s   t       t   e   m   p   l   a   t   e       t
0014740    o   k   e   n  \r   c   o   m   p   a   r   :  \t   l   d   a
0014760        3       3       2  \t  \t   ;   g   e   t       t   e   m
0015000    p   l   a   t   e       p   o   i   n   t   e   r  \r  \t 376
0015020  001  \0   :   X   a   d   d       1       3  \t  \t  \t   ;   m
0015040    a   k   e       p   o   i   n   t   e   r       t   o       t
0015060    o   k   e   n  \r  \t   l   d   a       3       -   1       3
0015100   \t  \t   ;   g   e   t       t   o   k   e   n  \r  \t   l   d
0015120    a       1       c   3   7   7  \t  \t   ;   m   a   s   k    
0015140    j   u   s   t       c   h   a   r       i   n       t   o   k
0015160    e   n  \r  \t   a   n   d       3       1  \r  \t   s   n   e
0015200        0       1  \t  \t  \t   ;   s   t   r   i   n   g       c
0015220    h   a   r       m   a   t   c   h       t   e   m   p   l   a
0015240    t   e   ?  \r  \t       j   m   p       s   t   r   n   x   t
0015260   \t  \t   ;   y   e   s   ,       o   n       t   o       n   e
0015300    x   t  \r  \t   n   e   g       1       1       s   n   r  \t
0015320   \t   ;   n   o   ,       c   h   e   c   k       f   o   r    
0015340    s   p   e   c   i   a   l       m   a   t   c   h       c   o
0015360    d   e  \r  \t       j   m   p       c   f   a   i   l  \t  \t
0015400    ;   m   c   E   n   d       =       0   ,       t   r   e   a
0015420    t       a   s 376 001  \0 350   6       f   a   i   l  \r  \t
0015440    i   n   c       1       1       s   n   r  \r  \t       j   m
0015460    p       c   s   t   a   r  \t  \t   ;   m   c   S   t   a   r
0015500        =       1  \r  \t   i   n   c       1       1       s   n
0015520    r  \r  \t       j   m   p       r   z   e   r   o  \t  \t   ;
0015540    m   c   E   n   d   S   t   a   r       =       2   ,       s
0015560    u   c   c   e   s   s   f   u   l       m   a   t   c   h  \r
0015600   \t   i   n   c       1       1       s   n   r  \r  \t       j
0015620    m   p       r   f   a   i   l  \t  \t   ;   m   c   F   a   i
0015640    l       =       3   ,       r   e   t   u   r   n       f   a
0015660    i   l       i   n   d   e   x  \r  \r   ;       h   e   r   e
0015700        w   h   e   n       t   h   e       c   h   a   r   a   c
0015720    t   e   r       d   i   d       n   o   t       m   a   t   c
0015740    h       a   n   d       t   h   e       t   o   k   e   n    
0015760    w   a   s       n   o   t  \r   ;       a       s   p   e   c
0016000    i   a   l       m   a   t   c   h       c   o   d   e       (
0016020    o   r       w   a   s       m   c 376 001  \0   K 207   E   n
0016040    d   )  \r   c   f   a   i   l   :  \t   l   d   a       1    
0016060    c   1   7   7   4   0   0  \t  \t   ;   g   e   t       f   a
0016100    i   l       i   n   d   e   x       f   r   o   m       t   o
0016120    k   e   n  \r  \t   a   n   d   s       3       1       s   n
0016140    r  \r  \t       j   m   p       r   e   s   t   i   n  \t  \t
0016160    ;   z   e   r   o       m   e   a   n   s       r   e   s   t
0016200    a   r   t       m   a   t   c   h  \r  \t   s   t   a       1
0016220        t   I   n   d   e   x  \t  \t   ;   s   t   o   r   e    
0016240    n   e   w       t   e   m   p   l   a   t   e       i   n   d
0016260    e   x  \r  \t   j   m   p       c   o   m   p   a   r  \t  \t
0016300    ;   f   a   l   l       b   a   c   k       a   n   d       r
0016320    e   t   r   y       m   a   t   c   h  \r  \r   ;       h   e
0016340    r   e       w   h   e   n       t   o   k   e   n       w   a
0016360    s       m   c   S   t   a   r   .           a   d   v   a   n
0016400    c   e       p   a   s   t       i   t       a   n   d       b
0016420    e   g   i   n       a       n   e   w  \r   ;       m 376 001
0016440   \0 371 270   a   t   c   h       a   g   a   i   n   s   t    
0016460    t   h   e       n   e   x   t       p   a   r   t       o   f
0016500        t   h   e       t   e   m   p   l   a   t   e  \r   c   s
0016520    t   a   r   :  \t   l   d   a       3       3       2  \t  \t
0016540    ;   a   d   v   a   n   c   e       t   e   m   p   l   a   t
0016560    e       p   o   i   n   t   e   r       p   a   s   t       *
0016600   \r  \t   l   d   a       1       t   I   n   d   e   x  \r  \t
0016620    a   d   d       1       3  \r  \t   s   t   a       3       3
0016640        2  \r  \t   m   k   o   n   e       1       1  \t  \t   ;
0016660    r   e   s   e   t       i   n   d   e   x       t   o       1
0016700   \r  \t   s   t   a       1       t   I   n   d   e   x  \r  \t
0016720    j   m   p       c   o   m   p   a   r  \t  \t   ;   r   e   t
0016740    r   y       m   a   t   c   h  \r  \r   ;       h   e   r   e
0016760        w   h   e   n       t   h   e       e   n   d       o   f
0017000        t   h   e       s   t   r   i   n   g       i   s       r
0017020    e   a   c   h   e   d   .  \r   ;       t   h   e       n   e
0017040    x   t     376 001  \0 022   .   t   e   m   p   l   a   t   e
0017060        t   o   k   e   n       m   u   s   t       b   e       m
0017100    c   E   n   d       o   r       m   c   E   n   d   S   t   a
0017120    r       f   o   r  \r   ;       a       s   u   c   c   e   s
0017140    s   f   u   l       m   a   t   c   h   .  \r   s   t   r   e
0017160    n   d   :  \t   l   d   a       1       t   I   n   d   e   x
0017200   \t  \t   ;   g   e   t       c   u   r   r   e   n   t       i
0017220    n   d   e   x  \r  \t   l   d   a       3       3       2  \t
0017240   \t   ;   g   e   t       n   e   x   t       t   o   k   e   n
0017260   \r  \t   a   d   d       1       3  \r  \t   l   d   a       3
0017300        0       3  \r  \t   l   d   a       0       c   2  \r  \t
0017320    l   d   a       1       c   3   7   7  \t  \t   ;   m   a   s
0017340    k       j   u   s   t       c   h   a   r  \r  \t   a   n   d
0017360        1       3       s   z   r  \t  \t   ;   m   c   E   n   d
0017400        (   =       0   )   ?  \r  \t   s   n   e       0       3
0017420   \t  \t  \t   ;   m   c   E   n   d   S   t   a   r       (   =
0017440        2   )   ?  \r  \t       j 376 001  \0 243   4   m   p    
0017460    r   z   e   r   o  \t  \t   ;   y   e   s   ,       s   u   c
0017500    c   e   s   s   f   u   l  \r   r   f   a   i   l   :  \t   l
0017520    d   a       0       i   C   o   u   n   t  \t  \t   ;   n   o
0017540    ,       c   o   m   p   u   t   e       i   n   d   e   x    
0017560    o   f       f   a   i   l   u   r   e  \r  \t   l   d   a    
0017600    1       s   C   o   u   n   t  \r  \t   s   u   b       1    
0017620    0       s   k   p  \t  \t   ;   r   e   t   u   r   n       f
0017640    a   i   l       i   n   d   e   x  \r   r   z   e   r   o   :
0017660   \t       m   k   z   e   r   o       0       0  \t  \t   ;   r
0017700    e   t   u   r   n       z   e   r   o       f   o   r       s
0017720    u   c   c   e   s   s  \r  \t   l   d   a       3       1    
0017740    2  \r  \t   j   m   p       1       3  \r  \r   ;       v   a
0017760    r   i   a   b   l   e   s  \r   s   C   o   u   n   t   :  \t
0020000    0  \r   i   C   o   u   n   t   :  \t   0  \r   s   B   y   t
0020020    e   :  \t   0  \r   t   I   n   d   e   x   :  \t   0  \r  \r
0020040    ;       c   o   n   s   t   a   n   t   s  \r   c 376  \0   B
0020060    Y 220   2   :  \t   2  \r   c   4   0   :  \t   4   0  \r   c
0020100    1   4   0   :  \t   1   4   0  \r   c   1   7   2   :  \t   1
0020120    7   2  \r   c   3   7   7   :  \t   3   7   7  \r   c   1   7
0020140    7   4   0   0   :       1   7   7   4   0   0  \r  \r  \t   .
0020160    e   n   d  \r 377  \0  \0   C   o   m   p   i   l   e   K   P
0020200    M   .   c   m  \0 376  \0   B 241   q   b   c   p   l   /   f
0020220        k   p   m   .   b   c   p   l   ;       b   c   p   l   /
0020240    f       k   p   m   t   e   m   p   l   a   t   e   b   .   b
0020260    c   p   l   ;       a   s   m   /   e       k   p   m   t   e
0020300    m   p   l   a   t   e   a   .   a   s   m  \r 377  \0  \0   L
0020320    o   a   d   K   P   M   .   c   m  \0 376  \0   & 023   u   b
0020340    l   d   r       k   p   m       k   p   m   t   e   m   p   l
0020360    a   t   e   b       k   p   m   t   e   m   p   l   a   t   e
0020400    a       g   p  \r 377  \0  \0   K   P   M   b   r   .   c   m
0020420   \0 376  \0 037   9 250   K   P   M   T   e   m   p   l   a   t
0020440    e   b   .   b   r       K   P   M   T   e   m   p   l   a   t
0020460    e   a   .   b   r 377  \0  \0   K   P   M   .   c   m  \0 376
0020500   \0   T   v   a   K   P   M   .   b   c   p   l       K   P   M
0020520    T   e   m   p   l   a   t   e   b   .   b   c   p   l       K
0020540    P   M   T   e   m   p   l   a   t   e   a   .   a   s   m    
0020560    C   o   m   p   i   l   e   K   P   M   .   c   m       L   o
0020600    a   d   K   P   M   .   c   m       K   P   M   b   r   .   c
0020620    m       K   P   M   .   c   m 374                            
0020631