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