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