$ od -c -N 50000 [_CD8_]<doradosource>MidasOtherSources.dm!4
0000000  377  \0  \0   M   S   a   v   e   O   t   h   e   r   S   o   u
0000020    r   c   e   s   .   c   m  \0 376  \0 206 340 006   f   t   p
0000040        i   v   y       c   o   n   n   e   c   t       D   o   r
0000060    a   d   o   S   o   u   r   c   e       ^  \r   d   u   m   p
0000100    /   C       M   i   d   a   s   O   t   h   e   r   S   o   u
0000120    r   c   e   s   .   d   m       ^  \r   M   S   a   v   e   O
0000140    t   h   e   r   S   o   u   r   c   e   s   .   c   m       o
0000160    v   e   r   l   a   y   s   i   n   i   t   .   b   c   p   l
0000200        m   a   k   e   f   o   n   t   .   b   c   p   l       m
0000220    d   i   .   b   c   p   l       m   d   i   r   s   .   b   c
0000240    p   l  \r 377  \0  \0   o   v   e   r   l   a   y   s   i   n
0000260    i   t   .   b   c   p   l  \0 376 001  \0 352 277   /   /  \r
0000300    /   /       O   V   E   R   L   A   Y   S   I   N   I   T   .
0000320    B   C   P   L       -       i   n   i   t   i   a   l   i   z
0000340    e       s   t   r   u   c   t   u   r   e   s       f   o   r
0000360        O   V   E   R   L   A   Y   S       p   a   c   k   a   g
0000400    e  \r   /   /       l   a   s   t       e   d   i   t   e   d
0000420        S   e   p   t   e   m   b   e   r       7   ,       1   9
0000440    7   6           1   0   :   4   2       A   M  \r   /   /  \r
0000460   \r  \t   g   e   t       "   o   v   e   r   l   a   y   s   .
0000500    d   "  \r  \t   g   e   t       "   a   l   t   o   f   i   l
0000520    e   s   y   s   .   d   "  \r  \t   g   e   t       "   d   i
0000540    s   k   s   .   d   "  \r  \r   e   x   t   e   r   n   a   l
0000560   \t   /   /       p   r   o   c   e   d   u   r   e   s       d
0000600    e   f   i   n   e   d  \r   [  \t   O   v   e   r   l   a   y
0000620    S   c   a   n  \t   /   /       (   f   p   t   r   ,       o
0000640    d   v   e   c   ,       l   e   n   g   t   h   [   ,       f
0000660    a   ,       b   u   f   ,       b   u   f   s   i 376 001  \0
0000700  240 224   z   e   ,       f   i   x   v   e   c   ,       f   i
0000720    x   s   i   z   e   ]   )       -   >       n   p   a   g   e
0000740    s   /   -   1  \r  \t   O   v   e   r   l   a   y   I   n   i
0000760    t  \t   /   /       (   o   d   v   e   c   [   ,       f   i
0001000    x   v   e   c   ]   )  \r   ]  \r  \r   e   x   t   e   r   n
0001020    a   l  \t   /   /       p   r   o   c   e   d   u   r   e   s
0001040        u   s   e   d  \r   [  \t  \t   /   /       O   .   S   .
0001060   \r  \t   S   e   t   B   l   o   c   k   ;       M   o   v   e
0001100    B   l   o   c   k   ;       Z   e   r   o  \r  \t  \t   /   /
0001120        B   F   S  \r  \t   A   c   t   O   n   D   i   s   k   P
0001140    a   g   e   s  \r   ]  \r  \r   e   x   t   e   r   n   a   l
0001160   \t   /   /       s   t   a   t   i   c   s       u   s   e   d
0001200   \r   [  \t  \t   /   /       O   .   S   .  \r  \t   s   y   s
0001220    D   i   s   k  \r   ]  \r  \r   s   t   r   u   c   t   u   r
0001240    e       O   D   V   :  \t   /   /       f   i   r   s   t    
0001260    p   a   r   t       o   f       o   v   e   r   l   a   y    
0001300    v   e 376 001  \0   a 324   c   t   o   r  \r   [  \t   n   o
0001320    v       w   o   r   d  \t   /   /       #       o   f       o
0001340    v   e   r   l   a   y   s  \r  \t   f   p       @   F   P  \t
0001360    /   /       F   P       f   o   r       o   v   e   r   l   a
0001400    y       f   i   l   e  \r   ]  \r   m   a   n   i   f   e   s
0001420    t       l   O   D   V       =       s   i   z   e       O   D
0001440    V   /   1   6  \r  \r   m   a   n   i   f   e   s   t  \r   [
0001460   \t   M   a   x   S   c   a   n   P   a   g   e   s       =    
0001500    4   0  \r   ]  \r  \r   s   t   a   t   i   c  \r   [  \t   O
0001520    V   b   u   f  \t   /   /       p   a   g   e       b   u   f
0001540    f   e   r  \r  \t   O   V   b   s   i   z   e  \t   /   /    
0001560    s   i   z   e       o   f       b   u   f   f   e   r       i
0001600    n       p   a   g   e   s  \r  \t   O   V   c   u   r   p   n
0001620   \t   /   /       c   u   r   r   e   n   t       f   i   r   s
0001640    t       p   a   g   e       i   n       b   u   f   f   e   r
0001660   \r  \t   O   V   c   u   r   n   p  \t   /   /       c   u   r
0001700    r   e   n   t       #     376 001  \0 267 357   o   f       p
0001720    a   g   e   s       i   n       b   u   f   f   e   r  \r  \t
0001740    O   V   d   a   s  \t   /   /       D   A       v   e   c   t
0001760    o   r       f   o   r       p   a   g   e   s       i   n    
0002000    b   u   f   f   e   r       +   1  \r  \t   O   V   f   p  \t
0002020    /   /       o   v   e   r   l   a   y       f   i   l   e    
0002040    F   P  \r   ]  \r  \r  \r   l   e   t       O   v   e   r   l
0002060    a   y   I   n   i   t   (   o   d   v   ,       f   i   x   v
0002100    ;       n   u   m   a   r   g   s       n   a   )       b   e
0002120   \r   [  \t   e   x   t   e   r   n   a   l  \t   /   /       i
0002140    n       O   V   E   R   L   A   Y   S  \r  \t       [       O
0002160    v   e   r   l   a   y   F   p  \r  \t               O   v   e
0002200    r   l   a   y   F   a   u   l   t   s  \r  \t               @
0002220    O   v   e   r   l   a   y   N   u   m   b   e   r  \r  \t    
0002240            @   O   v   e   r   l   a   y   F   a   u   l   t   P
0002260    r   o   c  \r  \t               F   i   r   s   t   O   D  \r
0002300   \t               L   a   s   t   O   D  \r  \t 376 001  \0 237
0002320    ~       ]  \r  \t   O   v   e   r   l   a   y   F   p       =
0002340        l   v       o   d   v   >   >   O   D   V   .   f   p  \r
0002360   \t   O   v   e   r   l   a   y   F   a   u   l   t   s       =
0002400        o   d   v   +   l   O   D   V  \r  \t   l   e   t       n
0002420    o   v       =       o   d   v   >   >   O   D   V   .   n   o
0002440    v  \r  \t   S   e   t   B   l   o   c   k   (   O   v   e   r
0002460    l   a   y   F   a   u   l   t   s   ,       #   1   0   0   0
0002500    0   +   l   v       O   v   e   r   l   a   y   N   u   m   b
0002520    e   r   ,       n   o   v   )  \t   /   /       I   S   Z  \r
0002540   \t   O   v   e   r   l   a   y   F   a   u   l   t   s   !   (
0002560    n   o   v   -   1   )       =       #   2   0   0   0   +   l
0002600    v       O   v   e   r   l   a   y   F   a   u   l   t   P   r
0002620    o   c  \t   /   /       J   M   P       @  \r  \t   F   i   r
0002640    s   t   O   D       =       O   v   e   r   l   a   y   F   a
0002660    u   l   t   s   +   n   o   v  \r  \t   L   a   s   t   O   D
0002700        =       F   i   r   s   t   O   D   +   (   n   o   v   -
0002720    1 376 001  \0   f  \n   )   *   O   D   s   i   z   e  \r  \t
0002740    i   f       n   a       g   e       2       t   h   e   n  \t
0002760    /   /       f   i   x       u   p       s   w   a   p   p   e
0003000    d   -   o   u   t       s   t   a   t   i   c   s  \r  \t    
0003020    [       l   e   t       f   i   x   p   ,       v   a   l    
0003040    =       f   i   x   v   ,       O   v   e   r   l   a   y   F
0003060    a   u   l   t   s  \r  \t               w   h   i   l   e    
0003100    @   f   i   x   p       g   e       0       d   o  \r  \t    
0003120                [       l   e   t       n   f   i   x   p       =
0003140        f   i   x   p   +   @   f   i   x   p   +   1  \r  \t    
0003160                            [       f   i   x   p       =       f
0003200    i   x   p   +   1  \r  \t                                    
0003220    i   f       f   i   x   p       e   q       n   f   i   x   p
0003240        b   r   e   a   k  \r  \t                                
0003260        (   @   f   i   x   p   )   !   0       =       v   a   l
0003300   \r  \t                               ]       r   e   p   e   a
0003320    t  \r  \t             376 001  \0   c 266               v   a
0003340    l       =       v   a   l   +   1  \r  \t                   ]
0003360   \r  \t       ]  \r   ]  \r  \r   l   e   t       O   v   e   r
0003400    l   a   y   S   c   a   n   (   f   p   t   r   ,       o   d
0003420    v   ,       l   e   n   ,       f   a   ,       p   b   u   f
0003440    ,       b   s   i   z   e   ,       f   i   x   v   ,       f
0003460    s   i   z   e   ;       n   u   m   a   r   g   s       n   a
0003500    )       =       v   a   l   o   f  \r   [  \t   /   /       I
0003520    n   i   t   i   a   l   i   z   e       t   h   e       w   o
0003540    r   k       a   r   e   a  \r  \t   Z   e   r   o   (   o   d
0003560    v   ,       l   e   n   )  \r  \t   M   o   v   e   B   l   o
0003600    c   k   (   l   v       o   d   v   >   >   O   D   V   .   f
0003620    p   ,       f   p   t   r   ,       l   F   P   )  \r  \t   l
0003640    e   t       m   a   x   o   v   s       =       (   l   e   n
0003660    -   l   O   D   V   )   /   (   O   D   s   i   z   e   +   1
0003700    )  \r  \r  \t   l   e   t       m   y   b   u   f       =    
0003720    v   e   c       #   4   0   2  \r  \t   t 376 001  \0 235 367
0003740    e   s   t       (   n   a       l   s       6   )       %    
0003760    (   b   s   i   z   e       l   s       #   4   0   2   )  \r
0004000   \t   i   f   s   o       O   V   b   u   f   ,       O   V   b
0004020    s   i   z   e       =       m   y   b   u   f   ,       1  \r
0004040   \t   i   f   n   o   t  \r  \t       [       O   V   b   u   f
0004060    ,       O   V   b   s   i   z   e       =       p   b   u   f
0004100    ,       (   b   s   i   z   e   -   1   )   /   #   4   0   1
0004120   \r  \t               i   f       O   V   b   s   i   z   e    
0004140    g   r       M   a   x   S   c   a   n   P   a   g   e   s    
0004160    t   h   e   n       O   V   b   s   i   z   e       =       M
0004200    a   x   S   c   a   n   P   a   g   e   s  \r  \t       ]  \r
0004220   \t   O   V   d   a   s       =       O   V   b   u   f   +   (
0004240    O   V   b   s   i   z   e       l   s   h   i   f   t       8
0004260    )  \r  \t   @   O   V   d   a   s       =       f   p   t   r
0004300    >   >   F   P   .   l   e   a   d   e   r   V   i   r   t   u
0004320    a   l   D   a  \r  \t   O   V   c   u   r   p   n   ,       O
0004340  376 001  \0   @  \r   V   c   u   r   n   p       =       0   ,
0004360        0  \r  \t   O   V   f   p       =       f   p   t   r  \r
0004400   \t   l   e   t       b   u   f       =       a   d   v   a   n
0004420    c   e   t   o   p   a   g   e   (   1   ,       2   )  \t   /
0004440    /       r   e   a   d       f   i   r   s   t       d   a   t
0004460    a       p   a   g   e  \r  \t   l   e   t       p   n       =
0004500        b   u   f   !   1   +   1  \r  \t   i   f       p   n    
0004520    l   s       2       r   e   s   u   l   t   i   s       0  \t
0004540    /   /       n   o       o   v   e   r   l   a   y   s  \r  \t
0004560    i   f       n   a       g   e       4       t   h   e   n  \t
0004600    /   /       u   s   e       f   a  \r  \t       [       O   V
0004620    c   u   r   p   n   ,       O   V   c   u   r   n   p   ,    
0004640    @   O   V   d   a   s       =       f   a   >   >   F   A   .
0004660    p   a   g   e   N   u   m   b   e   r   ,       0   ,       f
0004700    a   >   >   F   A   .   d   a  \r  \t       ]  \r  \t   l   e
0004720    t       o   v   n   u   m       =       0  \r  \t   l   e   t
0004740        o   f   v     376 001  \0   z 034   =       o   d   v   +
0004760    l   O   D   V  \r  \t   l   e   t       f   o   d       =    
0005000    o   f   v   +   m   a   x   o   v   s  \r  \t   l   e   t    
0005020    o   d       =       f   o   d  \r  \t   l   e   t       f   i
0005040    x   i       =       0  \r  \r  \t       [       i   f       o
0005060    v   n   u   m       e   q       m   a   x   o   v   s       r
0005100    e   s   u   l   t   i   s       -   1  \r  \t               o
0005120    d   >   >   O   D   .   f   i   r   s   t   P   n       =    
0005140    p   n  \r  \t               l   e   t       b   u   f       =
0005160        a   d   v   a   n   c   e   t   o   p   a   g   e   (   p
0005200    n   ,       M   a   x   S   c   a   n   P   a   g   e   s   )
0005220   \r  \t               i   f       b   u   f       e   q       0
0005240        b   r   e   a   k  \r  \t               o   d   >   >   O
0005260    D   .   d   a       =       O   V   d   a   s   !   (   (   b
0005300    u   f   -   O   V   b   u   f   )       r   s   h   i   f   t
0005320        8   )  \r  \t               l   e   t       s   k   i   p
0005340        =       b   u   f   !   1   +   # 376 001  \0 214 374   2
0005360    0  \r  \t               l   e   t       n   p   a   g   e   s
0005400        =       (   b   u   f   !   4   +   #   3   7   7   )    
0005420    r   s   h   i   f   t       8  \r  \t               l   e   t
0005440        b   u   f       =       a   d   v   a   n   c   e   t   o
0005460    p   a   g   e   (   p   n       +       s   k   i   p       r
0005500    s   h   i   f   t       8   ,       M   a   x   S   c   a   n
0005520    P   a   g   e   s   )  \r  \t               l   e   t       w
0005540    n       =       s   k   i   p   &   #   3   7   7  \r  \t    
0005560            l   e   t       n       =       b   u   f   !   w   n
0005600   \r  \t               l   e   t       n   w       =       O   V
0005620    b   u   f   +   (   O   V   c   u   r   n   p       l   s   h
0005640    i   f   t       8   )   -   b   u   f  \r  \t               i
0005660    f       n   a       g   e       8       t   h   e   n  \r  \t
0005700                    [       i   f       f   i   x   i   +   n   +
0005720    1       g   e       f   s   i   z   e       r   e   s   u   l
0005740    t   i   s       -   2  \r  \t                           f 376
0005760  001  \0 235  \0   i   x   v   !   f   i   x   i       =       n
0006000   \r  \t                           f   i   x   i       =       f
0006020    i   x   i   +   1  \r  \t                   ]  \r  \t        
0006040        f   o   r       i       =       1       t   o       n    
0006060    d   o  \r  \t                   [       w   n       =       w
0006100    n   +   1  \r  \t                           i   f       w   n
0006120        g   e       n   w       t   h   e   n  \r  \t            
0006140                    [       b   u   f       =       a   d   v   a
0006160    n   c   e   t   o   p   a   g   e   (   O   V   c   u   r   p
0006200    n   +   O   V   c   u   r   n   p   ,       M   a   x   S   c
0006220    a   n   P   a   g   e   s   )  \r  \t                        
0006240                w   n       =       w   n   -   n   w  \r  \t    
0006260                                    n   w       =       O   V   c
0006300    u   r   n   p       l   s   h   i   f   t       8  \r  \t    
0006320                            ]  \r  \t                           l
0006340    e   t       s   t   a   t       =       b   u   f   !   w   n
0006360   \r  \t         376 001  \0   r   4                   @   s   t
0006400    a   t       =       o   f   v   +   o   v   n   u   m  \r  \t
0006420                            i   f       n   a       g   e       8
0006440        t   h   e   n  \r  \t                               [    
0006460    f   i   x   v   !   f   i   x   i       =       s   t   a   t
0006500   \r  \t                                       f   i   x   i    
0006520    =       f   i   x   i   +   1  \r  \t                        
0006540        ]  \r  \t                           w   n       =       w
0006560    n   +   1  \r  \t                   ]  \r  \t               p
0006600    n       =       p   n   +   n   p   a   g   e   s  \r  \t    
0006620            o   v   n   u   m       =       o   v   n   u   m   +
0006640    1  \r  \t               o   d       =       o   d   +   O   D
0006660    s   i   z   e  \r  \t       ]       r   e   p   e   a   t  \r
0006700   \r  \t   M   o   v   e   B   l   o   c   k   (   o   f   v   +
0006720    o   v   n   u   m   ,       f   o   d   ,       o   d   +   O
0006740    D   s   i   z   e   -   f   o   d   )  \t   /   /       n   e
0006760    e   d       1       e   x   t   r 376 001  \0   1   ^   a    
0007000    f   i   r   s   t   P   n  \r  \t   o   d   v   >   >   O   D
0007020    V   .   n   o   v       =       o   v   n   u   m  \r  \t   O
0007040    v   e   r   l   a   y   I   n   i   t   (   o   d   v   )  \r
0007060   \t   i   f       n   a       g   e       8       t   h   e   n
0007100        f   i   x   v   !   f   i   x   i       =       -   1  \r
0007120   \t   r   e   s   u   l   t   i   s       f   i   x   i   +   1
0007140   \r   ]  \r  \r   a   n   d       a   d   v   a   n   c   e   t
0007160    o   p   a   g   e   (   n   e   w   p   n   ,       n   p   a
0007200    g   e   s   )       =       v   a   l   o   f  \r   [  \t   w
0007220    h   i   l   e       n   e   w   p   n       g   e       (   O
0007240    V   c   u   r   p   n   +   O   V   c   u   r   n   p   )    
0007260    d   o  \r                       [  \t   l   e   t       n   e
0007300    x   t   d   a       =       O   V   d   a   s   !   O   V   c
0007320    u   r   n   p  \r  \t   i   f       n   e   x   t   d   a    
0007340    e   q       e   o   f   D   A       r   e   s   u   l   t   i
0007360    s       0  \r  \t   O   V   c   u   r   p   n       = 376 001
0007400   \0 221   {       O   V   c   u   r   p   n   +   O   V   c   u
0007420    r   n   p  \r  \t   l   e   t       n   s   p   0       =    
0007440    M   a   x   S   c   a   n   P   a   g   e   s   -   O   V   b
0007460    s   i   z   e  \r  \t   l   e   t       n   s   p   1       =
0007500        n   e   w   p   n   -   O   V   c   u   r   p   n  \r  \t
0007520    l   e   t       n   s   p       =       (   n   s   p   0    
0007540    l   s       n   s   p   1   ?       n   s   p   0   ,       n
0007560    s   p   1   )  \r  \t   l   e   t       n   p   1       =    
0007600    n   s   p   +   O   V   b   s   i   z   e  \r  \t   i   f    
0007620    n   p   a   g   e   s       g   r       n   p   1       t   h
0007640    e   n       n   p   a   g   e   s       =       n   p   1  \r
0007660   \t   l   e   t       C   A   s       =       v   e   c       M
0007700    a   x   S   c   a   n   P   a   g   e   s  \r  \t   S   e   t
0007720    B   l   o   c   k   (   C   A   s   ,       O   V   b   u   f
0007740    ,       M   a   x   S   c   a   n   P   a   g   e   s   )  \r
0007760   \t   f   o   r       i       =       1       t   o       O   V
0010000    b   s   i 376 001  \0 264   a   z   e   -   1       d   o  \r
0010020   \t               C   A   s   !   (   n   s   p   +   i   )    
0010040    =       O   V   b   u   f   +   (   i       l   s   h   i   f
0010060    t       8   )  \r  \t   l   e   t       D   A   s       =    
0010100    v   e   c       M   a   x   S   c   a   n   P   a   g   e   s
0010120    +   1  \r  \t   D   A   s   !   0       =       n   e   x   t
0010140    d   a  \r  \t   S   e   t   B   l   o   c   k   (   D   A   s
0010160    +   1   ,       f   i   l   l   I   n   D   A   ,       M   a
0010200    x   S   c   a   n   P   a   g   e   s   )  \r  \t   l   e   t
0010220        l   a   s   t   n   c       =       n   i   l  \r  \t   l
0010240    e   t       l   a   s   t   p   n       =       A   c   t   O
0010260    n   D   i   s   k   P   a   g   e   s   (   s   y   s   D   i
0010300    s   k   ,       C   A   s   -   O   V   c   u   r   p   n   ,
0010320        D   A   s   -   O   V   c   u   r   p   n   ,       O   V
0010340    f   p   ,       O   V   c   u   r   p   n   ,       O   V   c
0010360    u   r   p   n   +   n   p   a   g   e   s   -   1   ,       D
0010400    C   r   e   a   d   D   ,     376  \0 334 367 373   l   v    
0010420    l   a   s   t   n   c   )  \r  \t   O   V   c   u   r   p   n
0010440        =       O   V   c   u   r   p   n   +   n   s   p  \r  \t
0010460    O   V   c   u   r   n   p       =       l   a   s   t   p   n
0010500    +   1   -   O   V   c   u   r   p   n  \r  \t   M   o   v   e
0010520    B   l   o   c   k   (   O   V   d   a   s   ,       D   A   s
0010540    +   n   s   p   ,       O   V   c   u   r   n   p   +   1   )
0010560   \r  \t   i   f       l   a   s   t   n   c       e   q       0
0010600        t   h   e   n  \r  \t       [       O   V   c   u   r   n
0010620    p       =       O   V   c   u   r   n   p   -   1   ;       O
0010640    V   d   a   s   !   O   V   c   u   r   n   p       =       e
0010660    o   f   D   A       ]  \r                       ]  \r  \t   r
0010700    e   s   u   l   t   i   s       O   V   b   u   f   +   (   n
0010720    e   w   p   n   -   O   V   c   u   r   p   n   )       l   s
0010740    h   i   f   t       8  \r   ]  \r 377  \0  \0   m   a   k   e
0010760    f   o   n   t   .   b   c   p   l  \0 376 001  \0 207 312   /
0011000    /   P   r   o   g   r   a   m       t   o       m   a   k   e
0011020        G   A   C   H   A   1   0   .   b   r  \r  \r   g   e   t
0011040        "   s   t   r   e   a   m   s   .   d   "  \r   g   e   t
0011060        "   a   l   t   o   f   i   l   e   s   y   s   .   d   "
0011100   \r  \r   e   x   t   e   r   n   a   l  \r   [  \t   /   /   O
0011120    S  \r  \t   O   p   e   n   F   i   l   e   ;       F   i   l
0011140    e   L   e   n   g   t   h   ;       C   a   l   l   S   w   a
0011160    t   ;       P   o   s   i   t   i   o   n   P   a   g   e  \r
0011200   \t   R   e   a   d   B   l   o   c   k   ;       C   l   o   s
0011220    e   s   ;       W   r   i   t   e   B   l   o   c   k   ;    
0011240    P   u   t   s  \r  \r   /   /   D   e   f   i   n   e   d    
0011260    h   e   r   e  \r  \t   M   a   k   e   F   o   n   t  \r   ]
0011300   \r  \r   l   e   t       M   a   k   e   F   o   n   t   (   L
0011320    a   y   o   u   t   ,   u   s   e   r   P   a   r   a   m   s
0011340    ,   C   F   A   )       b   e  \r   [  \t   l   e   t       F
0011360    o   n   t   S   t   r   e   a   m       =       O   p   e 376
0011400  001  \0   Y   !   n   F   i   l   e   (   "   G   A   C   H   A
0011420    1   0   .   A   L   "   ,   k   s   T   y   p   e   R   e   a
0011440    d   O   n   l   y   ,   w   o   r   d   I   t   e   m   )  \r
0011460   \t   l   e   t       S   i   z   e   F   o   n   t       =    
0011500    (   F   i   l   e   L   e   n   g   t   h   (   F   o   n   t
0011520    S   t   r   e   a   m   )   +   1   )       r   s   h   i   f
0011540    t       1  \r  \t   i   f       S   i   z   e   F   o   n   t
0011560        n   e       2   1   7   0   B       t   h   e   n       C
0011600    a   l   l   S   w   a   t   (   "   W   r   o   n   g       s
0011620    i   z   e   "   )  \r  \t   P   o   s   i   t   i   o   n   P
0011640    a   g   e   (   F   o   n   t   S   t   r   e   a   m   ,   1
0011660    )  \r  \t   l   e   t       F   o   n   t   P       =       v
0011700    e   c       3   0   0   0  \r  \t   R   e   a   d   B   l   o
0011720    c   k   (   F   o   n   t   S   t   r   e   a   m   ,   F   o
0011740    n   t   P   ,   S   i   z   e   F   o   n   t   )  \r  \t   C
0011760    l   o   s   e   s   (   F   o   n   t   S   t   r   e   a   m
0012000    )  \r  \t   l 376 001  \0 271 314   e   t       B   R   S   t
0012020    r   e   a   m       =       O   p   e   n   F   i   l   e   (
0012040    "   g   a   c   h   a   1   0   .   b   r   "   ,   k   s   T
0012060    y   p   e   W   r   i   t   e   O   n   l   y   ,   w   o   r
0012100    d   I   t   e   m   )  \r  \t   f   o   r       I       =    
0012120    0       t   o       3   0   B       d   o  \r  \t   [       P
0012140    u   t   s   (   B   R   S   t   r   e   a   m   ,   t   a   b
0012160    l   e       [  \r  \t  \t   1   0   0   0   B   ;  \t   2   2
0012200    2   6   B   ;  \t   0   B   ;  \t   1   7   B   ;  \t   0   B
0012220    ;  \t   2   5   B  \r  \t  \t   0   B   ;  \t   3   0   B   ;
0012240   \t   0   B   ;  \t   2   2   2   3   B   ;  \t   0   B   ;  \t
0012260    2   2   2   5   B  \r  \t  \t   0   B   ;  \t   0   B   ;  \t
0012300    0   B   ;  \t   1   B   ;  \t   1   4   0   B   ;  \t   2   B
0012320   \r  \t  \t   2   5   0   6   B   ;  \t   6   7   5   5   6   B
0012340    ;  \t   7   2   1   2   0   B   ;  \t   1   B   ;  \t   1   B
0012360    ;  \t   2   B  \r  \t  \t   2   1   7   2   B       ]       !
0012400    I   )  \r  \t   ]  \r  \t   W   r 376  \0 235   1 252   i   t
0012420    e   B   l   o   c   k   (   B   R   S   t   r   e   a   m   ,
0012440    F   o   n   t   P   ,   S   i   z   e   F   o   n   t   )  \r
0012460   \t   P   u   t   s   (   B   R   S   t   r   e   a   m   ,   0
0012500    )   ;       P   u   t   s   (   B   R   S   t   r   e   a   m
0012520    ,   7   7   7   7   7   B   )  \r  \t   P   u   t   s   (   B
0012540    R   S   t   r   e   a   m   ,   1   )   ;       P   u   t   s
0012560    (   B   R   S   t   r   e   a   m   ,   0   )   ;       P   u
0012600    t   s   (   B   R   S   t   r   e   a   m   ,   0   )  \r  \t
0012620    C   l   o   s   e   s   (   B   R   S   t   r   e   a   m   )
0012640    ;       f   i   n   i   s   h  \r   ]  \r 377  \0  \0   m   d
0012660    i   .   b   c   p   l  \0 376 001  \0 300   S   /   /       L
0012700    o   o   k   u   p   E   n   t   r   i   e   s   :  \r   /   /
0012720        l   a   s   t       e   d   i   t   e   d       4       D
0012740    e   c   e   m   b   e   r       1   9   7   7       b   y    
0012760    E   .       F   i   a   l   a  \r  \r   /   /           L   o
0013000    o   k       u   p       a       c   o   l   l   e   c   t   i
0013020    o   n       o   f       n   a   m   e   s       i   n       a
0013040        d   i   r   e   c   t   o   r   y   .  \r   /   /        
0013060    S       i   s       t   h   e       d   i   r   e   c   t   o
0013100    r   y       (   a       d   i   s   k       s   t   r   e   a
0013120    m   )   ,       w   h   i   c   h       g   e   t   s       r
0013140    e   s   e   t   .  \r   /   /           N   a   m   e   V   e
0013160    c       i   s       a       v   e   c   t   o   r       o   f
0013200        C   n   t       s   t   r   i   n   g   s   :  \r   /   /
0013220                            z   e   r   o   s       i   n       N
0013240    a   m   e   V   e   c       a   r   e       i   g   n   o   r
0013260    e   d   .  \r   /   /           P   r   V   e 376 001  \0 337
0013300  235   c       i   s       a       v   e   c   t   o   r       o
0013320    f       l   D   V   *   C   n   t       w   o   r   d   s    
0013340    i   n   t   o       w   h   i   c   h       t   h   e       d
0013360    i   r   e   c   t   o   r   y  \r   /   /                    
0013400        e   n   t   r   i   e   s       (   w   i   t   h   o   u
0013420    t       t   h   e       n   a   m   e   )       a   r   e    
0013440    r   e   a   d   .  \r   /   /           I   f       F   i   l
0013460    e   s   O   n   l   y   ,       o   n   l   y       l   o   o
0013500    k   s       a   t       d   v   T   y   p   e   F   i   l   e
0013520        e   n   t   r   i   e   s   .  \r   /   /           B   u
0013540    f   ,       i   f       s   u   p   p   l   i   e   d   ,    
0013560    i   s       a       b   u   f   f   e   r       o   f       s
0013600    i   z   e       B   u   f   L   e   n  \r  \r   /   /        
0013620    R   e   t   u   r   n   s       n   u   m   b   e   r       o
0013640    f       n   a   m   e   s       n   o   t       f   o   u   n
0013660    d       (   h   o   p   e   f   u   l   l   y       0   )   .
0013700   \r 376 001  \0 212 021   /   /           T   h   o   s   e    
0013720    n   a   m   e   s       w   i   l   l       h   a   v   e    
0013740    0       i   n       t   h   e       f   i   r   s   t       w
0013760    o   r   d       o   f       t   h   e   i   r       P   r   V
0014000    e   c       e   n   t   r   i   e   s   .  \r          \r   g
0014020    e   t       "   A   l   t   o   F   i   l   e   S   y   s   .
0014040    d   "  \r  \r   e   x   t   e   r   n   a   l       [  \r  \t
0014060   \t   /   /       D   e   f   i   n   e   d       h   e   r   e
0014100   \r  \t   L   o   o   k   u   p   E   n   t   r   i   e   s  \r
0014120   \r  \t  \t   /   /       O   S  \r  \t   R   e   s   e   t   s
0014140    ;       G   e   t   s   ;       E   n   d   o   f   s  \r  \t
0014160    D   v   e   c  \r  \t   M   o   v   e   B   l   o   c   k  \r
0014200   \t   R   e   a   d   B   l   o   c   k  \r  \t   U   s   c  \r
0014220   \t   Z   e   r   o  \r  \t   ]  \r  \r   m   a   n   i   f   e
0014240    s   t       [  \r  \t   M   i   n   B   u   f   L   e   n    
0014260    =       l   D   V   +   l   S   T   R   I   N   G  \t   /   /
0014300        M   i   n   i   m 376 001  \0 326 226   u   m       b   u
0014320    f   f   e   r       s   i   z   e  \r  \t   M   a   x   B   u
0014340    f   L   e   n       =       #   7   7   7   7   7  \t   /   /
0014360        M   a   x   i   m   u   m       b   u   f   f   e   r    
0014400    s   i   z   e       t   o       a   v   o   i   d       U   s
0014420    c  \r  \t   ]  \r  \r   l   e   t       L   o   o   k   u   p
0014440    E   n   t   r   i   e   s   (   S   ,       N   a   m   e   V
0014460    e   c   ,       P   r   V   e   c   ,       C   n   t   ,    
0014500    F   i   l   e   s   O   n   l   y   ,       B   u   f   ,    
0014520    B   u   f   L   e   n   )       =       v   a   l   o   f    
0014540   \r   [   L   U   E  \t  \r  \t   l   e   t       t   y   p   D
0014560    V       =       F   i   l   e   s   O   n   l   y       ?    
0014600    d   v   T   y   p   e   F   i   l   e   ,   d   v   T   y   p
0014620    e   F   r   e   e  \r  \t   i   f       U   s   c   (   B   u
0014640    f   L   e   n   ,       M   a   x   B   u   f   L   e   n   )
0014660        g   r       0       t   h   e   n       B   u   f   L   e
0014700    n       =       M   a   x   B   u   f   L 376 001  \0   O 235
0014720    e   n  \r  \r  \t   l   e   t       N   o   t   F   o   u   n
0014740    d       =       0  \t  \t   /   /       N   u   m   b   e   r
0014760        o   f       n   a   m   e   s       n   o   t       f   o
0015000    u   n   d       y   e   t  \r  \t   f   o   r       i       =
0015020        0       t   o       C   n   t   -   1       d   o  \r  \t
0015040            i   f       N   a   m   e   V   e   c   !   i       n
0015060    e       0       t   h   e   n       N   o   t   F   o   u   n
0015100    d       =       N   o   t   F   o   u   n   d   +   1  \r  \t
0015120    Z   e   r   o   (   P   r   V   e   c   ,   l   D   V   *   C
0015140    n   t   )  \t   /   /       C   l   e   a   r       D   V   '
0015160    s  \r  \t   R   e   s   e   t   s   (   S   )      \r  \t   l
0015200    e   t       e   n   d   p       =       B   u   f  \t   /   /
0015220        E   n   d       o   f       v   a   l   i   d       i   n
0015240    f   o       i   n       b   u   f   f   e   r  \r  \r  \t   u
0015260    n   t   i   l       E   n   d   o   f   s   (   S   )       d
0015300    o  \r  \t   [   F   I   L   L  \r  \t           e   n   d   p
0015320  376 001  \0  \0 226       =       R   e   a   d   B   l   o   c
0015340    k   (   S   ,   e   n   d   p   ,   B   u   f   +   B   u   f
0015360    L   e   n   -   e   n   d   p   )   +   e   n   d   p  \t   /
0015400    /       F   i   l   l       b   u   f   f   e   r  \r  \t    
0015420        l   e   t       d   v       =       B   u   f  \r  \t    
0015440        [   I   T   E   M  \r  \t                   l   e   t    
0015460    e   l   e   n       =       d   v       +       d   v   >   >
0015500    D   V   .   l   e   n   g   t   h  \r  \t                   u
0015520    n   l   e   s   s       d   v   >   >   D   V   .   t   y   p
0015540    e       n   e       t   y   p   D   V       d   o      \r  \t
0015560                    [   L   O   O   K  \r  \t                    
0015600        i   f       (   e   l   e   n   -   e   n   d   p   )    
0015620    g   r       0       d   o  \t   /   /       W   h   o   l   e
0015640        e   n   t   r   y       i   s   n   '   t       i   n    
0015660    b   u   f   f   e   r  \r  \t                           [    
0015700    M   o   v   e   B   l   o   c   k   (   B   u   f   ,       d
0015720    v   ,       e   n 376 001  \0 253 032   d   p   -   d   v   )
0015740   \r  \t                                   e   n   d   p       =
0015760        e   n   d   p   +   B   u   f   -   d   v  \t   /   /    
0016000    M   o   v   e       e   n   d       p   o   i   n   t   e   r
0016020        d   o   w   n  \r  \t                                   b
0016040    r   e   a   k  \t  \t  \t   /   /       L   e   t       F   I
0016060    L   L       r   e   a   d       s   o   m   e       m   o   r
0016100    e  \r  \t                           ]  \r  \t                
0016120            l   e   t       N   a   m   e       =       d   v   +
0016140    l   D   V  \t  \t   /   /       F   a   b   r   i   c   a   t
0016160    e       p   o   i   n   t   e   r       t   o       n   a   m
0016200    e       i   n       D   V  \r   /   /   A   p   p   e   n   d
0016220        a       "   .   "       i   f       n   e   c   e   s   s
0016240    a   r   y  \r  \t                           l   e   t       n
0016260    l   e   n       =       N   a   m   e   >   >   S   T   R   I
0016300    N   G   .   l   e   n   g   t   h  \r  \t                    
0016320        i   f       N   a   m   e   >   > 376 001  \0   q   n   S
0016340    T   R   I   N   G   .   c   h   a   r   ^   n   l   e   n    
0016360    n   e       $   .       t   h   e   n  \r  \t                
0016400            [  \t   N   a   m   e   >   >   S   T   R   I   N   G
0016420    .   l   e   n   g   t   h       =       n   l   e   n   +   1
0016440   \r  \t  \t   N   a   m   e   >   >   S   T   R   I   N   G   .
0016460    c   h   a   r   ^   (   n   l   e   n   +   1   )       =    
0016500    $   .  \r  \t                           ]  \r   M   D   I   l
0016520    o   o   p   :                           f   o   r       I    
0016540    =       0       t   o       C   n   t   -   1       d   o  \t
0016560    /   /       L   o   o   p       t   h   r   o   u   g   h    
0016600    n   a   m   e   s  \r  \t                           [       l
0016620    e   t       t   P       =       N   a   m   e   V   e   c   !
0016640    I  \r   /   /   I   f       t   L   e   n   -   L   e   n    
0016660    e   q       -   1       t   h   e   n       u   s   e   r    
0016700    d   i   d   n   '   t       g   i   v   e       "   .   "  \r
0016720    /   /   U   p   p   e   r       c   a   s   e       m   a 376
0016740  001  \0   A 370   t   c   h       f   i   r   s   t       c   h
0016760    a   r       a   t       s   a   m   e       t   i   m   e  \r
0017000   \t  \t   i   f       (   (   N   a   m   e   !   0       -    
0017020    t   P   !   0   )       &       1   7   7   3   3   7   B   )
0017040        n   e       0       t   h   e   n       l   o   o   p  \r
0017060   \t                                   l   e   t       t   L   e
0017100    n   ,   P   r   P   t   r       =       t   P   >   >   S   T
0017120    R   I   N   G   .   l   e   n   g   t   h   ,   n   i   l  \r
0017140   \t                                   i   f       (   (   N   a
0017160    m   e   >   >   S   T   R   I   N   G   .   c   h   a   r   ^
0017200    t   L   e   n       -       t   P   >   >   S   T   R   I   N
0017220    G   .   c   h   a   r   ^   t   L   e   n   )  \r  \t        
0017240                                            &       3   3   7   B
0017260    )       n   e       0       t   h   e   n       l   o   o   p
0017300   \r  \t                                   f   o   r       J    
0017320    =       1       t   o       (   (   t   L   e   n   -   1   )
0017340        r   s   h 376 001  \0  \t   ~   i   f   t       1   )    
0017360    d   o  \r  \t  \t           i   f       (   (   N   a   m   e
0017400    !   J       -       t   P   !   J   )       &       1   5   7
0017420    7   3   7   B   )       n   e       0       t   h   e   n    
0017440    g   o   t   o       N   O   T   E   Q  \r  \t  \t   P   r   P
0017460    t   r       =       P   r   V   e   c   +   (   I   *   l   D
0017500    V   )  \r  \t                                   /   /       I
0017520    f       L   e   n       n   e       t   L   e   n   ,       t
0017540    h   e       e   x   t   r   a       c   h   a   r   a   c   t
0017560    e   r       m   u   s   t       b   e  \r  \t                
0017600                    /   /       a       f   i   n   a   l       "
0017620    .   "   ,       s   o       t   h   e       c   o   m   p   a
0017640    r   i   s   o   n       i   s       s   u   c   c   e   s   s
0017660    f   u   l  \r  \t                                   i   f    
0017700    P   r   P   t   r   !   0       e   q       0       t   h   e
0017720    n       N   o   t   F   o   u   n   d       =       N   o   t
0017740    F   o   u   n   d   -   1  \r  \t 376 001  \0 314   G        
0017760                            M   o   v   e   B   l   o   c   k   (
0020000    P   r   P   t   r   ,       d   v   ,       l   D   V   )  \r
0020020   \t                                   P   r   P   t   r   !   0
0020040    =   1  \r  \t                                   b   r   e   a
0020060    k  \r   N   O   T   E   Q   :  \r  \t                        
0020100    ]  \r  \t                   ]   L   O   O   K  \r   /   /    
0020120    S   k   i   p       o   v   e   r       t   h   e       e   n
0020140    t   r   y       w   e       j   u   s   t       p   r   o   c
0020160    e   s   s   e   d  \r  \t                   t   e   s   t    
0020200    (   e   l   e   n   -   e   n   d   p   )       <       0  \r
0020220   \t                   i   f   s   o       d   v       =       e
0020240    l   e   n  \r  \t                   i   f   n   o   t  \r  \t
0020260                    [       f   o   r       i       =       1    
0020300    t   o       e   l   e   n   -   e   n   d   p       d   o    
0020320    G   e   t   s   (   S   )  \r  \t                           e
0020340    n   d   p       =       B   u   f   ;       b   r   e 376  \0
0020360    M   = 344   a   k  \t  \t   /   /       R   e   a   d       s
0020400    o   m   e       m   o   r   e  \r  \t                   ]  \r
0020420   \t           ]   I   T   E   M       r   e   p   e   a   t  \r
0020440   \t   ]   F   I   L   L  \r  \r  \t   r   e   s   u   l   t   i
0020460    s       N   o   t   F   o   u   n   d  \r   ]   L   U   E  \r
0020500  377  \0  \0   m   d   i   r   s   .   b   c   p   l  \0 376 001
0020520   \0   ? 341   /   /       M   D   i   r   s   .   B   c   p   l
0020540        -   -       O   S       D   i   r   s   .   B   c   p   l
0020560        s   a   n   s       D   e   l   e   t   e   F   i   l   e
0020600        s   t   u   f   f  \r   /   /       L   a   s   t       e
0020620    d   i   t   e   d   :       2   7       O   c   t   o   b   e
0020640    r       1   9   7   9  \r  \r   g   e   t       "   A   l   t
0020660    o   F   i   l   e   S   y   s   .   d   "  \r   g   e   t    
0020700    "   D   i   s   k   s   .   d   "  \r   g   e   t       "   S
0020720    t   r   e   a   m   s   .   d   "  \r  \r   e   x   t   e   r
0020740    n   a   l  \r   [  \r   /   /       o   u   t   g   o   i   n
0020760    g       p   r   o   c   e   d   u   r   e   s  \r   F   i   n
0021000    d   F   d   E   n   t   r   y   ;       M   a   k   e   N   e
0021020    w   F   d   E   n   t   r   y   ;       P   a   r   s   e   F
0021040    i   l   e   N   a   m   e   ;       O   p   e   n   F   i   l
0021060    e   ;       S   t   r   i   p   V   e   r   s   i   o   n  \r
0021100   \r   /   /       i   n   c   o   m   i   n   g       p   r   o
0021120    c   e   d 376 001  \0   #   N   u   r   e   s  \r   S   c   a
0021140    n   D   i   r   B   u   f   f   e   r   ;       I   n   i   t
0021160    S   c   a   n   S   t   r   e   a   m   ;       G   e   t   S
0021200    c   a   n   S   t   r   e   a   m   B   u   f   f   e   r   ;
0021220        F   i   n   i   s   h   S   c   a   n   S   t   r   e   a
0021240    m  \r   P   u   t   s   ;       R   e   s   e   t   s   ;    
0021260    E   r   r   o   r   s   ;       C   l   o   s   e   s   ;    
0021300    W   r   i   t   e   B   l   o   c   k   ;       S   e   t   F
0021320    i   l   e   P   o   s  \r   C   r   e   a   t   e   D   i   s
0021340    k   S   t   r   e   a   m   ;       G   e   t   C   o   m   p
0021360    l   e   t   e   F   a   ;       L   n   P   a   g   e   S   i
0021400    z   e   ;       J   u   m   p   T   o   F   a  \r   S   y   s
0021420    E   r   r   ;       C   r   e   a   t   e   D   i   s   k   F
0021440    i   l   e  \r   M   o   v   e   B   l   o   c   k   ;       Z
0021460    e   r   o   ;       N   o   o   p   ;       D   e   f   a   u
0021500    l   t   A   r   g   s   ;       D   v   e   c   ;       M   i
0021520    n  \r  \r   /   /       o   u 376 001  \0   - 341   t   g   o
0021540    i   n   g       s   t   a   t   i   c  \r   d   i   r   V   e
0021560    r   s   i   o   n   s  \r  \r   /   /       i   n   c   o   m
0021600    i   n   g       s   t   a   t   i   c   s  \r   s   y   s   Z
0021620    o   n   e   ;       s   y   s   D   i   s   k  \r   ]  \r  \r
0021640    s   t   a   t   i   c       [       d   i   r   V   e   r   s
0021660    i   o   n   s       =       f   a   l   s   e       ]  \r  \r
0021700    m   a   n   i   f   e   s   t  \r   [  \r   /   /       e   r
0021720    r   o   r       c   o   d   e   s  \r   e   c   D   e   T   o
0021740    o   B   i   g       =       1   5   0   1  \r   e   c   B   a
0021760    d   D   e   T   y   p   e       =       1   5   0   2  \r   e
0022000    c   B   a   d   D   i   r   N   a   m   e       =       1   5
0022020    0   3  \r   e   c   F   n   T   o   o   L   o   n   g       =
0022040        1   5   0   4  \r   e   c   C   a   n   t   O   p   e   n
0022060    F   i   l   e       =       1   5   0   5  \r  \r   m   a   x
0022100    E   x   t   r   a   S   p   a   c   e       =       l   S   T
0022120    R   I   N   G  \r   m   a   x   D   e   S   i   z 376 001  \0
0022140    : 245   e       =       l   D   V   +   m   a   x   L   e   n
0022160    g   t   h   F   n   I   n   W   o   r   d   s   +   m   a   x
0022200    E   x   t   r   a   S   p   a   c   e  \r   m   a   x   F   r
0022220    e   e   D   e   S   i   z   e       =       (   1       l   s
0022240    h   i   f   t       s   i   z   e       D   V   .   l   e   n
0022260    g   t   h   )   -   1  \r  \r   f   n   M   a   s   k       =
0022300        n   o   t       (   #   4   0   *   (   #   4   0   0   +
0022320    1   )   )       /   /   1   3   7   ,   ,   1   3   7       i
0022340    n       c   a   s   e       y   o   u       d   i   d   n   '
0022360    t       g   u   e   s   s   .   .   .  \r  \r   /   /       v
0022400    e   r   s   i   o   n       c   o   n   t   r   o   l       m
0022420    a   s   k   s       (   s   e   e       d   e   f   i   n   i
0022440    t   i   o   n   s       o   f       v   e   r   x   x   x    
0022460    i   n       s   t   r   e   a   m   s   .   d   )  \r   v   e
0022500    r   C   r   M   a   s   k       =       4   0   0   0   0   B
0022520   \t   /   /       i   f       n   o   n   -   z   e   r   o   ,
0022540        c 376 001  \0 245 206   r   e   a   t   e       f   i   l
0022560    e       o   k  \r   ]  \r  \r   s   t   r   u   c   t   u   r
0022600    e       H   D   :           /   /       H   o   l   e       D
0022620    e   s   c   r   i   p   t   o   r  \r   [  \r   m   a   x   S
0022640    i   z   e       w   o   r   d  \r   n   e   e   d   e   d   S
0022660    i   z   e       w   o   r   d  \r   p   o   s       w   o   r
0022700    d  \r   ]  \r   c   o   m   p   i   l   e   i   f       s   i
0022720    z   e       H   D   /   1   6       n   e       3       t   h
0022740    e   n       [       E   r   r   o   r   (   "   C   h   a   n
0022760    g   e       l   H   D       i   n       S   t   r   e   a   m
0023000    s   .   d   "   )       ]  \r  \r   s   t   r   u   c   t   u
0023020    r   e       S   D   B   :  \t   /   /       S   c   a   n   D
0023040    i   r   B   u   f   f   e   r       s   t   a   t   e       -
0023060    -       m   u   s   t       a   g   r   e   e       w   i   t
0023100    h       D   i   r   S   c   a   n   A   .   a   s   m  \r   [
0023120   \r   n   a   m   e       w   o   r   d  \t   /   /       -   >
0023140        n   a   m   e       b 376 001  \0   H  \0   e   i   n   g
0023160        l   o   o   k   e   d       u   p       (   a   l   l    
0023200    u   p   p   e   r   -   c   a   s   e   )  \r   l   e   n   g
0023220    t   h       w   o   r   d  \t   /   /       n   u   m   b   e
0023240    r       o   f       w   o   r   d   s       t   o       c   h
0023260    e   c   k       i   n       n   a   m   e  \r   i   g   n   o
0023300    r   e   F   r   e   e       w   o   r   d  \t   /   /       t
0023320    r   u   e       t   o       s   k   i   p       o   v   e   r
0023340        f   r   e   e       e   n   t   r   i   e   s   ,       f
0023360    a   l   s   e       t   o       s   t   o   p       o   n    
0023400    e   a   c   h       o   n   e  \r   s   c   r   a   t   c   h
0023420        w   o   r   d       5  \t   /   /       s   c   r   a   t
0023440    c   h       r   e   g   i   o   n       u   s   e   d       b
0023460    y       S   c   a   n   D   i   r   B   u   f   f   e   r    
0023500    p   r   o   c   e   d   u   r   e  \r   ]  \r   m   a   n   i
0023520    f   e   s   t       l   e   n   S   D   B       =       s   i
0023540    z   e       S   D   B   /   1   6  \r  \r   s 376 001  \0   U
0023560  323   t   r   u   c   t   u   r   e       F   S   S   :        
0023600    /   /       F   i   l   e       S   c   a   n       S   t   a
0023620    t   e  \r   [  \r   b   u   f   f   e   r       w   o   r   d
0023640   \t   /   /       -   >       c   u   r   r   e   n   t       b
0023660    u   f   f   e   r       (   0       =   >       h   i   t    
0023700    e   n   d   -   o   f   -   f   i   l   e   )  \r   p   o   s
0023720        w   o   r   d  \t   /   /       w   o   r   d       p   o
0023740    s   i   t   i   o   n       i   n       b   u   f   f   e   r
0023760        o   f       c   u   r   r   e   n   t       d   i   r   e
0024000    c   t   o   r   y       e   n   t   r   y  \r   e   n   d   P
0024020    o   s       w   o   r   d  \t   /   /       w   o   r   d    
0024040    p   o   s   i   t   i   o   n       o   f       f   i   r   s
0024060    t       w   o   r   d       n   o   t       i   n       b   u
0024100    f   f   e   r  \r   b   a   s   e   P   o   s       w   o   r
0024120    d  \t   /   /       f   i   l   e       w   o   r   d       p
0024140    o   s   i   t   i   o   n       o   f       f   i   r   s   t
0024160      376 001  \0   # 263   w   o   r   d       o   f       b   u
0024200    f   f   e   r  \r   s   s   d       w   o   r   d  \t   /   /
0024220        -   >       S   c   a   n       S   t   r   e   a   m    
0024240    D   e   s   c   r   i   p   t   o   r  \r   ]  \r  \f  \r   /
0024260    /   -   -   -   -   -   -   -   -   -   -   -   -   -   -   -
0024300    -   -   -   -   -   -   -   -   -   -   -   -   -   -   -   -
*
0024360    -   -   -   -   -   -   -   -   -   -   -   -  \r   l   e   t
0024400        F   i   n   d   F   d   E   n   t   r   y   (   d   i   r
0024420    S   ,       n   a   m   e   ,       c   o   m   p   a   r   e
0024440    F   n   ,       d   v   ,       h   d   ,       n   i   l   ,
0024460   \r                   e   x   t   r   a   S   p   a   c   e   ;
0024500        n   u   m   a   r   g   s       n   a   )       =       v
0024520    a   l   o   f  \r   /   /   -   -   -   -   -   -   -   -   -
0024540    -   -   -   -   -   -   -   -   -   -   -   -   -   -   -   -
0024560    -   -   -   -   -   - 376 001  \0 246   7   -   -   -   -   -
0024600    -   -   -   -   -   -   -   -   -   -   -   -   -   -   -   -
*
0024640    -   -   -   -   -   -   -  \r   /   /       F   i   n   d   F
0024660    d   E   n   t   r   y       r   e   t   u   r   n   s       t
0024700    h   e       p   o   s   i   t   i   o   n   ,       o   r    
0024720    -   1       i   f       t   h   e       n   a   m   e       i
0024740    s       n   o   t       f   o   u   n   d   .  \r   /   /    
0024760    T   h   e       n   a   m   e       i   s       n   o   t    
0025000    p   a   r   s   e   d       s   o       t   h   i   s       s
0025020    h   o   u   l   d       h   a   v   e       a   l   r   e   a
0025040    d   y       b   e   e   n       d   o   n   e   .  \r   /   /
0025060        I   f       d   v       i   s       s   u   p   p   l   i
0025100    e   d   ,       t   h   e       d   v       o   f       t   h
0025120    e       n   a   m   e       w   e       f   i   n   d       i
0025140    s       r   e   t   u   r   n   e   d       i   n       i   t
0025160    .  \r   /   /       I   f       h   d     376 001  \0 267 242
0025200    i   s       s   u   p   p   l   i   e   d   ,       i   t    
0025220    i   s       f   i   l   l   e   d       i   n       w   i   t
0025240    h       a       h   o   l   e       d   e   s   c   r   i   p
0025260    t   o   r       f   o   r       a       h   o   l   e       b
0025300    i   g  \r   /   /           e   n   o   u   g   h       t   o
0025320        h   o   l   d       a   n       e   n   t   r   y       f
0025340    o   r       n   a   m   e       w   i   t   h       e   x   t
0025360    r   a   S   p   a   c   e       e   x   t   r   a       w   o
0025400    r   d   s       o   f       s   p   a   c   e   .  \r   /   /
0025420        I   f       c   o   m   p   a   r   e   F   n       i   s
0025440        s   u   p   p   l   i   e   d   ,       i   t       s   h
0025460    o   u   l   d       r   e   t   u   r   n       0       i   f
0025500        t   h   e       e   n   t   r   y       s   h   o   u   l
0025520    d       b   e  \r   /   /           a   c   c   e   p   t   e
0025540    d   .  \r   [  \r   l   e   t       e   x   t   r   a   B   u
0025560    f       =       1       l   s   h   i   f   t       L   n   P
0025600  376 001  \0 316   k   a   g   e   S   i   z   e   (   d   i   r
0025620    S   )  \r   D   v   e   c   (   F   i   n   d   F   d   E   n
0025640    t   r   y   ,       l   v       e   x   t   r   a   B   u   f
0025660    )  \r   l   e   t       d   ,       h       =       v   e   c
0025700        l   D   V   ,       v   e   c       l   H   D  \r   D   e
0025720    f   a   u   l   t   A   r   g   s   (   l   v       n   a   ,
0025740        -   2   ,       0   ,       d   ,       h   ,       n   i
0025760    l   ,       0   )  \r  \r   Z   e   r   o   (   h   d   ,    
0026000    l   H   D   )  \r   h   d   >   >   H   D   .   n   e   e   d
0026020    e   d   S   i   z   e       =       e   x   t   r   a   S   p
0026040    a   c   e  \r  \r   l   e   t       l   N   a   m   e   I   n
0026060    W   o   r   d   s       =       n   i   l  \r   l   e   t    
0026100    s   d   b       =       v   e   c       l   e   n   S   D   B
0026120   \r   l   e   t       c   a   p   N   a   m   e       =       v
0026140    e   c       m   a   x   L   e   n   g   t   h   F   n   I   n
0026160    W   o   r   d   s  \r  \r   i   f       c   o   m   p   a   r
0026200    e   F   n       e 376 001  \0   W   ,   q       0       t   h
0026220    e   n  \r               [  \r               /   /       t   h
0026240    e       +   2       a   d   d   s       t   h   e       l   e
0026260    n   g   t   h       b   y   t   e       a   n   d       r   o
0026300    u   n   d   s       u   p  \r               l   e   t       t
0026320        =       n   a   m   e   >   >   S   T   R   I   N   G   .
0026340    l   e   n   g   t   h       +       2  \r               /   /
0026360        t   h   e       -   1       t   a   k   e   s       o   f
0026400    f       t   h   e       t   r   a   i   l   i   n   g       $
0026420    .  \r               l   N   a   m   e   I   n   W   o   r   d
0026440    s       =       (   t   -   1   )       r   s   h   i   f   t
0026460        1  \r               h   d   >   >   H   D   .   n   e   e
0026500    d   e   d   S   i   z   e       =       M   i   n   (   t    
0026520    r   s   h   i   f   t       1       +       l   D   V       +
0026540        e   x   t   r   a   S   p   a   c   e   ,       m   a   x
0026560    D   e   S   i   z   e   )  \r  \r               /   /       S
0026600    e   t       u   p       S   c   a   n 376 001  \0 312   #   D
0026620    i   r   B   u   f   f   e   r       s   t   a   t   e       a
0026640    n   d       g   e   n   e   r   a   t   e       c   a   p   i
0026660    t   a   l   i   z   e   d       v   e   r   s   i   o   n    
0026700    o   f       n   a   m   e  \r               s   d   b   >   >
0026720    S   D   B   .   n   a   m   e       =       c   a   p   N   a
0026740    m   e  \r               s   d   b   >   >   S   D   B   .   l
0026760    e   n   g   t   h       =       l   N   a   m   e   I   n   W
0027000    o   r   d   s  \r               s   d   b   >   >   S   D   B
0027020    .   i   g   n   o   r   e   F   r   e   e       =       f   a
0027040    l   s   e  \r               c   a   p   N   a   m   e   !   0
0027060        =       n   a   m   e   !   0       &       1   7   7   7
0027100    3   7   B  \r               f   o   r       i       =       1
0027120        t   o       l   N   a   m   e   I   n   W   o   r   d   s
0027140    -   1       d   o       c   a   p   N   a   m   e   !   i    
0027160    =       n   a   m   e   !   i       &       f   n   M   a   s
0027200    k  \r               ]  \r  \r   l   e   t       t   e   m 376
0027220  001  \0   @ 327   p   D   V       =       v   e   c       m   a
0027240    x   D   e   S   i   z   e  \r   l   e   t       b   e   s   t
0027260    P   o   s       =       -   1  \r   l   e   t       h   o   l
0027300    e   F   A       =       v   e   c       l   F   A   ;       h
0027320    o   l   e   F   A   >   >   F   A   .   c   h   a   r   P   o
0027340    s       =       0  \r  \r   /   /       T   h   e       f   o
0027360    l   l   o   w   i   n   g       m   u   s   t       b   e    
0027400    d   e   c   l   a   r   e   d       i   n       t   h   e    
0027420    o   r   d   e   r       d   e   f   i   n   e   d       i   n
0027440        t   h   e       F   S   S       s   t   r   u   c   t   u
0027460    r   e  \r   l   e   t       b   u   f   f   e   r   ,       p
0027500    o   s   ,       e   n   d   P   o   s   ,       b   a   s   e
0027520    P   o   s   ,       s   s   d       =       0   ,       0   ,
0027540        0   ,       0   ,       n   i   l  \r   l   e   t       f
0027560    s   s       =       l   v       b   u   f   f   e   r  \r  \r
0027600    R   e   s   e   t   s   (   d   i   r   S   )  \r   s   s   d
0027620        =       I 376 001  \0   = 270   n   i   t   S   c   a   n
0027640    S   t   r   e   a   m   (   d   i   r   S   ,       l   v    
0027660    e   x   t   r   a   B   u   f   ,       1   )  \r   A   d   v
0027700    a   n   c   e   B   u   f   f   e   r   (   f   s   s   )  \r
0027720   \r   w   h   i   l   e       b   u   f   f   e   r       n   e
0027740        0       d   o  \r               [  \r               /   /
0027760        A   d   v   a   n   c   e       t   h   e       p   o   i
0030000    n   t   e   r       t   o       t   h   e       f   i   r   s
0030020    t       "   i   n   t   e   r   e   s   t   i   n   g   "    
0030040    d   i   r   e   c   t   o   r   y       e   n   t   r   y   .
0030060   \r               /   /       T   h   e       c   a   l   l    
0030100    t   o       S   c   a   n   D   i   r   B   u   f   f   e   r
0030120        a   c   c   e   l   e   r   a   t   e   s       t   h   e
0030140        s   e   a   r   c   h   ,       b   u   t       i   f    
0030160    t   h   e       c   a   l   l       i   s  \r               /
0030200    /       o   m   i   t   t   e   d       t   h   e       s   e
0030220    a   r   c   h       s   t   i   l 376 001  \0 377 005   l    
0030240    w   o   r   k   s   ,       o   n   l   y       m   o   r   e
0030260        s   l   o   w   l   y   .  \r               i   f       c
0030300    o   m   p   a   r   e   F   n       e   q       0       t   h
0030320    e   n  \r                           p   o   s       =       S
0030340    c   a   n   D   i   r   B   u   f   f   e   r   (   b   u   f
0030360    f   e   r   +   p   o   s   ,       b   u   f   f   e   r   +
0030400    e   n   d   P   o   s   ,       s   d   b   )       -       b
0030420    u   f   f   e   r  \r  \r               /   /       N   o   w
0030440        i   n   s   p   e   c   t       t   h   e       e   n   t
0030460    r   y       c   a   r   e   f   u   l   l   y   .  \r        
0030500        l   e   t       f   i   l   e   P   o   s       =       b
0030520    a   s   e   P   o   s       +       p   o   s  \r            
0030540    l   e   t       t   h   i   s   D   V       =       b   u   f
0030560    f   e   r       +       p   o   s  \r               l   e   t
0030600        l   e   n       =       t   h   i   s   D   V   >   >   D
0030620    V   .   l   e   n   g   t   h  \r               s   w 376 001
0030640   \0 200 216   i   t   c   h   o   n       t   h   i   s   D   V
0030660    >   >   D   V   .   t   y   p   e       i   n   t   o  \r    
0030700                        [  \r                           c   a   s
0030720    e       d   v   T   y   p   e   F   r   e   e   :  \r        
0030740                                [  \r                            
0030760            /   /       n   o   t   e       t   h   a   t       w
0031000    e       n   e   v   e   r       a   c   c   u   m   u   l   a
0031020    t   e       a       s   e   q   u   e   n   c   e       o   f
0031040        f   r   e   e       b   l   o   c   k   s       l   o   n
0031060    g   e   r  \r                                       /   /    
0031100    t   h   a   n       n   e   e   d   e   d   S   i   z   e   +
0031120    (   s   i   z   e       o   f       b   i   g   g   e   s   t
0031140        f   r   e   e       b   l   o   c   k   )  \r            
0031160                            i   f       s   d   b   >   >   S   D
0031200    B   .   i   g   n   o   r   e   F   r   e   e       t   h   e
0031220    n       e   n   d   c   a   s   e           /   /       a   l
0031240    r   e   a 376 001  \0   6 022   d   y       f   o   u   n   d
0031260        h   o   l   e  \r                                       i
0031300    f       h   d   >   >   H   D   .   p   o   s   +   h   d   >
0031320    >   H   D   .   m   a   x   S   i   z   e       n   e       f
0031340    i   l   e   P   o   s       t   h   e   n  \r                
0031360                                    [       /   /       N   o   t
0031400        a   d   j   a   c   e   n   t       t   o       p   r   e
0031420    v   i   o   u   s       h   o   l   e   ;       r   e   c   o
0031440    r   d       b   e   g   i   n   n   i   n   g       o   f    
0031460    n   e   w       o   n   e  \r                                
0031500                    h   d   >   >   H   D   .   m   a   x   S   i
0031520    z   e       =       0  \r                                    
0031540                h   d   >   >   H   D   .   p   o   s       =    
0031560    f   i   l   e   P   o   s  \r                                
0031600                    h   o   l   e   F   A   >   >   F   A   .   d
0031620    a       =       s   s   d   >   >   S   S   D   .   d   a  \r
0031640                                  376 001  \0 340 331            
0031660        h   o   l   e   F   A   >   >   F   A   .   p   a   g   e
0031700    N   u   m   b   e   r       =       s   s   d   >   >   S   S
0031720    D   .   p   a   g   e   N   u   m   b   e   r  \r            
0031740                                        ]  \r                    
0031760                    h   d   >   >   H   D   .   m   a   x   S   i
0032000    z   e       =       h   d   >   >   H   D   .   m   a   x   S
0032020    i   z   e   +   l   e   n  \r                                
0032040        s   d   b   >   >   S   D   B   .   i   g   n   o   r   e
0032060    F   r   e   e       =       h   d   >   >   H   D   .   m   a
0032100    x   S   i   z   e       g   e       h   d   >   >   H   D   .
0032120    n   e   e   d   e   d   S   i   z   e  \r                    
0032140                    e   n   d   c   a   s   e  \r                
0032160                        ]  \r                           c   a   s
0032200    e       d   v   T   y   p   e   F   i   l   e   :  \r        
0032220                                [  \r                            
0032240            /   /       k   e   e   p       a       m 376 001  \0
0032260    %   p   a   l   f   o   r   m   e   d       d   i   r   e   c
0032300    t   o   r   y       e   n   t   r   y       f   r   o   m    
0032320    o   v   e   r   f   l   o   w   i   n   g       t   h   i   s
0032340    N   a   m   e  \r                                       i   f
0032360        l   e   n       g   r       m   a   x   D   e   S   i   z
0032400    e       t   h   e   n       E   r   r   o   r   s   (   d   i
0032420    r   S   ,       e   c   D   e   T   o   o   B   i   g   ,    
0032440    f   i   l   e   P   o   s   )  \r                            
0032460            M   o   v   e   B   l   o   c   k   (   t   e   m   p
0032500    D   V   ,       t   h   i   s   D   V   ,       l   e   n   )
0032520   \r                                       p   o   s       =    
0032540    p   o   s   +   l   e   n  \r                                
0032560        i   f       p   o   s       g   e       e   n   d   P   o
0032600    s       t   h   e   n  \r                                    
0032620                [       A   d   v   a   n   c   e   B   u   f   f
0032640    e   r   (   f   s   s   )   ;       M   o   v   e   B   l   o
0032660    c   k 376 001  \0 361   !   (   t   e   m   p   D   V   +   l
0032700    e   n   -   p   o   s   ,       b   u   f   f   e   r   ,    
0032720    p   o   s   )       ]  \r                                    
0032740    t   e   s   t       c   o   m   p   a   r   e   F   n       e
0032760    q       0  \r                                                
0033000    i   f   s   o  \r                                            
0033020                    [           /   /   d   e   f   a   u   l   t
0033040        s   y   s   t   e   m       c   o   m   p   a   r   e   F
0033060    n  \r                                                        
0033100        t   e   m   p   D   V   !   l   e   n       =       1    
0033120        /   /       f   a   k   e       n   e   x   t       b   l
0033140    o   c   k       o   f       l   e   n   g   t   h       1    
0033160    t   o       s   t   o   p       s   c   a   n  \r            
0033200                                                    u   n   l   e
0033220    s   s       S   c   a   n   D   i   r   B   u   f   f   e   r
0033240    (   t   e   m   p   D   V   ,       t   e   m   p   D   V   +
0033260    l   e   n   +   1   ,     376 001  \0   W 220   s   d   b   )
0033300        e   q       t   e   m   p   D   V       l   o   o   p  \r
0033320                                                                ]
0033340   \r                                                   i   f   n
0033360    o   t       u   n   l   e   s   s       c   o   m   p   a   r
0033400    e   F   n   (   n   a   m   e   ,       t   e   m   p   D   V
0033420    +   l   D   V   ,       t   e   m   p   D   V   )       e   q
0033440        0       l   o   o   p  \r  \r                            
0033460            /   /       I   f       w   e       g   e   t       h
0033500    e   r   e   ,       t   h   e       d   e   s   i   r   e   d
0033520        e   n   t   r   y       w   a   s       f   o   u   n   d
0033540   \r                                       M   o   v   e   B   l
0033560    o   c   k   (   d   v   ,       t   e   m   p   D   V   ,    
0033600    l   D   V   )  \r                                       b   e
0033620    s   t   P   o   s       =       f   i   l   e   P   o   s  \r
0033640                                        b   r   e   a   k  \r    
0033660                                    ]  \r         376 001  \0   [
0033700  360                   d   e   f   a   u   l   t   :           /
0033720    /       u   n   k   n   o   w   n       t   y   p   e       o
0033740    f       d   i   r   e   c   t   o   r   y       e   n   t   r
0033760    y  \r                                       [  \r            
0034000                            E   r   r   o   r   s   (   d   i   r
0034020    S   ,       e   c   B   a   d   D   e   T   y   p   e   ,    
0034040    f   i   l   e   P   o   s   )  \r                            
0034060            e   n   d   c   a   s   e  \r                        
0034100                ]  \r                           ]  \r            
0034120    p   o   s       =       p   o   s   +   l   e   n  \r        
0034140        w   h   i   l   e       p   o   s       g   e       e   n
0034160    d   P   o   s       &       b   u   f   f   e   r       n   e
0034200        0       d   o       A   d   v   a   n   c   e   B   u   f
0034220    f   e   r   (   f   s   s   )  \r               ]  \r  \r   F
0034240    i   n   i   s   h   S   c   a   n   S   t   r   e   a   m   (
0034260    s   s   d   )  \r  \r   /   /       I   f       w   e       f
0034300    o 376 001  \0   k 221   u   n   d       a       h   o   l   e
0034320        a   n   d       d   i   d       n   o   t       f   i   n
0034340    d       a       m   a   t   c   h   i   n   g       d   i   r
0034360    e   c   t   o   r   y       e   n   t   r   y   ,       p   o
0034400    s   i   t   i   o   n  \r   /   /       t   h   e       s   t
0034420    r   e   a   m       t   o       t   h   e       p   a   g   e
0034440        c   o   n   t   a   i   n   i   n   g       t   h   e    
0034460    h   o   l   e   .  \r   /   /       I   f       w   e       d
0034500    i   d       n   o   t       f   i   n   d       a       h   o
0034520    l   e   ,       s   e   t       t   h   e       H   D   .   p
0034540    o   s       t   o       e   n   d   -   o   f   -   f   i   l
0034560    e   .  \r   t   e   s   t       s   d   b   >   >   S   D   B
0034600    .   i   g   n   o   r   e   F   r   e   e  \r               i
0034620    f   s   o       i   f       b   e   s   t   P   o   s       e
0034640    q       -   1       t   h   e   n       J   u   m   p   T   o
0034660    F   a   (   d   i   r   S   ,       h   o   l   e   F   A   )
0034700   \r               i   f 376 001  \0 317 314   n   o   t       h
0034720    d   >   >   H   D   .   p   o   s       =       b   a   s   e
0034740    P   o   s   +   p   o   s  \r  \r   r   e   s   u   l   t   i
0034760    s       b   e   s   t   P   o   s  \r   ]  \r  \r   /   /   -
0035000    -   -   -   -   -   -   -   -   -   -   -   -   -   -   -   -
*
0035100    -   -   -   -   -   -   -   -   -   -  \r   a   n   d       A
0035120    d   v   a   n   c   e   B   u   f   f   e   r   (   f   s   s
0035140    )       b   e  \r   /   /   -   -   -   -   -   -   -   -   -
0035160    -   -   -   -   -   -   -   -   -   -   -   -   -   -   -   -
*
0035260    -   -  \r   [  \r   f   s   s   >   >   F   S   S   .   b   u
0035300    f   f   e   r       =       G   e   t   S 376 001  \0 252 226
0035320    c   a   n   S   t   r   e   a   m   B   u   f   f   e   r   (
0035340    f   s   s   >   >   F   S   S   .   s   s   d   )  \r   f   s
0035360    s   >   >   F   S   S   .   b   a   s   e   P   o   s       =
0035400        f   s   s   >   >   F   S   S   .   b   a   s   e   P   o
0035420    s       +       f   s   s   >   >   F   S   S   .   e   n   d
0035440    P   o   s  \r   f   s   s   >   >   F   S   S   .   p   o   s
0035460        =       f   s   s   >   >   F   S   S   .   p   o   s    
0035500    -       f   s   s   >   >   F   S   S   .   e   n   d   P   o
0035520    s  \r   f   s   s   >   >   F   S   S   .   e   n   d   P   o
0035540    s       =       f   s   s   >   >   F   S   S   .   s   s   d
0035560    >   >   S   S   D   .   n   u   m   C   h   a   r   s       r
0035600    s   h   i   f   t       1  \r   ]  \r  \f  \r   /   /   -   -
0035620    -   -   -   -   -   -   -   -   -   -   -   -   -   -   -   -
*
0035720  376 001  \0   ? 323   -   -   -   -   -   -   -   -   -  \r   a
0035740    n   d       M   a   k   e   N   e   w   F   d   E   n   t   r
0035760    y   (   d   i   r   S   ,       n   a   m   e   ,       d   v
0036000    ,       h   d   ,       e   x   t   r   a   S   t   u   f   f
0036020    )       b   e  \r   /   /   -   -   -   -   -   -   -   -   -
0036040    -   -   -   -   -   -   -   -   -   -   -   -   -   -   -   -
*
0036140    -   -  \r   /   /       M   a   k   e       a   n       e   n
0036160    t   r   y       (   n   a   m   e   ,       d   v   )       o
0036200    f       s   i   z   e       h   d   >   >   H   D   .   n   e
0036220    e   d   e   d   S   i   z   e       i   n       d   i   r   S
0036240        a   t       t   h   e       h   o   l   e  \r   /   /    
0036260    s   p   e   c   i   f   i   e   d       b   y       h   d   .
0036300            T   h   i   s       h   o   l   e       i   s       o
0036320    f       s   i   z 376 001  \0 242 312   e       h   d   >   >
0036340    H   D   .   m   a   x   S   i   z   e   ,       w   h   i   c
0036360    h       i   s       e   i   t   h   e   r  \r   /   /       b
0036400    i   g   g   e   r       t   h   a   n       h   d   >   >   H
0036420    D   .   n   e   e   d   e   d   S   i   z   e       o   r    
0036440    a   t       t   h   e       e   n   d       o   f       d   i
0036460    r   S   .           T   h   e       h   d   '   s  \r   /   /
0036500        m   a   x   S   i   z   e   -   n   e   e   d   e   d   S
0036520    i   z   e       m   u   s   t       n   o   t       b   e    
0036540    g   r   e   a   t   e   r       t   h   a   n       m   a   x
0036560    F   r   e   e   D   e   S   i   z   e   ;       h   d   '   s
0036600   \r   /   /       p   r   o   d   u   c   e   d       b   y    
0036620    F   i   n   d   F   d   E   n   t   r   y       h   a   v   e
0036640        t   h   i   s       p   r   o   p   e   r   t   y   ,    
0036660    s   i   n   c   e       t   h   e   y       a   r   e       o
0036700    b   t   a   i   n   e   d       b   y  \r   /   /       c   o
0036720    n   c   a   t   e   n   a   t   i   n 376 001  \0 270 250   g
0036740        f   r   e   e       d   e   '   s       u   n   t   i   l
0036760        a       b   i   g       e   n   o   u   g   h       h   o
0037000    l   e       i   s       o   b   t   a   i   n   e   d   .  \r
0037020    /   /       T   h   e       n   a   m   e       s   h   o   u
0037040    l   d       b   e       p   a   r   s   e   d       b   y    
0037060    t   h   e       c   a   l   l   e   r   .  \r   [  \r   l   e
0037100    t       l   N   a   m   e   I   n   W   o   r   d   s       =
0037120        n   a   m   e   >   >   S   T   R   I   N   G   .   l   e
0037140    n   g   t   h       r   s   h   i   f   t       1       +   1
0037160   \r   i   f       l   N   a   m   e   I   n   W   o   r   d   s
0037200        g   e       m   a   x   L   e   n   g   t   h   F   n   I
0037220    n   W   o   r   d   s       t   h   e   n  \r               E
0037240    r   r   o   r   s   (   d   i   r   S   ,       e   c   F   n
0037260    T   o   o   L   o   n   g   ,       n   a   m   e   )  \r   d
0037300    v   >   >   D   V   .   t   y   p   e       =       d   v   T
0037320    y   p   e   F   i   l   e  \r   d   v   >   >   D   V   . 376
0037340  001  \0 273 201   l   e   n   g   t   h       =       h   d   >
0037360    >   H   D   .   n   e   e   d   e   d   S   i   z   e  \r   S
0037400    e   t   F   i   l   e   P   o   s   (   d   i   r   S   ,    
0037420    0   ,       2   *   (   h   d   >   >   H   D   .   p   o   s
0037440    )   )  \r   W   r   i   t   e   B   l   o   c   k   (   d   i
0037460    r   S   ,       d   v   ,       l   D   V   )  \r   W   r   i
0037500    t   e   B   l   o   c   k   (   d   i   r   S   ,       n   a
0037520    m   e   ,       l   N   a   m   e   I   n   W   o   r   d   s
0037540    )  \r   W   r   i   t   e   B   l   o   c   k   (   d   i   r
0037560    S   ,       e   x   t   r   a   S   t   u   f   f   ,       h
0037600    d   >   >   H   D   .   n   e   e   d   e   d   S   i   z   e
0037620    -   l   D   V   -   l   N   a   m   e   I   n   W   o   r   d
0037640    s   )  \r  \r   l   e   t       e   x   t   r   a       =    
0037660    h   d   >   >   H   D   .   m   a   x   S   i   z   e   -   h
0037700    d   >   >   H   D   .   n   e   e   d   e   d   S   i   z   e
0037720   \r   i   f       e   x   t   r   a       g   r       0       t
0037740    h   e   n     376 001  \0 340   b       /   /   m   a   k   e
0037760        r   e   m   a   i   n   i   n   g       w   o   r   d   s
0040000        i   n   t   o       a       f   r   e   e       b   l   o
0040020    c   k  \r               [  \r               l   e   t       h
0040040        =       n   i   l  \r               h   <   <   D   V   .
0040060    t   y   p   e       =       d   v   T   y   p   e   F   r   e
0040100    e  \r               h   <   <   D   V   .   l   e   n   g   t
0040120    h       =       e   x   t   r   a  \r               P   u   t
0040140    s   (   d   i   r   S   ,       h   )  \r               ]  \r
0040160    ]  \r  \f  \r   /   /   -   -   -   -   -   -   -   -   -   -
0040200    -   -   -   -   -   -   -   -   -   -   -   -   -   -   -   -
*
0040300    -  \r   a   n   d       P   a   r   s   e   F   i   l   e   N
0040320    a   m   e   (   f   n   ,       n   ,       l   i   s   t   ,
0040340        v   e   r   s   i   o   n   C 376 001  \0 033   &   o   n
0040360    t   r   o   l   )       =       v   a   l   o   f  \r   /   /
0040400    -   -   -   -   -   -   -   -   -   -   -   -   -   -   -   -
*
0040500    -   -   -   -   -   -   -   -   -   -   -  \r   /   /       P
0040520    a   r   s   e   s       n       i   n   t   o       f   n   ,
0040540        a   p   p   e   n   d   i   n   g       a       $   .    
0040560    i   f       n   e   c   e   s   s   a   r   y  \r   /   /    
0040600    R   e   t   u   r   n   s       a       d   i   r   e   c   t
0040620    o   r   y       s   t   r   e   a   m       i   n       w   h
0040640    i   c   h       t   o       l   o   o   k       f   o   r    
0040660    t   h   e       n   a   m   e   .  \r   /   /       l   i   s
0040700    t   !   0       =       e   r   r   R   t   n   ;       l   i
0040720    s   t   !   1       =       z   o   n   e   ;       l   i   s
0040740    t   !   3       =       d   i   s   k  \r   [  \r   l 376 001
0040760   \0 016   /   e   t       l   e   n   g   t   h       =       n
0041000    >   >   S   T   R   I   N   G   .   l   e   n   g   t   h   ;
0041020        l   e   t       s   e   p       =       0  \r   f   o   r
0041040        i       =       1       t   o       l   e   n   g   t   h
0041060        d   o  \r               [  \r               l   e   t    
0041100    c       =       n   >   >   S   T   R   I   N   G   .   c   h
0041120    a   r   ^   i  \r               i   f       c       e   q    
0041140    $   <       %       c       e   q       $   >       t   h   e
0041160    n       s   e   p       =       i  \r               ]  \r   l
0041200    e   t       d   i   r   F   n       =       v   e   c       m
0041220    a   x   L   e   n   g   t   h   F   n   I   n   W   o   r   d
0041240    s  \r   E   x   t   r   a   c   t   L   e   g   a   l   F   i
0041260    l   e   N   a   m   e   (   n   ,       d   i   r   F   n   ,
0041300        0   ,       s   e   p   -   1   )  \r   E   x   t   r   a
0041320    c   t   L   e   g   a   l   F   i   l   e   N   a   m   e   (
0041340    n   ,       f   n   ,       s   e   p   ,       l   e   n   g
0041360    t   h   ) 376 001  \0 265   m  \r  \r   /   /       N   o   w
0041400        n   e   e   d       t   o       c   h   e   c   k       t
0041420    o       s   e   e       i   f       d   i   r   F   n       i
0041440    s       n   u   l   l       (   i   n       w   h   i   c   h
0041460        c   a   s   e       u   s   e       W   o   r   k   i   n
0041500    g   D   i   r   )  \r   /   /       o   r       <   ,       i
0041520    n       w   h   i   c   h       c   a   s   e       u   s   e
0041540        S   y   s   D   i   r  \r   l   e   t       f   p       =
0041560        0  \r   l   e   t       d   i   s   k       =       l   i
0041600    s   t   !   3  \r   i   f       d   i   r   F   n   >   >   S
0041620    T   R   I   N   G   .   l   e   n   g   t   h       e   q    
0041640    0       t   h   e   n  \r               [  \r               /
0041660    /       A   s   s   u   m   e       w   o   r   k   i   n   g
0041700        d   i   r   e   c   t   o   r   y   :  \r               f
0041720    p       =       d   i   s   k   >   >   D   S   K   .   f   p
0041740    W   o   r   k   i   n   g   D   i   r  \r               d   i
0041760    r   F   n       =       d   i 376 001  \0   | 245   s   k   >
0042000    >   D   S   K   .   n   a   m   e   W   o   r   k   i   n   g
0042020    D   i   r  \r               i   f       n   >   >   S   T   R
0042040    I   N   G   .   c   h   a   r   ^   s   e   p       e   q    
0042060    $   <       t   h   e   n       [       f   p       =       d
0042100    i   s   k   >   >   D   S   K   .   f   p   S   y   s   D   i
0042120    r   ;       d   i   r   F   n       =       0       ]  \r    
0042140            ]  \r   r   e   s   u   l   t   i   s       O   p   e
0042160    n   F   i   l   e   (   d   i   r   F   n   ,       0   ,    
0042200    0   ,       v   e   r   s   i   o   n   C   o   n   t   r   o
0042220    l   ,       f   p   ,       l   i   s   t   !   0   ,       l
0042240    i   s   t   !   1   ,  \r       n   i   l   ,       d   i   s
0042260    k   ,       0   ,       #   1   0   0   0   0   0   )  \r   ]
0042300   \r  \r   /   /   -   -   -   -   -   -   -   -   -   -   -   -
0042320    -   -   -   -   -   -   -   -   -   -   -   -   -   -   -   -
*
0042360    -   -   -   -   -   -   -   -   -   -   -   -   - 376 001  \0
0042400  334 276   -   -   -   -   -   -   -   -   -   -   -   -   -   -
0042420    -   -   -   -  \r   a   n   d       E   x   t   r   a   c   t
0042440    L   e   g   a   l   F   i   l   e   N   a   m   e   (   s   r
0042460    c   S   ,       d   e   s   t   S   ,       f   i   r   s   t
0042500    M   i   n   u   s   1   ,       l   a   s   t   )       b   e
0042520   \r   /   /   -   -   -   -   -   -   -   -   -   -   -   -   -
0042540    -   -   -   -   -   -   -   -   -   -   -   -   -   -   -   -
*
0042620    -   -   -   -   -   -   -   -   -   -   -   -   -   -  \r   [
0042640   \r   l   e   t       l   e   n   g   t   h       =       l   a
0042660    s   t       -       f   i   r   s   t   M   i   n   u   s   1
0042700   \r   Z   e   r   o   (   d   e   s   t   S   ,       (   l   e
0042720    n   g   t   h   +   3   )       r   s   h   i   f   t       1
0042740    )           /   /       i   n       p   a   r   t   i   c   u
0042760    l   a   r   ,       z   e   r   o       l   e   n   g   t   h
0043000        & 376 001  \0 211 322       g   a   r   b   a   g   e    
0043020    b   y   t   e  \r   i   f       l   e   n   g   t   h       g
0043040    r       0       t   h   e   n  \r               [  \r        
0043060        f   o   r       i       =       1       t   o       l   e
0043100    n   g   t   h       d   o           /   /   m   a   k   e    
0043120    s   u   r   e       e   a   c   h       c   h   a   r   a   c
0043140    t   e   r       i   s       l   e   g   a   l  \r            
0043160                [  \r                           l   e   t       c
0043200    h   a   r       =       s   r   c   S   >   >   S   T   R   I
0043220    N   G   .   c   h   a   r   ^   (   f   i   r   s   t   M   i
0043240    n   u   s   1   +   i   )  \r                           s   w
0043260    i   t   c   h   o   n       c   h   a   r       i   n   t   o
0043300   \r                                       [  \r                
0043320                        d   e   f   a   u   l   t   :  \r        
0043340                                            u   n   l   e   s   s
0043360        (   (   c   h   a   r   &   1   3   7   B   )       g   e
0043400        $   A       &       ( 376 001  \0   p   I   c   h   a   r
0043420    &   1   3   7   B   )       l   e       $   Z   )       %  \r
0043440                                                        (   c   h
0043460    a   r       g   e       $   0       &       c   h   a   r    
0043500    l   e       $   9   )       d   o       c   h   a   r       =
0043520        $   -  \r                                       c   a   s
0043540    e       $   -   :       c   a   s   e       $   $   :       c
0043560    a   s   e       $   !   :       c   a   s   e       $   ?   :
0043600   \r                                       c   a   s   e       $
0043620    +   :       c   a   s   e       $   .   :       c   a   s   e
0043640        $   <   :       c   a   s   e       $   >   :  \r        
0043660                                ]  \r                           d
0043700    e   s   t   S   >   >   S   T   R   I   N   G   .   c   h   a
0043720    r   ^   i       =       c   h   a   r  \r                    
0043740        ]  \r               d   e   s   t   S   >   >   S   T   R
0043760    I   N   G   .   l   e   n   g   t   h       =       l   e   n
0044000    g   t   h  \r               S   t   r   i   p 376 001  \0   F
0044020    8   V   e   r   s   i   o   n   (   d   e   s   t   S   )    
0044040        /   /       a   p   p   e   n   d       $   .       i   f
0044060        n   e   c   e   s   s   a   r   y  \r               ]  \r
0044100    ]  \r  \r   /   /   -   -   -   -   -   -   -   -   -   -   -
0044120    -   -   -   -   -   -   -   -   -   -   -   -   -   -   -   -
*
0044220   \r   a   n   d       S   e   t   W   o   r   k   i   n   g   D
0044240    i   r   (   n   a   m   e   ,       f   p   ,       d   i   s
0044260    k   ;       n   u   m   a   r   g   s       n   a   )       b
0044300    e  \r   /   /   -   -   -   -   -   -   -   -   -   -   -   -
0044320    -   -   -   -   -   -   -   -   -   -   -   -   -   -   -   -
*
0044400    -   -   -   -   -   -   -   -   -   -   -   -   -   -   -  \r
0044420    [ 376 001  \0 313 356  \r   i   f       n   a       l   s    
0044440    3       t   h   e   n       d   i   s   k       =       s   y
0044460    s   D   i   s   k  \r   M   o   v   e   B   l   o   c   k   (
0044500    d   i   s   k   >   >   D   S   K   .   f   p   W   o   r   k
0044520    i   n   g   D   i   r   ,       f   p   ,       l   F   P   )
0044540   \r   M   o   v   e   B   l   o   c   k   (   d   i   s   k   >
0044560    >   D   S   K   .   n   a   m   e   W   o   r   k   i   n   g
0044600    D   i   r   ,       n   a   m   e   ,       m   a   x   L   e
0044620    n   g   t   h   F   n   I   n   W   o   r   d   s   )  \r   ]
0044640   \r  \f  \r   /   /   -   -   -   -   -   -   -   -   -   -   -
0044660    -   -   -   -   -   -   -   -   -   -   -   -   -   -   -   -
*
0044760   \r   a   n   d       O   p   e   n   F   i   l   e   (   n   a
0045000    m   e   ,       k   s   T   y   p   e   ,       i   t   e   m
0045020    S   i   z   e   ,     376 001  \0 341 202   v   e   r   s   i
0045040    o   n   C   o   n   t   r   o   l   ,       h   i   n   t   F
0045060    p   ,       e   r   r   R   t   n   ,  \r       z   o   n   e
0045100    ,       n   i   l   ,       d   i   s   k   ,       C   r   e
0045120    a   t   e   S   t   r   e   a   m   ,       S   N   w   o   r
0045140    d   ;       n   u   m   a   r   g   s       n   a   )       =
0045160        v   a   l   o   f  \r   /   /   -   -   -   -   -   -   -
0045200    -   -   -   -   -   -   -   -   -   -   -   -   -   -   -   -
*
0045300    -   -   -   -  \r   [  \r   l   e   t       d   e   f   a   u
0045320    l   t   F   p       =       v   e   c       l   F   P  \r   D
0045340    e   f   a   u   l   t   A   r   g   s   (   l   v       n   a
0045360    ,       -   1   ,       k   s   T   y   p   e   R   e   a   d
0045400    W   r   i   t   e   ,       w   o   r   d   I   t   e   m   ,
0045420        0   ,       d   e   f   a   u   l   t 376 001  \0   ; 277
0045440    F   p   ,       S   y   s   E   r   r   ,  \r       s   y   s
0045460    Z   o   n   e   ,       n   i   l   ,       s   y   s   D   i
0045500    s   k   ,       C   r   e   a   t   e   D   i   s   k   S   t
0045520    r   e   a   m   ,       0   )  \r   i   f       v   e   r   s
0045540    i   o   n   C   o   n   t   r   o   l       e   q       0    
0045560    t   h   e   n  \r               v   e   r   s   i   o   n   C
0045600    o   n   t   r   o   l       =       k   s   T   y   p   e    
0045620    e   q       k   s   T   y   p   e   R   e   a   d   O   n   l
0045640    y   ?       v   e   r   L   a   t   e   s   t   ,       v   e
0045660    r   L   a   t   e   s   t   C   r   e   a   t   e  \r  \r    
0045700            [       /   /       r   e   p   e   a   t  \r        
0045720        /   /       F   o   l   l   o   w   i   n   g       c   h
0045740    e   c   k       t   r   i   e   s       t   o       d   e   c
0045760    i   d   e       w   h   e   t   h   e   r       t   h   e    
0046000    h   i   n   t       i   s       f   i   l   l   e   d       i
0046020    n   .  \r               /   /       I   t       m   a   y    
0046040  376 001  \0 307   G   b   e       t   h   a   t       u   s   e
0046060    r       j   u   s   t       w   a   n   t   s       i   t    
0046100    f   i   l   l   e   d       i   n   .  \r               /   /
0046120        O   n       t   h   e       s   e   c   o   n   d       i
0046140    t   e   r   a   t   i   o   n       i   t       w   i   l   l
0046160        a   l   w   a   y   s       c   a   l   l       C   r   e
0046200    a   t   e   S   t   r   e   a   m   .  \r               i   f
0046220        h   i   n   t   F   p       n   e       d   e   f   a   u
0046240    l   t   F   p       &       h   i   n   t   F   p   >   >   F
0046260    P   .   v   e   r   s   i   o   n       n   e       0       t
0046300    h   e   n  \r                           [  \r                
0046320            l   e   t       s       =       C   r   e   a   t   e
0046340    S   t   r   e   a   m   (   h   i   n   t   F   p   ,       k
0046360    s   T   y   p   e   ,       i   t   e   m   S   i   z   e   ,
0046400        N   o   o   p   ,       e   r   r   R   t   n   ,  \r    
0046420                            z   o   n   e   ,       n   i   l   ,
0046440        d   i   s   k 376 001  \0 225 217   )  \r                
0046460            i   f       s       n   e       0       r   e   s   u
0046500    l   t   i   s       s  \r                           ]  \r  \r
0046520                i   f       d   e   f   a   u   l   t   F   p    
0046540    e   q       0       r   e   s   u   l   t   i   s       e   r
0046560    r   R   t   n   (   n   i   l   ,       e   c   C   a   n   t
0046600    O   p   e   n   F   i   l   e   )  \r               d   e   f
0046620    a   u   l   t   F   p       =       0           /   /       F
0046640    o   r   c   e       C   r   e   a   t   e   S   t   r   e   a
0046660    m       t   o       b   e       d   o   n   e       o   n    
0046700    n   e   x   t       i   t   e   r   a   t   i   o   n  \r  \r
0046720                /   /       b   l   u   n   d   e   r       c   h
0046740    e   c   k  \r               i   f       n   a   m   e       e
0046760    q       0       %       n   a   m   e   >   >   S   T   R   I
0047000    N   G   .   l   e   n   g   t   h       e   q       0       r
0047020    e   s   u   l   t   i   s       0  \r  \r               l   e
0047040    t       f   i   x   e   d   N   a   m 376 001  \0       X   e
0047060    ,       d   v   ,       h   d       =       v   e   c       m
0047100    a   x   L   e   n   g   t   h   F   n   I   n   W   o   r   d
0047120    s   ,       v   e   c       l   D   V   ,       v   e   c    
0047140    l   H   D  \r  \r               /   /       s   t   r   i   p
0047160        o   f   f       t   h   e       d   i   r   e   c   t   o
0047200    r   y       i   n   f   o   ,       r   e   t   u   r   n    
0047220    a       n   a   m   e       b   o   d   y       a   n   d    
0047240    d   i   r       s   t   r   e   a   m  \r               l   e
0047260    t       c   u   r   r   e   n   t   D   i   r   S       =    
0047300    P   a   r   s   e   F   i   l   e   N   a   m   e   (   f   i
0047320    x   e   d   N   a   m   e   ,       n   a   m   e   ,       l
0047340    v       e   r   r   R   t   n   ,       v   e   r   s   i   o
0047360    n   C   o   n   t   r   o   l   )  \r               i   f    
0047400    c   u   r   r   e   n   t   D   i   r   S       e   q       0
0047420        r   e   s   u   l   t   i   s       0           /   /   n
0047440    o       s   u   c   h       d   i   r   e   c   t   o   r 376
0047460  001  \0 217 340   y  \r  \r               /   /       g   o    
0047500    l   o   o   k       i   n       t   h   e       d   i   r   e
0047520    c   t   o   r   y       f   o   r       t   h   e       f   i
0047540    l   e   .  \r               i   f       F   i   n   d   F   d
0047560    E   n   t   r   y   (   c   u   r   r   e   n   t   D   i   r
0047600    S   ,       f   i   x   e   d   N   a   m   e   ,       0   ,
0047620        d   v   ,       h   d   )       e   q       -   1       t
0047640    h   e   n  \r                           [       /   /       N
0047660    o   t       t   h   e   r   e   ;       a   l   l   o   w   e
0047700    d       t   o       c   r   e   a   t   e   ?  \r            
0047720                i   f       (   v   e   r   s   i   o   n   C   o
0047740    n   t   r   o   l       &       v   e   r   C   r   M   a   s
0047760    k   )       e   q       0       t   h   e   n  \r            
0050000                            [       C   l   o   s   e   s   (   c
0050020    u   r   r   e   n   t   D   i   r   S   )   ;       r   e   s
0050040    u   l   t   i   s       0       ]  \r                        
0050060    l   e   t     376 001  \0   M 263   d   i   r   C   f   a    
0050100    =       v   e   c       l   C   F   A   ;       G   e   t   C
0050120    o   m   p   l   e   t   e   F   a   (   c   u   r   r   e   n
0050140    t   D   i   r   S   ,       d   i   r   C   f   a   )  \r    
0050160                        C   r   e   a   t   e   D   i   s   k   F
0050200    i   l   e   (   d   i   s   k   ,       f   i   x   e   d   N
0050220    a   m   e   ,       l   v       d   v   >   >   D   V   .   f
0050240    p   ,       l   v       d   i   r   C   f   a   >   >   C   F
0050260    A   .   f   p   ,       S   N   w   o   r   d   )  \r        
0050300                    M   a   k   e   N   e   w   F   d   E   n   t
0050320    r   y   (   c   u   r   r   e   n   t   D   i   r   S   ,    
0050340    f   i   x   e   d   N   a   m   e   ,       d   v   ,       h
0050360    d   )  \r                           ]  \r  \r               C
0050400    l   o   s   e   s   (   c   u   r   r   e   n   t   D   i   r
0050420    S   )  \r               M   o   v   e   B   l   o   c   k   (
0050440    h   i   n   t   F   p   ,       l   v       d   v   >   >   D
0050460    V   .   f   p   ,       l   F   P 376 001  \0 361 305   )  \r
0050500                ]       r   e   p   e   a   t  \r   ]  \r  \r  \r
0050520    /   /   M   o   v   e   d       t   h   i   s       f   r   o
0050540    m       M   D   i   r   s   .   b   c   p   l       t   o    
0050560    a   v   o   i   d       s   w   a   p   p   i   n   g       i
0050600    n       D   i   r   e   c   t   o   r   y       o   v   e   r
0050620    l   a   y  \r   /   /   o   n       L   o   o   k   u   p   E
0050640    n   t   r   i   e   s       c   a   l   l   s       d   u   r
0050660    i   n   g       i   n   i   t   i   a   l   i   z   a   t   i
0050700    o   n   ,       w   h   i   c   h       i   s       u   n   n
0050720    e   c   e   s   s   a   r   y  \r   /   /   w   h   e   n    
0050740    t   e   m   p   o   r   a   r   y       f   i   l   e   s    
0050760    a   l   r   e   a   d   y       e   x   i   s   t   .  \r   a
0051000    n   d       S   t   r   i   p   V   e   r   s   i   o   n   (
0051020    f   n   ,       l   v   V   e   r   s   i   o   n   E   x   i
0051040    s   t   s   ;       n   u   m   a   r   g   s       n   a   )
0051060        =       v   a   l   o   f  \r   [  \t   i   f     376  \0
0051100  265 316 262   n   a       g   r       1       t   h   e   n    
0051120    @   l   v   V   e   r   s   i   o   n   E   x   i   s   t   s
0051140        =       f   a   l   s   e  \r  \t   l   e   t       l   e
0051160    n       =       f   n   >   >   S   T   R   I   N   G   .   l
0051200    e   n   g   t   h  \r  \t   i   f       f   n   >   >   S   T
0051220    R   I   N   G   .   c   h   a   r   ^   l   e   n       n   e
0051240        $   .       t   h   e   n  \r  \t   [       f   n   >   >
0051260    S   T   R   I   N   G   .   l   e   n   g   t   h       =    
0051300    l   e   n       +   1  \r  \t           f   n   >   >   S   T
0051320    R   I   N   G   .   c   h   a   r   ^   (   l   e   n   +   1
0051340    )       =       $   .  \r  \t   ]  \r  \t   r   e   s   u   l
0051360    t   i   s       0  \r   ]  \r 374                            
0051371