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