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