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