$ od -c -N 50000 [Pixel]<DragonWare0.1>XDE>Rapunzel>RapunzelServiceImpl.mesa!13
0000000    -   -       R   a   p   u   n   z   e   l   S   e   r   v   i
0000020    c   e   I   m   p   l   .   m   e   s   a  \r  \t   -   -    
0000040    C   o   p   y   r   i   g   h   t     323       1   9   8   6
0000060    ,       1   9   8   8       b   y       X   e   r   o   x    
0000100    C   o   r   p   o   r   a   t   i   o   n   .           A   l
0000120    l       r   i   g   h   t   s       r   e   s   e   r   v   e
0000140    d   .  \r  \t   -   -       B   i   l   l       J   a   c   k
0000160    s   o   n       (   b   j   )       J   a   n   u   a   r   y
0000200        1   1   ,       1   9   8   8       1   1   :   5   1   :
0000220    1   9       a   m       P   S   T  \r  \t   -   -       W   i
0000240    l   l   i   e   -   S   u   e   ,       A   p   r   i   l    
0000260    9   ,       1   9   8   7       6   :   5   4   :   0   4    
0000300    p   m       P   D   T  \r  \r   D   I   R   E   C   T   O   R
0000320    Y  \r  \t   E   S   C   A   l   p   h   a       U   S   I   N
0000340    G       [       a   l   p   h   a       ]   ,  \r  \t   H   e
0000360    a   p       U   S   I   N   G       [       s   y   s   t   e
0000400    m   Z   o   n   e       ]   ,  \r  \t   I   n   l   i   n   e
0000420        U   S   I   N   G       [       H   i   g   h   H   a   l
0000440    f   ,       L   o   w   H   a   l   f   ,       L   o   n   g
0000460    N   u   m   b   e   r       ]   ,  \r  \t   M   o   p   c   o
0000500    d   e   s       U   S   I   N   G       [       z   E   S   C
0000520        ]   ,  \r  \t   P   u   t       U   S   I   N   G       [
0000540        L   o   n   g   N   u   m   b   e   r   ,       T   e   x
0000560    t       ]   ,  \r  \t   S   y   s   t   e   m       U   S   I
0000600    N   G       [       N   e   t   w   o   r   k   A   d   d   r
0000620    e   s   s       ]   ,  \r  \t   R   a   p   u   n   z   e   l
0000640    ;  \r  \r   R   a   p   u   n   z   e   l   S   e   r   v   i
0000660    c   e   I   m   p   l   :       P   R   O   G   R   A   M  \r
0000700   \t   I   M   P   O   R   T   S       H   e   a   p   ,       I
0000720    n   l   i   n   e   ,       P   u   t   ,       R   a   p   u
0000740    n   z   e   l  \r  \t   E   X   P   O   R   T   S       R   a
0000760    p   u   n   z   e   l       =       {  \r  \t   O   P   E   N
0001000        R   a   p   u   n   z   e   l   ;  \r  \t   -   -       T
0001020    y   p   e   s       &       M   a   g   i   c       #   '   s
0001040   \r  \t  \t   p   M   e   m   F   e   t   c   h   :       E   S
0001060    C   A   l   p   h   a   .   a   l   p   h   a       =       3
0001100    E   H   ;  \r  \t  \t   p   M   e   m   S   m   a   s   h   :
0001120        E   S   C   A   l   p   h   a   .   a   l   p   h   a    
0001140    =       3   F   H   ;  \r  \t  \t  \t  \r  \t  \t   f   i   r
0001160    s   t   P   h   y   s   i   c   a   l   :       R   a   p   u
0001200    n   z   e   l   .   A   d   d   r   e   s   s       =       0
0001220    ;  \r  \t  \t   l   o   w   e   s   t   G   u   a   r   d   e
0001240    d   :       R   a   p   u   n   z   e   l   .   A   d   d   r
0001260    e   s   s       =       (   L   O   N   G   [   1   2   ]   *
0001300    2   5   6   *   2   5   6   )   ;       -   -       1   .   5
0001320    M   B  \r  \t  \t   l   a   s   t   P   h   y   s   i   c   a
0001340    l   :       R   a   p   u   n   z   e   l   .   A   d   d   r
0001360    e   s   s       =       (   (   L   O   N   G   [   3   2   ]
0001400    *   2   5   6   *   2   5   6   )   -   1   )   ;       -   -
0001420        2   ^   (   5   +   8   +   8   )       w   o   r   d   s
0001440        =       4   M   B  \r  \t  \t  \t  \r  \t  \t   l   o   w
0001460    e   r   B   o   u   n   d   :       C   A   R   D   I   N   A
0001500    L       =       0   ;  \r  \t  \t   u   p   p   e   r   B   o
0001520    u   n   d   :       C   A   R   D   I   N   A   L       =    
0001540    1   0   2   3   ;  \r  \t  \t  \t  \r  \t  \t   M   e   m   :
0001560        T   Y   P   E       =       A   R   R   A   Y       [   l
0001600    o   w   e   r   B   o   u   n   d   .   .   u   p   p   e   r
0001620    B   o   u   n   d   ]       O   F       W   O   R   D   ;  \r
0001640   \t  \t   m   e   m   M   o   d   :       C   A   R   D   I   N
0001660    A   L       =       1   0   2   4   ;  \r  \t   -   -       G
0001700    l   o   b   a   l       S   t   a   t   e  \r  \t  \t   m   e
0001720    m   :       M   e   m   ;  \r  \t  \t   n   i   l   H   a   n
0001740    d   l   e   :       B   i   n   d   H   a   n   d   l   e   ;
0001760   \r  \t  \t   s   i   m   u   l   a   t   i   o   n   :       B
0002000    O   O   L   E   A   N       _       F   A   L   S   E   ;  \r
0002020   \t  \t   h   i   s   t   o   r   y   B   u   f   f   e   r   :
0002040        B   O   O   L   E   A   N       _       F   A   L   S   E
0002060    ;  \r  \t  \t   d   e   b   u   g   g   i   n   g   :       B
0002100    O   O   L   E   A   N       _       F   A   L   S   E   ;  \r
0002120   \t  \t   s   h   f   t   A   A   d   d   r   :       R   a   p
0002140    u   n   z   e   l   .   A   d   d   r   e   s   s   ;  \r  \t
0002160   \t   s   h   f   t   B   A   d   d   r   :       R   a   p   u
0002200    n   z   e   l   .   A   d   d   r   e   s   s   ;  \r  \t  \t
0002220   \r  \t   F   a   u   l   t   :       P   U   B   L   I   C    
0002240    E   R   R   O   R       [       b   H   :       B   i   n   d
0002260    H   a   n   d   l   e   ,       c   o   d   e   :       R   a
0002300    p   u   n   z   e   l   .   F   a   u   l   t   C   o   d   e
0002320    ,       a   d   d   r   e   s   s   :       R   a   p   u   n
0002340    z   e   l   .   A   d   d   r   e   s   s       ]       =    
0002360    C   O   D   E   ;  \r  \t  \t  \r  \t   H   i   s   t   o   r
0002400    y   B   u   f   f   e   r   F   e   t   c   h   :       P   R
0002420    O   C       [       p   :       L   O   N   G       C   A   R
0002440    D   I   N   A   L       ]       R   E   T   U   R   N   S    
0002460    [       b   :       W   O   R   D       ]       =       M   A
0002500    C   H   I   N   E       C   O   D   E       {  \r  \t  \t   -
0002520    -       b       _       I   O   P   O   p   s   .   G   e   t
0002540    B   y   t   e   [   p       !       I   O   P   O   p   s   .
0002560    E   r   r   o   r       =   >       {       F   a   u   l   t
0002600    [   b   H   ,       x   x   ,       x   x   ]       }       ]
0002620    ;  \r  \t  \t   }   ;  \r  \t  \t  \r  \t   H   i   s   t   o
0002640    r   y   B   u   f   f   e   r   S   m   a   s   h   :       P
0002660    R   O   C       [       p   :       L   O   N   G       C   A
0002700    R   D   I   N   A   L   ,       b   :       W   O   R   D    
0002720    ]       =       M   A   C   H   I   N   E       C   O   D   E
0002740        {  \r  \t  \t   -   -       I   O   P   O   p   s   .   P
0002760    u   t   B   y   t   e   [   p   ,       b       !       I   O
0003000    P   O   p   s   .   E   r   r   o   r       =   >       {    
0003020    F   a   u   l   t   [   b   H   ,       x   x   ,       x   x
0003040    ]       }       ]   ;  \r  \t  \t   }   ;  \r  \t  \t  \r  \t
0003060    M   e   m   F   e   t   c   h   :       P   R   O   C       [
0003100        L   O   N   G       C   A   R   D   I   N   A   L       ]
0003120        R   E   T   U   R   N   S       [       W   O   R   D    
0003140    ]       =       M   A   C   H   I   N   E       C   O   D   E
0003160        {  \r  \t  \t   M   o   p   c   o   d   e   s   .   z   E
0003200    S   C   ,       p   M   e   m   F   e   t   c   h  \r  \t  \t
0003220    }   ;  \r  \t  \t  \r  \t   M   e   m   S   m   a   s   h   :
0003240        P   R   O   C       [       L   O   N   G       C   A   R
0003260    D   I   N   A   L   ,       W   O   R   D       ]       =    
0003300    M   A   C   H   I   N   E       C   O   D   E       {  \r  \t
0003320   \t   M   o   p   c   o   d   e   s   .   z   E   S   C   ,    
0003340    p   M   e   m   S   m   a   s   h  \r  \t  \t   }   ;  \r  \t
0003360   \t  \r  \t   D   i   s   p   l   a   y   :       P   R   O   C
0003400        [       l   e   a   d   :       L   O   N   G       S   T
0003420    R   I   N   G   ,       v   a   l   u   e   :       L   O   N
0003440    G       C   A   R   D   I   N   A   L       ]       =       {
0003460   \r  \t  \t   I   F       (       N   O   T       d   e   b   u
0003500    g   g   i   n   g       )       T   H   E   N       R   E   T
0003520    U   R   N   ;  \r  \t  \t   P   u   t   .   T   e   x   t   [
0003540    N   I   L   ,       l   e   a   d   ]   ;  \r  \t  \t   P   u
0003560    t   .   L   o   n   g   N   u   m   b   e   r   [   N   I   L
0003600    ,       v   a   l   u   e   ,       [   b   a   s   e   :    
0003620    8   ]   ]   ;  \r  \t  \t   P   u   t   .   T   e   x   t   [
0003640    N   I   L   ,       "   B   \   n   "   ]   ;  \r  \t  \t   }
0003660    ;  \r  \t  \t  \r  \t   P   e   e   k   O   p   C   o   d   e
0003700    :       P   R   O   C       [       b   H   :       B   i   n
0003720    d   H   a   n   d   l   e   ,       a   d   d   r   :       L
0003740    O   N   G       C   A   R   D   I   N   A   L       ]  \r   R
0003760    E   T   U   R   N   S       [       w   o   r   d   :       W
0004000    O   R   D       ]       =       I   N   L   I   N   E       {
0004020   \r  \t  \t   p   h   y   s   :       C   A   R   D   I   N   A
0004040    L       =       I   n   l   i   n   e   .   L   o   w   H   a
0004060    l   f   [   a   d   d   r   ]   ;  \r  \t  \t   S   E   L   E
0004100    C   T       T   R   U   E       F   R   O   M  \r  \t  \t  \t
0004120    (       s   i   m   u   l   a   t   i   o   n       )       =
0004140    >       {  \r  \t  \t  \t  \t   -   -       I   F       N   O
0004160    T       (   p   h   y   s       I   N       [   l   o   w   e
0004200    r   B   o   u   n   d   .   .   u   p   p   e   r   B   o   u
0004220    n   d   ]   )       T   H   E   N       E   R   R   O   R    
0004240    F   a   u   l   t   [   b   H   ,       n   o   n   e   x   i
0004260    s   t   e   n   t   ,       a   d   d   r   ]   ;  \r  \t  \t
0004300   \t  \t   w   o   r   d       _       m   e   m   [   p   h   y
0004320    s       M   O   D       m   e   m   M   o   d   ]   ;  \r  \t
0004340   \t  \t  \t   }   ;  \r  \t  \t  \t   (       h   i   s   t   o
0004360    r   y   B   u   f   f   e   r       )       =   >       {  \r
0004400   \t  \t  \t  \t   w   o   r   d       _       H   i   s   t   o
0004420    r   y   B   u   f   f   e   r   F   e   t   c   h   [   a   d
0004440    d   r   ]   ;  \r  \t  \t  \t  \t   }   ;  \r  \t  \t  \t   E
0004460    N   D   C   A   S   E       =   >       {  \r  \t  \t  \t  \t
0004500    I   F       N   O   T       (       a   d   d   r       I   N
0004520        [   l   o   w   e   s   t   G   u   a   r   d   e   d   .
0004540    .   l   a   s   t   P   h   y   s   i   c   a   l   ]       )
0004560   \r  \t  \t  \t  \t  \t   T   H   E   N       E   R   R   O   R
0004600        F   a   u   l   t   [   b   H   ,       I   F       (    
0004620    a   d   d   r       <       l   o   w   e   s   t   G   u   a
0004640    r   d   e   d       )  \r   T   H   E   N       p   r   o   t
0004660    e   c   t   i   o   n       E   L   S   E       n   o   n   e
0004700    x   i   s   t   e   n   t   ,       a   d   d   r   ]   ;  \r
0004720   \t  \t  \t  \t   w   o   r   d       _       M   e   m   F   e
0004740    t   c   h   [   a   d   d   r   ]   ;  \r  \t  \t  \t  \t   }
0004760    ;  \r  \t  \t   }   ;  \r  \t  \t  \r  \t   P   o   k   e   O
0005000    p   C   o   d   e   :       P   R   O   C       [       b   H
0005020    :       B   i   n   d   H   a   n   d   l   e   ,       a   d
0005040    d   r   :       L   O   N   G       C   A   R   D   I   N   A
0005060    L   ,       w   o   r   d   :       W   O   R   D       ]    
0005100    =       I   N   L   I   N   E       {  \r  \t  \t   p   h   y
0005120    s   :       C   A   R   D   I   N   A   L       =       I   n
0005140    l   i   n   e   .   L   o   w   H   a   l   f   [   a   d   d
0005160    r   ]   ;  \r  \t  \t   S   E   L   E   C   T       T   R   U
0005200    E       F   R   O   M  \r  \t  \t  \t   (       s   i   m   u
0005220    l   a   t   i   o   n       )       =   >       {  \r  \t  \t
0005240   \t  \t   -   -       I   F       N   O   T       (   p   h   y
0005260    s       I   N       [   l   o   w   e   r   B   o   u   n   d
0005300    .   .   u   p   p   e   r   B   o   u   n   d   ]   )       T
0005320    H   E   N       E   R   R   O   R       F   a   u   l   t   [
0005340    b   H   ,       n   o   n   e   x   i   s   t   e   n   t   ,
0005360        a   d   d   r   ]   ;  \r  \t  \t  \t  \t   m   e   m   [
0005400    p   h   y   s       M   O   D       m   e   m   M   o   d   ]
0005420        _       w   o   r   d   ;  \r  \t  \t  \t  \t   }   ;  \r
0005440   \t  \t  \t   (       h   i   s   t   o   r   y   B   u   f   f
0005460    e   r       )       =   >       {  \r  \t  \t  \t  \t   H   i
0005500    s   t   o   r   y   B   u   f   f   e   r   S   m   a   s   h
0005520    [   a   d   d   r   ,       w   o   r   d   ]   ;  \r  \t  \t
0005540   \t  \t   }   ;  \r  \t  \t  \t   E   N   D   C   A   S   E    
0005560    =   >       {  \r  \t  \t  \t  \t   I   F       N   O   T    
0005600    (       a   d   d   r       I   N       [   l   o   w   e   s
0005620    t   G   u   a   r   d   e   d   .   .   l   a   s   t   P   h
0005640    y   s   i   c   a   l   ]       )  \r  \t  \t  \t  \t  \t   T
0005660    H   E   N       E   R   R   O   R       F   a   u   l   t   [
0005700    b   H   ,       I   F       (       a   d   d   r       <    
0005720    l   o   w   e   s   t   G   u   a   r   d   e   d       )  \r
0005740    T   H   E   N       p   r   o   t   e   c   t   i   o   n    
0005760    E   L   S   E       n   o   n   e   x   i   s   t   e   n   t
0006000    ,       a   d   d   r   ]   ;  \r  \t  \t  \t  \t   M   e   m
0006020    S   m   a   s   h   [   a   d   d   r   ,       w   o   r   d
0006040    ]   ;  \r  \t  \t  \t  \t   }   ;  \r  \t  \t   }   ;  \r  \t
0006060   \r  \t   S   e   t   S   h   f   t   A   d   d   r   s   :    
0006100    P   U   B   L   I   C       P   R   O   C       [       b   H
0006120    :       B   i   n   d   H   a   n   d   l   e   ,       s   h
0006140    f   t   A   ,       s   h   f   t   B   :       R   a   p   u
0006160    n   z   e   l   .   A   d   d   r   e   s   s       ]       =
0006200        {  \r  \t  \t   s   h   f   t   A   A   d   d   r       _
0006220        s   h   f   t   A   ;  \r  \t  \t   s   h   f   t   B   A
0006240    d   d   r       _       s   h   f   t   B   ;  \r  \t  \t   }
0006260    ;  \r  \t  \t  \r  \t   P   e   e   k   S   h   o   r   t   :
0006300        P   U   B   L   I   C       P   R   O   C       [       b
0006320    H   :       B   i   n   d   H   a   n   d   l   e   ,       a
0006340    d   d   r   e   s   s   :       R   a   p   u   n   z   e   l
0006360    .   A   d   d   r   e   s   s       ]  \r  \t  \t  \t   R   E
0006400    T   U   R   N   S       [       r   e   s   u   l   t   :    
0006420    R   a   p   u   n   z   e   l   .   S   h   o   r   t       ]
0006440        =       {  \r  \t  \t   D   i   s   p   l   a   y   [   "
0006460    P   e   e   k   S   h   o   r   t       -       a   d   d   r
0006500    e   s   s   :       "   ,       a   d   d   r   e   s   s   ]
0006520    ;  \r  \t  \t   r   e   s   u   l   t       _       P   e   e
0006540    k   O   p   C   o   d   e   [   b   H   ,       a   d   d   r
0006560    e   s   s   ]   ;  \r  \t  \t   D   i   s   p   l   a   y   [
0006600    "  \t   r   e   s   u   l   t   :       "   ,       r   e   s
0006620    u   l   t   ]   ;  \r  \t  \t   }   ;  \r  \t  \t  \r  \t   P
0006640    o   k   e   S   h   o   r   t   :       P   U   B   L   I   C
0006660        P   R   O   C       [       b   H   :       B   i   n   d
0006700    H   a   n   d   l   e   ,       a   d   d   r   e   s   s   :
0006720        R   a   p   u   n   z   e   l   .   A   d   d   r   e   s
0006740    s   ,       v   a   l   u   e   :       R   a   p   u   n   z
0006760    e   l   .   S   h   o   r   t       ]       =       {  \r  \t
0007000   \t   D   i   s   p   l   a   y   [   "   P   o   k   e   S   h
0007020    o   r   t       -       a   d   d   r   e   s   s   :       "
0007040    ,       a   d   d   r   e   s   s   ]   ;  \r  \t  \t   D   i
0007060    s   p   l   a   y   [   "  \t   v   a   l   u   e   :       "
0007100    ,       v   a   l   u   e   ]   ;  \r  \t  \t   P   o   k   e
0007120    O   p   C   o   d   e   [   b   H   ,       a   d   d   r   e
0007140    s   s   ,       v   a   l   u   e   ]   ;  \r  \t  \t   }   ;
0007160   \r  \t  \t  \r  \t   P   e   e   k   L   o   n   g   :       P
0007200    U   B   L   I   C       P   R   O   C       [       b   H   :
0007220        B   i   n   d   H   a   n   d   l   e   ,       a   d   d
0007240    r   e   s   s   :       R   a   p   u   n   z   e   l   .   A
0007260    d   d   r   e   s   s       ]  \r  \t  \t  \t   R   E   T   U
0007300    R   N   S       [       r   e   s   u   l   t   :       R   a
0007320    p   u   n   z   e   l   .   L   o   n   g       ]       =    
0007340    {  \r  \t  \t   x   x   :       I   n   l   i   n   e   .   L
0007360    o   n   g   N   u   m   b   e   r   ;  \r  \t  \t   D   i   s
0007400    p   l   a   y   [   "   P   e   e   k   L   o   n   g       -
0007420        a   d   d   r   e   s   s   :       "   ,       a   d   d
0007440    r   e   s   s   ]   ;  \r  \t  \t   x   x   .   h   i   g   h
0007460        _       P   e   e   k   O   p   C   o   d   e   [   b   H
0007500    ,       a   d   d   r   e   s   s   ]   ;  \r  \t  \t   x   x
0007520    .   l   o   w       _       P   e   e   k   O   p   C   o   d
0007540    e   [   b   H   ,       (   a   d   d   r   e   s   s   +   1
0007560    )   ]   ;  \r  \t  \t   r   e   s   u   l   t       _       x
0007600    x   .   l   c   ;  \r  \t  \t   D   i   s   p   l   a   y   [
0007620    "  \t   r   e   s   u   l   t   :       "   ,       r   e   s
0007640    u   l   t   ]   ;  \r  \t  \t   }   ;  \r  \t  \t  \r  \t   P
0007660    o   k   e   L   o   n   g   :       P   U   B   L   I   C    
0007700    P   R   O   C       [       b   H   :       B   i   n   d   H
0007720    a   n   d   l   e   ,       a   d   d   r   e   s   s   :    
0007740    R   a   p   u   n   z   e   l   .   A   d   d   r   e   s   s
0007760    ,       v   a   l   u   e   :       R   a   p   u   n   z   e
0010000    l   .   L   o   n   g       ]       =       {  \r  \t  \t   D
0010020    i   s   p   l   a   y   [   "   P   o   k   e   L   o   n   g
0010040        -       a   d   d   r   e   s   s   :       "   ,       a
0010060    d   d   r   e   s   s   ]   ;  \r  \t  \t   D   i   s   p   l
0010100    a   y   [   "  \t   v   a   l   u   e   :       "   ,       v
0010120    a   l   u   e   ]   ;  \r  \t  \t   P   o   k   e   O   p   C
0010140    o   d   e   [   b   H   ,       a   d   d   r   e   s   s   ,
0010160        I   n   l   i   n   e   .   H   i   g   h   H   a   l   f
0010200    [   v   a   l   u   e   ]   ]   ;  \r  \t  \t   P   o   k   e
0010220    O   p   C   o   d   e   [   b   H   ,       (   a   d   d   r
0010240    e   s   s   +   1   )   ,       I   n   l   i   n   e   .   L
0010260    o   w   H   a   l   f   [   v   a   l   u   e   ]   ]   ;  \r
0010300   \t  \t   }   ;  \r  \t  \t  \r  \t   P   e   e   k   S   e   q
0010320    S   h   o   r   t   :       P   U   B   L   I   C       P   R
0010340    O   C       [       b   H   :       B   i   n   d   H   a   n
0010360    d   l   e   ,       a   d   d   r   e   s   s   :       R   a
0010400    p   u   n   z   e   l   .   A   d   d   r   e   s   s   ,    
0010420    c   o   u   n   t   :       C   A   R   D   I   N   A   L    
0010440    ]  \r  \t  \t  \t   R   E   T   U   R   N   S       [       r
0010460    e   s   u   l   t   s   :       L   O   N   G       P   O   I
0010500    N   T   E   R       T   O       R   a   p   u   n   z   e   l
0010520    .   S   e   q   S   h   o   r   t       ]       =       {  \r
0010540   \t  \t   C   h   u   n   k   :       T   Y   P   E       =    
0010560    R   E   C   O   R   D       [       S   E   Q   U   E   N   C
0010600    E       C   O   M   P   U   T   E   D       R   a   p   u   n
0010620    z   e   l   .   S   e   q   S   h   o   r   t   I   n   d   e
0010640    x       O   F       R   a   p   u   n   z   e   l   .   S   h
0010660    o   r   t       ]   ;  \r  \t  \t   z   o   n   e   :       U
0010700    N   C   O   U   N   T   E   D       Z   O   N   E       =    
0010720    H   e   a   p   .   s   y   s   t   e   m   Z   o   n   e   ;
0010740   \r  \t  \t   c   h   u   n   k   :       L   O   N   G       P
0010760    O   I   N   T   E   R       =       z   o   n   e   .   N   E
0011000    W       [   C   h   u   n   k   [   c   o   u   n   t   ]   ]
0011020    ;  \r  \t  \t   D   i   s   p   l   a   y   [   "   P   e   e
0011040    k   S   e   q   S   h   o   r   t       -       a   d   d   r
0011060    e   s   s   :       "   ,       a   d   d   r   e   s   s   ]
0011100    ;  \r  \t  \t   D   i   s   p   l   a   y   [   "  \t   c   o
0011120    u   n   t   :       "   ,       c   o   u   n   t   ]   ;  \r
0011140   \t  \t   r   e   s   u   l   t   s       _       z   o   n   e
0011160    .   N   E   W       [   R   a   p   u   n   z   e   l   .   S
0011200    e   q   S   h   o   r   t       _       D   E   S   C   R   I
0011220    P   T   O   R   [   c   h   u   n   k   ,       c   o   u   n
0011240    t   ]   ]   ;  \r  \t  \t   F   O   R       i   :       C   A
0011260    R   D   I   N   A   L       I   N       [   0   .   .   c   o
0011300    u   n   t   )       D   O  \r  \t  \t  \t   r   e   s   u   l
0011320    t   s   [   i   ]       _       P   e   e   k   O   p   C   o
0011340    d   e   [   b   H   ,       (   a   d   d   r   e   s   s   +
0011360    i   )   ]   ;  \r  \t  \t  \t   D   i   s   p   l   a   y   [
0011400    "  \t   "   ,       r   e   s   u   l   t   s   [   i   ]   ]
0011420    ;  \r  \t  \t  \t   E   N   D   L   O   O   P   ;  \r  \t  \t
0011440    }   ;  \r  \t  \t  \r  \t   P   e   e   k   S   e   q   L   o
0011460    n   g   :       P   U   B   L   I   C       P   R   O   C    
0011500    [       b   H   :       B   i   n   d   H   a   n   d   l   e
0011520    ,       a   d   d   r   e   s   s   :       R   a   p   u   n
0011540    z   e   l   .   A   d   d   r   e   s   s   ,       c   o   u
0011560    n   t   :       C   A   R   D   I   N   A   L       ]  \r  \t
0011600   \t  \t   R   E   T   U   R   N   S       [       r   e   s   u
0011620    l   t   s   :       L   O   N   G       P   O   I   N   T   E
0011640    R       T   O       R   a   p   u   n   z   e   l   .   S   e
0011660    q   L   o   n   g       ]       =       {  \r  \t  \t   C   h
0011700    u   n   k   :       T   Y   P   E       =       R   E   C   O
0011720    R   D       [       S   E   Q   U   E   N   C   E       C   O
0011740    M   P   U   T   E   D       R   a   p   u   n   z   e   l   .
0011760    S   e   q   S   h   o   r   t   I   n   d   e   x       O   F
0012000        R   a   p   u   n   z   e   l   .   L   o   n   g       ]
0012020    ;  \r  \t  \t   z   o   n   e   :       U   N   C   O   U   N
0012040    T   E   D       Z   O   N   E       =       H   e   a   p   .
0012060    s   y   s   t   e   m   Z   o   n   e   ;  \r  \t  \t   c   h
0012100    u   n   k   :       L   O   N   G       P   O   I   N   T   E
0012120    R       =       z   o   n   e   .   N   E   W       [   C   h
0012140    u   n   k   [   c   o   u   n   t   ]   ]   ;  \r  \t  \t   D
0012160    i   s   p   l   a   y   [   "   P   e   e   k   S   e   q   L
0012200    o   n   g       -       a   d   d   r   e   s   s   :       "
0012220    ,       a   d   d   r   e   s   s   ]   ;  \r  \t  \t   D   i
0012240    s   p   l   a   y   [   "  \t   c   o   u   n   t   :       "
0012260    ,       c   o   u   n   t   ]   ;  \r  \t  \t   r   e   s   u
0012300    l   t   s       _       z   o   n   e   .   N   E   W       [
0012320    R   a   p   u   n   z   e   l   .   S   e   q   L   o   n   g
0012340        _       D   E   S   C   R   I   P   T   O   R   [   c   h
0012360    u   n   k   ,       c   o   u   n   t   ]   ]   ;  \r  \t  \t
0012400    F   O   R       i   :       C   A   R   D   I   N   A   L    
0012420    I   N       [   0   .   .   c   o   u   n   t   )       D   O
0012440   \r  \t  \t  \t   x   x   :       I   n   l   i   n   e   .   L
0012460    o   n   g   N   u   m   b   e   r   ;  \r  \t  \t  \t   x   x
0012500    .   h   i   g   h       _       P   e   e   k   O   p   C   o
0012520    d   e   [   b   H   ,       a   d   d   r   e   s   s   +   2
0012540    *   i   ]   ;  \r  \t  \t  \t   x   x   .   l   o   w       _
0012560        P   e   e   k   O   p   C   o   d   e   [   b   H   ,    
0012600    (   a   d   d   r   e   s   s   +   2   *   i   +   1   )   ]
0012620    ;  \r  \t  \t  \t   r   e   s   u   l   t   s   [   i   ]    
0012640    _       x   x   .   l   c   ;  \r  \t  \t  \t   D   i   s   p
0012660    l   a   y   [   "  \t   "   ,       r   e   s   u   l   t   s
0012700    [   i   ]   ]   ;  \r  \t  \t  \t   E   N   D   L   O   O   P
0012720    ;  \r  \t  \t   }   ;  \r  \t  \t  \r  \t   P   o   k   e   S
0012740    e   q   S   h   o   r   t   :       P   U   B   L   I   C    
0012760    P   R   O   C       [       b   H   :       B   i   n   d   H
0013000    a   n   d   l   e   ,       a   d   d   r   e   s   s   :    
0013020    R   a   p   u   n   z   e   l   .   A   d   d   r   e   s   s
0013040    ,       v   a   l   u   e   S   e   q   :       L   O   N   G
0013060        P   O   I   N   T   E   R       T   O       R   a   p   u
0013100    n   z   e   l   .   S   e   q   S   h   o   r   t       ]    
0013120    =       {  \r  \t  \t   D   i   s   p   l   a   y   [   "   P
0013140    o   k   e   S   e   q   S   h   o   r   t       -       a   d
0013160    d   r   e   s   s   :       "   ,       a   d   d   r   e   s
0013200    s   ]   ;  \r  \t  \t   D   i   s   p   l   a   y   [   "  \t
0013220    c   o   u   n   t   :       "   ,       L   E   N   G   T   H
0013240    [   v   a   l   u   e   S   e   q   ^   ]   ]   ;  \r  \t  \t
0013260    F   O   R       i   :       C   A   R   D   I   N   A   L    
0013300    I   N       [   0   .   .   L   E   N   G   T   H   [   v   a
0013320    l   u   e   S   e   q   ^   ]   )       D   O  \r  \t  \t  \t
0013340    D   i   s   p   l   a   y   [   "  \t   "   ,       v   a   l
0013360    u   e   S   e   q   [   i   ]   ]   ;  \r  \t  \t  \t   P   o
0013400    k   e   O   p   C   o   d   e   [   b   H   ,       (   a   d
0013420    d   r   e   s   s   +   i   )   ,       v   a   l   u   e   S
0013440    e   q   [   i   ]   ]   ;  \r  \t  \t  \t   E   N   D   L   O
0013460    O   P   ;  \r  \t  \t   }   ;  \r  \t  \r  \t   D   o   C   m
0013500    d   s   :       P   U   B   L   I   C       P   R   O   C    
0013520    [       b   H   :       B   i   n   d   H   a   n   d   l   e
0013540    ,       c   m   d   S   e   q   :       L   O   N   G       P
0013560    O   I   N   T   E   R       T   O       R   a   p   u   n   z
0013600    e   l   .   S   e   q   C   m   d       ]  \r  \t  \t  \t   R
0013620    E   T   U   R   N   S       [       r   e   s   u   l   t   S
0013640    e   q   :       L   O   N   G       P   O   I   N   T   E   R
0013660        T   O       R   a   p   u   n   z   e   l   .   S   e   q
0013700    R   e   s   u   l   t       ]       =       {  \r  \t  \t   C
0013720    h   u   n   k   :       T   Y   P   E       =       R   E   C
0013740    O   R   D       [   S   E   Q   U   E   N   C   E       C   O
0013760    M   P   U   T   E   D       R   a   p   u   n   z   e   l   .
0014000    S   e   q   R   e   s   u   l   t   I   n   d   e   x       O
0014020    F       R   a   p   u   n   z   e   l   .   R   e   s   u   l
0014040    t   ]   ;  \r  \t  \t   z   o   n   e   :       U   N   C   O
0014060    U   N   T   E   D       Z   O   N   E       =       H   e   a
0014100    p   .   s   y   s   t   e   m   Z   o   n   e   ;  \r  \t  \t
0014120    c   h   u   n   k   :       L   O   N   G       P   O   I   N
0014140    T   E   R   ;  \r  \t  \t   r   e   s   L   e   n   g   t   h
0014160    :       C   A   R   D   I   N   A   L   ;  \r  \t  \t   r   e
0014200    s   I   n   d   e   x   :       C   A   R   D   I   N   A   L
0014220        _       0   ;  \r  \t  \t   c   m   d   I   n   d   e   x
0014240    :       C   A   R   D   I   N   A   L       _       0   ;  \r
0014260   \t  \t   B   E   G   I   N  \r  \t  \t  \t   t   h   i   s   :
0014300        R   a   p   u   n   z   e   l   .   C   m   d       =    
0014320    c   m   d   S   e   q   [   0   ]   ;  \r  \t  \t  \t   W   I
0014340    T   H       t   h   i   s   :       t   h   i   s       S   E
0014360    L   E   C   T       F   R   O   M  \r  \t  \t  \t  \t   -   -
0014400        r   e   t   u   r   n   L   e   n   g   t   h       =   >
0014420        r   e   s   L   e   n   g   t   h       _       t   h   i
0014440    s   .   r   e   t   u   r   n   L   e   n   g   t   h   .   r
0014460    e   t   u   r   n   L   e   n   g   t   h       *       S   I
0014500    Z   E   [   R   a   p   u   n   z   e   l   .   R   e   s   u
0014520    l   t   ]   ;  \r  \t  \t  \t  \t   r   e   t   u   r   n   L
0014540    e   n   g   t   h       =   >       r   e   s   L   e   n   g
0014560    t   h       _       t   h   i   s   .   r   e   t   u   r   n
0014600    L   e   n   g   t   h   .   r   e   t   u   r   n   L   e   n
0014620    g   t   h   ;  \r  \t  \t  \t  \t   E   N   D   C   A   S   E
0014640        =   >       r   e   s   L   e   n   g   t   h       _    
0014660    c   m   d   S   e   q   ^   .   L   E   N   G   T   H   ;  \r
0014700   \t  \t  \t   E   N   D   ;  \r  \t  \t  \r  \t  \t   c   h   u
0014720    n   k       _       z   o   n   e   .   N   E   W       [   C
0014740    h   u   n   k   [   r   e   s   L   e   n   g   t   h   ]   ]
0014760    ;  \r  \t  \t   r   e   s   u   l   t   S   e   q       _    
0015000    z   o   n   e   .   N   E   W       [   R   a   p   u   n   z
0015020    e   l   .   S   e   q   R   e   s   u   l   t       _       D
0015040    E   S   C   R   I   P   T   O   R   [   c   h   u   n   k   ,
0015060        r   e   s   L   e   n   g   t   h   ]   ]   ;  \r  \t  \t
0015100   \r  \t  \t   D   i   s   p   l   a   y   [   "   D   o   C   m
0015120    d   s       -   -       c   o   u   n   t   :       "   ,    
0015140    c   m   d   S   e   q   ^   .   L   E   N   G   T   H   ]   ;
0015160   \r  \t  \t   W   H   I   L   E       (       c   m   d   I   n
0015200    d   e   x       <       c   m   d   S   e   q   ^   .   L   E
0015220    N   G   T   H       )       D   O  \r  \t  \t  \t   t   h   i
0015240    s   :       R   a   p   u   n   z   e   l   .   C   m   d    
0015260    =       c   m   d   S   e   q   [   c   m   d   I   n   d   e
0015300    x   ]   ;  \r  \t  \t  \t   c   m   d   I   n   d   e   x    
0015320    _       c   m   d   I   n   d   e   x       +       1   ;  \r
0015340   \t  \t  \t   W   I   T   H       t   h   i   s   :       t   h
0015360    i   s       S   E   L   E   C   T       F   R   O   M  \r  \t
0015400   \t  \t  \t   p   e   e   k   S   h   o   r   t       =   >    
0015420    {  \r  \t  \t  \t  \t  \t   a   d   d   r   e   s   s   :    
0015440    R   a   p   u   n   z   e   l   .   A   d   d   r   e   s   s
0015460        =       t   h   i   s   .   p   e   e   k   S   h   o   r
0015500    t   .   a   d   d   r   e   s   s   ;  \r  \t  \t  \t  \t  \t
0015520    r   e   s   :       R   a   p   u   n   z   e   l   .   P   e
0015540    e   k   S   h   o   r   t   R   e   s   u   l   t     254    
0015560    N   U   L   L   ;  \r  \t  \t  \t  \t  \t   r   e   s       _
0015600        [   P   e   e   k   O   p   C   o   d   e   [   b   H   ,
0015620        a   d   d   r   e   s   s   ]   ]   ;  \r  \t  \t  \t  \t
0015640   \t   I   F       (       d   e   b   u   g   g   i   n   g    
0015660    )       T   H   E   N       {  \r  \t  \t  \t  \t  \t  \t   D
0015700    i   s   p   l   a   y   [   "  \t   a   d   d   r   e   s   s
0015720    :       "   ,       a   d   d   r   e   s   s   ]   ;  \r  \t
0015740   \t  \t  \t  \t  \t   D   i   s   p   l   a   y   [   "  \t   p
0015760    e   e   k   S   h   o   r   t   :       "   ,       r   e   s
0016000    ]   ;  \r  \t  \t  \t  \t  \t  \t   }   ;  \r  \t  \t  \t  \t
0016020   \t   r   e   s   u   l   t   S   e   q   [   r   e   s   I   n
0016040    d   e   x   ]       _       [   p   e   e   k   S   h   o   r
0016060    t   [   r   e   s   ]   ]   ;  \r  \t  \t  \t  \t  \t   r   e
0016100    s   I   n   d   e   x       _       r   e   s   I   n   d   e
0016120    x       +       1   ;  \r  \t  \t  \t  \t  \t   }   ;  \r  \t
0016140   \t  \t  \t   p   o   k   e   S   h   o   r   t       =   >    
0016160    {  \r  \t  \t  \t  \t  \t   a   d   d   r   e   s   s   :    
0016200    R   a   p   u   n   z   e   l   .   A   d   d   r   e   s   s
0016220        =       t   h   i   s   .   p   o   k   e   S   h   o   r
0016240    t   .   a   d   d   r   e   s   s   ;  \r  \t  \t  \t  \t  \t
0016260    -   -       r   e   s   :       R   a   p   u   n   z   e   l
0016300    .   P   o   k   e   S   h   o   r   t   R   e   s   u   l   t
0016320      254       N   U   L   L   ;  \r  \t  \t  \t  \t  \t   I   F
0016340        (       d   e   b   u   g   g   i   n   g       )       T
0016360    H   E   N       {  \r  \t  \t  \t  \t  \t  \t   D   i   s   p
0016400    l   a   y   [   "  \t   a   d   d   r   e   s   s   :       "
0016420    ,       a   d   d   r   e   s   s   ]   ;  \r  \t  \t  \t  \t
0016440   \t  \t   D   i   s   p   l   a   y   [   "  \t   p   o   k   e
0016460    S   h   o   r   t   :       "   ,       t   h   i   s   .   p
0016500    o   k   e   S   h   o   r   t   .   v   a   l   u   e   ]   ;
0016520   \r  \t  \t  \t  \t  \t  \t   }   ;  \r  \t  \t  \t  \t  \t   P
0016540    o   k   e   O   p   C   o   d   e   [   b   H   ,       a   d
0016560    d   r   e   s   s   ,       t   h   i   s   .   p   o   k   e
0016600    S   h   o   r   t   .   v   a   l   u   e   ]   ;  \r  \t  \t
0016620   \t  \t  \t   r   e   s   u   l   t   S   e   q   [   r   e   s
0016640    I   n   d   e   x   ]       _       [   p   o   k   e   S   h
0016660    o   r   t   [   N   U   L   L   ]   ]   ;  \r  \t  \t  \t  \t
0016700   \t   r   e   s   I   n   d   e   x       _       r   e   s   I
0016720    n   d   e   x       +       1   ;  \r  \t  \t  \t  \t  \t   }
0016740    ;  \r  \t  \t  \t  \t   p   o   k   e   L   o   n   g       =
0016760    >       {  \r  \t  \t  \t  \t  \t   a   d   d   r   e   s   s
0017000    :       R   a   p   u   n   z   e   l   .   A   d   d   r   e
0017020    s   s       =       t   h   i   s   .   p   o   k   e   L   o
0017040    n   g   .   a   d   d   r   e   s   s   ;  \r  \t  \t  \t  \t
0017060   \t   -   -       r   e   s   :       R   a   p   u   n   z   e
0017100    l   .   P   o   k   e   S   h   o   r   t   R   e   s   u   l
0017120    t     254       N   U   L   L   ;  \r  \t  \t  \t  \t  \t   I
0017140    F       (       d   e   b   u   g   g   i   n   g       )    
0017160    T   H   E   N       {  \r  \t  \t  \t  \t  \t  \t   D   i   s
0017200    p   l   a   y   [   "  \t   a   d   d   r   e   s   s   :    
0017220    "   ,       a   d   d   r   e   s   s   ]   ;  \r  \t  \t  \t
0017240   \t  \t  \t   D   i   s   p   l   a   y   [   "  \t   p   o   k
0017260    e   S   h   o   r   t   :       "   ,       t   h   i   s   .
0017300    p   o   k   e   L   o   n   g   .   v   a   l   u   e   ]   ;
0017320   \r  \t  \t  \t  \t  \t  \t   }   ;  \r  \t  \t  \t  \t  \t   P
0017340    o   k   e   O   p   C   o   d   e   [   b   H   ,       a   d
0017360    d   r   e   s   s   ,       I   n   l   i   n   e   .   H   i
0017400    g   h   H   a   l   f   [   t   h   i   s   .   p   o   k   e
0017420    L   o   n   g   .   v   a   l   u   e   ]   ]   ;  \r  \t  \t
0017440   \t  \t  \t   P   o   k   e   O   p   C   o   d   e   [   b   H
0017460    ,       a   d   d   r   e   s   s   +   1   ,       I   n   l
0017500    i   n   e   .   L   o   w   H   a   l   f   [   t   h   i   s
0017520    .   p   o   k   e   L   o   n   g   .   v   a   l   u   e   ]
0017540    ]   ;  \r  \t  \t  \t  \t  \t   r   e   s   u   l   t   S   e
0017560    q   [   r   e   s   I   n   d   e   x   ]       _       [   p
0017600    o   k   e   L   o   n   g   [   N   U   L   L   ]   ]   ;  \r
0017620   \t  \t  \t  \t  \t   r   e   s   I   n   d   e   x       _    
0017640    r   e   s   I   n   d   e   x       +       1   ;  \r  \t  \t
0017660   \t  \t  \t   }   ;  \r  \t  \t  \t  \t   s   h   f   t   R   e
0017700    a   d       =   >       {  \r  \t  \t  \t  \t  \t   a   d   d
0017720    r   e   s   s   :       R   a   p   u   n   z   e   l   .   A
0017740    d   d   r   e   s   s       =       t   h   i   s   .   s   h
0017760    f   t   R   e   a   d   .   a   d   d   r   e   s   s   ;  \r
0020000   \t  \t  \t  \t  \t   n   u   m   R   e   p   e   a   t   s   :
0020020        R   a   p   u   n   z   e   l   .   S   h   o   r   t    
0020040    =       t   h   i   s   .   s   h   f   t   R   e   a   d   .
0020060    n   u   m   R   e   p   e   a   t   s   ;  \r  \t  \t  \t  \t
0020100   \t   r   e   s   :       R   a   p   u   n   z   e   l   .   S
0020120    h   f   t   R   e   a   d   R   e   s   u   l   t       =    
0020140    [   n   u   m   R   e   p   e   a   t   s   ]   ;  \r  \t  \t
0020160   \t  \t  \t   I   F       (       d   e   b   u   g   g   i   n
0020200    g       )       T   H   E   N       {  \r  \t  \t  \t  \t  \t
0020220   \t   D   i   s   p   l   a   y   [   "  \t   a   d   d   r   e
0020240    s   s   :       "   ,       a   d   d   r   e   s   s   ]   ;
0020260   \r  \t  \t  \t  \t  \t  \t   D   i   s   p   l   a   y   [   "
0020300   \t   s   h   i   f   t   R   e   a   d       -       n   u   m
0020320    R   e   p   e   a   t   s   :       "   ,       n   u   m   R
0020340    e   p   e   a   t   s   ]   ;  \r  \t  \t  \t  \t  \t  \t   }
0020360    ;  \r  \t  \t  \t  \t  \t   r   e   s   u   l   t   S   e   q
0020400    [   r   e   s   I   n   d   e   x   ]       _       [   s   h
0020420    f   t   R   e   a   d   [   r   e   s   ]   ]   ;  \r  \t  \t
0020440   \t  \t  \t   r   e   s   I   n   d   e   x       _       r   e
0020460    s   I   n   d   e   x       +       1   ;  \r  \t  \t  \t  \t
0020500   \t   F   O   R       j   :       C   A   R   D   I   N   A   L
0020520        I   N       [   0   .   .   n   u   m   R   e   p   e   a
0020540    t   s   )       D   O  \r  \t  \t  \t  \t  \t  \t   r   e   s
0020560    :       R   a   p   u   n   z   e   l   .   P   e   e   k   S
0020600    h   o   r   t   R   e   s   u   l   t     254       N   U   L
0020620    L   ;  \r  \t  \t  \t  \t  \t  \t   [   ]       _       P   e
0020640    e   k   O   p   C   o   d   e   [   b   H   ,       s   h   f
0020660    t   A   A   d   d   r   ]   ;  \r  \t  \t  \t  \t  \t  \t   [
0020700    ]       _       P   e   e   k   O   p   C   o   d   e   [   b
0020720    H   ,       s   h   f   t   B   A   d   d   r   ]   ;  \r  \t
0020740   \t  \t  \t  \t  \t   r   e   s       _       [   P   e   e   k
0020760    O   p   C   o   d   e   [   b   H   ,       a   d   d   r   e
0021000    s   s   ]   ]   ;  \r  \t  \t  \t  \t  \t  \t   r   e   s   u
0021020    l   t   S   e   q   [   r   e   s   I   n   d   e   x   ]    
0021040    _       [   p   e   e   k   S   h   o   r   t   [   r   e   s
0021060    ]   ]   ;  \r  \t  \t  \t  \t  \t  \t   r   e   s   I   n   d
0021100    e   x       _       r   e   s   I   n   d   e   x       +    
0021120    1   ;  \r  \t  \t  \t  \t  \t  \t   E   N   D   L   O   O   P
0021140    ;  \r  \t  \t  \t  \t  \t   }   ;  \r  \t  \t  \t  \t   s   h
0021160    f   t   W   r   i   t   e       =   >       {  \r  \t  \t  \t
0021200   \t  \t   a   d   d   r   e   s   s   :       R   a   p   u   n
0021220    z   e   l   .   A   d   d   r   e   s   s       =       t   h
0021240    i   s   .   s   h   f   t   W   r   i   t   e   .   a   d   d
0021260    r   e   s   s   ;  \r  \t  \t  \t  \t  \t   n   u   m   R   e
0021300    p   e   a   t   s   :       R   a   p   u   n   z   e   l   .
0021320    S   h   o   r   t       =       t   h   i   s   .   s   h   f
0021340    t   W   r   i   t   e   .   n   u   m   R   e   p   e   a   t
0021360    s   ;  \r  \t  \t  \t  \t  \t   r   e   s   :       R   a   p
0021400    u   n   z   e   l   .   S   h   f   t   W   r   i   t   e   R
0021420    e   s   u   l   t       =       [   n   u   m   R   e   p   e
0021440    a   t   s   ]   ;  \r  \t  \t  \t  \t  \t   I   F       (    
0021460    d   e   b   u   g   g   i   n   g       )       T   H   E   N
0021500        {  \r  \t  \t  \t  \t  \t  \t   D   i   s   p   l   a   y
0021520    [   "  \t   a   d   d   r   e   s   s   :       "   ,       a
0021540    d   d   r   e   s   s   ]   ;  \r  \t  \t  \t  \t  \t  \t   D
0021560    i   s   p   l   a   y   [   "  \t   s   h   i   f   t   W   r
0021600    i   t   e       -       n   u   m   R   e   p   e   a   t   s
0021620    :       "   ,       n   u   m   R   e   p   e   a   t   s   ]
0021640    ;  \r  \t  \t  \t  \t  \t  \t   }   ;  \r  \t  \t  \t  \t  \t
0021660    r   e   s   u   l   t   S   e   q   [   r   e   s   I   n   d
0021700    e   x   ]       _       [   s   h   f   t   W   r   i   t   e
0021720    [   r   e   s   ]   ]   ;  \r  \t  \t  \t  \t  \t   r   e   s
0021740    I   n   d   e   x       _       r   e   s   I   n   d   e   x
0021760        +       1   ;  \r  \t  \t  \t  \t  \t   F   O   R       j
0022000    :       C   A   R   D   I   N   A   L       I   N       [   0
0022020    .   .   n   u   m   R   e   p   e   a   t   s   )       D   O
0022040   \r  \t  \t  \t  \t  \t  \t   w   r   i   t   e   V   a   l   :
0022060        R   a   p   u   n   z   e   l   .   C   m   d       =    
0022100    c   m   d   S   e   q   [   c   m   d   I   n   d   e   x   ]
0022120    ;  \r  \t  \t  \t  \t  \t  \t   c   m   d   I   n   d   e   x
0022140        _       c   m   d   I   n   d   e   x       +       1   ;
0022160   \r  \t  \t  \t  \t  \t  \t   W   I   T   H       w   r   i   t
0022200    e   V   a   l   :       w   r   i   t   e   V   a   l       S
0022220    E   L   E   C   T       F   R   O   M  \r  \t  \t  \t  \t  \t
0022240   \t  \t   p   o   k   e   S   h   o   r   t       =   >       {
0022260   \r  \t  \t  \t  \t  \t  \t  \t  \t   P   o   k   e   O   p   C
0022300    o   d   e   [   b   H   ,       a   d   d   r   e   s   s   ,
0022320        w   r   i   t   e   V   a   l   .   p   o   k   e   S   h
0022340    o   r   t   .   v   a   l   u   e   ]   ;  \r  \t  \t  \t  \t
0022360   \t  \t  \t  \t   [   ]       _       P   e   e   k   O   p   C
0022400    o   d   e   [   b   H   ,       s   h   f   t   A   A   d   d
0022420    r   ]   ;  \r  \t  \t  \t  \t  \t  \t  \t  \t   [   ]       _
0022440        P   e   e   k   O   p   C   o   d   e   [   b   H   ,    
0022460    s   h   f   t   B   A   d   d   r   ]   ;  \r  \t  \t  \t  \t
0022500   \t  \t  \t  \t   }   ;  \r  \t  \t  \t  \t  \t  \t  \t   E   N
0022520    D   C   A   S   E       =   >       E   R   R   O   R       F
0022540    a   u   l   t   [   b   H   ,       n   o   n   e   x   i   s
0022560    t   e   n   t   ,       0   ]   ;  \r  \t  \t  \t  \t  \t  \t
0022600    E   N   D   L   O   O   P   ;  \r  \t  \t  \t  \t  \t   }   ;
0022620   \r  \t  \t  \t  \t   r   e   t   u   r   n   L   e   n   g   t
0022640    h       =   >       N   U   L   L   ;  \r  \t  \t  \t  \t   E
0022660    N   D   C   A   S   E       =   >       E   R   R   O   R    
0022700    F   a   u   l   t   [   b   H   ,       n   o   n   e   x   i
0022720    s   t   e   n   t   ,       0   ]   ;  \r  \t  \t  \t   E   N
0022740    D   L   O   O   P   ;  \r  \t  \t   }   ;  \r  \t  \t  \r  \t
0022760    W   r   i   t   e   S   e   q   u   e   n   t   i   a   l   :
0023000        P   U   B   L   I   C       P   R   O   C       [       b
0023020    H   :       B   i   n   d   H   a   n   d   l   e   ,       s
0023040    t   a   r   t   i   n   g   A   d   d   r   e   s   s   :    
0023060    A   d   d   r   e   s   s   ,       c   o   u   n   t   :    
0023100    C   A   R   D   I   N   A   L   ,       s   e   q   :       L
0023120    O   N   G       P   O   I   N   T   E   R       T   O       R
0023140    a   p   u   n   z   e   l   .   S   e   q   L   o   n   g    
0023160    ]       =       {  \r  \t  \t   F   O   R       i   :       C
0023200    A   R   D   I   N   A   L       I   N       [   0   .   .   c
0023220    o   u   n   t   )       D   O  \r  \t  \t  \t   a   d   d   r
0023240    e   s   s   :       R   a   p   u   n   z   e   l   .   A   d
0023260    d   r   e   s   s       =       s   t   a   r   t   i   n   g
0023300    A   d   d   r   e   s   s       +       2   *   i   ;  \r  \t
0023320   \t  \t   v   a   l   u   e   :       L   o   n   g       =    
0023340    s   e   q   [   i   ]   ;  \r  \t  \t  \t   P   o   k   e   O
0023360    p   C   o   d   e   [   b   H   ,       a   d   d   r   e   s
0023400    s   ,       I   n   l   i   n   e   .   H   i   g   h   H   a
0023420    l   f   [   v   a   l   u   e   ]   ]   ;  \r  \t  \t  \t   P
0023440    o   k   e   O   p   C   o   d   e   [   b   H   ,       a   d
0023460    d   r   e   s   s   +   1   ,       I   n   l   i   n   e   .
0023500    L   o   w   H   a   l   f   [   v   a   l   u   e   ]   ]   ;
0023520   \r  \t  \t  \t   E   N   D   L   O   O   P   ;  \r  \t  \t   }
0023540    ;  \r  \t  \t  \r  \t   F   r   e   e   P   e   e   k   S   e
0023560    q   S   h   o   r   t   R   e   s   u   l   t   s   :       P
0023600    U   B   L   I   C       P   R   O   C       [       b   H   :
0023620        B   i   n   d   H   a   n   d   l   e   ,       r   e   s
0023640    u   l   t   S   e   q   :       L   O   N   G       P   O   I
0023660    N   T   E   R       T   O       S   e   q   S   h   o   r   t
0023700        ]       =       {  \r  \t  \t   z   o   n   e   :       U
0023720    N   C   O   U   N   T   E   D       Z   O   N   E       =    
0023740    H   e   a   p   .   s   y   s   t   e   m   Z   o   n   e   ;
0023760   \r  \t  \t   z   o   n   e   .   F   R   E   E       [   @   (
0024000    r   e   s   u   l   t   S   e   q   ^   .   B   A   S   E   )
0024020    ]   ;  \r  \t  \t   z   o   n   e   .   F   R   E   E       [
0024040    @   (   r   e   s   u   l   t   S   e   q   )   ]   ;  \r  \t
0024060   \t   }   ;  \r  \t  \t  \r  \t   F   r   e   e   P   e   e   k
0024100    S   e   q   L   o   n   g   R   e   s   u   l   t   s   :    
0024120    P   U   B   L   I   C       P   R   O   C       [       b   H
0024140    :       B   i   n   d   H   a   n   d   l   e   ,       r   e
0024160    s   u   l   t   S   e   q   :       L   O   N   G       P   O
0024200    I   N   T   E   R       T   O       S   e   q   L   o   n   g
0024220        ]       =       {  \r  \t  \t   z   o   n   e   :       U
0024240    N   C   O   U   N   T   E   D       Z   O   N   E       =    
0024260    H   e   a   p   .   s   y   s   t   e   m   Z   o   n   e   ;
0024300   \r  \t  \t   z   o   n   e   .   F   R   E   E       [   @   (
0024320    r   e   s   u   l   t   S   e   q   ^   .   B   A   S   E   )
0024340    ]   ;  \r  \t  \t   z   o   n   e   .   F   R   E   E       [
0024360    @   (   r   e   s   u   l   t   S   e   q   )   ]   ;  \r  \t
0024400   \t   }   ;  \r  \t  \t  \r  \t   F   r   e   e   D   o   C   m
0024420    d   s   R   e   s   u   l   t   s   :       P   U   B   L   I
0024440    C       P   R   O   C       [       b   H   :       B   i   n
0024460    d   H   a   n   d   l   e   ,       r   e   s   u   l   t   S
0024500    e   q   :       L   O   N   G       P   O   I   N   T   E   R
0024520        T   O       S   e   q   R   e   s   u   l   t       ]    
0024540    =       {  \r  \t  \t   z   o   n   e   :       U   N   C   O
0024560    U   N   T   E   D       Z   O   N   E       =       H   e   a
0024600    p   .   s   y   s   t   e   m   Z   o   n   e   ;  \r  \t  \t
0024620    z   o   n   e   .   F   R   E   E       [   @   (   r   e   s
0024640    u   l   t   S   e   q   ^   .   B   A   S   E   )   ]   ;  \r
0024660   \t  \t   z   o   n   e   .   F   R   E   E       [   @   (   r
0024700    e   s   u   l   t   S   e   q   )   ]   ;  \r  \t  \t   }   ;
0024720   \r  \t  \r  \t   I   n   i   t   :       P   R   O   C       =
0024740        {  \r  \t  \t   t   r   a   s   h   :       S   y   s   t
0024760    e   m   .   N   e   t   w   o   r   k   A   d   d   r   e   s
0025000    s       _       T   R   A   S   H   ;  \r  \t  \t   m   e   m
0025020        _       A   L   L   [   0   ]   ;  \r  \t  \t   n   i   l
0025040    H   a   n   d   l   e       _       R   a   p   u   n   z   e
0025060    l   .   R   e   m   o   t   e   B   i   n   d   [   t   r   a
0025100    s   h   ,       N   I   L   ]   ;  \r  \t  \t   I   F       (
0025120        n   i   l   H   a   n   d   l   e       #       N   I   L
0025140        )       T   H   E   N       E   R   R   O   R   ;  \r  \t
0025160   \t   }   ;  \r  \t  \t  \r  \t   S   h   u   t   d   o   w   n
0025200    :       P   R   O   C       =       {  \r  \t  \t   n   i   l
0025220    H   a   n   d   l   e       _       R   a   p   u   n   z   e
0025240    l   .   R   e   m   o   t   e   U   n   b   i   n   d   [   n
0025260    i   l   H   a   n   d   l   e   ]   ;  \r  \t  \t   I   F    
0025300    (       n   i   l   H   a   n   d   l   e       #       N   I
0025320    L       )       T   H   E   N       E   R   R   O   R   ;  \r
0025340   \t  \t   }   ;  \r  \t  \r  \t   I   n   i   t   [   ]   ;  \r
0025360   \t   }   .  \r  \t                                            
0025365