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