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