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