$ od -c -N 50000 [Indigo]<Spruce>12>sources>sprucespool.sr!1
0000000    /   /       B   c   p   l       S   p   r   u   c   e   S   p
0000020    o   o   l   .   B   c   p   l      \r   /   /       U   s   e
0000040        E   F   T   P       p   r   o   t   o   c   o   l       t
0000060    o       a   c   c   e   p   t       a   n   d       q   u   e
0000100    u   e       P   r   e   s   s       F   i   l   e   s  \r  \r
0000120    /   /   g   e   t       "   S   p   r   u   c   e   .   d   "
0000140        m   a   k   e   s       t   o   o       m   a   n   y    
0000160    "   g   e   t   "       f   i   l   e   s  \r  \t   g   e   t
0000200        "   S   p   r   u   c   e   I   n   L   d   O   u   t   L
0000220    d   .   d   "  \t  \t   /   /       I   n   L   d   /   O   u
0000240    t   L   d       m   e   s   s   a   g   e   s       f   o   r
0000260        s   p   o   o   l   e   r       <   -   >       s   e   r
0000300    v   i   c   e       c   o   m   m   u   n   i   c   a   t   i
0000320    o   n  \r  \t   g   e   t       "   S   p   r   u   c   e   P
0000340    r   i   n   t   e   r   s   .   d   "  \r  \t   g   e   t    
0000360    "   S   p   r   u   c   e   D   o   c   .   d   "  \r   /   /
0000400   \t   g   e   t       "   S   p   r   u   c   e   f   o   n   t
0000420    .   d   "  \r   /   /  \t   g   e   t       "   S   p   r   u
0000440    c   e   b   a   n   d   .   d   "  \r  \t   g   e   t       "
0000460    s   p   r   u   c   e   M   i   s   c   .   d   "  \r   g   e
0000500    t       "   S   p   r   u   c   e   F   i   l   e   s   .   d
0000520    "  \r   g   e   t       "   p   u   p   E   f   t   p   .   d
0000540    e   c   l   "  \r  \r   e   x   t   e   r   n   a   l       /
0000560    /       d   e   f   i   n   e   d       h   e   r   e  \r  \t
0000600    [  \r  \t   I   n   i   t   S   p   o   o   l  \r  \t   P   r
0000620    e   p   a   r   e   T   o   S   p   o   o   l  \r  \t   S   o
0000640    m   e   o   n   e   I   s   K   n   o   c   k   i   n   g  \r
0000660   \t   S   p   o   o   l   A   F   i   l   e  \r  \t   ]  \r  \r
0000700    e   x   t   e   r   n   a   l       /   /       e   x   t   e
0000720    r   n   a   l  \r  \t   [  \r  \t   /   /       S   p  \0 006
0000740  020   @ 377   v 037  \0  \a  \0 035  \0  \0   (      \0  \0   @
0000760   \0  \0 001 336  \0  \0  \0  \0 006 232  \0  \0 366 357 370 366
0001000    r   u   c   e   Q   u   e   u   e  \r  \t   A   d   d   T   o
0001020    Q   u   e   u   e  \r  \t   C   l   e   a   n   u   p   Q   u
0001040    e   u   e  \r  \t   F   u   l   l   Q   u   e   u   e  \r  \t
0001060    I   n   i   t   i   a   l   i   z   e   Q   u   e   u   e  \r
0001100   \r  \t   /   /       S   p   r   u   c   e   U   s   e   r  \r
0001120   \t   P   o   s   t  \r  \r  \t   /   /       S   p   r   u   c
0001140    e   F   i   l   e   s   ,       S   p   r   u   c   e   S   t
0001160    r   e   a   m   s  \r  \t   C   r   e   a   t   e   S   p   r
0001200    u   c   e   F   i   l   e  \r  \t   C   r   e   a   t   e   S
0001220    p   r   u   c   e   S   u   b   f   i   l   e  \r  \t   C   u
0001240    r   r   e   n   t   P   o   s  \r  \t   F   o   r   g   e   t
0001260    S   p   r   u   c   e   F   i   l   e  \r  \t   I   n   i   t
0001300    S   p   r   u   c   e   F   i   l   e  \r  \t   R   e   s   e
0001320    t   S   p   r   u   c   e   F   i   l   e  \r  \t   W   i   n
0001340    d   o   w   C   r   e   a   t   e   S   t   r   e   a   m  \r
0001360   \t   W   i   n   d   o   w   N   e   x   t   P   a   g   e  \r
0001400   \t   W   i   n   d   o   w   W   r   i   t   e   B   l   o   c
0001420    k  \r  \r  \t   /   /       S   p   r   u   c   e   U   t   i
0001440    l   s  \r  \t   C   u   r   s   o   r   C   h   a   r  \r  \t
0001460    C   u   r   s   o   r   D   i   g   i   t  \r  \t   F   i   l
0001500    l   I   n   N   a   m   e   s  \r  \t   F   S   G   e   t   X
0001520   \r  \t   V   p   a   g   e   T   o   R   p   a   g   e  \r  \r
0001540   \t   /   /       S   p   r   u   c   e   P   L   i   s   t   s
0001560   \r  \t   P   a   r   s   e   P   r   i   n   t   I   n   s   t
0001600    a   n   c   e   P   a   r   a   m   s  \r  \t   G   e   n   P
0001620    r   i   n   t   e   r   C   a   p   a   b   i   l   i   t   i
0001640    e   s  \r  \t   G   e   n   J   o   b   S   t   a   t   u   s
0001660   \r  \r  \t   /   /       E   F   T   P  \r  \t   C   l   o   s
0001700    e   E   F   T   P   S   o   c  \r  \t   I   n   i   t   E   F
0001720    T   P   P   a   c   k   a   g   e  \r  \t   O   p   e  \0 006
0001740  020   @ 377   v 037  \0  \a  \0 035  \0  \0   (      \0  \0   @
0001760   \0  \0 001 336 376  \0  \0  \0 004 232  \0  \0 366 357 370 366
0002000    n   E   F   T   P   S   o   c  \r  \t   R   e   c   e   i   v
0002020    e   E   F   T   P   P   a   c   k   e   t  \r  \t   S   e   n
0002040    d   E   F   T   P   A   b   o   r   t  \r  \r  \t   /   /    
0002060    P   u   p       P   a   c   k   a   g   e  \r  \t   A   p   p
0002100    e   n   d   S   t   r   i   n   g   T   o   P   u   p  \r  \t
0002120    C   o   m   p   l   e   t   e   P   u   p  \r  \t   E   x   c
0002140    h   a   n   g   e   P   o   r   t   s  \r  \t   I   n   i   t
0002160    P   u   p   L   e   v   e   l   1  \r  \t   O   p   e   n   L
0002200    e   v   e   l   1   S   o   c   k   e   t  \r  \t   R   e   l
0002220    e   a   s   e   P   B   I  \r  \r  \t   /   /       Q   u   e
0002240    u   e  \r  \t   D   e   q   u   e   u   e  \r  \t   E   n   q
0002260    u   e   u   e  \r  \r  \t   /   /       C   o   n   t   e   x
0002300    t   s  \r  \t   B   l   o   c   k  \r  \t   I   n   i   t   i
0002320    a   l   i   z   e   C   o   n   t   e   x   t  \r  \r  \t   /
0002340    /       O   S  \r  \t   C   l   o   s   e   s  \r  \t   E   n
0002360    d   o   f   s  \r  \t   M   o   v   e   B   l   o   c   k  \r
0002400   \t   P   u   t   s  \r  \t   Z   e   r   o  \r  \r  \t   /   /
0002420        s   t   a   t   i   c   s  \r  \t   C   a   p   a   b   i
0002440    l   i   t   i   e   s  \r  \t   f   r   e   e   F   i   l   e
0002460   \r  \t   m   a   x   Q   u   e   u   e   d  \r  \t   n   u   m
0002500    F   i   l   e   s   S   p   o   o   l   e   d  \r  \t   n   u
0002520    m   M   u   s   t   P   r   i   n   t  \r  \t   p   r   e   s
0002540    s   F   i   l   e   I   n   d   e   x  \r  \t   p   r   i   n
0002560    t   e   r   N   a   m   e  \r  \t   r   e   a   s   o   n   V
0002600    e   c  \r  \t   S   p   o   o   l   F   i   l   e  \r  \t   s
0002620    p   o   o   l   i   n   g  \r  \t   s   p   o   o   l   S   o
0002640    c   k   e   t  \r  \t   S   p   r   u   c   e   Z   o   n   e
0002660   \r  \t   ]  \r  \r   s   t   a   t   i   c       [       s   t
0002700    a   t   u   s   S   o   c   k   e   t   ;       P   o   s   t
0002720    S   t   r       ]  \r  \r   /   /       F   i   l   e  \0 006
0002740  020   @ 377   v 037  \0  \a  \0 035  \0  \0   (      \0  \0   @
0002760   \0  \0 001 336 374  \0  \0  \0 002 232  \0  \0 366 357 370 366
0003000    -   w   i   d   e       s   t   r   u   c   t   u   r   e    
0003020    a   n   d       m   a   n   i   f   e   s   t       d   e   c
0003040    l   a   r   a   t   i   o   n   s   .  \r  \r   m   a   n   i
0003060    f   e   s   t  \r  \t   [  \r  \t   S   T   A   T   S   t   a
0003100    c   k   S   i   z   e       =       2   0   0       /   /    
0003120    e   n   o   u   g   h       7   -   1   7   -   7   9       /
0003140    /       1   0   0           8   -   3   -   7   7  \r  \t   E
0003160    F   T   P   F   a   i   l   e   d       =           -   1   0
0003200   \r  \t   E   F   T   P   S   e   r   v   e   r   F   a   i   l
0003220    e   d       =           -   1   1  \r  \t   M   e   d   i   u
0003240    m   W   a   i   t   A   b   o   r   t       =       7  \r  \t
0003260    L   o   n   g   W   a   i   t   A   b   o   r   t       =    
0003300    6  \r  \t   s   o   c   k   e   t   P   r   i   n   t   e   r
0003320    S   t   a   t   u   s       =       #   2   1  \r  \t   t   y
0003340    p   e   P   r   i   n   t   e   r   S   t   a   t   u   s   R
0003360    e   q   u   e   s   t       =       #   2   0   0  \r  \t   t
0003400    y   p   e   P   r   i   n   t   e   r   S   t   a   t   u   s
0003420    R   e   p   l   y       =       #   2   0   1  \r  \t   t   y
0003440    p   e   P   r   C   a   p   a   b   i   l   i   t   y   R   e
0003460    q   u   e   s   t       =       #   2   0   2  \r  \t   t   y
0003500    p   e   P   r   C   a   p   a   b   i   l   i   t   y   R   e
0003520    p   l   y       =       #   2   0   3  \r  \t   t   y   p   e
0003540    J   o   b   S   t   a   t   u   s   R   e   q   u   e   s   t
0003560        =       #   2   0   4  \r  \t   t   y   p   e   J   o   b
0003600    S   t   a   t   u   s   R   e   p   l   y       =       #   2
0003620    0   5  \r  \r  \t   I   n   t   e   r   P   u   p   T   i   m
0003640    e   o   u   t       =       1   2   0   0       /   /       1
0003660    2       s   e   c   o   n   d   s   ,       t   h   e   n    
0003700    c   h   e   c   k       f   o   r       o   t   h   e   r    
0003720    r   e   q   u   e   s   t   s  \r  \t  \0 006 020   @ 377   v
0003740  037  \0  \a  \0 035  \0  \0   (  \0 232  \0 257      \0  \0   @
0003760   \0  \0 001 332 372  \0  \0  \0  \v 025  \0  \0 364 355 370 366
0004000    m   a   x   T   i   m   e   o   u   t   s       =       3  \t
0004020                        /   /       a   f   t   e   r       t   h
0004040    i   s       m   a   n   y   ,       a   b   o   r   t       t
0004060    r   a   n   s   f   e   r       a   n   y   h   o   w  \r  \r
0004100   \t   n   a   h   S   p   o   o   l       =       3  \r  \r  \t
0004120    P   r   I   n   s   t   P   a   s   s   0       =       #   1
0004140    2   5   3   1   4  \r  \t   P   r   I   n   s   t   P   a   s
0004160    s   1       =       #   1   7   0   3   7   7  \r  \t   ]  \r
0004200   \r  \r  \r   /   /  \t   T   h   i   s       m   o   d   u   l
0004220    e       u   s   e   s       P   u   p   E   F   T   P   ,    
0004240    a   n   d       u   n   d   e   r   l   y   i   n   g       P
0004260    u   p       p   a   c   k   a   g   e   s   ,       a   l   o
0004300    n   g       w   i   t   h       t   h   e       S   p   r   u
0004320    c   e   Q   u   e   u   e       m   o   d   u   l   e       t
0004340    o  \r   /   /       m   a   n   a   g   e       t   h   e    
0004360    s   p   o   o   l       q   u   e   u   e   ,       t   o    
0004400    l   i   s   t   e   n       t   o       t   h   e       E   t
0004420    h   e   r   n   e   t   ,       r   e   s   p   o   n   d    
0004440    t   o       s   t   a   t   u   s       r   e   q   u   e   s
0004460    t   s   ,       a   n   d       s   p   o   o   l       i   n
0004500    c   o   m   i   n   g  \r   /   /       P   r   e   s   s    
0004520    f   i   l   e   s   .  \r  \r   /   /  \t   P   u   p   E   F
0004540    T   P       h   a   s       b   e   e   n       m   o   d   e
0004560    s   t   l   y       m   o   d   i   f   i   e   d       f   r
0004600    o   m       t   h   e       p   u   b   l   i   c   l   y    
0004620    a   v   a   i   l   a   b   l   e       v   e   r   s   i   o
0004640    n   ,       a   l   l   o   w   i   n   g       b   e   t   t
0004660    e   r       a   c   c   e   s   s       t   o  \r   /   /    
0004700    t   h   e       p   b   i   -   l   e   v   e   l       a   n
0004720    d       t   o       e   r   r   o   r       m   a   n  \0 006
0004740  020   @ 377   v 037  \0  \a  \0 035  \0  \0   (      \0  \0   @
0004760   \0  \0 001 336 376 257  \0  \0  \t 025  \0  \0 366 357 370 366
0005000    a   g   e   m   e   n   t   .  \r  \r   /   /  \t   T   h   e
0005020        m   a   i   n       r   o   u   t   i   n   e       (   s
0005040    e   e       S   p   r   o   u   l   l   e   r   (   )       i
0005060    n       S   p   r   u   c   e   .   b   c   p   l   )       c
0005100    a   l   l   s       S   o   m   e   o   n   e   I   s   K   n
0005120    o   c   k   i   n   g       u   n   t   i   l       s   o   m
0005140    e   o   n   e       i   s   ,  \r   /   /       t   h   e   n
0005160        S   p   o   o   l   A   F   i   l   e       t   o       g
0005200    e   t       o   n   e   .       P   r   e   p   a   r   e   T
0005220    o   S   p   o   o   l       i   s       c   a   l   l   e   d
0005240    ,       t   o       s   t   a   r   t       E   F   T   P    
0005260    l   i   s   t   e   n   i   n   g   ,       a   s       s   o
0005300    o   n       a   s       p   o   s   s   i   b   l   e       a
0005320    f   t   e   r  \r   /   /       t   h   e       p   r   e   v
0005340    i   o   u   s       f   i   l   e       i   s       i   n   .
0005360   \r  \r  \f  \r   /   /       -   -   -   -   -   -   -   -   -
0005400    -   -   -   -   -   -   -   -   -   -   -   -   -   -   -   -
*
0005440    -   -   -   -   -   -   -   -   -   -   -   -   -  \r   l   e
0005460    t       S   o   m   e   o   n   e   I   s   K   n   o   c   k
0005500    i   n   g   (   )       =       v   a   l   o   f  \r   /   /
0005520        -   -   -   -   -   -   -   -   -   -   -   -   -   -   -
0005540    -   -   -   -   -   -   -   -   -   -   -   -   -   -   -   -
*
0005600    -   -   -   -   -   -   -  \r   /   /  \t   F   i   l   t   e
0005620    r       o   u   t       n   o   n   -   E   F   T   P       d
0005640    a   t   a       r   e   q   u   e   s   t   s       d   i   r
0005660    e   c   t   e   d       t   o       s   p   o   o   l   S   o
0005700    c   k   e   t       (   s   o   c   k   e   t       2   0   )
0005720    .  \r   /   /  \t   R   e   t   u   r   n   s       t  \0 006
0005740  020   @ 377   v 037  \0  \a  \0 035  \0  \0   (      \0  \0   @
0005760   \0  \0 001 336 374 257  \0  \0  \a 025  \0  \0 366 357 370 366
0006000    r   u   e       o   n   l   y       i   f       t   h   e   r
0006020    e   '   s       a   n       E   F   T   P       d   a   t   a
0006040        r   e   q   u   e   s   t       q   u   e   u   e   d    
0006060    o   n       t   h   e       s   o   c   k   e   t   .       D
0006100    o   e   s       n   o   t       d   e   q   u   e   u   e   !
0006120   \r   /   /  \t   A       s   i   m   p   l   e       "   e   a
0006140    r   "       f   u   n   c   t   i   o   n       i   n       t
0006160    h   e       S   p   r   i   n   t       p   r   o   g   r   a
0006200    m       s   i   m   u   l   a   t   e   s       t   h   i   s
0006220        f   u   n   c   t   i   o   n  \r  \t   [  \r  \t   l   e
0006240    t       i   n   P   b   i       =       s   p   o   o   l   S
0006260    o   c   k   e   t   >   >   E   F   T   P   S   o   c   .   i
0006300    Q   .   h   e   a   d  \t   /   /       N   .   B   .       N
0006320    O   T       d   e   q   u   e   u   e   d       y   e   t   !
0006340   \r  \t   u   n   l   e   s   s       i   n   P   b   i       d
0006360    o       [       B   l   o   c   k   (   )   ;       r   e   s
0006400    u   l   t   i   s       f   a   l   s   e       ]  \r  \t   /
0006420    /       ~   ~       i   f       l   o   c   k   e   d       o
0006440    n       h   o   s   t       a   n   d       n   o   t       t
0006460    h   i   s       h   o   s   t   ,       r   e   l   e   a   s
0006500    e       p   b   i       a   n   d       c   o   n   t   i   n
0006520    u   e  \r  \t   i   f       i   n   P   b   i   >   >   P   B
0006540    I   .   p   u   p   .   t   y   p   e       e   q       t   y
0006560    p   e   E   F   T   P   D   a   t   a       r   e   s   u   l
0006600    t   i   s       i   n   P   b   i       /   /       g   o    
0006620    t   r   y       i   t  \r  \t   R   e   l   e   a   s   e   P
0006640    B   I   (   D   e   q   u   e   u   e   (   l   v       s   p
0006660    o   o   l   S   o   c   k   e   t   >   >   E   F   T   P   S
0006700    o   c   .   i   Q   )   )       /   /       i   g   n   o   r
0006720    a   b   l   e       p   a   c   k   e   t  \r  \t   ]  \0 006
0006740  020   @ 377   v 037  \0  \a  \0 035  \0  \0   (      \0  \0   @
0006760   \0  \0 001 336 372 257  \0  \0 005 025  \0  \0 366 357 370 366
0007000        r   e   p   e   a   t       /   /       u   n   t   i   l
0007020        q       e   m   p   t   y       o   r       a       g   o
0007040    o   d       o   n   e       f   o   u   n   d  \r  \r   /   /
0007060        -   -   -   -   -   -   -   -   -   -   -   -   -   -   -
0007100    -   -   -   -   -   -   -   -   -   -   -   -   -   -   -   -
*
0007140    -   -   -   -   -   -   -  \r   a   n   d       S   p   o   o
0007160    l   A   F   i   l   e   (   )       =       v   a   l   o   f
0007200        /   /       S   o   m   e   o   n   e       i   s       k
0007220    n   o   w   n       t   o       b   e       k   n   o   c   k
0007240    i   n   g  \r   /   /       -   -   -   -   -   -   -   -   -
0007260    -   -   -   -   -   -   -   -   -   -   -   -   -   -   -   -
*
0007320    -   -   -   -   -   -   -   -   -   -   -   -   -  \r   /   /
0007340   \t   M   a   n   a   g   e   s       t   h   e       E   F   T
0007360    P       o   p   e   r   a   t   i   o   n   ,       t   h   e
0007400        q   u   e   u   e   i   n   g       o   p   e   r   a   t
0007420    i   o   n       v   i   a       S   p   r   u   c   e   Q   u
0007440    e   u   e       f   u   n   c   t   i   o   n   s   ,       a
0007460    n   d       t   h   e  \r   /   /       r   e   p   o   r   t
0007500    i   n   g       o   f       r   e   s   u   l   t   s       t
0007520    o       t   h   e       S   p   r   u   c   e   U   s   e   r
0007540        c   o   n   t   e   x   t       v   i   a       t   h   e
0007560        P   o   s   t   (   )       f   u   n   c   t   i   o   n
0007600    .       F   i   l   l   I   n   N   a   m   e   s   (   )   ,
0007620        p   r   o   p   e   r   l   y       a  \r   /   /       S
0007640    p   r   i   n   t       o   p   e   r   a   t   i   o   n   ,
0007660        e   x   a   m   i   n   e   s       t   h   e       P   r
0007700    e   s   s       d   i   r   e   c   t   o   r   y       f   o
0007720    r       P   r   e   s   s       f   i   l   e       i  \0 006
0007740  020   @ 377   v 037  \0  \a  \0 035  \0  \0   (      \0  \0   @
0007760   \0  \0 001 336 370 257  \0  \0 003 025  \0  \0 366 357 370 366
0010000    n   f   o   r   m   a   t   i   o   n   :       n   a   m   e
0010020    ,       c   r   e   a   t   o   r   ,       d   a   t   e   ,
0010040   \r   /   /       a   p   p   r   o   x   i   m   a   t   e    
0010060    s   i   z   e   ,       e   t   c   .       T   h   i   s    
0010100    i   s       u   s   e   d       i   n       r   e   p   o   r
0010120    t   s       a   t       t   h   e       u   s   e   r       t
0010140    e   r   m   i   n   a   l       a   n   d       i   n       s
0010160    p   o   o   l   e   r       s   t   a   t   u   s       p   a
0010200    c   k   e   t   s   .  \r   /   /  \t   R   e   t   u   r   n
0010220    s       t   r   u   e       o   n   l   y       i   f       a
0010240    n   o   t   h   e   r       s   p   o   o   l       r   e   q
0010260    u   e   s   t       a   r   r   i   v   e   d       w   h   i
0010300    l   e       s   p   o   o   l   i   n   g       (   s   o   m
0010320    e   o   n   e       e   l   s   e       k   n   o   c   k   e
0010340    d   )   .  \r           [  \r           l   e   t       d   o
0010360    c   ,       s   p   o   o   l   R   e   s   u   l   t       =
0010400        0   ,       E   C   S   p   o   o   l   T   e   r   m   i
0010420    n   a   t   e  \r           t   e   s   t       s   p   o   o
0010440    l   i   n   g       t   h   e   n  \r  \t   [  \r  \t   t   e
0010460    s   t       F   u   l   l   Q   u   e   u   e   (   )       t
0010500    h   e   n  \r  \t  \t   [  \r  \t  \t   P   o   s   t   S   t
0010520    r       =       "   S   o   r   r   y   ,       S   p   r   u
0010540    c   e       S   p   o   o   l   i   n   g       F   a   c   i
0010560    l   i   t   y       F   u   l   l   -   -   P   l   e   a   s
0010600    e       T   r   y       A   g   a   i   n   .   "  \r  \t  \t
0010620    n   u   m   M   u   s   t   P   r   i   n   t       =       3
0010640   \r  \t  \t   S   e   n   d   E   F   T   P   A   b   o   r   t
0010660    (   s   p   o   o   l   S   o   c   k   e   t   ,       M   e
0010700    d   i   u   m   W   a   i   t   A   b   o   r   t   ,       P
0010720   \0 006 020   @ 377   v 037  \0  \a  \0 035  \0  \0   ( 001 025
0010740  001   * 001   - 001   D 001   H 001 216 001 241      \0  \0   @
0010760   \0  \0 001 320 366 257  \0  \0 002  \t  \0  \0 357 350 370 366
0011000    o   s   t   S   t   r   )      \r  \t  \t   ]  \r  \t        
0011020            o   r  \r  \t  \t   [  \r  \t  \t   C   u   r   s   o
0011040    r   C   h   a   r   (   $   E   )  \r  \t  \t   d   o   c    
0011060    =       F   e   t   c   h   A   F   i   l   e   (   )  \r  \t
0011100   \t   ]  \r  \t   ]  \r                   o   r  \r  \t   [  \r
0011120   \t   P   o   s   t   S   t   r       =       (   r   e   a   s
0011140    o   n   V   e   c   !   0   ?       r   e   a   s   o   n   V
0011160    e   c   ,       "   S   o   r   r   y   ,       S   p   r   u
0011200    c   e       S   e   r   v   i   c   e       n   o   t       A
0011220    v   a   i   l   a   b   l   e       -   -       P   l   e   a
0011240    s   e       T   r   y       A   g   a   i   n       L   a   t
0011260    e   r   .   "   )  \r  \t       S   e   n   d   E   F   T   P
0011300    A   b   o   r   t   (   s   p   o   o   l   S   o   c   k   e
0011320    t   ,       L   o   n   g   W   a   i   t   A   b   o   r   t
0011340    ,       P   o   s   t   S   t   r   )      \r  \t   ]  \r  \r
0011360            C   l   o   s   e   E   F   T   P   S   o   c   (   s
0011400    p   o   o   l   S   o   c   k   e   t   )  \r           l   e
0011420    t       s   o   m   e   o   n   e   E   l   s   e   K   n   o
0011440    c   k   e   d       =       s   p   o   o   l   S   o   c   k
0011460    e   t   >   >   E   F   T   P   S   o   c   .   S   o   m   e
0011500    o   n   e   E   l   s   e   W   a   i   t   i   n   g  \r    
0011520        i   f       d   o   c       t   h   e   n  \r            
0011540        [  \r                   P   o   s   t   S   t   r       =
0011560        "   "       /   /       N   o       i   n   f   o   r   m
0011600    a   t   i   o   n       t   o       r   e   l   a   t   e  \r
0011620                    l   e   t       s   p   o   o   l   e   d   F
0011640    i   l   e       =       d   o   c   >   >   D   o   c   G   .
0011660    P   r   e   s   s   F   i   l   e  \r                   C   l
0011700    e   a   n   u  \0 006 020   @ 377   v 037  \0  \a  \0 035  \0
0011720   \0   (  \0  \t  \0  \r  \0 025  \0 031  \0   *  \0   ?  \0   C
0011740   \0   F  \0   M  \0   P  \0 266  \0 354  \0 360      \0  \0   @
0011760   \0  \0 001 304 377 241  \0  \0   /   G  \0  \0 351 342 370 366
0012000    p   Q   u   e   u   e   (   s   p   o   o   l   e   d   F   i
0012020    l   e   >   >   S   P   r   u   c   e   F   i   l   e   .   n
0012040    u   m   P   a   g   e   s   ,       f   a   l   s   e   )    
0012060    /   /       E   l   i   m   i   n   a   t   e       o   b   l
0012100    i   t   e   r   a   t   e   d       e   n   t   r   i   e   s
0012120   \r                   i   f       d   o   c   >   >   D   o   c
0012140    G   .   r   e   p   o   r   t   C   o   d   e       e   q    
0012160    0       t   h   e   n  \r  \t   [  \r  \t   p   r   e   s   s
0012200    F   i   l   e   I   n   d   e   x       =       p   r   e   s
0012220    s   F   i   l   e   I   n   d   e   x   +   1  \r  \t   s   p
0012240    o   o   l   e   d   F   i   l   e   >   >   S   P   r   u   c
0012260    e   F   i   l   e   .   f   i   l   e   C   o   d   e       =
0012300        F   I   L   E   P   r   e   s   s   +   1   +   (   p   r
0012320    e   s   s   F   i   l   e   I   n   d   e   x       r   e   m
0012340        F   I   L   E   P   r   e   s   s   M   o   d   u   l   u
0012360    s   )  \r  \t   I   n   i   t   S   p   r   u   c   e   F   i
0012400    l   e   (   s   p   o   o   l   e   d   F   i   l   e   ,    
0012420    1   ,       3   )   ;       F   i   l   l   I   n   N   a   m
0012440    e   s   (   0   ,       d   o   c   ,       s   p   o   o   l
0012460    e   d   F   i   l   e   )       /   /       f   i   l   l    
0012500    i   n       s   t   u   f   f       f   r   o   m       P   r
0012520    e   s   s       d   i   r   .  \r  \t   R   e   s   e   t   S
0012540    p   r   u   c   e   F   i   l   e   (   s   p   o   o   l   e
0012560    d   F   i   l   e   )  \r  \t   A   d   d   T   o   Q   u   e
0012600    u   e   (   d   o   c   )  \r  \t   i   f       n   u   m   F
0012620    i   l   e   s   S   p   o   o   l   e   d       g   e       m
0012640    a   x   Q   u   e   u   e   d   -   (   m   a   x   Q   u   e
0012660    u   e   d       r   s   h   i   f   t       2   )       %    
0012700    /   /       c   h   e   c   k       q   u   e   u   e       n
0012720    e   a   r   -   f   u   l   l  \r  \t                  \0 006
0012740  020   @ 377   v 037  \0  \a  \0 035  \0  \0   (      \0  \0   @
0012760   \0  \0 001 336 376 360  \0  \0   -   G  \0  \0 366 357 370 366
0013000    f   r   e   e   F   i   l   e   >   >   S   P   r   u   c   e
0013020    F   i   l   e   .   n   u   m   P   a   g   e   s       l   e
0013040        (   S   p   o   o   l   F   i   l   e   >   >   S   P   r
0013060    u   c   e   F   i   l   e   .   n   u   m   P   a   g   e   s
0013100        r   s   h   i   f   t       2   )       t   h   e   n  \r
0013120   \t  \t   n   u   m   M   u   s   t   P   r   i   n   t       =
0013140        1  \r  \t   P   o   s   t   S   t   r   ,       s   p   o
0013160    o   l   R   e   s   u   l   t       =       "   R   e   c   e
0013200    i   v   e   d       f   r   o   m       r   e   m   o   t   e
0013220        h   o   s   t   "   ,       0  \r  \t   ]  \r            
0013240        ]       /   /       d   o   c  \r           P   o   s   t
0013260    (   d   o   c   ,       s   p   o   o   l   R   e   s   u   l
0013300    t   ,       P   o   s   t   S   t   r   )  \r           P   r
0013320    e   p   a   r   e   T   o   S   p   o   o   l   (   s   o   m
0013340    e   o   n   e   E   l   s   e   K   n   o   c   k   e   d   ?
0013360        $   I   ,       $   R   )       /   /       R   e   a   d
0013400    y   ,       d   e   n   o   t   e       w   h   e   t   h   e
0013420    r       o   t   h   e   r   s       a   t       t   h   e    
0013440    d   o   o   r  \r           r   e   s   u   l   t   i   s    
0013460    s   o   m   e   o   n   e   E   l   s   e   K   n   o   c   k
0013500    e   d  \r           ]  \r  \r   /   /       -   -   -   -   -
0013520    -   -   -   -   -   -   -   -   -   -   -   -   -   -   -   -
*
0013600    -  \r   a   n   d       P   r   e   p   a   r   e   T   o   S
0013620    p   o   o   l   (   c   u   r   s   o   r   C   h   a   r   ;
0013640        n   u   m   a   r   g   s       n   a   )       b   e    
0013660    /   /       S   p   r   u   c   e       s   p   o   o   l   e
0013700    r   ,       t   h   a   t       i   s  \r   /   /       -   -
0013720    -   -   -   -   -   -   -   -   -   -   -   -   -   -  \0 006
0013740  020   @ 377   v 037  \0  \a  \0 035  \0  \0   (      \0  \0   @
0013760   \0  \0 001 336 374 360  \0  \0   +   G  \0  \0 366 357 370 366
0014000    -   -   -   -   -   -   -   -   -   -   -   -   -   -   -   -
*
0014040    -   -   -   -   -   -  \r   /   /  \t   A   s   s   u   m   e
0014060    s       s   o   c   k   e   t       h   a   s       b   e   e
0014100    n       i   n   i   t   i   a   l   i   z   e   d   ,       a
0014120    n   d       i   s       a   t       p   r   e   s   e   n   t
0014140        c   l   o   s   e   d   .       C   a   l   l   e   d    
0014160    b   y       S   p   o   o   l   A   F   i   l   e   (   )    
0014200    a   f   t   e   r  \r   /   /       c   o   m   p   l   e   t
0014220    e       p   r   o   c   e   s   s   i   n   g       o   f    
0014240    a       p   r   e   v   i   o   u   s   l   y   -   s   p   o
0014260    o   l   e   d       f   i   l   e   ,       a   n   d       f
0014300    r   o   m       S   p   r   o   u   l   l   e   r   (   )    
0014320    i   n       S   p   r   u   c   e       t   o       b   e   g
0014340    i   n       l   i   s   t   e   n   i   n   g       o   n  \r
0014360    /   /       i   n   i   t   i   a   l       s   t   a   r   t
0014400    u   p       o   r       a   f   t   e   r       r   e   t   u
0014420    r   n   i   n   g       f   r   o   m       S   p   r   i   n
0014440    t   .       c   u   r   s   o   r   C   h   a   r       i   s
0014460        t   y   p   i   c   a   l   l   y       $   R       (   r
0014500    e   c   e   i   v   e   d   )   ,       o   r       $   I  \r
0014520    /   /       (   i   n   t   e   r   f   e   r   e   n   c   e
0014540        -   -       s   o   m   e   o   n   e       e   l   s   e
0014560        k   n   o   c   k   e   d   )   .       T   h   e       c
0014600    u   r   s   o   r       w   i   l   l       c   o   n   t   a
0014620    i   n       t   h   i   s       l   e   t   t   e   r       a
0014640    n   d       t   h   e       l   o   w       o   r   d   e   r
0014660        d   i   g   i   t       o   f  \r   /   /       t   h   e
0014700        n   u   m   b   e   r       o   f       f   i   l   e   s
0014720        l   e   f   t   .       T   h   i   s       s   i  \0 006
0014740  020   @ 377   v 037  \0  \a  \0 035  \0  \0   (      \0  \0   @
0014760   \0  \0 001 336 372 360  \0  \0   )   G  \0  \0 366 357 370 366
0015000    m   p   l   e   ,       l   a   r   g   e   l   y       v   e
0015020    s   t   i   g   i   a   l       c   o   d   e   ,       a   s
0015040    s   i   s   t   s       i   n       s   t   a   t   u   s    
0015060    d   i   s   p   l   a   y   .      \r                   [  \r
0015100                    l   e   t       f   o   r   e   i   g   n   P
0015120    o   r   t       =       v   e   c       l   e   n   P   o   r
0015140    t   ;       Z   e   r   o   (   f   o   r   e   i   g   n   P
0015160    o   r   t   ,       l   e   n   P   o   r   t   )  \r        
0015200            l   e   t       l   o   c   a   l   P   o   r   t    
0015220    =       v   e   c       l   e   n   P   o   r   t   ;       Z
0015240    e   r   o   (   l   o   c   a   l   P   o   r   t   ,       l
0015260    e   n   P   o   r   t   )  \r                   l   o   c   a
0015300    l   P   o   r   t   >   >   P   o   r   t   .   s   o   c   k
0015320    e   t   ^   2       =       s   o   c   k   e   t   E   F   T
0015340    P   R   e   c   e   i   v   e       /   /       #   2   0  \r
0015360                    O   p   e   n   E   F   T   P   S   o   c   (
0015400    s   p   o   o   l   S   o   c   k   e   t   ,       l   o   c
0015420    a   l   P   o   r   t   ,       f   o   r   e   i   g   n   P
0015440    o   r   t   )  \r                   C   u   r   s   o   r   C
0015460    h   a   r   (   n   a   ?       c   u   r   s   o   r   C   h
0015500    a   r   ,       $   R   )  \r                   C   u   r   s
0015520    o   r   D   i   g   i   t   (   n   u   m   F   i   l   e   s
0015540    S   p   o   o   l   e   d       r   e   m       1   0   )  \r
0015560                    ]  \r  \r  \f  \r   /   /       -   -   -   -
0015600    -   -   -   -   -   -   -   -   -   -   -   -   -   -   -   -
*
0015660    -   -  \r   a   n   d       F   e   t   c   h   A   F   i   l
0015700    e   (   )       =       v   a   l   o   f  \r   /   /       -
0015720    -   -   -   -   -   -   -   -   -   -   -   -   -   -  \0 006
0015740  020   @ 377   v 037  \0  \a  \0 035  \0  \0   (      \0  \0   @
0015760   \0  \0 001 336 370 360  \0  \0   '   G  \0  \0 366 357 370 366
0016000    -   -   -   -   -   -   -   -   -   -   -   -   -   -   -   -
*
0016040    -   -   -   -   -   -   -  \r   /   /       I   t       i   s
0016060        k   n   o   w   n       t   h   a   t       a   t       l
0016100    e   a   s   t       o   n   e       E   F   T   P       d   a
0016120    t   a       p   a   c   k   e   t       i   s       q   u   e
0016140    u   e   d   .       U   s   e       P   u   p   E   F   T   P
0016160        t   o       a   t   t   e   m   p   t       t   o       s
0016200    p   o   o   l       a       f   i   l   e   .  \r   /   /    
0016220    H   a   n   d   l   e       a   l   l       e   r   r   o   r
0016240        c   o   m   m   u   n   i   c   a   t   i   o   n       w
0016260    i   t   h       r   e   m   o   t   e       h   o   s   t   .
0016300        R   e   t   u   r   n       a   n   y       s   p   o   o
0016320    l   e   d       s   u   b   f   i   l   e       a   n   d    
0016340    a       s   u   c   c   e   s   s       r   e   p   o   r   t
0016360    .  \r   /   /       R   e   t   u   r   n   s       a       D
0016400    o   c   G       s   t   r   u   c   t   u   r   e   ,       w
0016420    i   t   h       n   o   n   -   e   m   p   t   y       f   i
0016440    e   l   d   s   :  \r   /   /       r   e   p   o   r   t   C
0016460    o   d   e   :  \r   /   /  \t           0   :       s   u   c
0016500    c   e   s   s   f   u   l   l   y       r   e   c   e   i   v
0016520    e   d       a       f   i   l   e   .  \r   /   /  \t        
0016540    o   t   h   e   r   w   i   s   e   :       E   F   T   P    
0016560    a   b   o   r   t       c   o   d   e   .  \r   /   /       P
0016600    r   e   s   s   F   i   l   e   :  \r   /   /  \t           T
0016620    h   e       s   u   b   f   i   l   e       o   f       f   r
0016640    e   e   F   i   l   e       (   o   f       S   p   o   o   l
0016660    F   i   l   e   )       c   o   n   s   u   m   e   d       b
0016700    y       t   h   e       s   p   o   o   l   i   n   g       a
0016720    t   t   e   m   p   t   ,       s   u   c   c   e   s  \0 006
0016740  020   @ 377   v 037  \0  \a  \0 035  \0  \0   (      \0  \0   @
0016760   \0  \0 001 336 366 360  \0  \0   %   G  \0  \0 366 357 370 366
0017000    s   f   u   l       o   r       n   o   t  \r   /   /  \t    
0017020                (   u   s   e   d       b   y       c   a   l   l
0017040    e   r       t   o       a   d   j   u   s   t       q   u   e
0017060    u   e   ,       e   t   c   .   )  \r   /   /       F   i   l
0017100    e   H   o   s   t   :       n   e   t   w   o   r   k       a
0017120    n   d       h   o   s   t       o   f       r   e   q   u   e
0017140    s   t   i   n   g       u   s   e   r  \r   /   /       s   p
0017160    o   o   l   S   o   c   k   e   t       s   t   i   l   l    
0017200    c   o   n   t   a   i   n   s       s   t   a   t   e       i
0017220    n   f   o   r   m   a   t   i   o   n       c   o   n   c   e
0017240    r   n   i   n   g       t   h   e       t   r   a   n   s   f
0017260    e   r   .  \r                   [  \r                   l   e
0017300    t       n   u   m   T   i   m   e   o   u   t   s   ,       b
0017320    y   t   e   C   o   u   n   t       =       m   a   x   T   i
0017340    m   e   o   u   t   s   ,       n   i   l  \r                
0017360    l   e   t       d   o   c       =       F   S   G   e   t   X
0017400    (   l   e   n   D   o   c   G   ,       S   p   r   u   c   e
0017420    Z   o   n   e   ,       0   )  \r  \t   d   o   c   >   >   D
0017440    o   c   G   .   d   u   p   l   e   x       =       (   C   a
0017460    p   a   b   i   l   i   t   i   e   s       &       m   D   u
0017500    p   l   e   x   )       n   e       0  \r                   d
0017520    o   c   >   >   D   o   c   G   .   F   i   l   e   H   o   s
0017540    t       =       @   (   l   v   (   s   p   o   o   l   S   o
0017560    c   k   e   t   >   >   E   F   T   P   S   o   c   .   i   Q
0017600    .   h   e   a   d   )   >   >   P   B   I   .   p   u   p   .
0017620    s   P   o   r   t   .   n   e   t   )  \r                   l
0017640    e   t       s       =       W   i   n   d   o   w   C   r   e
0017660    a   t   e   S   t   r   e   a   m   (   f   r   e   e   F   i
0017700    l   e   ,       k   s   T   y   p   e   W   r   i   t   e   B
0017720    e   f   o   r   e   R   e   a   d   ,       c   h   a  \0 006
0017740  020   @ 377   v 037  \0  \a  \0 035  \0  \0   (      \0  \0   @
0017760   \0  \0 001 336 364 360  \0  \0   #   G  \0  \0 366 357 370 366
0020000    r   I   t   e   m   ,       0   ,       0   ,       n   a   h
0020020    S   p   o   o   l   )  \r                   /   /       E   f
0020040    t   p       a   w   a   y   ,       s   t   o   r   i   n   g
0020060        i   n   t   o       s   t   r   e   a   m  \r  \t   [  \r
0020100   \t   l   e   t       s   t   r   ,       i   n   P   b   i    
0020120    =       n   i   l   ,       0  \r  \t   b   y   t   e   C   o
0020140    u   n   t       =       R   e   c   e   i   v   e   E   F   T
0020160    P   P   a   c   k   e   t   (   s   p   o   o   l   S   o   c
0020200    k   e   t   ,       I   n   t   e   r   P   u   p   T   i   m
0020220    e   o   u   t   ,       l   v       i   n   P   b   i   )  \r
0020240   \t   s   w   i   t   c   h   o   n       b   y   t   e   C   o
0020260    u   n   t       i   n   t   o  \r  \t                   [  \r
0020300   \t                   d   e   f   a   u   l   t   :       /   /
0020320        >   0       (   o   r       0       a   n   d       n   o
0020340    t       e   n   d       -   -       e   m   p   t   y       p
0020360    a   c   k   e   t   )   ,       g   o   t       s   o   m   e
0020400    t   h   i   n   g  \r  \t  \t   [  \r  \t  \t   l   e   t    
0020420    w   o   r   d   C   o   u   n   t       =       b   y   t   e
0020440    C   o   u   n   t       r   s   h   i   f   t       1  \r  \t
0020460   \t   l   e   t       a   d   d   r       =       l   v       i
0020500    n   P   b   i   >   >   P   B   I   .   p   u   p   .   w   o
0020520    r   d   s   ^   1  \r  \t  \t   i   f       a   d   d   r   !
0020540    0       e   q       P   r   I   n   s   t   P   a   s   s   0
0020560        &       a   d   d   r   !   1       e   q       P   r   I
0020600    n   s   t   P   a   s   s   1       t   h   e   n  \r  \t  \t
0020620            i   f       P   a   r   s   e   P   r   i   n   t   I
0020640    n   s   t   a   n   c   e   P   a   r   a   m   s   (   a   d
0020660    d   r   +   2   ,  \r  \t  \t  \t   i   n   P   b   i   >   >
0020700    P   B   I   .   p   u   p   .   l   e   n   g   t   h   -   p
0020720    u   p   O   v   B   y   t   e   s   -   4   ,       d  \0 006
0020740  020   @ 377   v 037  \0  \a  \0 035  \0  \0   (      \0  \0   @
0020760   \0  \0 001 336 362 360  \0  \0   !   G  \0  \0 366 357 370 366
0021000    o   c   )  \r  \t  \t           t   h   e   n  \r  \t  \t    
0021020            [  \r  \t  \t               R   e   l   e   a   s   e
0021040    P   B   I   (   i   n   P   b   i   )  \r  \t  \t            
0021060    i   f       d   o   c   >   >   D   o   c   G   .   n   P   a
0021100    g   e   s       g   e       f   r   e   e   F   i   l   e   >
0021120    >   S   P   r   u   c   e   F   i   l   e   .   n   u   m   P
0021140    a   g   e   s       t   h   e   n      \r  \t  \t  \t   [  \r
0021160   \t  \t  \t   s   t   r       =       P   o   s   t   S   t   r
0021200    ;       n   u   m   M   u   s   t   P   r   i   n   t       =
0021220        3  \r  \t  \t  \t   b   y   t   e   C   o   u   n   t    
0021240    =       E   F   T   P   A   b   o   r   t   S   e   n   t  \r
0021260   \t  \t  \t   d   o   c   a   s   e       E   F   T   P   S   e
0021300    r   v   e   r   F   a   i   l   e   d  \r  \t  \t  \t   ]  \r
0021320   \t  \t               d   o   c   >   >   D   o   c   G   .   n
0021340    P   a   g   e   s       =       0  \r  \t  \t               l
0021360    o   o   p  \r  \t  \t               ]  \r  \t  \t   l   e   t
0021400        w   o   r   d   s   W   r   i   t       =       W   i   n
0021420    d   o   w   W   r   i   t   e   B   l   o   c   k   (   s   ,
0021440        a   d   d   r   ,       w   o   r   d   C   o   u   n   t
0021460    )  \r  \t  \t   l   e   t       c   h   r       =       a   d
0021500    d   r   >   >   B   y   t   e   ^   b   y   t   e   C   o   u
0021520    n   t       /   /       i   n       c   a   s   e       o   d
0021540    d  \r  \t  \t   R   e   l   e   a   s   e   P   B   I   (   i
0021560    n   P   b   i   )  \r  \t  \t   i   f       w   o   r   d   C
0021600    o   u   n   t       n   e       w   o   r   d   s   W   r   i
0021620    t       d   o  \r  \t  \t  \t   [  \r  \t  \t  \t   s   t   r
0021640        =       P   o   s   t   S   t   r   ;       n   u   m   M
0021660    u   s   t   P   r   i   n   t       =       3  \r  \t  \t  \t
0021700    b   y   t   e   C   o   u   n   t       =       E   F   T   P
0021720    A   b   o   r   t   S   e   n   t  \r  \t  \t  \t   d  \0 006
0021740  020   @ 377   v 037  \0  \a  \0 035  \0  \0   (      \0  \0   @
0021760   \0  \0 001 336 360 360  \0  \0 037   G  \0  \0 366 357 370 366
0022000    o   c   a   s   e       E   F   T   P   S   e   r   v   e   r
0022020    F   a   i   l   e   d  \r  \t  \t  \t   ]  \r  \t  \t   i   f
0022040        (   b   y   t   e   C   o   u   n   t   &   1   )       n
0022060    e       0       t   h   e   n       P   u   t   s   (   s   ,
0022100        c   h   r   )       /   /       o   n   l   y       w   o
0022120    r   k   s       i   f       l   a   s   t       i   n       f
0022140    i   l   e   !   !   !   !  \r  \t  \t   e   n   d   c   a   s
0022160    e  \r  \t  \t   ]  \r  \t                   c   a   s   e    
0022200    0   :       /   /       E   F   T   P   E   n   d   R   e   c
0022220    e   i   v   e   d       (   a   l   l       d   o   n   e   )
0022240        o   r       0       (   e   m   p   t   y       p   a   c
0022260    k   e   t   )   ,       d   e   p   e   n   d   i   n   g    
0022300    o   n       p   b   i       e   x   i   s   t   e   n   c   e
0022320   \r  \t  \t   t   e   s   t       i   n   P   b   i       t   h
0022340    e   n       d   o   c   a   s   e       1       o   r       b
0022360    r   e   a   k  \r  \t                   c   a   s   e       E
0022400    F   T   P   T   i   m   e   o   u   t   :  \r  \t  \t   n   u
0022420    m   T   i   m   e   o   u   t   s       =       n   u   m   T
0022440    i   m   e   o   u   t   s   -   1  \r  \t  \t   i   f       n
0022460    u   m   T   i   m   e   o   u   t   s       g   e       0    
0022500    &               /   /       i   f       t   r   a   f   f   i
0022520    c       i   s       h   e   a   v   y   ,       q   u   i   t
0022540        -   -       e   l   s   e       b   e       m   o   r   e
0022560        t   o   l   e   r   a   n   t  \r  \t  \t           n   o
0022600    t       s   p   o   o   l   S   o   c   k   e   t   >   >   E
0022620    F   T   P   S   o   c   .   S   o   m   e   o   n   e   E   l
0022640    s   e   W   a   i   t   i   n   g       e   n   d   c   a   s
0022660    e       /   /       w   a   i   t       a       w   h   i   l
0022700    e  \r  \t  \t   s   t   r       =       "   R   e   c   e   i
0022720    v   e   r       t   i   m   e   d       o   u   t   .  \0 006
0022740  020   @ 377   v 037  \0  \a  \0 035  \0  \0   (      \0  \0   @
0022760   \0  \0 001 336 356 360  \0  \0 035   G  \0  \0 366 357 370 366
0023000    .   .   .   "   ;       d   o   c   a   s   e       E   F   T
0023020    P   F   a   i   l   e   d  \r  \t                   c   a   s
0023040    e       E   F   T   P   A   b   o   r   t   S   e   n   t   :
0023060        s   t   r       =       "   A   b   o   r   t       h   a
0023100    d       t   o       b   e       s   e   n   t       f   r   o
0023120    m       r   e   c   e   i   v   e   r   .   .   .   .   "   ;
0023140        d   o   c   a   s   e       E   F   T   P   F   a   i   l
0023160    e   d  \r  \t                   c   a   s   e       E   F   T
0023200    P   A   b   o   r   t   R   e   c   e   i   v   e   d   :    
0023220    s   t   r       =       "   E   F   T   P   A   b   o   r   t
0023240        r   e   c   e   i   v   e   d       w   h   i   l   e    
0023260    r   e   c   e   i   v   i   n   g   .   .   .   .   "   ;    
0023300    d   o   c   a   s   e       E   F   T   P   F   a   i   l   e
0023320    d  \r  \t                   c   a   s   e       E   F   T   P
0023340    R   e   s   e   t   R   e   c   e   i   v   e   d   :  \r  \t
0023360   \t   s   t   r       =       "   R   e   s   e   t       R   e
0023400    q   u   e   s   t       .   .   .       e   x   p   e   c   t
0023420        a       r   e   s   t   a   r   t   "  \r  \t  \t   s   p
0023440    o   o   l   S   o   c   k   e   t   >   >   E   F   T   P   S
0023460    o   c   .   S   o   m   e   o   n   e   E   l   s   e   W   a
0023500    i   t   i   n   g       =       t   r   u   e  \r  \t  \t   d
0023520    o   c   a   s   e       E   F   T   P   F   a   i   l   e   d
0023540   \r  \t                   c   a   s   e       E   F   T   P   N
0023560    o   t   F   i   r   s   t   S   y   n   c   h   :       s   t
0023600    r       =       "   F   i   r   s   t       P   a   c   k   e
0023620    t       R   e   c   e   i   v   e   d       o   u   t       o
0023640    f       s   y   n   c   h   "   ;       d   o   c   a   s   e
0023660        E   F   T   P   F   a   i   l   e   d  \r  \t            
0023700        c   a   s   e       E   F   T   P   S   e   r   v   e   r
0023720    F   a   i   l   e   d   :  \r  \t  \t   S   e   n   d  \0 006
0023740  020   @ 377   v 037  \0  \a  \0 035  \0  \0   (      \0  \0   @
0023760   \0  \0 001 336 354 360  \0  \0 033   G  \0  \0 366 357 370 366
0024000    E   F   T   P   A   b   o   r   t   (   s   p   o   o   l   S
0024020    o   c   k   e   t   ,       E   x   t   e   r   n   a   l   R
0024040    e   c   e   i   v   e   r   A   b   o   r   t   ,       s   t
0024060    r   )       /   /       -   -       A   b   o   r   t   ,    
0024100    t   h   e   n       F   a   l   l       T   h   r   u       -
0024120    -  \r  \t                   c   a   s   e       E   F   T   P
0024140    F   a   i   l   e   d   :  \r  \t  \t   u   n   l   e   s   s
0024160        n   u   m   M   u   s   t   P   r   i   n   t       d   o
0024200        n   u   m   M   u   s   t   P   r   i   n   t       =    
0024220    1  \r  \t  \t   M   o   v   e   B   l   o   c   k   (   l   v
0024240        d   o   c   >   >   D   o   c   G   .   F   i   l   e   S
0024260    t   r   ,       s   t   r   ,       s   i   z   e       D   o
0024300    c   G   .   F   i   l   e   S   t   r   /   1   6   )  \r  \t
0024320   \t   b   r   e   a   k  \r  \t                   ]  \r  \t   ]
0024340        r   e   p   e   a   t  \r                   l   e   t    
0024360    n   u   m   C   h   a   r   s       =       C   u   r   r   e
0024400    n   t   P   o   s   (   s   )  \r                   l   e   t
0024420        n   u   m   U   s   e   d       =           E   n   d   o
0024440    f   s   (   s   )   ?       f   r   e   e   F   i   l   e   >
0024460    >   S   P   r   u   c   e   F   i   l   e   .   n   u   m   P
0024500    a   g   e   s   ,       W   i   n   d   o   w   N   e   x   t
0024520    P   a   g   e   (   s   )       -   1  \r                   i
0024540    f       n   o   t       n   u   m   C   h   a   r   s       &
0024560        n   u   m   U   s   e   d       t   h   e   n       n   u
0024600    m   C   h   a   r   s       =       f   r   e   e   F   i   l
0024620    e   >   >   S   P   r   u   c   e   F   i   l   e   .   p   a
0024640    g   e   S   i   z   e       l   s   h   i   f   t       1  \r
0024660                    d   o   c   >   >   D   o   c   G   .   P   r
0024700    e   s   s   F   i   l   e       =  \r  \t   C   r   e   a   t
0024720    e   S   p   r   u   c   e   S   u   b   f   i   l   e  \0 006
0024740  020   @ 377   v 037  \0  \a  \0 035  \0  \0   (      \0  \0   @
0024760   \0  \0 001 336 352 360  \0  \0 031   G  \0  \0 366 357 370 366
0025000    (   l   v       f   r   e   e   F   i   l   e   ,       1   ,
0025020        n   u   m   U   s   e   d   ,       n   u   m   C   h   a
0025040    r   s   )  \r                   C   l   o   s   e   s   (   s
0025060    )  \r                   d   o   c   >   >   D   o   c   G   .
0025100    r   e   p   o   r   t   C   o   d   e       =       b   y   t
0025120    e   C   o   u   n   t  \r                   u   n   l   e   s
0025140    s       s   p   o   o   l   S   o   c   k   e   t   >   >   E
0025160    F   T   P   S   o   c   .   T   r   a   n   s   f   e   r   N
0025200    o   t   S   t   a   r   t   e   d       d   o  \r  \t   d   o
0025220    c   >   >   D   o   c   G   .   F   i   l   e   H   o   s   t
0025240        =       @   (   l   v       s   p   o   o   l   S   o   c
0025260    k   e   t   >   >   E   F   T   P   S   o   c   .   f   r   n
0025300    P   o   r   t   .   n   e   t   )  \r                   r   e
0025320    s   u   l   t   i   s       d   o   c  \r                   ]
0025340   \r  \f  \r   /   /       -   -   -   -   -   -   -   -   -   -
0025360    -   -   -   -   -   -   -   -   -   -   -   -   -   -   -   -
*
0025420    -   -   -   -   -   -   -   -   -   -   -   -  \r   a   n   d
0025440        P   r   i   n   t   e   r   S   t   a   t   u   s   (   )
0025460        b   e       /   /       R   e   s   p   o   n   d       t
0025500    o       s   t   a   t   u   s       r   e   q   u   e   s   t
0025520    s  \r   /   /       -   -   -   -   -   -   -   -   -   -   -
0025540    -   -   -   -   -   -   -   -   -   -   -   -   -   -   -   -
*
0025600    -   -   -   -   -   -   -   -   -   -   -  \r   /   /  \t   L
0025620    i   s   t   e   n   s       o   n       s   o   c   k   e   t
0025640        2   1       f   o   r       "   E   a   r   s       P   r
0025660    o   t   o   c   o   l   "       s   t   a   t   u   s       r
0025700    e   q   u   e   s   t   s   .       R   e   s   p   o   n   d
0025720    s       a   s       d   i   r   e   c   t   e   d      \0 006
0025740  020   @ 377   v 037  \0  \a  \0 035  \0  \0   (      \0  \0   @
0025760   \0  \0 001 336 350 360  \0  \0 027   G  \0  \0 366 357 370 366
0026000    b   y       t   h   e       p   r   o   t   o   c   o   l   .
0026020   \r  \t   [  \r  \t   B   l   o   c   k   (   )       r   e   p
0026040    e   a   t   w   h   i   l   e       s   t   a   t   u   s   S
0026060    o   c   k   e   t   >   >   P   u   p   S   o   c   .   i   Q
0026100    .   h   e   a   d       e   q       0  \r  \t   l   e   t    
0026120    p   b   i       =       D   e   q   u   e   u   e   (   l   v
0026140        s   t   a   t   u   s   S   o   c   k   e   t   >   >   P
0026160    u   p   S   o   c   .   i   Q   )  \r  \t   s   w   i   t   c
0026200    h   o   n       p   b   i   >   >   P   B   I   .   p   u   p
0026220    .   t   y   p   e       i   n   t   o  \r  \t               [
0026240   \r  \t               d   e   f   a   u   l   t   :       R   e
0026260    l   e   a   s   e   P   B   I   (   p   b   i   )   ;       e
0026300    n   d   c   a   s   e  \r  \t               c   a   s   e    
0026320    t   y   p   e   P   r   i   n   t   e   r   S   t   a   t   u
0026340    s   R   e   q   u   e   s   t   :  \r  \t  \t   [  \r  \t  \t
0026360    E   x   c   h   a   n   g   e   P   o   r   t   s   (   p   b
0026400    i   )       /   /       p   r   e   p   a   r   e       t   o
0026420        r   e   s   p   o   n   d  \r  \t  \t   l   e   t       r
0026440    e   s   p   o   n   s   e       =       n   o   t       s   p
0026460    o   o   l   i   n   g   ?       1   ,  \r  \t  \t  \t   2   +
0026500    (   s   p   o   o   l   S   o   c   k   e   t   >   >   E   F
0026520    T   P   S   o   c   .   T   r   a   n   s   f   e   r   N   o
0026540    t   S   t   a   r   t   e   d   ?       0   ,       1   )  \r
0026560   \t  \t   p   b   i   >   >   P   B   I   .   p   u   p   .   w
0026600    o   r   d   s   ^   1       =       r   e   s   p   o   n   s
0026620    e  \r  \t  \t   l   e   t       c   h   a   r   P   o   s    
0026640    =       3  \r  \t  \t   A   p   p   (   p   b   i   ,   p   r
0026660    i   n   t   e   r   N   a   m   e   ,       l   v       c   h
0026700    a   r   P   o   s   )  \r  \t  \t   A   p   p   (   p   b   i
0026720    ,   "       i   s       "   ,   l   v       c   h   a  \0 006
0026740  020   @ 377   v 037  \0  \a  \0 035  \0  \0   (      \0  \0   @
0026760   \0  \0 001 336 346 360  \0  \0 025   G  \0  \0 366 357 370 366
0027000    r   P   o   s   )  \r  \t  \t   A   p   p   (   p   b   i   ,
0027020        s   e   l   e   c   t   o   n       r   e   s   p   o   n
0027040    s   e       i   n   t   o  \r  \t  \t                   [  \r
0027060   \t  \t                   c   a   s   e       1   :       "   U
0027100    n   a   v   a   i   l   a   b   l   e       "  \r  \t  \t    
0027120                c   a   s   e       2   :       "   S   p   o   o
0027140    l   i   n   g       a   n   d       w   a   i   t   i   n   g
0027160    "  \r  \t  \t                   c   a   s   e       3   :    
0027200    "   S   p   o   o   l   i   n   g       a   n   d       b   u
0027220    s   y       (   f   i   l   e       t   r   a   n   s   f   e
0027240    r       i   n       p   r   o   g   r   e   s   s   )   "  \r
0027260   \t  \t                   ]  \t  \t   ,       l   v       c   h
0027300    a   r   P   o   s   )  \r  \t  \t   i   f       r   e   s   p
0027320    o   n   s   e       e   q       1       t   h   e   n       A
0027340    p   p   (   p   b   i   ,   r   e   a   s   o   n   V   e   c
0027360    ,   l   v       c   h   a   r   P   o   s   )  \r  \t  \t   A
0027400    p   p   (   p   b   i   ,   "   *   N   "   ,   l   v       c
0027420    h   a   r   P   o   s   )  \r  \t  \t   C   o   m   p   l   e
0027440    t   e   P   u   p   (   p   b   i   ,       t   y   p   e   P
0027460    r   i   n   t   e   r   S   t   a   t   u   s   R   e   p   l
0027500    y   )  \r  \t  \t   e   n   d   c   a   s   e  \r  \t  \t   ]
0027520   \r  \t               c   a   s   e       t   y   p   e   P   r
0027540    C   a   p   a   b   i   l   i   t   y   R   e   q   u   e   s
0027560    t   :  \r  \t  \t   [  \r  \t  \t   E   x   c   h   a   n   g
0027600    e   P   o   r   t   s   (   p   b   i   )       /   /       p
0027620    r   e   p   a   r   e       t   o       r   e   s   p   o   n
0027640    d  \r  \t  \t   l   e   t       l   e   n   g   t   h       =
0027660        G   e   n   P   r   i   n   t   e   r   C   a   p   a   b
0027700    i   l   i   t   i   e   s   (   l   v       p   b   i   >   >
0027720    P   B   I   .   p   u   p   .   b   y   t   e   s   )  \0 006
0027740  020   @ 377   v 037  \0  \a  \0 035  \0  \0   (      \0  \0   @
0027760   \0  \0 001 336 344 360  \0  \0 023   G  \0  \0 366 357 370 366
0030000    +   p   u   p   O   v   B   y   t   e   s  \r  \t  \t   C   o
0030020    m   p   l   e   t   e   P   u   p   (   p   b   i   ,       t
0030040    y   p   e   P   r   C   a   p   a   b   i   l   i   t   y   R
0030060    e   p   l   y   ,       l   e   n   g   t   h   )  \r  \t  \t
0030100    e   n   d   c   a   s   e  \r  \t  \t   ]  \r  \t            
0030120    c   a   s   e       t   y   p   e   J   o   b   S   t   a   t
0030140    u   s   R   e   q   u   e   s   t   :  \r  \t  \t   [  \r  \t
0030160   \t   E   x   c   h   a   n   g   e   P   o   r   t   s   (   p
0030200    b   i   )       /   /       p   r   e   p   a   r   e       t
0030220    o       r   e   s   p   o   n   d  \r  \t  \t   l   e   t    
0030240    l   e   n   g   t   h       =       G   e   n   J   o   b   S
0030260    t   a   t   u   s   (   l   v       p   b   i   >   >   P   B
0030300    I   .   p   u   p   .   b   y   t   e   s   )   +   p   u   p
0030320    O   v   B   y   t   e   s  \r  \t  \t   C   o   m   p   l   e
0030340    t   e   P   u   p   (   p   b   i   ,       t   y   p   e   J
0030360    o   b   S   t   a   t   u   s   R   e   p   l   y   ,       l
0030400    e   n   g   t   h   )  \r  \t  \t   e   n   d   c   a   s   e
0030420   \r  \t  \t   ]  \r  \t               ]  \r  \t   ]       r   e
0030440    p   e   a   t  \r  \r   /   /       -   -   -   -   -   -   -
0030460    -   -   -   -   -   -   -   -   -   -   -   -   -   -   -   -
*
0030520    -   -   -   -   -   -   -   -   -   -   -   -   -   -   -  \r
0030540    a   n   d       I   n   i   t   S   p   o   o   l   (   s   p
0030560    r   u   c   e   C   t   x   q   )       b   e  \r   /   /    
0030600    -   -   -   -   -   -   -   -   -   -   -   -   -   -   -   -
*
0030660    -   -   -   -   -   -  \r   /   /  \t   I   n   i   t   i   a
0030700    l   i   z   e       S   p   r   o   u   l   l   e   r   Q    
0030720    (   s   p   o   o   l       q   u   e   u   e   )   ,  \0 006
0030740  020   @ 377   v 037  \0  \a  \0 035  \0  \0   (      \0  \0   @
0030760   \0  \0 001 336 342 360  \0  \0 021   G  \0  \0 366 357 370 366
0031000        a   n   d       s   p   o   o   l   S   o   c   k   e   t
0031020        (   t   h   u   s       E   F   T   P       a   n   d    
0031040    P   u   p       l   e   v   e   l       1   .   )  \r   /   /
0031060   \t   S   t   a   r   t       u   p       t   h   e       S   t
0031100    a   t   u   s   -   l   i   s   t   e   n   e   r       c   o
0031120    n   t   e   x   t   .       s   p   r   u   c   e   C   t   x
0031140    q       i   s       t   h   e       q   u   e   u   e       o
0031160    f       c   o   n   t   e   x   t   s       r   u   n       i
0031200    n       S   p   r   u   c   e   .  \r  \t   [  \r  \t   I   n
0031220    i   t   i   a   l   i   z   e   Q   u   e   u   e   (   )  \t
0031240    /   /       S   p   o   o   l   i   n   g       q   u   e   u
0031260    e  \r  \t   s   p   o   o   l   S   o   c   k   e   t       =
0031300        0  \r  \t   I   n   i   t   P   u   p   L   e   v   e   l
0031320    1   (   S   p   r   u   c   e   Z   o   n   e   ,       s   p
0031340    r   u   c   e   C   t   x   q   ,       1   0   )       /   /
0031360        u   p       t   o       1   0       b   u   f   f   e   r
0031400    s       -   -       f   o   r       n   o   w  \r  \t   I   n
0031420    i   t   E   F   T   P   P   a   c   k   a   g   e   (   )  \r
0031440   \t   s   p   o   o   l   S   o   c   k   e   t       =       F
0031460    S   G   e   t   X   (   l   e   n   E   F   T   P   S   o   c
0031500    ,       S   p   r   u   c   e   Z   o   n   e   ,       0   )
0031520   \r  \t   s   t   a   t   u   s   S   o   c   k   e   t       =
0031540        F   S   G   e   t   X   (   l   e   n   P   u   p   S   o
0031560    c   )  \r  \t   O   p   e   n   L   e   v   e   l   1   S   o
0031600    c   k   e   t   (   s   t   a   t   u   s   S   o   c   k   e
0031620    t   ,       t   a   b   l   e       [       0   ;       0   ;
0031640        s   o   c   k   e   t   P   r   i   n   t   e   r   S   t
0031660    a   t   u   s       ]   )  \r  \t   E   n   q   u   e   u   e
0031700    (   s   p   r   u   c   e   C   t   x   q   ,  \r  \t  \t   I
0031720    n   i   t   i   a   l   i   z   e   C   o   n   t   e  \0 006
0031740  020   @ 377   v 037  \0  \a  \0 035  \0  \0   (      \0  \0   @
0031760   \0  \0 001 336 340 360  \0  \0 017   G  \0  \0 366 357 370 366
0032000    x   t   (   F   S   G   e   t   X   (   S   T   A   T   S   t
0032020    a   c   k   S   i   z   e   )   ,       S   T   A   T   S   t
0032040    a   c   k   S   i   z   e   ,       P   r   i   n   t   e   r
0032060    S   t   a   t   u   s   )   )  \r  \t   /   /       T   h   e
0032100        s   p   o   o   l   e   r       i   t   s   e   l   f    
0032120    r   u   n   s       i   n       t   h   e       m   a   i   n
0032140        p   r   o   g   r   a   m       c   o   n   t   e   x   t
0032160        (   S   p   r   o   u   l   l   e   r   M   a   i   n   )
0032200   \r  \t   ]  \r  \r   /   /       -   -   -   -   -   -   -    
0032220    S   p   o   o   l   i   n   g       u   t   i   l   i   t   i
0032240    e   s       -   -   -   -   -   -   -  \r  \r   /   /       -
0032260    -   -   -   -   -   -   -   -   -   -   -   -   -   -   -   -
*
0032340    -   -   -   -   -  \r   a   n   d       A   p   p   (   p   b
0032360    i   ,       s   t   r   ,       p   C   h   a   r   P   o   s
0032400    )       b   e  \r   /   /       -   -   -   -   -   -   -   -
0032420    -   -   -   -   -   -   -   -   -   -   -   -   -   -   -   -
*
0032460    -   -   -   -   -   -   -   -   -   -   -   -   -   -  \r   /
0032500    /  \t   P   u   p       e   r   r   o   r       s   t   r   i
0032520    n   g   s       a   r   e       p   l   a   c   e   d       i
0032540    n       P   u   p       d   a   t   a   ,       w   i   t   h
0032560        c   h   a   r   a   c   t   e   r   s       e   v   e   n
0032600    -   b   y   t   e       a   l   i   g   n   e   d   ,       a
0032620    n   d       n   o       l   e   n   g   t   h   .  \r   /   /
0032640        T   h   i   s       f   u   n   c   t   i   o   n       i
0032660    n   t   e   r   f   a   c   e   s       w   i   t   h       t
0032700    h   e       P   u   p       l   e   v   e   l       1       u
0032720    t   i   l   i   t   y       f   o   r       s   e   t  \0 006
0032740  020   @ 377   v 037  \0  \a  \0 035  \0  \0   (      \0  \0   @
0032760   \0  \0 001 336 336 360  \0  \0  \r   G  \0  \0 366 357 370 366
0033000    t   i   n   g       t   h   e   m       u   p   .       I   t
0033020        m   a   i   n   t   a   i   n   s       a       c   u   r
0033040    r   e   n   t  \r   /   /       e   n   d   -   o   f   -   s
0033060    t   r   i   n   g       c   o   u   n   t       t   h   a   t
0033100        t   h   e       u   t   i   l   i   t   y       r   e   q
0033120    u   i   r   e   s       b   u   t       d   o   e   s       n
0033140    o   t       m   a   i   n   t   a   i   n   .  \r  \t   [  \r
0033160   \t   A   p   p   e   n   d   S   t   r   i   n   g   T   o   P
0033200    u   p   (   p   b   i   ,       @   p   C   h   a   r   P   o
0033220    s   ,       s   t   r   )  \r  \t   @   p   C   h   a   r   P
0033240    o   s       =       @   p   C   h   a   r   P   o   s       +
0033260        s   t   r   >   >   S   T   R   .   l   e   n   g   t   h
0033300   \r  \t   ]  \r  \r   /   /       c   o   m   p   i   l   e   i
0033320    f       f   a   l   s   e       t   h   e   n       [  \r   /
0033340    /       -   -   -   -   -   -   -   -   -   -   -   -   -   -
0033360    -   -   -   -   -   -   -   -   -   -   -   -   -   -   -   -
*
0033420    -   -   -   -   -   -   -   -  \r   /   /       l   e   t    
0033440    P   r   i   n   t   A   b   o   r   t   P   B   I   (   p   b
0033460    i   )       b   e  \r   /   /       -   -   -   -   -   -   -
0033500    -   -   -   -   -   -   -   -   -   -   -   -   -   -   -   -
*
0033540    -   -   -   -   -   -   -   -   -   -   -   -   -   -   -  \r
0033560    /   /       ~   ~       P   r   i   n   t   A   b   o   r   t
0033600    P   B   I   (   .   .   .   )       i   s       a       g   o
0033620    o   d       i   d   e   a       -   -       t   h   e       p
0033640    o   s   t   i   n   g       e   q   u   i   v   .       (   f
0033660    r   o   m       a   b   o   r   t       c   a   s   e   )  \r
0033700   \t   /   /       [  \r  \t   /   /       P   u   t   s   (   d
0033720    s   p   ,   $   *   N   )   ;       W   o   (   p   b  \0 006
0033740  020   @ 377   v 037  \0  \a  \0 035  \0  \0   (      \0  \0   @
0033760   \0  \0 001 336 334 360  \0  \0  \v   G  \0  \0 366 357 370 366
0034000    i   >   >   P   B   I   .   p   u   p   .   w   o   r   d   s
0034020    ^   1   )   ;       W   s   (   "       -       A   b   o   r
0034040    t   :           "   )  \r  \t   /   /       f   o   r       i
0034060        =       3       t   o       (   3       +       (   p   b
0034100    i   >   >   P   B   I   .   p   u   p   .   l   e   n   g   t
0034120    h   -   (   p   u   p   O   v   B   y   t   e   s   +   2   )
0034140    )       -       1   )       d   o  \r  \t  \t   /   /       P
0034160    u   t   s   (   d   s   p   ,       p   b   i   >   >   P   B
0034200    I   .   p   u   p   .   b   y   t   e   s   ^   i   )  \r  \t
0034220    /   /       ]  \r   /   /       ]       /   /       ~   ~    
0034240    d   e   p   e   n   d   i   n   g       o   n       c   o   m
0034260    p   l   e   x   i   t   y   ,       c   o   u   l   d       u
0034300    s   e       i   n       U   i   n   t       p   o   s   t    
0034320    a   c   t   i   v   i   t   y  \r  \f  \r   /   /       -   -
0034340    -   -   -   -   -       H   i   s   t   o   r   y       .    
0034360    .       .  \r  \r   /   /       D   C   S   ,       J   u   l
0034400    y       1   5   ,       1   9   7   7           4   :   5   3
0034420        P   M   ,       d   e   r   i   v   e   d       f   r   o
0034440    m       S   p   r   u   c   e   S   p   o   o   l  \r   /   /
0034460        J   u   l   y       1   6   ,       1   9   7   7        
0034500    4   :   0   1       P   M   ,       t   u   n   e       f   o
0034520    r       r   e   a   l       e   n   v   i   r   o   n   m   e
0034540    n   t  \r   /   /       J   u   l   y       1   8   ,       1
0034560    9   7   7           6   :   4   1       P   M   ,       r   e
0034600    v   i   s   i   o   n   s       f   o   r       u   s   e    
0034620    w   i   t   h       r   e   a   l       m   a   i   n       l
0034640    o   o   p  \r   /   /       J   u   l   y       2   5   ,    
0034660    1   9   7   7           1   :   2   5       P   M   ,       a
0034700    s   s   i   g   n       f   i   l   e   C   o   d   e   s    
0034720    t   o       s   p   o   o   l   e   d       s   u   b  \0 006
0034740  020   @ 377   v 037  \0  \a  \0 035  \0  \0   (      \0  \0   @
0034760   \0  \0 001 336 332 360  \0  \0  \t   G  \0  \0 366 357 370 366
0035000    f   i   l   e   s  \r   /   /       A   u   g   u   s   t    
0035020    1   ,       1   9   7   7           1   0   :   2   3       A
0035040    M   ,       a   d   d       P   r   i   n   t   S   t   a   t
0035060    u   s       f   u   n   c   t   i   o   n  \r   /   /       A
0035100    u   g   u   s   t       3   ,       1   9   7   7           1
0035120    :   4   2       P   M   ,       i   m   p   l   e   m   e   n
0035140    t       f   r   e   e   F   i   l   e   /   s   p   o   o   l
0035160    e   d       f   i   l   e   s       i   n   v   a   r   i   a
0035200    n   t   s  \r   /   /       A   u   g   u   s   t       2   2
0035220    ,       1   9   7   7           5   :   4   0       P   M   ,
0035240        f   i   l   l       i   n       n   a   m   e   s       a
0035260    f   t   e   r       f   i   l   e       a   r   r   i   v   e
0035300    s  \r   /   /       A   u   g   u   s   t       2   8   ,    
0035320    1   9   7   7           8   :   1   0       A   M   ,       S
0035340    p   r   u   c   e   -   >   S   p   r   i   n   t   ,       S
0035360    p   r   o   u   l   l   e   r   -   >   S   p   r   u   c   e
0035400   \r   /   /       S   e   p   t   e   m   b   e   r       7   ,
0035420        1   9   7   7           1   2   :   3   4       P   M   ,
0035440        a   d   d       Q   u   e   u   e       c   o   n   t   r
0035460    o   l       (   n   u   m   M   u   s   t   P   r   i   n   t
0035500    )       c   o   d   e  \r   /   /       O   c   t   o   b   e
0035520    r       2   5   ,       1   9   7   7           1   0   :   2
0035540    7       A   M   ,       u   p   g   r   a   d   e       s   p
0035560    o   o   l       e   r   r   o   r       r   e   p   o   r   t
0035600    i   n   g   ,       q   u   e   u   e       m   a   n   a   g
0035620    e   m   e   n   t  \r   /   /       N   o   v   e   m   b   e
0035640    r       3   ,       1   9   7   7           8   :   2   6    
0035660    P   M   ,       u   p   g   r   a   d   e       s   t   a   n
0035700    d   -   a   l   o   n   e       p   r   i   n   t   i   n   g
0035720    ,       v   4   .   (   2   ,   7   )  \r   /   /      \0 006
0035740  020   @ 377   v 037  \0  \a  \0 035  \0  \0   (      \0  \0   @
0035760   \0  \0 001 336 330 360  \0  \0  \a   G  \0  \0 366 357 370 366
0036000    D   e   c   e   m   b   e   r       1   6   ,       1   9   7
0036020    7           1   1   :   4   1       A   M   ,       p   o   s
0036040    t       c   o   d   e       r   e   l   e   a   s   e   s    
0036060    d   o   c       a   f   t   e   r       s   p   o   o   l    
0036100    e   r   r   o   r  \r   /   /       D   e   c   e   m   b   e
0036120    r       1   6   ,       1   9   7   7           1   1   :   4
0036140    1       A   M   ,       r   e   p   o   r   t       s   e   n
0036160    d   i   n   g       h   o   s   t       b   e   t   t   e   r
0036200   \r   /   /       J   a   n   u   a   r   y       6   ,       1
0036220    9   7   8           5   :   3   9       P   M   ,       i   m
0036240    p   r   o   v   e       c   u   r   s   o   r       r   e   p
0036260    o   r   t   i   n   g  \r   /   /       J   a   n   u   a   r
0036300    y       1   7   ,       1   9   7   8           3   :   3   2
0036320        P   M   ,       Z   e   r   o   -   l   e   n   g   t   h
0036340        E   F   T   P       D   a   t   a       p   a   c   k   e
0036360    t       i   s       O   K  \r   /   /       J   a   n   u   a
0036400    r   y       2   3   ,       1   9   7   8           8   :   2
0036420    8       A   M   ,       p   r   e   s   s   F   i   l   e   I
0036440    n   d   e   x       w   r   a   p   -   a   r   o   u   n   d
0036460        r   e   p   a   i   r   e   d  \r   /   /       M   a   y
0036500        1   5   ,       1   9   7   8           9   :   4   0    
0036520    P   M   ,       f   i   x       n   u   m   M   u   s   t   P
0036540    r   i   n   t       b   u   g       -   -       w   a   s    
0036560    f   a   r       t   o   o       c   o   n   s   e   r   v   a
0036600    t   i   v   e  \r   /   /       A   u   g   u   s   t       3
0036620    0   ,       1   9   7   8           9   :   1   0       A   M
0036640    ,       m   a   s   s   i   v   e       r   e   v   i   s   i
0036660    o   n   ,       t   o       u   s   e       "   q   u   e   u
0036700    e       o   b   j   e   c   t   "   ,       c   l   e   a   n
0036720        u   p       s   p   o   o   l   e   r  \r   /   /  \0 006
0036740  020   @ 377   v 037  \0  \a  \0 035  \0  \0   (      \0  \0   @
0036760   \0  \0 001 336 326 360  \0  \0 005   G  \0  \0 366 357 370 366
0037000        S   e   p   t   e   m   b   e   r       1   ,       1   9
0037020    7   8           1   1   :   0   4       A   M   ,       r   e
0037040    p   o   r   t       f   u   l   l   ,       n   o   t       s
0037060    p   o   o   l   i   n   g       r   e   p   o   r   t   i   n
0037100    g       t   o       e   n   d       u   s   e   r  \r   /   /
0037120        S   e   p   t   e   m   b   e   r       3   ,       1   9
0037140    7   8           6   :   5   5       P   M   ,       u   s   e
0037160        s   t   a   t   i   c       a   d   d   r   e   s   s    
0037200    i   n       s   u   b   f   i   l   e       c   r   e   a   t
0037220    i   o   n       -   -       c   r   e   a   t   e       r   e
0037240    l   .       o   t   h   e   r       s   u   b   f   i   l   e
0037260   \r   /   /       S   e   p   t   e   m   b   e   r       5   ,
0037300        1   9   7   8           9   :   5   6       A   M   ,    
0037320    o   n   e       m   o   r   e       f   u   l   l       f   i
0037340    l   e       b   u   g  \r   /   /       S   e   p   t   e   m
0037360    b   e   r       2   0   ,       1   9   7   8           1   2
0037400    :   5   6       P   M   ,       d   o   c   u   m   e   n   t
0037420    ,       r   e   f   o   r   m   a   t  \r   /   /       S   e
0037440    p   t   e   m   b   e   r       2   3   ,       1   9   7   8
0037460            1   :   5   8       A   M   ,       u   s   e       p
0037500    r   i   n   t   e   r   N   a   m   e       i   n   s   t   e
0037520    a   d       o   f       "   S   p   r   u   c   e   "       i
0037540    n       s   t   a   t   u   s       r   e   p   o   r   t  \r
0037560    /   /       O   c   t   o   b   e   r       1   5   ,       1
0037600    9   7   8           4   :   3   8       P   M   ,       a   c
0037620    c   o   u   n   t       f   o   r       f   a   s   t       f
0037640    i   l   e   s  \r   /   /       A   p   r   i   l       2   5
0037660    ,       1   9   7   9           1   1   :   2   8       A   M
0037700        u   s   e       S   p   r   u   c   e   *   .   d       n
0037720    a   m   e   s  \r   /   /       J   u   l   y       1  \0 006
0037740  020   @ 377   v 037  \0  \a  \0 035  \0  \0   (      \0  \0   @
0037760   \0  \0 001 336 324 360  \0  \0 003   G  \0  \0 366 357 370 366
0040000    8   ,       1   9   7   9           1   :   2   3       A   M
0040020        P   L   i   s   t   s       f   o   r       p   r   i   n
0040040    t   e   r       c   a   p   a   b   i   l   i   t   i   e   s
0040060        &       p   r   i   n   t       i   n   s   t   a   n   c
0040100    e       p   a   r   a   m   s  \r   /   /       J   a   n   u
0040120    a   r   y       1   8   ,       1   9   8   0           1   :
0040140    4   7       P   M   ,       s   e   t       D   o   c   G   .
0040160    d   u   p   l   e   x       t   o       m   D   u   p   l   e
0040200    x       v   a   l   u   e       b   e   f   o   r   e       P
0040220    L   i   s   t       c   h   e   c   k  \r   /   /       M   a
0040240    r   c   h       4   ,       1   9   8   0       9   :   4   1
0040260        A   M   ,       u   s   e       s   t   a   t   i   c    
0040300    f   i   r   s   t   D   C   B       t   o       p   r   e   v
0040320    e   n   t       l   o   s   s       o   f       d   i   s   p
0040340    l   a   y       s   t   r   e   a   m  \r   /   /       M   a
0040360    r   c   h       4   ,       1   9   8   0       1   :   0   0
0040400        P   M   ,       i   f       t   h   e   r   e       i   s
0040420        a       r   e   a   s   o   n       f   o   r       n   o
0040440    t       s   p   o   o   l   i   n   g   ,       s   e   n   d
0040460        i   t       a   n   d       e   c   h   o       o   n    
0040500    s   c   r   e   e   n  \r   /   /       M   a   y       1   ,
0040520        1   9   8   0   ,       1   2   :   4   6       P   M   ,
0040540        i   m   p   l   e   m   e   n   t       n   e   w       p
0040560    r   o   t   o   c   o   l       s   t   u   f   f  \r   /   /
0040600        F   e   b   r   u   a   r   y       2   ,       1   9   8
0040620    1           2   :   4   3       P   M   ,       c   h   a   n
0040640    g   e       h   a   n   d   l   i   n   g       o   f       p
0040660    r   e   s   s   F   i   l   e   I   n   d   e   x  \r  \r  \0
0040700   \0  \0  \0  \0  \0  \0  \0  \0  \0  \0  \0  \0  \0  \0  \0  \0
0040720   \0  \0  \0  \0  \0  \0  \0  \0  \0  \0  \0  \0  \0 006 020   @
0040740  377   v 037  \0  \a  \0 035  \0  \0   ( 001   G      \0  \0   @
0040760   \0  \0 001 277 322 360  \0  \0 001 277 001 277 365 356 370 366
0041000