HEX
Server: Apache
System: Linux vmi318001.contaboserver.net 6.8.0-117-generic #117-Ubuntu SMP PREEMPT_DYNAMIC Tue May 5 19:26:24 UTC 2026 x86_64
User: boxelikax (1004)
PHP: 8.2.33
Disabled: NONE
Upload Files
File: /home/boxelikax/public_html/demoltec.com/curses.tar
ascii.py000064400000004763152401763610006225 0ustar00"""Constants and membership tests for ASCII characters"""

NUL     = 0x00  # ^@
SOH     = 0x01  # ^A
STX     = 0x02  # ^B
ETX     = 0x03  # ^C
EOT     = 0x04  # ^D
ENQ     = 0x05  # ^E
ACK     = 0x06  # ^F
BEL     = 0x07  # ^G
BS      = 0x08  # ^H
TAB     = 0x09  # ^I
HT      = 0x09  # ^I
LF      = 0x0a  # ^J
NL      = 0x0a  # ^J
VT      = 0x0b  # ^K
FF      = 0x0c  # ^L
CR      = 0x0d  # ^M
SO      = 0x0e  # ^N
SI      = 0x0f  # ^O
DLE     = 0x10  # ^P
DC1     = 0x11  # ^Q
DC2     = 0x12  # ^R
DC3     = 0x13  # ^S
DC4     = 0x14  # ^T
NAK     = 0x15  # ^U
SYN     = 0x16  # ^V
ETB     = 0x17  # ^W
CAN     = 0x18  # ^X
EM      = 0x19  # ^Y
SUB     = 0x1a  # ^Z
ESC     = 0x1b  # ^[
FS      = 0x1c  # ^\
GS      = 0x1d  # ^]
RS      = 0x1e  # ^^
US      = 0x1f  # ^_
SP      = 0x20  # space
DEL     = 0x7f  # delete

controlnames = [
"NUL", "SOH", "STX", "ETX", "EOT", "ENQ", "ACK", "BEL",
"BS",  "HT",  "LF",  "VT",  "FF",  "CR",  "SO",  "SI",
"DLE", "DC1", "DC2", "DC3", "DC4", "NAK", "SYN", "ETB",
"CAN", "EM",  "SUB", "ESC", "FS",  "GS",  "RS",  "US",
"SP"
]

def _ctoi(c):
    if type(c) == type(""):
        return ord(c)
    else:
        return c

def isalnum(c): return isalpha(c) or isdigit(c)
def isalpha(c): return isupper(c) or islower(c)
def isascii(c): return 0 <= _ctoi(c) <= 127          # ?
def isblank(c): return _ctoi(c) in (9, 32)
def iscntrl(c): return 0 <= _ctoi(c) <= 31 or _ctoi(c) == 127
def isdigit(c): return 48 <= _ctoi(c) <= 57
def isgraph(c): return 33 <= _ctoi(c) <= 126
def islower(c): return 97 <= _ctoi(c) <= 122
def isprint(c): return 32 <= _ctoi(c) <= 126
def ispunct(c): return isgraph(c) and not isalnum(c)
def isspace(c): return _ctoi(c) in (9, 10, 11, 12, 13, 32)
def isupper(c): return 65 <= _ctoi(c) <= 90
def isxdigit(c): return isdigit(c) or \
    (65 <= _ctoi(c) <= 70) or (97 <= _ctoi(c) <= 102)
def isctrl(c): return 0 <= _ctoi(c) < 32
def ismeta(c): return _ctoi(c) > 127

def ascii(c):
    if type(c) == type(""):
        return chr(_ctoi(c) & 0x7f)
    else:
        return _ctoi(c) & 0x7f

def ctrl(c):
    if type(c) == type(""):
        return chr(_ctoi(c) & 0x1f)
    else:
        return _ctoi(c) & 0x1f

def alt(c):
    if type(c) == type(""):
        return chr(_ctoi(c) | 0x80)
    else:
        return _ctoi(c) | 0x80

def unctrl(c):
    bits = _ctoi(c)
    if bits == 0x7f:
        rep = "^?"
    elif isprint(bits & 0x7f):
        rep = chr(bits & 0x7f)
    else:
        rep = "^" + chr(((bits & 0x7f) | 0x20) + 0x20)
    if bits & 0x80:
        return "!" + rep
    return rep
panel.py000064400000000127152401763610006222 0ustar00"""curses.panel

Module for using panels with curses.
"""

from _curses_panel import *
textpad.py000064400000016751152401763610006606 0ustar00"""Simple textbox editing widget with Emacs-like keybindings."""

import curses
import curses.ascii

def rectangle(win, uly, ulx, lry, lrx):
    """Draw a rectangle with corners at the provided upper-left
    and lower-right coordinates.
    """
    win.vline(uly+1, ulx, curses.ACS_VLINE, lry - uly - 1)
    win.hline(uly, ulx+1, curses.ACS_HLINE, lrx - ulx - 1)
    win.hline(lry, ulx+1, curses.ACS_HLINE, lrx - ulx - 1)
    win.vline(uly+1, lrx, curses.ACS_VLINE, lry - uly - 1)
    win.addch(uly, ulx, curses.ACS_ULCORNER)
    win.addch(uly, lrx, curses.ACS_URCORNER)
    win.addch(lry, lrx, curses.ACS_LRCORNER)
    win.addch(lry, ulx, curses.ACS_LLCORNER)

class Textbox:
    """Editing widget using the interior of a window object.
     Supports the following Emacs-like key bindings:

    Ctrl-A      Go to left edge of window.
    Ctrl-B      Cursor left, wrapping to previous line if appropriate.
    Ctrl-D      Delete character under cursor.
    Ctrl-E      Go to right edge (stripspaces off) or end of line (stripspaces on).
    Ctrl-F      Cursor right, wrapping to next line when appropriate.
    Ctrl-G      Terminate, returning the window contents.
    Ctrl-H      Delete character backward.
    Ctrl-J      Terminate if the window is 1 line, otherwise insert newline.
    Ctrl-K      If line is blank, delete it, otherwise clear to end of line.
    Ctrl-L      Refresh screen.
    Ctrl-N      Cursor down; move down one line.
    Ctrl-O      Insert a blank line at cursor location.
    Ctrl-P      Cursor up; move up one line.

    Move operations do nothing if the cursor is at an edge where the movement
    is not possible.  The following synonyms are supported where possible:

    KEY_LEFT = Ctrl-B, KEY_RIGHT = Ctrl-F, KEY_UP = Ctrl-P, KEY_DOWN = Ctrl-N
    KEY_BACKSPACE = Ctrl-h
    """
    def __init__(self, win, insert_mode=False):
        self.win = win
        self.insert_mode = insert_mode
        self._update_max_yx()
        self.stripspaces = 1
        self.lastcmd = None
        win.keypad(1)

    def _update_max_yx(self):
        maxy, maxx = self.win.getmaxyx()
        self.maxy = maxy - 1
        self.maxx = maxx - 1

    def _end_of_line(self, y):
        """Go to the location of the first blank on the given line,
        returning the index of the last non-blank character."""
        self._update_max_yx()
        last = self.maxx
        while True:
            if curses.ascii.ascii(self.win.inch(y, last)) != curses.ascii.SP:
                last = min(self.maxx, last+1)
                break
            elif last == 0:
                break
            last = last - 1
        return last

    def _insert_printable_char(self, ch):
        self._update_max_yx()
        (y, x) = self.win.getyx()
        backyx = None
        while y < self.maxy or x < self.maxx:
            if self.insert_mode:
                oldch = self.win.inch()
            # The try-catch ignores the error we trigger from some curses
            # versions by trying to write into the lowest-rightmost spot
            # in the window.
            try:
                self.win.addch(ch)
            except curses.error:
                pass
            if not self.insert_mode or not curses.ascii.isprint(oldch):
                break
            ch = oldch
            (y, x) = self.win.getyx()
            # Remember where to put the cursor back since we are in insert_mode
            if backyx is None:
                backyx = y, x

        if backyx is not None:
            self.win.move(*backyx)

    def do_command(self, ch):
        "Process a single editing command."
        self._update_max_yx()
        (y, x) = self.win.getyx()
        self.lastcmd = ch
        if curses.ascii.isprint(ch):
            if y < self.maxy or x < self.maxx:
                self._insert_printable_char(ch)
        elif ch == curses.ascii.SOH:                           # ^a
            self.win.move(y, 0)
        elif ch in (curses.ascii.STX,curses.KEY_LEFT, curses.ascii.BS,curses.KEY_BACKSPACE):
            if x > 0:
                self.win.move(y, x-1)
            elif y == 0:
                pass
            elif self.stripspaces:
                self.win.move(y-1, self._end_of_line(y-1))
            else:
                self.win.move(y-1, self.maxx)
            if ch in (curses.ascii.BS, curses.KEY_BACKSPACE):
                self.win.delch()
        elif ch == curses.ascii.EOT:                           # ^d
            self.win.delch()
        elif ch == curses.ascii.ENQ:                           # ^e
            if self.stripspaces:
                self.win.move(y, self._end_of_line(y))
            else:
                self.win.move(y, self.maxx)
        elif ch in (curses.ascii.ACK, curses.KEY_RIGHT):       # ^f
            if x < self.maxx:
                self.win.move(y, x+1)
            elif y == self.maxy:
                pass
            else:
                self.win.move(y+1, 0)
        elif ch == curses.ascii.BEL:                           # ^g
            return 0
        elif ch == curses.ascii.NL:                            # ^j
            if self.maxy == 0:
                return 0
            elif y < self.maxy:
                self.win.move(y+1, 0)
        elif ch == curses.ascii.VT:                            # ^k
            if x == 0 and self._end_of_line(y) == 0:
                self.win.deleteln()
            else:
                # first undo the effect of self._end_of_line
                self.win.move(y, x)
                self.win.clrtoeol()
        elif ch == curses.ascii.FF:                            # ^l
            self.win.refresh()
        elif ch in (curses.ascii.SO, curses.KEY_DOWN):         # ^n
            if y < self.maxy:
                self.win.move(y+1, x)
                if x > self._end_of_line(y+1):
                    self.win.move(y+1, self._end_of_line(y+1))
        elif ch == curses.ascii.SI:                            # ^o
            self.win.insertln()
        elif ch in (curses.ascii.DLE, curses.KEY_UP):          # ^p
            if y > 0:
                self.win.move(y-1, x)
                if x > self._end_of_line(y-1):
                    self.win.move(y-1, self._end_of_line(y-1))
        return 1

    def gather(self):
        "Collect and return the contents of the window."
        result = ""
        self._update_max_yx()
        for y in range(self.maxy+1):
            self.win.move(y, 0)
            stop = self._end_of_line(y)
            if stop == 0 and self.stripspaces:
                continue
            for x in range(self.maxx+1):
                if self.stripspaces and x > stop:
                    break
                result = result + chr(curses.ascii.ascii(self.win.inch(y, x)))
            if self.maxy > 0:
                result = result + "\n"
        return result

    def edit(self, validate=None):
        "Edit in the widget window and collect the results."
        while 1:
            ch = self.win.getch()
            if validate:
                ch = validate(ch)
            if not ch:
                continue
            if not self.do_command(ch):
                break
            self.win.refresh()
        return self.gather()

if __name__ == '__main__':
    def test_editbox(stdscr):
        ncols, nlines = 9, 4
        uly, ulx = 15, 20
        stdscr.addstr(uly-2, ulx, "Use Ctrl-G to end editing.")
        win = curses.newwin(nlines, ncols, uly, ulx)
        rectangle(stdscr, uly-1, ulx-1, uly + nlines, ulx + ncols)
        stdscr.refresh()
        return Textbox(win).edit()

    str = curses.wrapper(test_editbox)
    print('Contents of text box:', repr(str))
__init__.py000064400000006451152401763610006670 0ustar00"""curses

The main package for curses support for Python.  Normally used by importing
the package, and perhaps a particular module inside it.

   import curses
   from curses import textpad
   curses.initscr()
   ...

"""

from _curses import *
import os as _os
import sys as _sys

# Some constants, most notably the ACS_* ones, are only added to the C
# _curses module's dictionary after initscr() is called.  (Some
# versions of SGI's curses don't define values for those constants
# until initscr() has been called.)  This wrapper function calls the
# underlying C initscr(), and then copies the constants from the
# _curses module to the curses package's dictionary.  Don't do 'from
# curses import *' if you'll be needing the ACS_* constants.

def initscr():
    import _curses, curses
    # we call setupterm() here because it raises an error
    # instead of calling exit() in error cases.
    setupterm(term=_os.environ.get("TERM", "unknown"),
              fd=_sys.__stdout__.fileno())
    stdscr = _curses.initscr()
    for key, value in _curses.__dict__.items():
        if key[0:4] == 'ACS_' or key in ('LINES', 'COLS'):
            setattr(curses, key, value)

    return stdscr

# This is a similar wrapper for start_color(), which adds the COLORS and
# COLOR_PAIRS variables which are only available after start_color() is
# called.

def start_color():
    import _curses, curses
    retval = _curses.start_color()
    if hasattr(_curses, 'COLORS'):
        curses.COLORS = _curses.COLORS
    if hasattr(_curses, 'COLOR_PAIRS'):
        curses.COLOR_PAIRS = _curses.COLOR_PAIRS
    return retval

# Import Python has_key() implementation if _curses doesn't contain has_key()

try:
    has_key
except NameError:
    from .has_key import has_key

# Wrapper for the entire curses-based application.  Runs a function which
# should be the rest of your curses-based application.  If the application
# raises an exception, wrapper() will restore the terminal to a sane state so
# you can read the resulting traceback.

def wrapper(func, /, *args, **kwds):
    """Wrapper function that initializes curses and calls another function,
    restoring normal keyboard/screen behavior on error.
    The callable object 'func' is then passed the main window 'stdscr'
    as its first argument, followed by any other arguments passed to
    wrapper().
    """

    try:
        # Initialize curses
        stdscr = initscr()

        # Turn off echoing of keys, and enter cbreak mode,
        # where no buffering is performed on keyboard input
        noecho()
        cbreak()

        # In keypad mode, escape sequences for special keys
        # (like the cursor keys) will be interpreted and
        # a special value like curses.KEY_LEFT will be returned
        stdscr.keypad(1)

        # Start color, too.  Harmless if the terminal doesn't have
        # color; user can test with has_color() later on.  The try/catch
        # works around a minor bit of over-conscientiousness in the curses
        # module -- the error return from C start_color() is ignorable.
        try:
            start_color()
        except:
            pass

        return func(stdscr, *args, **kwds)
    finally:
        # Set everything back to normal
        if 'stdscr' in locals():
            stdscr.keypad(0)
            echo()
            nocbreak()
            endwin()
__pycache__/textpad.cpython-311.opt-1.pyc000064400000027631152401763610014104 0ustar00�

�d
CQ���dZddlZddlZd�ZGd�d��Zedkr*d�Zeje��Ze	de
e����dSdS)	z:Simple textbox editing widget with Emacs-like keybindings.�Nc�f�|�|dz|tj||z
dz
��|�||dztj||z
dz
��|�||dztj||z
dz
��|�|dz|tj||z
dz
��|�||tj��|�||tj��|�||tj��|�||tj	��dS)z^Draw a rectangle with corners at the provided upper-left
    and lower-right coordinates.
    �N)
�vline�curses�	ACS_VLINE�hline�	ACS_HLINE�addch�ACS_ULCORNER�ACS_URCORNER�ACS_LRCORNER�ACS_LLCORNER)�win�uly�ulx�lry�lrxs     �9/opt/alt/python-internal/lib/python3.11/curses/textpad.py�	rectanglers
���I�I�c�!�e�S�&�*�C�#�I��M�:�:�:��I�I�c�3�q�5�&�*�C�#�I��M�:�:�:��I�I�c�3�q�5�&�*�C�#�I��M�:�:�:��I�I�c�!�e�S�&�*�C�#�I��M�:�:�:��I�I�c�3��+�,�,�,��I�I�c�3��+�,�,�,��I�I�c�3��+�,�,�,��I�I�c�3��+�,�,�,�,�,�c�@�eZdZdZdd�Zd�Zd�Zd�Zd�Zd�Z	dd
�Z
d	S)
�TextboxadEditing widget using the interior of a window object.
     Supports the following Emacs-like key bindings:

    Ctrl-A      Go to left edge of window.
    Ctrl-B      Cursor left, wrapping to previous line if appropriate.
    Ctrl-D      Delete character under cursor.
    Ctrl-E      Go to right edge (stripspaces off) or end of line (stripspaces on).
    Ctrl-F      Cursor right, wrapping to next line when appropriate.
    Ctrl-G      Terminate, returning the window contents.
    Ctrl-H      Delete character backward.
    Ctrl-J      Terminate if the window is 1 line, otherwise insert newline.
    Ctrl-K      If line is blank, delete it, otherwise clear to end of line.
    Ctrl-L      Refresh screen.
    Ctrl-N      Cursor down; move down one line.
    Ctrl-O      Insert a blank line at cursor location.
    Ctrl-P      Cursor up; move up one line.

    Move operations do nothing if the cursor is at an edge where the movement
    is not possible.  The following synonyms are supported where possible:

    KEY_LEFT = Ctrl-B, KEY_RIGHT = Ctrl-F, KEY_UP = Ctrl-P, KEY_DOWN = Ctrl-N
    KEY_BACKSPACE = Ctrl-h
    Fc��||_||_|���d|_d|_|�d��dS�Nr)r�insert_mode�_update_max_yx�stripspaces�lastcmd�keypad)�selfrrs   r�__init__zTextbox.__init__+sE�����&����������������
�
�1�
�
�
�
�
rc�f�|j���\}}|dz
|_|dz
|_dSr)r�getmaxyx�maxy�maxx)r r$r%s   rrzTextbox._update_max_yx3s3���X�&�&�(�(�
��d��1�H��	��1�H��	�	�	rc� �|���|j}	tj�|j�||����tjjkrt|j|dz��}n
|dkrn|dz
}�q|S)zuGo to the location of the first blank on the given line,
        returning the index of the last non-blank character.Trr)rr%r�asciir�inch�SP�min)r �y�lasts   r�_end_of_linezTextbox._end_of_line8s���	
�������y��	��|�!�!�$�(�-�-��4�"8�"8�9�9�V�\�_�L�L��4�9�d�1�f�-�-���������!�8�D�
	��rc� �|���|j���\}}d}||jks||jkr�|jr|j���}	|j�|��n#tj	$rYnwxYw|jrtj
�|��sn:|}|j���\}}|�||f}||jk��||jk��|�|jj|�dSdS�N)
rr�getyxr$r%rr(r
r�errorr'�isprint�move)r �chr+�x�backyx�oldchs      r�_insert_printable_charzTextbox._insert_printable_charFs&������������!�!���A����$�)�m�m�q�4�9�}�}���
(���
�
����
�����r�"�"�"�"���<�
�
�
���
�����#�
�6�<�+?�+?��+F�+F�
���B��X�^�^�%�%�F�Q���~��A���!�$�)�m�m�q�4�9�}�}�$���D�H�M�6�"�"�"�"��s�*B�B�Bc�
�|���|j���\}}||_tj�|��r-||jks||jkr|�	|���n�|tjj
kr|j�|d���n�|tjjtj
tjjtjfvr�|dkr|j�||dz
��nf|dkrn_|jr5|j�|dz
|�|dz
����n#|j�|dz
|j��|tjjtjfvr|j����n�|tjjkr|j����nY|tjjkrY|jr0|j�||�|�����n
|j�||j���n�|tjjtjfvrX||jkr |j�||dz���n�||jkr�n�|j�|dzd���nt|tjjkrdS|tjjkr8|jdkrdS||jkr|j�|dzd���n|tjjkrp|dkr4|�|��dkr|j����n�|j�||��|j����n�|tjjkr|j����n[|tjjtjfvrz||jkrn|j�|dz|��||�|dz��kr4|j�|dz|�|dz����n�|tjj kr|j�!��n�|tjj"tj#fvrt|dkrn|j�|dz
|��||�|dz
��kr4|j�|dz
|�|dz
����dS)z!Process a single editing command.rr)$rrr0rrr'r2r$r%r8�SOHr3�STX�KEY_LEFT�BS�
KEY_BACKSPACErr-�delch�EOT�ENQ�ACK�	KEY_RIGHT�BEL�NL�VT�deleteln�clrtoeol�FF�refresh�SO�KEY_DOWN�SI�insertln�DLE�KEY_UP)r r4r+r5s    r�
do_commandzTextbox.do_command_s�������������!�!���A�����<����#�#�9	?��4�9�}�}��D�I�
�
��+�+�B�/�/�/��
�6�<�#�
#�
#��H�M�M�!�Q�����
�F�L�$�V�_�f�l�o�f�FZ�[�
[�
[��1�u�u���
�
�a��1��%�%�%�%��a�����!�
.���
�
�a��c�4�#4�#4�Q�q�S�#9�#9�:�:�:�:���
�
�a��c�4�9�-�-�-��f�l�o�v�';�<�<�<����� � � ��
�6�<�#�
#�
#��H�N�N�����
�6�<�#�
#�
#���
,���
�
�a��!2�!2�1�!5�!5�6�6�6�6���
�
�a���+�+�+�+�
�F�L�$�f�&6�7�
7�
7��4�9�}�}���
�
�a��1��%�%�%�%��d�i������
�
�a��c�1�%�%�%�%�
�6�<�#�
#�
#��1�
�6�<�?�
"�
"��y�A�~�~��q��T�Y�����
�
�a��c�1�%�%�%��
�6�<�?�
"�
"��A�v�v�$�+�+�A�.�.�!�3�3���!�!�#�#�#�#���
�
�a��#�#�#���!�!�#�#�#�#�
�6�<�?�
"�
"��H�������
�F�L�O�V�_�5�
5�
5��4�9�}�}���
�
�a��c�1�%�%�%��t�(�(��1��-�-�-�-��H�M�M�!�A�#�t�'8�'8��1��'=�'=�>�>�>��
�6�<�?�
"�
"��H�������
�F�L�$�f�m�4�
4�
4��1�u�u���
�
�a��c�1�%�%�%��t�(�(��1��-�-�-�-��H�M�M�!�A�#�t�'8�'8��1��'=�'=�>�>�>��qrc���d}|���t|jdz��D]�}|j�|d��|�|��}|dkr|jr�@t|jdz��D]Y}|jr||krnI|ttj
�
|j�||������z}�Z|jdkr|dz}��|S)z.Collect and return the contents of the window.�rr�
)r�ranger$rr3r-rr%�chrrr'r()r �resultr+�stopr5s     r�gatherzTextbox.gather�s������������t�y��{�#�#�
	'�
	'�A��H�M�M�!�Q�����$�$�Q�'�'�D��q�y�y�T�-�y���4�9�Q�;�'�'�
O�
O���#���D����E��#�f�l�&8�&8�����q�!�9L�9L�&M�&M�"N�"N�N����y�1�}�}��$�����
rNc���	|j���}|r||��}|s�*|�|��sn|j����Y|���S)z2Edit in the widget window and collect the results.)r�getchrQrJrY)r �validater4s   r�editzTextbox.edit�sx��	�����!�!�B��
"��X�b�\�\���
���?�?�2�&�&�
���H������	��{�{�}�}�r)Fr/)�__name__�
__module__�__qualname__�__doc__r!rr-r8rQrYr]�rrrrs���������.�������
���#�#�#�2?�?�?�B���"�����rr�__main__c� �d\}}d\}}|�|dz
|d��tj||||��}t||dz
|dz
||z||z��|���t|�����S)N)�	�)���zUse Ctrl-G to end editing.r)�addstrr�newwinrrJrr])�stdscr�ncols�nlinesrrrs      r�test_editboxro�s����
��v����S��
�
�c�!�e�S�">�?�?�?��m�F�E�3��4�4���&�#�a�%��Q���f��c�E�k�B�B�B��������s�|�|� � �"�"�"rzContents of text box:)rar�curses.asciirrr^ro�wrapper�str�print�reprrbrr�<module>rus���@�@�
�
�
�
�����-�-�-�i�i�i�i�i�i�i�i�V�z���#�#�#��&�.��
&�
&�C�	�E�
!�4�4��9�9�-�-�-�-�-��r__pycache__/__init__.cpython-311.pyc000064400000006262152401763610013230 0ustar00�

�xDf�6���^�dZddlTddlZddlZd�Zd�Z	en#e	$r	ddlmZYnwxYwd�Z
dS)	z�curses

The main package for curses support for Python.  Normally used by importing
the package, and perhaps a particular module inside it.

   import curses
   from curses import textpad
   curses.initscr()
   ...

�)�*Nc�X�ddl}ddl}ttj�dd��tj������|�	��}|j
���D](\}}|dd�dks|dvrt|||���)|S)Nr�TERM�unknown)�term�fd��ACS_)�LINES�COLS)
�_curses�curses�	setupterm�_os�environ�get�_sys�
__stdout__�fileno�initscr�__dict__�items�setattr)r
r�stdscr�key�values     �:/opt/alt/python-internal/lib/python3.11/curses/__init__.pyrrs������������3�;�?�?�6�9�5�5���'�'�)�)�+�+�+�+�
�_�_�
�
�F��&�,�,�.�.�(�(�
��U��q��s�8�v����(9�!9�!9��F�C��'�'�'���M�c��ddl}ddl}|���}t|d��r|j|_t|d��r|j|_|S)Nr�COLORS�COLOR_PAIRS)r
r�start_color�hasattrr r!)r
r�retvals   rr"r"*sh����������
�
 �
 �
"�
"�F��w��!�!�'����
��w�
�&�&�1�$�0����Mr�)�has_keyc��	t��}t��t��|�d��	t	��n#YnxYw||g|�Ri|��dt��vr@|�d��t
��t��t��SS#dt��vr@|�d��t
��t��t��wwxYw)aWrapper function that initializes curses and calls another function,
    restoring normal keyboard/screen behavior on error.
    The callable object 'func' is then passed the main window 'stdscr'
    as its first argument, followed by any other arguments passed to
    wrapper().
    r%rr)	r�noecho�cbreak�keypadr"�locals�echo�nocbreak�endwin)�func�args�kwdsrs    r�wrapperr2?s��������	��������
	�
�
�a����	��M�M�M�M��	��D�����t�F�*�T�*�*�*�T�*�*��v�x�x����M�M�!�����F�F�F��J�J�J��H�H�H�H�	 ��8�v�x�x����M�M�!�����F�F�F��J�J�J��H�H�H�H�	 ���s$�?B4�A�B4�A�B4�4AD)�__doc__r
�osr�sysrrr"r&�	NameErrorr2�rr�<module>r8s���
�
����������������"���!��G�G���!�!�!� � � � � � � � �!����&�&�&�&�&s��'�'__pycache__/ascii.cpython-311.pyc000064400000013237152401763610012561 0ustar00�

F�Nf
~:���dZdZdZdZdZdZdZdZdZd	Z	d
Z
d
ZdZdZ
dZd
ZdZdZdZdZdZdZdZdZdZdZdZdZdZdZdZdZdZ dZ!d Z"d!Z#d"Z$gd#�Z%d$�Z&d%�Z'd&�Z(d'�Z)d(�Z*d)�Z+d*�Z,d+�Z-d,�Z.d-�Z/d.�Z0d/�Z1d0�Z2d1�Z3d2�Z4d3�Z5d4�Z6d5�Z7d6�Z8d7�Z9d8S)9z3Constants and membership tests for ASCII characters����������	�
���
������������������� �)!�NUL�SOH�STX�ETX�EOT�ENQ�ACK�BEL�BS�HT�LF�VT�FF�CR�SO�SI�DLE�DC1�DC2�DC3�DC4�NAK�SYN�ETB�CAN�EM�SUB�ESC�FS�GS�RS�US�SPc�d�t|��td��krt|��S|S)N�)�type�ord��cs �7/opt/alt/python-internal/lib/python3.11/curses/ascii.py�_ctoirL0s)���A�w�w�$�r�(�(����1�v�v�
���c�>�t|��pt|��S�N)�isalpha�isdigitrIs rK�isalnumrR6���w�q�z�z�/�W�Q�Z�Z�/rMc�>�t|��pt|��SrO)�isupper�islowerrIs rKrPrP7rSrMc�<�dt|��cxkodkncS)Nrr#�rLrIs rK�isasciirY8s)��q�E�!�H�H�+�+�+�+��+�+�+�+�+rMc�$�t|��dvS)N)rr"rXrIs rK�isblankr[9s��u�Q�x�x�7�*�*rMc�b�dt|��cxkodkncpt|��dkS)Nrr!r#rXrIs rK�iscntrlr]:s8��q�E�!�H�H�*�*�*�*��*�*�*�*�=�e�A�h�h�#�o�=rMc�<�dt|��cxkodkncS)N�0�9rXrIs rKrQrQ;�)��r�U�1�X�X�+�+�+�+��+�+�+�+�+rMc�<�dt|��cxkodkncS)N�!�~rXrIs rK�isgraphre<�)��r�U�1�X�X�,�,�,�,��,�,�,�,�,rMc�<�dt|��cxkodkncS)N�a�zrXrIs rKrVrV=rfrMc�<�dt|��cxkodkncS)Nr"rdrXrIs rK�isprintrk>rfrMc�@�t|��ot|��SrO)rerRrIs rK�ispunctrm?s��w�q�z�z�4�'�!�*�*�n�4rMc�$�t|��dvS)N)rrr
rrr"rXrIs rK�isspacero@s��u�Q�x�x�#:�:�:rMc�<�dt|��cxkodkncS)N�A�ZrXrIs rKrUrUArarMc��t|��p9dt|��cxkodkncpdt|��cxkodkncS)Nrq�Frh�f)rQrLrIs rK�isxdigitrvBsc����
�
�6��5��8�8�����r�����6�!�U�1�X�X�4�4�4�4��4�4�4�4�6rMc�<�dt|��cxkodkncS)Nrr"rXrIs rK�isctrlrxDs)��a�5��8�8�(�(�(�(�b�(�(�(�(�(rMc�(�t|��dkS)Nr#rXrIs rK�ismetarzEs��e�A�h�h��n�$rMc��t|��td��krtt|��dz��St|��dzS)NrFr#�rG�chrrLrIs rK�asciir~G�A���A�w�w�$�r�(�(����5��8�8�d�?�#�#�#��Q�x�x�$��rMc��t|��td��krtt|��dz��St|��dzS)NrFr!r|rIs rK�ctrlr�MrrMc��t|��td��krtt|��dz��St|��dzS)NrF�r|rIs rK�altr�SrrMc���t|��}|dkrd}n@t|dz��rt|dz��}ndt|dzdzdz��z}|dzrd|zS|S)Nr#z^?�^r"r��!)rLrkr})rJ�bits�reps   rK�unctrlr�Ys����8�8�D��t�|�|����	����	�	�7��$��+������C�$��+��-��5�6�6�6���d�{���S�y���JrMN):�__doc__r$r%r&r'r(r)r*r+r,�TABr-r.�NLr/r0r1r2r3r4r5r6r7r8r9r:r;r<r=r>r?r@rArBrCrD�DEL�controlnamesrLrRrPrYr[r]rQrerVrkrmrorUrvrxrzr~r�r�r��rMrK�<module>r�s���9�9�
��
��
��
��
��
��
��
��
��
��
��
��
��
��
��
��
��
��
��
��
��
��
��
��
��
��
��
��
��
��
��
��
��
��
��
���������0�/�/�/�/�/�+�+�+�*�*�*�=�=�=�+�+�+�,�,�,�,�,�,�,�,�,�4�4�4�:�:�:�+�+�+�6�6�6�(�(�(�$�$�$����������
�
�
�
�
rM__pycache__/ascii.cpython-311.opt-2.pyc000064400000013134152401763610013515 0ustar00�

F�Nf
~:���	dZdZdZdZdZdZdZdZdZd	Z	d	Z
d
Zd
ZdZ
dZd
ZdZdZdZdZdZdZdZdZdZdZdZdZdZdZdZdZdZ dZ!d Z"d!Z#gd"�Z$d#�Z%d$�Z&d%�Z'd&�Z(d'�Z)d(�Z*d)�Z+d*�Z,d+�Z-d,�Z.d-�Z/d.�Z0d/�Z1d0�Z2d1�Z3d2�Z4d3�Z5d4�Z6d5�Z7d6�Z8d7S)8����������	�
���
������������������� �)!�NUL�SOH�STX�ETX�EOT�ENQ�ACK�BEL�BS�HT�LF�VT�FF�CR�SO�SI�DLE�DC1�DC2�DC3�DC4�NAK�SYN�ETB�CAN�EM�SUB�ESC�FS�GS�RS�US�SPc�d�t|��td��krt|��S|S)N�)�type�ord��cs �7/opt/alt/python-internal/lib/python3.11/curses/ascii.py�_ctoirL0s)���A�w�w�$�r�(�(����1�v�v�
���c�>�t|��pt|��S�N)�isalpha�isdigitrIs rK�isalnumrR6���w�q�z�z�/�W�Q�Z�Z�/rMc�>�t|��pt|��SrO)�isupper�islowerrIs rKrPrP7rSrMc�<�dt|��cxkodkncS)Nrr#�rLrIs rK�isasciirY8s)��q�E�!�H�H�+�+�+�+��+�+�+�+�+rMc�$�t|��dvS)N)rr"rXrIs rK�isblankr[9s��u�Q�x�x�7�*�*rMc�b�dt|��cxkodkncpt|��dkS)Nrr!r#rXrIs rK�iscntrlr]:s8��q�E�!�H�H�*�*�*�*��*�*�*�*�=�e�A�h�h�#�o�=rMc�<�dt|��cxkodkncS)N�0�9rXrIs rKrQrQ;�)��r�U�1�X�X�+�+�+�+��+�+�+�+�+rMc�<�dt|��cxkodkncS)N�!�~rXrIs rK�isgraphre<�)��r�U�1�X�X�,�,�,�,��,�,�,�,�,rMc�<�dt|��cxkodkncS)N�a�zrXrIs rKrVrV=rfrMc�<�dt|��cxkodkncS)Nr"rdrXrIs rK�isprintrk>rfrMc�@�t|��ot|��SrO)rerRrIs rK�ispunctrm?s��w�q�z�z�4�'�!�*�*�n�4rMc�$�t|��dvS)N)rrr
rrr"rXrIs rK�isspacero@s��u�Q�x�x�#:�:�:rMc�<�dt|��cxkodkncS)N�A�ZrXrIs rKrUrUArarMc��t|��p9dt|��cxkodkncpdt|��cxkodkncS)Nrq�Frh�f)rQrLrIs rK�isxdigitrvBsc����
�
�6��5��8�8�����r�����6�!�U�1�X�X�4�4�4�4��4�4�4�4�6rMc�<�dt|��cxkodkncS)Nrr"rXrIs rK�isctrlrxDs)��a�5��8�8�(�(�(�(�b�(�(�(�(�(rMc�(�t|��dkS)Nr#rXrIs rK�ismetarzEs��e�A�h�h��n�$rMc��t|��td��krtt|��dz��St|��dzS)NrFr#�rG�chrrLrIs rK�asciir~G�A���A�w�w�$�r�(�(����5��8�8�d�?�#�#�#��Q�x�x�$��rMc��t|��td��krtt|��dz��St|��dzS)NrFr!r|rIs rK�ctrlr�MrrMc��t|��td��krtt|��dz��St|��dzS)NrF�r|rIs rK�altr�SrrMc���t|��}|dkrd}n@t|dz��rt|dz��}ndt|dzdzdz��z}|dzrd|zS|S)Nr#z^?�^r"r��!)rLrkr})rJ�bits�reps   rK�unctrlr�Ys����8�8�D��t�|�|����	����	�	�7��$��+������C�$��+��-��5�6�6�6���d�{���S�y���JrMN)9r$r%r&r'r(r)r*r+r,�TABr-r.�NLr/r0r1r2r3r4r5r6r7r8r9r:r;r<r=r>r?r@rArBrCrD�DEL�controlnamesrLrRrPrYr[r]rQrerVrkrmrorUrvrxrzr~r�r�r��rMrK�<module>r�s���9�
��
��
��
��
��
��
��
��
��
��
��
��
��
��
��
��
��
��
��
��
��
��
��
��
��
��
��
��
��
��
��
��
��
��
��
���������0�/�/�/�/�/�+�+�+�*�*�*�=�=�=�+�+�+�,�,�,�,�,�,�,�,�,�4�4�4�:�:�:�+�+�+�6�6�6�(�(�(�$�$�$����������
�
�
�
�
rM__pycache__/__init__.cpython-311.opt-2.pyc000064400000005257152401763610014173 0ustar00�

�xDf�6���\�	ddlTddlZddlZd�Zd�Z	en#e$r	ddlmZYnwxYwd�Z	dS)�)�*Nc�X�ddl}ddl}ttj�dd��tj������|�	��}|j
���D](\}}|dd�dks|dvrt|||���)|S)Nr�TERM�unknown)�term�fd��ACS_)�LINES�COLS)
�_curses�curses�	setupterm�_os�environ�get�_sys�
__stdout__�fileno�initscr�__dict__�items�setattr)r
r�stdscr�key�values     �:/opt/alt/python-internal/lib/python3.11/curses/__init__.pyrrs������������3�;�?�?�6�9�5�5���'�'�)�)�+�+�+�+�
�_�_�
�
�F��&�,�,�.�.�(�(�
��U��q��s�8�v����(9�!9�!9��F�C��'�'�'���M�c��ddl}ddl}|���}t|d��r|j|_t|d��r|j|_|S)Nr�COLORS�COLOR_PAIRS)r
r�start_color�hasattrr r!)r
r�retvals   rr"r"*sh����������
�
 �
 �
"�
"�F��w��!�!�'����
��w�
�&�&�1�$�0����Mr�)�has_keyc��		t��}t��t��|�d��	t	��n#YnxYw||g|�Ri|��dt��vr@|�d��t
��t��t��SS#dt��vr@|�d��t
��t��t��wwxYw)Nr%rr)	r�noecho�cbreak�keypadr"�locals�echo�nocbreak�endwin)�func�args�kwdsrs    r�wrapperr2?s��������	��������
	�
�
�a����	��M�M�M�M��	��D�����t�F�*�T�*�*�*�T�*�*��v�x�x����M�M�!�����F�F�F��J�J�J��H�H�H�H�	 ��8�v�x�x����M�M�!�����F�F�F��J�J�J��H�H�H�H�	 ���s$�?B5�A�B5�A�B5�5AD)
r
�osr�sysrrr"r&�	NameErrorr2�rr�<module>r7s���
����������������"���!��G�G���!�!�!� � � � � � � � �!����&�&�&�&�&s��&�&__pycache__/panel.cpython-311.opt-1.pyc000064400000000430152401763610013516 0ustar00�

�I�	b3l���dZddlTdS)z3curses.panel

Module for using panels with curses.
�)�*N)�__doc__�
_curses_panel���7/opt/alt/python-internal/lib/python3.11/curses/panel.py�<module>r	s#����
�����r__pycache__/has_key.cpython-311.opt-2.pyc000064400000021025152401763610014046 0ustar00�

�xz褢���
�ddlZiejd�ejd�ejd�ejd�ejd�ejd�ejd�ejd	�ej	d
�ej
d�ejd�ejd
�ej
d�ejd�ejd�ejd�ejd�iejd�ejd�ejd�ejd�ejd�ejd�ejd�ejd�ejd�ejd�ejd�ejd�ejd�ejd �ej d!�ej!d"�ej"d#��iej#d$�ej$d%�ej%d&�ej&d'�ej'd(�ej(d)�ej)d*�ej*d+�ej+d,�ej,d-�ej-d.�ej.d/�ej/d0�ej0d1�ej1d2�ej2d3�ej3d4��iej4d5�ej5d6�ej6d7�ej7d8�ej8d9�ej9d:�ej:d;�ej;d<�ej<d=�ej=d>�ej>d?�ej?d@�ej@dA�ejAdB�ejBdC�ejCdD�ejDdE��iejEdF�ejFdG�ejGdH�ejHdI�ejIdJ�ejJdK�ejKdL�ejLdM�ejMdN�ejNdO�ejOdP�ejPdQ�ejQdR�ejRdS�ejSdT�ejTdU�ejUdV��iejVdW�ejWdX�ejXdY�ejYdZ�ejZd[�ej[d\�ej\d]�ej]d^�ej^d_�ej_d`�ej`da�ejadb�ejbdc�ejcdd�ejdde�ejedf�ejfdg��iejgdh�ejhdi�ejidj�ejjdk�ejkdl�ejldm�ejmdn�ejndo�ejodp�ejpdq�ejqdr�ejrds�ejsdt�ejtdu�ejudv�ejvdw�ejwdx��iejxdy�ejydz�ejzd{�ej{d|�ej|d}�ej}d~�ej~d�ejd��ej�d��ej�d��ej�d��ej�d��ej�d��ej�d��ej�d��ej�d��ej�d���ej�d�ej�d�ej�d�ej�d�ej�d�ej�d�ej�d�ej�d�ej�d�ej�d�ej�d�ej�d�ej�d�i
�Z�d��Z�e�d�kr�	gZ�ej���e�����D]LZ�ej�e���Z�e�e���Z�e�e�kr)e���d�ej�e���e�e�fz���M	ej���e�D]
Z�e�e����dS#ej���e�D]
Z�e�e����wxYwdS)��N�ka1�ka3�kb2�kbs�kbeg�kcbt�kc1�kc3�kcan�ktbc�kclr�kclo�kcmd�kcpy�kcrt�kctab�kdch1�kdl1�kcud1�krmir�kend�kent�kel�ked�kext�kf0�kf1�kf10�kf11�kf12�kf13�kf14�kf15�kf16�kf17�kf18�kf19�kf2�kf20�kf21�kf22�kf23�kf24�kf25�kf26�kf27�kf28�kf29�kf3�kf30�kf31�kf32�kf33�kf34�kf35�kf36�kf37�kf38�kf39�kf4�kf40�kf41�kf42�kf43�kf44�kf45�kf46�kf47�kf48�kf49�kf5�kf50�kf51�kf52�kf53�kf54�kf55�kf56�kf57�kf58�kf59�kf6�kf60�kf61�kf62�kf63�kf7�kf8�kf9�kfnd�khlp�khome�kich1�kil1�kcub1�kll�kmrk�kmsg�kmov�knxt�knp�kopn�kopt�kpp�kprv�kprt�krdo�kref�krfr�krpl�krst�kres�kcuf1�ksav�kBEG�kCAN�kCMD�kCPY�kCRT�kDC�kDL�kslt�kEND�kEOL�kEXT�kind�kFND�kHLP�kHOM�kIC�kLFT�kMSG�kMOV�kNXT�kOPT�kPRV�kPRT�kri�kRDO�kRPL�kRIT�kRES�kSAV�kSPD�khts�kUND�kspd�kund�kcuu1c��t|t��rt|��}t�|��}|�dStj|��rdSdS)NFT)�
isinstance�str�ord�_capability_names�get�_curses�tigetstr)�ch�capability_names  �9/opt/alt/python-internal/lib/python3.11/curses/has_key.py�has_keyr��s^���"�c����
��W�W��(�+�+�B�/�/�O����u����*�*���t��u��__main__z)Mismatch for key %s, system=%i, Python=%i)�r��KEY_A1�KEY_A3�KEY_B2�
KEY_BACKSPACE�KEY_BEG�KEY_BTAB�KEY_C1�KEY_C3�
KEY_CANCEL�	KEY_CATAB�	KEY_CLEAR�	KEY_CLOSE�KEY_COMMAND�KEY_COPY�
KEY_CREATE�KEY_CTAB�KEY_DC�KEY_DL�KEY_DOWN�KEY_EIC�KEY_END�	KEY_ENTER�KEY_EOL�KEY_EOS�KEY_EXIT�KEY_F0�KEY_F1�KEY_F10�KEY_F11�KEY_F12�KEY_F13�KEY_F14�KEY_F15�KEY_F16�KEY_F17�KEY_F18�KEY_F19�KEY_F2�KEY_F20�KEY_F21�KEY_F22�KEY_F23�KEY_F24�KEY_F25�KEY_F26�KEY_F27�KEY_F28�KEY_F29�KEY_F3�KEY_F30�KEY_F31�KEY_F32�KEY_F33�KEY_F34�KEY_F35�KEY_F36�KEY_F37�KEY_F38�KEY_F39�KEY_F4�KEY_F40�KEY_F41�KEY_F42�KEY_F43�KEY_F44�KEY_F45�KEY_F46�KEY_F47�KEY_F48�KEY_F49�KEY_F5�KEY_F50�KEY_F51�KEY_F52�KEY_F53�KEY_F54�KEY_F55�KEY_F56�KEY_F57�KEY_F58�KEY_F59�KEY_F6�KEY_F60�KEY_F61�KEY_F62�KEY_F63�KEY_F7�KEY_F8�KEY_F9�KEY_FIND�KEY_HELP�KEY_HOME�KEY_IC�KEY_IL�KEY_LEFT�KEY_LL�KEY_MARK�KEY_MESSAGE�KEY_MOVE�KEY_NEXT�	KEY_NPAGE�KEY_OPEN�KEY_OPTIONS�	KEY_PPAGE�KEY_PREVIOUS�	KEY_PRINT�KEY_REDO�
KEY_REFERENCE�KEY_REFRESH�KEY_REPLACE�KEY_RESTART�
KEY_RESUME�	KEY_RIGHT�KEY_SAVE�KEY_SBEG�KEY_SCANCEL�KEY_SCOMMAND�	KEY_SCOPY�KEY_SCREATE�KEY_SDC�KEY_SDL�
KEY_SELECT�KEY_SEND�KEY_SEOL�	KEY_SEXIT�KEY_SF�	KEY_SFIND�	KEY_SHELP�	KEY_SHOME�KEY_SIC�	KEY_SLEFT�KEY_SMESSAGE�	KEY_SMOVE�	KEY_SNEXT�KEY_SOPTIONS�
KEY_SPREVIOUS�
KEY_SPRINT�KEY_SR�	KEY_SREDO�KEY_SREPLACE�
KEY_SRIGHT�
KEY_SRSUME�	KEY_SSAVE�KEY_SSUSPEND�KEY_STAB�	KEY_SUNDO�KEY_SUSPEND�KEY_UNDO�KEY_UPr�r��__name__�L�initscr�keys�key�system�python�append�keyname�endwin�i�print�r�r��<module>rHs������V��N�E�V��N�E�V��N�E�V���5�	V�
�O�V�V���f�
V��N�E�V��N�E�V����V���v�V���v�V���v�V����V���f�V����V� ��g�!V�"�N�G�#V�V�$�N�F�%V�&��g�'V�(�O�W�)V�*�O�V�+V�,��v�-V�.�O�U�/V�0�O�U�1V�2��f�3V�4�N�E�5V�6�N�E�7V�8�O�V�9V�:�O�V�;V�<�O�V�=V�>�O�V�?V�@�O�V�AV�B�O�V�CV�D�O�V�EV�V�V�F�O�V�GV�H�O�V�IV�J�O�V�KV�L�N�E�MV�N�O�V�OV�P�O�V�QV�R�O�V�SV�T�O�V�UV�V�O�V�WV�X�O�V�YV�Z�O�V�[V�\�O�V�]V�^�O�V�_V�`�O�V�aV�b�N�E�cV�d�O�V�eV�f�O�V�gV�V�V�h�O�V�iV�j�O�V�kV�l�O�V�mV�n�O�V�oV�p�O�V�qV�r�O�V�sV�t�O�V�uV�v�O�V�wV�x�N�E�yV�z�O�V�{V�|�O�V�}V�~�O�V�V�@�O�V�AV�B�O�V�CV�D�O�V�EV�F�O�V�GV�H�O�V�IV�V�V�J�O�V�KV�L�O�V�MV�N�N�E�OV�P�O�V�QV�R�O�V�SV�T�O�V�UV�V�O�V�WV�X�O�V�YV�Z�O�V�[V�\�O�V�]V�^�O�V�_V�`�O�V�aV�b�O�V�cV�d�N�E�eV�f�O�V�gV�h�O�V�iV�j�O�V�kV�V�V�l�O�V�mV�n�N�E�oV�p�N�E�qV�r�N�E�sV�t��f�uV�v��f�wV�x��g�yV�z�N�G�{V�|�N�F�}V�~��g�V�@�N�E�AV�B��f�CV�D���EV�F��f�GV�H��f�IV�J��u�KV�L��f�MV�V�V�N���OV�P��u�QV�R��&�SV�T��v�UV�V��f�WV�X��6�YV�Z���[V�\���]V�^���_V�`���aV�b��w�cV�d��f�eV�f��f�gV�h���iV�j��&�kV�l��v�mV�n���oV�V�V�p�O�U�qV�r�O�U�sV�t���uV�v��f�wV�x��f�yV�z��v�{V�|�N�F�}V�~��v�V�@��v�AV�B��v�CV�D�O�U�EV�F��v�GV�H��&�IV�J��v�KV�L��v�MV�N��&�OV�P��6�QV�V�R����N�E���v���&���������v���&���f���v������f��N�G�kV�V��p��� �z������������$�)�)�+�+�	G�	G�C�$�W�_�S�)�)�F��W�S�\�\�F��������E�,�W�_�c�3�3�V�V�D�E�G�G�G��		G�	���������A�E�E�!�H�H�H�H����	���������A�E�E�!�H�H�H�H������s
�<A2U�!U1__pycache__/ascii.cpython-311.opt-1.pyc000064400000013237152401763610013520 0ustar00�

F�Nf
~:���dZdZdZdZdZdZdZdZdZd	Z	d
Z
d
ZdZdZ
dZd
ZdZdZdZdZdZdZdZdZdZdZdZdZdZdZdZdZdZ dZ!d Z"d!Z#d"Z$gd#�Z%d$�Z&d%�Z'd&�Z(d'�Z)d(�Z*d)�Z+d*�Z,d+�Z-d,�Z.d-�Z/d.�Z0d/�Z1d0�Z2d1�Z3d2�Z4d3�Z5d4�Z6d5�Z7d6�Z8d7�Z9d8S)9z3Constants and membership tests for ASCII characters����������	�
���
������������������� �)!�NUL�SOH�STX�ETX�EOT�ENQ�ACK�BEL�BS�HT�LF�VT�FF�CR�SO�SI�DLE�DC1�DC2�DC3�DC4�NAK�SYN�ETB�CAN�EM�SUB�ESC�FS�GS�RS�US�SPc�d�t|��td��krt|��S|S)N�)�type�ord��cs �7/opt/alt/python-internal/lib/python3.11/curses/ascii.py�_ctoirL0s)���A�w�w�$�r�(�(����1�v�v�
���c�>�t|��pt|��S�N)�isalpha�isdigitrIs rK�isalnumrR6���w�q�z�z�/�W�Q�Z�Z�/rMc�>�t|��pt|��SrO)�isupper�islowerrIs rKrPrP7rSrMc�<�dt|��cxkodkncS)Nrr#�rLrIs rK�isasciirY8s)��q�E�!�H�H�+�+�+�+��+�+�+�+�+rMc�$�t|��dvS)N)rr"rXrIs rK�isblankr[9s��u�Q�x�x�7�*�*rMc�b�dt|��cxkodkncpt|��dkS)Nrr!r#rXrIs rK�iscntrlr]:s8��q�E�!�H�H�*�*�*�*��*�*�*�*�=�e�A�h�h�#�o�=rMc�<�dt|��cxkodkncS)N�0�9rXrIs rKrQrQ;�)��r�U�1�X�X�+�+�+�+��+�+�+�+�+rMc�<�dt|��cxkodkncS)N�!�~rXrIs rK�isgraphre<�)��r�U�1�X�X�,�,�,�,��,�,�,�,�,rMc�<�dt|��cxkodkncS)N�a�zrXrIs rKrVrV=rfrMc�<�dt|��cxkodkncS)Nr"rdrXrIs rK�isprintrk>rfrMc�@�t|��ot|��SrO)rerRrIs rK�ispunctrm?s��w�q�z�z�4�'�!�*�*�n�4rMc�$�t|��dvS)N)rrr
rrr"rXrIs rK�isspacero@s��u�Q�x�x�#:�:�:rMc�<�dt|��cxkodkncS)N�A�ZrXrIs rKrUrUArarMc��t|��p9dt|��cxkodkncpdt|��cxkodkncS)Nrq�Frh�f)rQrLrIs rK�isxdigitrvBsc����
�
�6��5��8�8�����r�����6�!�U�1�X�X�4�4�4�4��4�4�4�4�6rMc�<�dt|��cxkodkncS)Nrr"rXrIs rK�isctrlrxDs)��a�5��8�8�(�(�(�(�b�(�(�(�(�(rMc�(�t|��dkS)Nr#rXrIs rK�ismetarzEs��e�A�h�h��n�$rMc��t|��td��krtt|��dz��St|��dzS)NrFr#�rG�chrrLrIs rK�asciir~G�A���A�w�w�$�r�(�(����5��8�8�d�?�#�#�#��Q�x�x�$��rMc��t|��td��krtt|��dz��St|��dzS)NrFr!r|rIs rK�ctrlr�MrrMc��t|��td��krtt|��dz��St|��dzS)NrF�r|rIs rK�altr�SrrMc���t|��}|dkrd}n@t|dz��rt|dz��}ndt|dzdzdz��z}|dzrd|zS|S)Nr#z^?�^r"r��!)rLrkr})rJ�bits�reps   rK�unctrlr�Ys����8�8�D��t�|�|����	����	�	�7��$��+������C�$��+��-��5�6�6�6���d�{���S�y���JrMN):�__doc__r$r%r&r'r(r)r*r+r,�TABr-r.�NLr/r0r1r2r3r4r5r6r7r8r9r:r;r<r=r>r?r@rArBrCrD�DEL�controlnamesrLrRrPrYr[r]rQrerVrkrmrorUrvrxrzr~r�r�r��rMrK�<module>r�s���9�9�
��
��
��
��
��
��
��
��
��
��
��
��
��
��
��
��
��
��
��
��
��
��
��
��
��
��
��
��
��
��
��
��
��
��
��
���������0�/�/�/�/�/�+�+�+�*�*�*�=�=�=�+�+�+�,�,�,�,�,�,�,�,�,�4�4�4�:�:�:�+�+�+�6�6�6�(�(�(�$�$�$����������
�
�
�
�
rM__pycache__/has_key.cpython-311.opt-1.pyc000064400000021025152401763610014045 0ustar00�

�xz褢���
�ddlZiejd�ejd�ejd�ejd�ejd�ejd�ejd�ejd	�ej	d
�ej
d�ejd�ejd
�ej
d�ejd�ejd�ejd�ejd�iejd�ejd�ejd�ejd�ejd�ejd�ejd�ejd�ejd�ejd�ejd�ejd�ejd�ejd �ej d!�ej!d"�ej"d#��iej#d$�ej$d%�ej%d&�ej&d'�ej'd(�ej(d)�ej)d*�ej*d+�ej+d,�ej,d-�ej-d.�ej.d/�ej/d0�ej0d1�ej1d2�ej2d3�ej3d4��iej4d5�ej5d6�ej6d7�ej7d8�ej8d9�ej9d:�ej:d;�ej;d<�ej<d=�ej=d>�ej>d?�ej?d@�ej@dA�ejAdB�ejBdC�ejCdD�ejDdE��iejEdF�ejFdG�ejGdH�ejHdI�ejIdJ�ejJdK�ejKdL�ejLdM�ejMdN�ejNdO�ejOdP�ejPdQ�ejQdR�ejRdS�ejSdT�ejTdU�ejUdV��iejVdW�ejWdX�ejXdY�ejYdZ�ejZd[�ej[d\�ej\d]�ej]d^�ej^d_�ej_d`�ej`da�ejadb�ejbdc�ejcdd�ejdde�ejedf�ejfdg��iejgdh�ejhdi�ejidj�ejjdk�ejkdl�ejldm�ejmdn�ejndo�ejodp�ejpdq�ejqdr�ejrds�ejsdt�ejtdu�ejudv�ejvdw�ejwdx��iejxdy�ejydz�ejzd{�ej{d|�ej|d}�ej}d~�ej~d�ejd��ej�d��ej�d��ej�d��ej�d��ej�d��ej�d��ej�d��ej�d��ej�d���ej�d�ej�d�ej�d�ej�d�ej�d�ej�d�ej�d�ej�d�ej�d�ej�d�ej�d�ej�d�ej�d�i
�Z�d��Z�e�d�kr�	gZ�ej���e�����D]LZ�ej�e���Z�e�e���Z�e�e�kr)e���d�ej�e���e�e�fz���M	ej���e�D]
Z�e�e����dS#ej���e�D]
Z�e�e����wxYwdS)��N�ka1�ka3�kb2�kbs�kbeg�kcbt�kc1�kc3�kcan�ktbc�kclr�kclo�kcmd�kcpy�kcrt�kctab�kdch1�kdl1�kcud1�krmir�kend�kent�kel�ked�kext�kf0�kf1�kf10�kf11�kf12�kf13�kf14�kf15�kf16�kf17�kf18�kf19�kf2�kf20�kf21�kf22�kf23�kf24�kf25�kf26�kf27�kf28�kf29�kf3�kf30�kf31�kf32�kf33�kf34�kf35�kf36�kf37�kf38�kf39�kf4�kf40�kf41�kf42�kf43�kf44�kf45�kf46�kf47�kf48�kf49�kf5�kf50�kf51�kf52�kf53�kf54�kf55�kf56�kf57�kf58�kf59�kf6�kf60�kf61�kf62�kf63�kf7�kf8�kf9�kfnd�khlp�khome�kich1�kil1�kcub1�kll�kmrk�kmsg�kmov�knxt�knp�kopn�kopt�kpp�kprv�kprt�krdo�kref�krfr�krpl�krst�kres�kcuf1�ksav�kBEG�kCAN�kCMD�kCPY�kCRT�kDC�kDL�kslt�kEND�kEOL�kEXT�kind�kFND�kHLP�kHOM�kIC�kLFT�kMSG�kMOV�kNXT�kOPT�kPRV�kPRT�kri�kRDO�kRPL�kRIT�kRES�kSAV�kSPD�khts�kUND�kspd�kund�kcuu1c��t|t��rt|��}t�|��}|�dStj|��rdSdS)NFT)�
isinstance�str�ord�_capability_names�get�_curses�tigetstr)�ch�capability_names  �9/opt/alt/python-internal/lib/python3.11/curses/has_key.py�has_keyr��s^���"�c����
��W�W��(�+�+�B�/�/�O����u����*�*���t��u��__main__z)Mismatch for key %s, system=%i, Python=%i)�r��KEY_A1�KEY_A3�KEY_B2�
KEY_BACKSPACE�KEY_BEG�KEY_BTAB�KEY_C1�KEY_C3�
KEY_CANCEL�	KEY_CATAB�	KEY_CLEAR�	KEY_CLOSE�KEY_COMMAND�KEY_COPY�
KEY_CREATE�KEY_CTAB�KEY_DC�KEY_DL�KEY_DOWN�KEY_EIC�KEY_END�	KEY_ENTER�KEY_EOL�KEY_EOS�KEY_EXIT�KEY_F0�KEY_F1�KEY_F10�KEY_F11�KEY_F12�KEY_F13�KEY_F14�KEY_F15�KEY_F16�KEY_F17�KEY_F18�KEY_F19�KEY_F2�KEY_F20�KEY_F21�KEY_F22�KEY_F23�KEY_F24�KEY_F25�KEY_F26�KEY_F27�KEY_F28�KEY_F29�KEY_F3�KEY_F30�KEY_F31�KEY_F32�KEY_F33�KEY_F34�KEY_F35�KEY_F36�KEY_F37�KEY_F38�KEY_F39�KEY_F4�KEY_F40�KEY_F41�KEY_F42�KEY_F43�KEY_F44�KEY_F45�KEY_F46�KEY_F47�KEY_F48�KEY_F49�KEY_F5�KEY_F50�KEY_F51�KEY_F52�KEY_F53�KEY_F54�KEY_F55�KEY_F56�KEY_F57�KEY_F58�KEY_F59�KEY_F6�KEY_F60�KEY_F61�KEY_F62�KEY_F63�KEY_F7�KEY_F8�KEY_F9�KEY_FIND�KEY_HELP�KEY_HOME�KEY_IC�KEY_IL�KEY_LEFT�KEY_LL�KEY_MARK�KEY_MESSAGE�KEY_MOVE�KEY_NEXT�	KEY_NPAGE�KEY_OPEN�KEY_OPTIONS�	KEY_PPAGE�KEY_PREVIOUS�	KEY_PRINT�KEY_REDO�
KEY_REFERENCE�KEY_REFRESH�KEY_REPLACE�KEY_RESTART�
KEY_RESUME�	KEY_RIGHT�KEY_SAVE�KEY_SBEG�KEY_SCANCEL�KEY_SCOMMAND�	KEY_SCOPY�KEY_SCREATE�KEY_SDC�KEY_SDL�
KEY_SELECT�KEY_SEND�KEY_SEOL�	KEY_SEXIT�KEY_SF�	KEY_SFIND�	KEY_SHELP�	KEY_SHOME�KEY_SIC�	KEY_SLEFT�KEY_SMESSAGE�	KEY_SMOVE�	KEY_SNEXT�KEY_SOPTIONS�
KEY_SPREVIOUS�
KEY_SPRINT�KEY_SR�	KEY_SREDO�KEY_SREPLACE�
KEY_SRIGHT�
KEY_SRSUME�	KEY_SSAVE�KEY_SSUSPEND�KEY_STAB�	KEY_SUNDO�KEY_SUSPEND�KEY_UNDO�KEY_UPr�r��__name__�L�initscr�keys�key�system�python�append�keyname�endwin�i�print�r�r��<module>rHs������V��N�E�V��N�E�V��N�E�V���5�	V�
�O�V�V���f�
V��N�E�V��N�E�V����V���v�V���v�V���v�V����V���f�V����V� ��g�!V�"�N�G�#V�V�$�N�F�%V�&��g�'V�(�O�W�)V�*�O�V�+V�,��v�-V�.�O�U�/V�0�O�U�1V�2��f�3V�4�N�E�5V�6�N�E�7V�8�O�V�9V�:�O�V�;V�<�O�V�=V�>�O�V�?V�@�O�V�AV�B�O�V�CV�D�O�V�EV�V�V�F�O�V�GV�H�O�V�IV�J�O�V�KV�L�N�E�MV�N�O�V�OV�P�O�V�QV�R�O�V�SV�T�O�V�UV�V�O�V�WV�X�O�V�YV�Z�O�V�[V�\�O�V�]V�^�O�V�_V�`�O�V�aV�b�N�E�cV�d�O�V�eV�f�O�V�gV�V�V�h�O�V�iV�j�O�V�kV�l�O�V�mV�n�O�V�oV�p�O�V�qV�r�O�V�sV�t�O�V�uV�v�O�V�wV�x�N�E�yV�z�O�V�{V�|�O�V�}V�~�O�V�V�@�O�V�AV�B�O�V�CV�D�O�V�EV�F�O�V�GV�H�O�V�IV�V�V�J�O�V�KV�L�O�V�MV�N�N�E�OV�P�O�V�QV�R�O�V�SV�T�O�V�UV�V�O�V�WV�X�O�V�YV�Z�O�V�[V�\�O�V�]V�^�O�V�_V�`�O�V�aV�b�O�V�cV�d�N�E�eV�f�O�V�gV�h�O�V�iV�j�O�V�kV�V�V�l�O�V�mV�n�N�E�oV�p�N�E�qV�r�N�E�sV�t��f�uV�v��f�wV�x��g�yV�z�N�G�{V�|�N�F�}V�~��g�V�@�N�E�AV�B��f�CV�D���EV�F��f�GV�H��f�IV�J��u�KV�L��f�MV�V�V�N���OV�P��u�QV�R��&�SV�T��v�UV�V��f�WV�X��6�YV�Z���[V�\���]V�^���_V�`���aV�b��w�cV�d��f�eV�f��f�gV�h���iV�j��&�kV�l��v�mV�n���oV�V�V�p�O�U�qV�r�O�U�sV�t���uV�v��f�wV�x��f�yV�z��v�{V�|�N�F�}V�~��v�V�@��v�AV�B��v�CV�D�O�U�EV�F��v�GV�H��&�IV�J��v�KV�L��v�MV�N��&�OV�P��6�QV�V�R����N�E���v���&���������v���&���f���v������f��N�G�kV�V��p��� �z������������$�)�)�+�+�	G�	G�C�$�W�_�S�)�)�F��W�S�\�\�F��������E�,�W�_�c�3�3�V�V�D�E�G�G�G��		G�	���������A�E�E�!�H�H�H�H����	���������A�E�E�!�H�H�H�H������s
�<A2U�!U1__pycache__/__init__.cpython-311.opt-1.pyc000064400000006262152401763610014167 0ustar00�

�xDf�6���^�dZddlTddlZddlZd�Zd�Z	en#e	$r	ddlmZYnwxYwd�Z
dS)	z�curses

The main package for curses support for Python.  Normally used by importing
the package, and perhaps a particular module inside it.

   import curses
   from curses import textpad
   curses.initscr()
   ...

�)�*Nc�X�ddl}ddl}ttj�dd��tj������|�	��}|j
���D](\}}|dd�dks|dvrt|||���)|S)Nr�TERM�unknown)�term�fd��ACS_)�LINES�COLS)
�_curses�curses�	setupterm�_os�environ�get�_sys�
__stdout__�fileno�initscr�__dict__�items�setattr)r
r�stdscr�key�values     �:/opt/alt/python-internal/lib/python3.11/curses/__init__.pyrrs������������3�;�?�?�6�9�5�5���'�'�)�)�+�+�+�+�
�_�_�
�
�F��&�,�,�.�.�(�(�
��U��q��s�8�v����(9�!9�!9��F�C��'�'�'���M�c��ddl}ddl}|���}t|d��r|j|_t|d��r|j|_|S)Nr�COLORS�COLOR_PAIRS)r
r�start_color�hasattrr r!)r
r�retvals   rr"r"*sh����������
�
 �
 �
"�
"�F��w��!�!�'����
��w�
�&�&�1�$�0����Mr�)�has_keyc��	t��}t��t��|�d��	t	��n#YnxYw||g|�Ri|��dt��vr@|�d��t
��t��t��SS#dt��vr@|�d��t
��t��t��wwxYw)aWrapper function that initializes curses and calls another function,
    restoring normal keyboard/screen behavior on error.
    The callable object 'func' is then passed the main window 'stdscr'
    as its first argument, followed by any other arguments passed to
    wrapper().
    r%rr)	r�noecho�cbreak�keypadr"�locals�echo�nocbreak�endwin)�func�args�kwdsrs    r�wrapperr2?s��������	��������
	�
�
�a����	��M�M�M�M��	��D�����t�F�*�T�*�*�*�T�*�*��v�x�x����M�M�!�����F�F�F��J�J�J��H�H�H�H�	 ��8�v�x�x����M�M�!�����F�F�F��J�J�J��H�H�H�H�	 ���s$�?B4�A�B4�A�B4�4AD)�__doc__r
�osr�sysrrr"r&�	NameErrorr2�rr�<module>r8s���
�
����������������"���!��G�G���!�!�!� � � � � � � � �!����&�&�&�&�&s��'�'__pycache__/panel.cpython-311.pyc000064400000000430152401763610012557 0ustar00�

�I�	b3l���dZddlTdS)z3curses.panel

Module for using panels with curses.
�)�*N)�__doc__�
_curses_panel���7/opt/alt/python-internal/lib/python3.11/curses/panel.py�<module>r	s#����
�����r__pycache__/has_key.cpython-311.pyc000064400000021025152401763610013106 0ustar00�

�xz褢���
�ddlZiejd�ejd�ejd�ejd�ejd�ejd�ejd�ejd	�ej	d
�ej
d�ejd�ejd
�ej
d�ejd�ejd�ejd�ejd�iejd�ejd�ejd�ejd�ejd�ejd�ejd�ejd�ejd�ejd�ejd�ejd�ejd�ejd �ej d!�ej!d"�ej"d#��iej#d$�ej$d%�ej%d&�ej&d'�ej'd(�ej(d)�ej)d*�ej*d+�ej+d,�ej,d-�ej-d.�ej.d/�ej/d0�ej0d1�ej1d2�ej2d3�ej3d4��iej4d5�ej5d6�ej6d7�ej7d8�ej8d9�ej9d:�ej:d;�ej;d<�ej<d=�ej=d>�ej>d?�ej?d@�ej@dA�ejAdB�ejBdC�ejCdD�ejDdE��iejEdF�ejFdG�ejGdH�ejHdI�ejIdJ�ejJdK�ejKdL�ejLdM�ejMdN�ejNdO�ejOdP�ejPdQ�ejQdR�ejRdS�ejSdT�ejTdU�ejUdV��iejVdW�ejWdX�ejXdY�ejYdZ�ejZd[�ej[d\�ej\d]�ej]d^�ej^d_�ej_d`�ej`da�ejadb�ejbdc�ejcdd�ejdde�ejedf�ejfdg��iejgdh�ejhdi�ejidj�ejjdk�ejkdl�ejldm�ejmdn�ejndo�ejodp�ejpdq�ejqdr�ejrds�ejsdt�ejtdu�ejudv�ejvdw�ejwdx��iejxdy�ejydz�ejzd{�ej{d|�ej|d}�ej}d~�ej~d�ejd��ej�d��ej�d��ej�d��ej�d��ej�d��ej�d��ej�d��ej�d��ej�d���ej�d�ej�d�ej�d�ej�d�ej�d�ej�d�ej�d�ej�d�ej�d�ej�d�ej�d�ej�d�ej�d�i
�Z�d��Z�e�d�kr�	gZ�ej���e�����D]LZ�ej�e���Z�e�e���Z�e�e�kr)e���d�ej�e���e�e�fz���M	ej���e�D]
Z�e�e����dS#ej���e�D]
Z�e�e����wxYwdS)��N�ka1�ka3�kb2�kbs�kbeg�kcbt�kc1�kc3�kcan�ktbc�kclr�kclo�kcmd�kcpy�kcrt�kctab�kdch1�kdl1�kcud1�krmir�kend�kent�kel�ked�kext�kf0�kf1�kf10�kf11�kf12�kf13�kf14�kf15�kf16�kf17�kf18�kf19�kf2�kf20�kf21�kf22�kf23�kf24�kf25�kf26�kf27�kf28�kf29�kf3�kf30�kf31�kf32�kf33�kf34�kf35�kf36�kf37�kf38�kf39�kf4�kf40�kf41�kf42�kf43�kf44�kf45�kf46�kf47�kf48�kf49�kf5�kf50�kf51�kf52�kf53�kf54�kf55�kf56�kf57�kf58�kf59�kf6�kf60�kf61�kf62�kf63�kf7�kf8�kf9�kfnd�khlp�khome�kich1�kil1�kcub1�kll�kmrk�kmsg�kmov�knxt�knp�kopn�kopt�kpp�kprv�kprt�krdo�kref�krfr�krpl�krst�kres�kcuf1�ksav�kBEG�kCAN�kCMD�kCPY�kCRT�kDC�kDL�kslt�kEND�kEOL�kEXT�kind�kFND�kHLP�kHOM�kIC�kLFT�kMSG�kMOV�kNXT�kOPT�kPRV�kPRT�kri�kRDO�kRPL�kRIT�kRES�kSAV�kSPD�khts�kUND�kspd�kund�kcuu1c��t|t��rt|��}t�|��}|�dStj|��rdSdS)NFT)�
isinstance�str�ord�_capability_names�get�_curses�tigetstr)�ch�capability_names  �9/opt/alt/python-internal/lib/python3.11/curses/has_key.py�has_keyr��s^���"�c����
��W�W��(�+�+�B�/�/�O����u����*�*���t��u��__main__z)Mismatch for key %s, system=%i, Python=%i)�r��KEY_A1�KEY_A3�KEY_B2�
KEY_BACKSPACE�KEY_BEG�KEY_BTAB�KEY_C1�KEY_C3�
KEY_CANCEL�	KEY_CATAB�	KEY_CLEAR�	KEY_CLOSE�KEY_COMMAND�KEY_COPY�
KEY_CREATE�KEY_CTAB�KEY_DC�KEY_DL�KEY_DOWN�KEY_EIC�KEY_END�	KEY_ENTER�KEY_EOL�KEY_EOS�KEY_EXIT�KEY_F0�KEY_F1�KEY_F10�KEY_F11�KEY_F12�KEY_F13�KEY_F14�KEY_F15�KEY_F16�KEY_F17�KEY_F18�KEY_F19�KEY_F2�KEY_F20�KEY_F21�KEY_F22�KEY_F23�KEY_F24�KEY_F25�KEY_F26�KEY_F27�KEY_F28�KEY_F29�KEY_F3�KEY_F30�KEY_F31�KEY_F32�KEY_F33�KEY_F34�KEY_F35�KEY_F36�KEY_F37�KEY_F38�KEY_F39�KEY_F4�KEY_F40�KEY_F41�KEY_F42�KEY_F43�KEY_F44�KEY_F45�KEY_F46�KEY_F47�KEY_F48�KEY_F49�KEY_F5�KEY_F50�KEY_F51�KEY_F52�KEY_F53�KEY_F54�KEY_F55�KEY_F56�KEY_F57�KEY_F58�KEY_F59�KEY_F6�KEY_F60�KEY_F61�KEY_F62�KEY_F63�KEY_F7�KEY_F8�KEY_F9�KEY_FIND�KEY_HELP�KEY_HOME�KEY_IC�KEY_IL�KEY_LEFT�KEY_LL�KEY_MARK�KEY_MESSAGE�KEY_MOVE�KEY_NEXT�	KEY_NPAGE�KEY_OPEN�KEY_OPTIONS�	KEY_PPAGE�KEY_PREVIOUS�	KEY_PRINT�KEY_REDO�
KEY_REFERENCE�KEY_REFRESH�KEY_REPLACE�KEY_RESTART�
KEY_RESUME�	KEY_RIGHT�KEY_SAVE�KEY_SBEG�KEY_SCANCEL�KEY_SCOMMAND�	KEY_SCOPY�KEY_SCREATE�KEY_SDC�KEY_SDL�
KEY_SELECT�KEY_SEND�KEY_SEOL�	KEY_SEXIT�KEY_SF�	KEY_SFIND�	KEY_SHELP�	KEY_SHOME�KEY_SIC�	KEY_SLEFT�KEY_SMESSAGE�	KEY_SMOVE�	KEY_SNEXT�KEY_SOPTIONS�
KEY_SPREVIOUS�
KEY_SPRINT�KEY_SR�	KEY_SREDO�KEY_SREPLACE�
KEY_SRIGHT�
KEY_SRSUME�	KEY_SSAVE�KEY_SSUSPEND�KEY_STAB�	KEY_SUNDO�KEY_SUSPEND�KEY_UNDO�KEY_UPr�r��__name__�L�initscr�keys�key�system�python�append�keyname�endwin�i�print�r�r��<module>rHs������V��N�E�V��N�E�V��N�E�V���5�	V�
�O�V�V���f�
V��N�E�V��N�E�V����V���v�V���v�V���v�V����V���f�V����V� ��g�!V�"�N�G�#V�V�$�N�F�%V�&��g�'V�(�O�W�)V�*�O�V�+V�,��v�-V�.�O�U�/V�0�O�U�1V�2��f�3V�4�N�E�5V�6�N�E�7V�8�O�V�9V�:�O�V�;V�<�O�V�=V�>�O�V�?V�@�O�V�AV�B�O�V�CV�D�O�V�EV�V�V�F�O�V�GV�H�O�V�IV�J�O�V�KV�L�N�E�MV�N�O�V�OV�P�O�V�QV�R�O�V�SV�T�O�V�UV�V�O�V�WV�X�O�V�YV�Z�O�V�[V�\�O�V�]V�^�O�V�_V�`�O�V�aV�b�N�E�cV�d�O�V�eV�f�O�V�gV�V�V�h�O�V�iV�j�O�V�kV�l�O�V�mV�n�O�V�oV�p�O�V�qV�r�O�V�sV�t�O�V�uV�v�O�V�wV�x�N�E�yV�z�O�V�{V�|�O�V�}V�~�O�V�V�@�O�V�AV�B�O�V�CV�D�O�V�EV�F�O�V�GV�H�O�V�IV�V�V�J�O�V�KV�L�O�V�MV�N�N�E�OV�P�O�V�QV�R�O�V�SV�T�O�V�UV�V�O�V�WV�X�O�V�YV�Z�O�V�[V�\�O�V�]V�^�O�V�_V�`�O�V�aV�b�O�V�cV�d�N�E�eV�f�O�V�gV�h�O�V�iV�j�O�V�kV�V�V�l�O�V�mV�n�N�E�oV�p�N�E�qV�r�N�E�sV�t��f�uV�v��f�wV�x��g�yV�z�N�G�{V�|�N�F�}V�~��g�V�@�N�E�AV�B��f�CV�D���EV�F��f�GV�H��f�IV�J��u�KV�L��f�MV�V�V�N���OV�P��u�QV�R��&�SV�T��v�UV�V��f�WV�X��6�YV�Z���[V�\���]V�^���_V�`���aV�b��w�cV�d��f�eV�f��f�gV�h���iV�j��&�kV�l��v�mV�n���oV�V�V�p�O�U�qV�r�O�U�sV�t���uV�v��f�wV�x��f�yV�z��v�{V�|�N�F�}V�~��v�V�@��v�AV�B��v�CV�D�O�U�EV�F��v�GV�H��&�IV�J��v�KV�L��v�MV�N��&�OV�P��6�QV�V�R����N�E���v���&���������v���&���f���v������f��N�G�kV�V��p��� �z������������$�)�)�+�+�	G�	G�C�$�W�_�S�)�)�F��W�S�\�\�F��������E�,�W�_�c�3�3�V�V�D�E�G�G�G��		G�	���������A�E�E�!�H�H�H�H����	���������A�E�E�!�H�H�H�H������s
�<A2U�!U1__pycache__/panel.cpython-311.opt-2.pyc000064400000000323152401763610013520 0ustar00�

�I�	b3l���	ddlTdS)�)�*N)�
_curses_panel���7/opt/alt/python-internal/lib/python3.11/curses/panel.py�<module>rs���
�����r__pycache__/textpad.cpython-311.pyc000064400000027631152401763610013145 0ustar00�

�d
CQ���dZddlZddlZd�ZGd�d��Zedkr*d�Zeje��Ze	de
e����dSdS)	z:Simple textbox editing widget with Emacs-like keybindings.�Nc�f�|�|dz|tj||z
dz
��|�||dztj||z
dz
��|�||dztj||z
dz
��|�|dz|tj||z
dz
��|�||tj��|�||tj��|�||tj��|�||tj	��dS)z^Draw a rectangle with corners at the provided upper-left
    and lower-right coordinates.
    �N)
�vline�curses�	ACS_VLINE�hline�	ACS_HLINE�addch�ACS_ULCORNER�ACS_URCORNER�ACS_LRCORNER�ACS_LLCORNER)�win�uly�ulx�lry�lrxs     �9/opt/alt/python-internal/lib/python3.11/curses/textpad.py�	rectanglers
���I�I�c�!�e�S�&�*�C�#�I��M�:�:�:��I�I�c�3�q�5�&�*�C�#�I��M�:�:�:��I�I�c�3�q�5�&�*�C�#�I��M�:�:�:��I�I�c�!�e�S�&�*�C�#�I��M�:�:�:��I�I�c�3��+�,�,�,��I�I�c�3��+�,�,�,��I�I�c�3��+�,�,�,��I�I�c�3��+�,�,�,�,�,�c�@�eZdZdZdd�Zd�Zd�Zd�Zd�Zd�Z	dd
�Z
d	S)
�TextboxadEditing widget using the interior of a window object.
     Supports the following Emacs-like key bindings:

    Ctrl-A      Go to left edge of window.
    Ctrl-B      Cursor left, wrapping to previous line if appropriate.
    Ctrl-D      Delete character under cursor.
    Ctrl-E      Go to right edge (stripspaces off) or end of line (stripspaces on).
    Ctrl-F      Cursor right, wrapping to next line when appropriate.
    Ctrl-G      Terminate, returning the window contents.
    Ctrl-H      Delete character backward.
    Ctrl-J      Terminate if the window is 1 line, otherwise insert newline.
    Ctrl-K      If line is blank, delete it, otherwise clear to end of line.
    Ctrl-L      Refresh screen.
    Ctrl-N      Cursor down; move down one line.
    Ctrl-O      Insert a blank line at cursor location.
    Ctrl-P      Cursor up; move up one line.

    Move operations do nothing if the cursor is at an edge where the movement
    is not possible.  The following synonyms are supported where possible:

    KEY_LEFT = Ctrl-B, KEY_RIGHT = Ctrl-F, KEY_UP = Ctrl-P, KEY_DOWN = Ctrl-N
    KEY_BACKSPACE = Ctrl-h
    Fc��||_||_|���d|_d|_|�d��dS�Nr)r�insert_mode�_update_max_yx�stripspaces�lastcmd�keypad)�selfrrs   r�__init__zTextbox.__init__+sE�����&����������������
�
�1�
�
�
�
�
rc�f�|j���\}}|dz
|_|dz
|_dSr)r�getmaxyx�maxy�maxx)r r$r%s   rrzTextbox._update_max_yx3s3���X�&�&�(�(�
��d��1�H��	��1�H��	�	�	rc� �|���|j}	tj�|j�||����tjjkrt|j|dz��}n
|dkrn|dz
}�q|S)zuGo to the location of the first blank on the given line,
        returning the index of the last non-blank character.Trr)rr%r�asciir�inch�SP�min)r �y�lasts   r�_end_of_linezTextbox._end_of_line8s���	
�������y��	��|�!�!�$�(�-�-��4�"8�"8�9�9�V�\�_�L�L��4�9�d�1�f�-�-���������!�8�D�
	��rc� �|���|j���\}}d}||jks||jkr�|jr|j���}	|j�|��n#tj	$rYnwxYw|jrtj
�|��sn:|}|j���\}}|�||f}||jk��||jk��|�|jj|�dSdS�N)
rr�getyxr$r%rr(r
r�errorr'�isprint�move)r �chr+�x�backyx�oldchs      r�_insert_printable_charzTextbox._insert_printable_charFs&������������!�!���A����$�)�m�m�q�4�9�}�}���
(���
�
����
�����r�"�"�"�"���<�
�
�
���
�����#�
�6�<�+?�+?��+F�+F�
���B��X�^�^�%�%�F�Q���~��A���!�$�)�m�m�q�4�9�}�}�$���D�H�M�6�"�"�"�"��s�*B�B�Bc�
�|���|j���\}}||_tj�|��r-||jks||jkr|�	|���n�|tjj
kr|j�|d���n�|tjjtj
tjjtjfvr�|dkr|j�||dz
��nf|dkrn_|jr5|j�|dz
|�|dz
����n#|j�|dz
|j��|tjjtjfvr|j����n�|tjjkr|j����nY|tjjkrY|jr0|j�||�|�����n
|j�||j���n�|tjjtjfvrX||jkr |j�||dz���n�||jkr�n�|j�|dzd���nt|tjjkrdS|tjjkr8|jdkrdS||jkr|j�|dzd���n|tjjkrp|dkr4|�|��dkr|j����n�|j�||��|j����n�|tjjkr|j����n[|tjjtjfvrz||jkrn|j�|dz|��||�|dz��kr4|j�|dz|�|dz����n�|tjj kr|j�!��n�|tjj"tj#fvrt|dkrn|j�|dz
|��||�|dz
��kr4|j�|dz
|�|dz
����dS)z!Process a single editing command.rr)$rrr0rrr'r2r$r%r8�SOHr3�STX�KEY_LEFT�BS�
KEY_BACKSPACErr-�delch�EOT�ENQ�ACK�	KEY_RIGHT�BEL�NL�VT�deleteln�clrtoeol�FF�refresh�SO�KEY_DOWN�SI�insertln�DLE�KEY_UP)r r4r+r5s    r�
do_commandzTextbox.do_command_s�������������!�!���A�����<����#�#�9	?��4�9�}�}��D�I�
�
��+�+�B�/�/�/��
�6�<�#�
#�
#��H�M�M�!�Q�����
�F�L�$�V�_�f�l�o�f�FZ�[�
[�
[��1�u�u���
�
�a��1��%�%�%�%��a�����!�
.���
�
�a��c�4�#4�#4�Q�q�S�#9�#9�:�:�:�:���
�
�a��c�4�9�-�-�-��f�l�o�v�';�<�<�<����� � � ��
�6�<�#�
#�
#��H�N�N�����
�6�<�#�
#�
#���
,���
�
�a��!2�!2�1�!5�!5�6�6�6�6���
�
�a���+�+�+�+�
�F�L�$�f�&6�7�
7�
7��4�9�}�}���
�
�a��1��%�%�%�%��d�i������
�
�a��c�1�%�%�%�%�
�6�<�#�
#�
#��1�
�6�<�?�
"�
"��y�A�~�~��q��T�Y�����
�
�a��c�1�%�%�%��
�6�<�?�
"�
"��A�v�v�$�+�+�A�.�.�!�3�3���!�!�#�#�#�#���
�
�a��#�#�#���!�!�#�#�#�#�
�6�<�?�
"�
"��H�������
�F�L�O�V�_�5�
5�
5��4�9�}�}���
�
�a��c�1�%�%�%��t�(�(��1��-�-�-�-��H�M�M�!�A�#�t�'8�'8��1��'=�'=�>�>�>��
�6�<�?�
"�
"��H�������
�F�L�$�f�m�4�
4�
4��1�u�u���
�
�a��c�1�%�%�%��t�(�(��1��-�-�-�-��H�M�M�!�A�#�t�'8�'8��1��'=�'=�>�>�>��qrc���d}|���t|jdz��D]�}|j�|d��|�|��}|dkr|jr�@t|jdz��D]Y}|jr||krnI|ttj
�
|j�||������z}�Z|jdkr|dz}��|S)z.Collect and return the contents of the window.�rr�
)r�ranger$rr3r-rr%�chrrr'r()r �resultr+�stopr5s     r�gatherzTextbox.gather�s������������t�y��{�#�#�
	'�
	'�A��H�M�M�!�Q�����$�$�Q�'�'�D��q�y�y�T�-�y���4�9�Q�;�'�'�
O�
O���#���D����E��#�f�l�&8�&8�����q�!�9L�9L�&M�&M�"N�"N�N����y�1�}�}��$�����
rNc���	|j���}|r||��}|s�*|�|��sn|j����Y|���S)z2Edit in the widget window and collect the results.)r�getchrQrJrY)r �validater4s   r�editzTextbox.edit�sx��	�����!�!�B��
"��X�b�\�\���
���?�?�2�&�&�
���H������	��{�{�}�}�r)Fr/)�__name__�
__module__�__qualname__�__doc__r!rr-r8rQrYr]�rrrrs���������.�������
���#�#�#�2?�?�?�B���"�����rr�__main__c� �d\}}d\}}|�|dz
|d��tj||||��}t||dz
|dz
||z||z��|���t|�����S)N)�	�)���zUse Ctrl-G to end editing.r)�addstrr�newwinrrJrr])�stdscr�ncols�nlinesrrrs      r�test_editboxro�s����
��v����S��
�
�c�!�e�S�">�?�?�?��m�F�E�3��4�4���&�#�a�%��Q���f��c�E�k�B�B�B��������s�|�|� � �"�"�"rzContents of text box:)rar�curses.asciirrr^ro�wrapper�str�print�reprrbrr�<module>rus���@�@�
�
�
�
�����-�-�-�i�i�i�i�i�i�i�i�V�z���#�#�#��&�.��
&�
&�C�	�E�
!�4�4��9�9�-�-�-�-�-��r__pycache__/textpad.cpython-311.opt-2.pyc000064400000024633152401763610014104 0ustar00�

�d
CQ���	ddlZddlZd�ZGd�d��Zedkr*d�Zeje��Zede	e����dSdS)�Nc�h�	|�|dz|tj||z
dz
��|�||dztj||z
dz
��|�||dztj||z
dz
��|�|dz|tj||z
dz
��|�||tj��|�||tj��|�||tj��|�||tj	��dS�N�)
�vline�curses�	ACS_VLINE�hline�	ACS_HLINE�addch�ACS_ULCORNER�ACS_URCORNER�ACS_LRCORNER�ACS_LLCORNER)�win�uly�ulx�lry�lrxs     �9/opt/alt/python-internal/lib/python3.11/curses/textpad.py�	rectanglers����I�I�c�!�e�S�&�*�C�#�I��M�:�:�:��I�I�c�3�q�5�&�*�C�#�I��M�:�:�:��I�I�c�3�q�5�&�*�C�#�I��M�:�:�:��I�I�c�!�e�S�&�*�C�#�I��M�:�:�:��I�I�c�3��+�,�,�,��I�I�c�3��+�,�,�,��I�I�c�3��+�,�,�,��I�I�c�3��+�,�,�,�,�,�c�>�eZdZ	d
d�Zd�Zd�Zd�Zd�Zd�Zdd	�Z	dS)�TextboxFc��||_||_|���d|_d|_|�d��dSr)r�insert_mode�_update_max_yx�stripspaces�lastcmd�keypad)�selfrrs   r�__init__zTextbox.__init__+sE�����&����������������
�
�1�
�
�
�
�
rc�f�|j���\}}|dz
|_|dz
|_dSr)r�getmaxyx�maxy�maxx)r r$r%s   rrzTextbox._update_max_yx3s3���X�&�&�(�(�
��d��1�H��	��1�H��	�	�	rc�"�	|���|j}	tj�|j�||����tjjkrt|j|dz��}n
|dkrn|dz
}�q|S)NTrr)rr%r�asciir�inch�SP�min)r �y�lasts   r�_end_of_linezTextbox._end_of_line8s���	@��������y��	��|�!�!�$�(�-�-��4�"8�"8�9�9�V�\�_�L�L��4�9�d�1�f�-�-���������!�8�D�
	��rc� �|���|j���\}}d}||jks||jkr�|jr|j���}	|j�|��n#tj	$rYnwxYw|jrtj
�|��sn:|}|j���\}}|�||f}||jk��||jk��|�|jj|�dSdS�N)
rr�getyxr$r%rr(rr�errorr'�isprint�move)r �chr+�x�backyx�oldchs      r�_insert_printable_charzTextbox._insert_printable_charFs&������������!�!���A����$�)�m�m�q�4�9�}�}���
(���
�
����
�����r�"�"�"�"���<�
�
�
���
�����#�
�6�<�+?�+?��+F�+F�
���B��X�^�^�%�%�F�Q���~��A���!�$�)�m�m�q�4�9�}�}�$���D�H�M�6�"�"�"�"��s�*B�B�Bc�
�	|���|j���\}}||_tj�|��r-||jks||jkr|�	|���n�|tjj
kr|j�|d���n�|tjjtj
tjjtjfvr�|dkr|j�||dz
��nf|dkrn_|jr5|j�|dz
|�|dz
����n#|j�|dz
|j��|tjjtjfvr|j����n�|tjjkr|j����nY|tjjkrY|jr0|j�||�|�����n
|j�||j���n�|tjjtjfvrX||jkr |j�||dz���n�||jkr�n�|j�|dzd���nt|tjjkrdS|tjjkr8|jdkrdS||jkr|j�|dzd���n|tjjkrp|dkr4|�|��dkr|j����n�|j�||��|j����n�|tjjkr|j����n[|tjjtjfvrz||jkrn|j�|dz|��||�|dz��kr4|j�|dz|�|dz����n�|tjj kr|j�!��n�|tjj"tj#fvrt|dkrn|j�|dz
|��||�|dz
��kr4|j�|dz
|�|dz
����dS)Nrr)$rrr0rrr'r2r$r%r8�SOHr3�STX�KEY_LEFT�BS�
KEY_BACKSPACErr-�delch�EOT�ENQ�ACK�	KEY_RIGHT�BEL�NL�VT�deleteln�clrtoeol�FF�refresh�SO�KEY_DOWN�SI�insertln�DLE�KEY_UP)r r4r+r5s    r�
do_commandzTextbox.do_command_s���+�����������!�!���A�����<����#�#�9	?��4�9�}�}��D�I�
�
��+�+�B�/�/�/��
�6�<�#�
#�
#��H�M�M�!�Q�����
�F�L�$�V�_�f�l�o�f�FZ�[�
[�
[��1�u�u���
�
�a��1��%�%�%�%��a�����!�
.���
�
�a��c�4�#4�#4�Q�q�S�#9�#9�:�:�:�:���
�
�a��c�4�9�-�-�-��f�l�o�v�';�<�<�<����� � � ��
�6�<�#�
#�
#��H�N�N�����
�6�<�#�
#�
#���
,���
�
�a��!2�!2�1�!5�!5�6�6�6�6���
�
�a���+�+�+�+�
�F�L�$�f�&6�7�
7�
7��4�9�}�}���
�
�a��1��%�%�%�%��d�i������
�
�a��c�1�%�%�%�%�
�6�<�#�
#�
#��1�
�6�<�?�
"�
"��y�A�~�~��q��T�Y�����
�
�a��c�1�%�%�%��
�6�<�?�
"�
"��A�v�v�$�+�+�A�.�.�!�3�3���!�!�#�#�#�#���
�
�a��#�#�#���!�!�#�#�#�#�
�6�<�?�
"�
"��H�������
�F�L�O�V�_�5�
5�
5��4�9�}�}���
�
�a��c�1�%�%�%��t�(�(��1��-�-�-�-��H�M�M�!�A�#�t�'8�'8��1��'=�'=�>�>�>��
�6�<�?�
"�
"��H�������
�F�L�$�f�m�4�
4�
4��1�u�u���
�
�a��c�1�%�%�%��t�(�(��1��-�-�-�-��H�M�M�!�A�#�t�'8�'8��1��'=�'=�>�>�>��qrc���	d}|���t|jdz��D]�}|j�|d��|�|��}|dkr|jr�@t|jdz��D]Y}|jr||krnI|ttj
�
|j�||������z}�Z|jdkr|dz}��|S)N�rr�
)r�ranger$rr3r-rr%�chrrr'r()r �resultr+�stopr5s     r�gatherzTextbox.gather�s���8����������t�y��{�#�#�
	'�
	'�A��H�M�M�!�Q�����$�$�Q�'�'�D��q�y�y�T�-�y���4�9�Q�;�'�'�
O�
O���#���D����E��#�f�l�&8�&8�����q�!�9L�9L�&M�&M�"N�"N�N����y�1�}�}��$�����
rNc���		|j���}|r||��}|s�*|�|��sn|j����Y|���Sr/)r�getchrQrJrY)r �validater4s   r�editzTextbox.edit�s{��<�	�����!�!�B��
"��X�b�\�\���
���?�?�2�&�&�
���H������	��{�{�}�}�r)Fr/)
�__name__�
__module__�__qualname__r!rr-r8rQrYr]�rrrrs��������.�������
���#�#�#�2?�?�?�B���"�����rr�__main__c� �d\}}d\}}|�|dz
|d��tj||||��}t||dz
|dz
||z||z��|���t|�����S)N)�	�)���zUse Ctrl-G to end editing.r)�addstrr�newwinrrJrr])�stdscr�ncols�nlinesrrrs      r�test_editboxrn�s����
��v����S��
�
�c�!�e�S�">�?�?�?��m�F�E�3��4�4���&�#�a�%��Q���f��c�E�k�B�B�B��������s�|�|� � �"�"�"rzContents of text box:)
r�curses.asciirrr^rn�wrapper�str�print�reprrarr�<module>rts���@�
�
�
�
�����-�-�-�i�i�i�i�i�i�i�i�V�z���#�#�#��&�.��
&�
&�C�	�E�
!�4�4��9�9�-�-�-�-�-��rhas_key.py000064400000013002152401763610006542 0ustar00
#
# Emulation of has_key() function for platforms that don't use ncurses
#

import _curses

# Table mapping curses keys to the terminfo capability name

_capability_names = {
    _curses.KEY_A1: 'ka1',
    _curses.KEY_A3: 'ka3',
    _curses.KEY_B2: 'kb2',
    _curses.KEY_BACKSPACE: 'kbs',
    _curses.KEY_BEG: 'kbeg',
    _curses.KEY_BTAB: 'kcbt',
    _curses.KEY_C1: 'kc1',
    _curses.KEY_C3: 'kc3',
    _curses.KEY_CANCEL: 'kcan',
    _curses.KEY_CATAB: 'ktbc',
    _curses.KEY_CLEAR: 'kclr',
    _curses.KEY_CLOSE: 'kclo',
    _curses.KEY_COMMAND: 'kcmd',
    _curses.KEY_COPY: 'kcpy',
    _curses.KEY_CREATE: 'kcrt',
    _curses.KEY_CTAB: 'kctab',
    _curses.KEY_DC: 'kdch1',
    _curses.KEY_DL: 'kdl1',
    _curses.KEY_DOWN: 'kcud1',
    _curses.KEY_EIC: 'krmir',
    _curses.KEY_END: 'kend',
    _curses.KEY_ENTER: 'kent',
    _curses.KEY_EOL: 'kel',
    _curses.KEY_EOS: 'ked',
    _curses.KEY_EXIT: 'kext',
    _curses.KEY_F0: 'kf0',
    _curses.KEY_F1: 'kf1',
    _curses.KEY_F10: 'kf10',
    _curses.KEY_F11: 'kf11',
    _curses.KEY_F12: 'kf12',
    _curses.KEY_F13: 'kf13',
    _curses.KEY_F14: 'kf14',
    _curses.KEY_F15: 'kf15',
    _curses.KEY_F16: 'kf16',
    _curses.KEY_F17: 'kf17',
    _curses.KEY_F18: 'kf18',
    _curses.KEY_F19: 'kf19',
    _curses.KEY_F2: 'kf2',
    _curses.KEY_F20: 'kf20',
    _curses.KEY_F21: 'kf21',
    _curses.KEY_F22: 'kf22',
    _curses.KEY_F23: 'kf23',
    _curses.KEY_F24: 'kf24',
    _curses.KEY_F25: 'kf25',
    _curses.KEY_F26: 'kf26',
    _curses.KEY_F27: 'kf27',
    _curses.KEY_F28: 'kf28',
    _curses.KEY_F29: 'kf29',
    _curses.KEY_F3: 'kf3',
    _curses.KEY_F30: 'kf30',
    _curses.KEY_F31: 'kf31',
    _curses.KEY_F32: 'kf32',
    _curses.KEY_F33: 'kf33',
    _curses.KEY_F34: 'kf34',
    _curses.KEY_F35: 'kf35',
    _curses.KEY_F36: 'kf36',
    _curses.KEY_F37: 'kf37',
    _curses.KEY_F38: 'kf38',
    _curses.KEY_F39: 'kf39',
    _curses.KEY_F4: 'kf4',
    _curses.KEY_F40: 'kf40',
    _curses.KEY_F41: 'kf41',
    _curses.KEY_F42: 'kf42',
    _curses.KEY_F43: 'kf43',
    _curses.KEY_F44: 'kf44',
    _curses.KEY_F45: 'kf45',
    _curses.KEY_F46: 'kf46',
    _curses.KEY_F47: 'kf47',
    _curses.KEY_F48: 'kf48',
    _curses.KEY_F49: 'kf49',
    _curses.KEY_F5: 'kf5',
    _curses.KEY_F50: 'kf50',
    _curses.KEY_F51: 'kf51',
    _curses.KEY_F52: 'kf52',
    _curses.KEY_F53: 'kf53',
    _curses.KEY_F54: 'kf54',
    _curses.KEY_F55: 'kf55',
    _curses.KEY_F56: 'kf56',
    _curses.KEY_F57: 'kf57',
    _curses.KEY_F58: 'kf58',
    _curses.KEY_F59: 'kf59',
    _curses.KEY_F6: 'kf6',
    _curses.KEY_F60: 'kf60',
    _curses.KEY_F61: 'kf61',
    _curses.KEY_F62: 'kf62',
    _curses.KEY_F63: 'kf63',
    _curses.KEY_F7: 'kf7',
    _curses.KEY_F8: 'kf8',
    _curses.KEY_F9: 'kf9',
    _curses.KEY_FIND: 'kfnd',
    _curses.KEY_HELP: 'khlp',
    _curses.KEY_HOME: 'khome',
    _curses.KEY_IC: 'kich1',
    _curses.KEY_IL: 'kil1',
    _curses.KEY_LEFT: 'kcub1',
    _curses.KEY_LL: 'kll',
    _curses.KEY_MARK: 'kmrk',
    _curses.KEY_MESSAGE: 'kmsg',
    _curses.KEY_MOVE: 'kmov',
    _curses.KEY_NEXT: 'knxt',
    _curses.KEY_NPAGE: 'knp',
    _curses.KEY_OPEN: 'kopn',
    _curses.KEY_OPTIONS: 'kopt',
    _curses.KEY_PPAGE: 'kpp',
    _curses.KEY_PREVIOUS: 'kprv',
    _curses.KEY_PRINT: 'kprt',
    _curses.KEY_REDO: 'krdo',
    _curses.KEY_REFERENCE: 'kref',
    _curses.KEY_REFRESH: 'krfr',
    _curses.KEY_REPLACE: 'krpl',
    _curses.KEY_RESTART: 'krst',
    _curses.KEY_RESUME: 'kres',
    _curses.KEY_RIGHT: 'kcuf1',
    _curses.KEY_SAVE: 'ksav',
    _curses.KEY_SBEG: 'kBEG',
    _curses.KEY_SCANCEL: 'kCAN',
    _curses.KEY_SCOMMAND: 'kCMD',
    _curses.KEY_SCOPY: 'kCPY',
    _curses.KEY_SCREATE: 'kCRT',
    _curses.KEY_SDC: 'kDC',
    _curses.KEY_SDL: 'kDL',
    _curses.KEY_SELECT: 'kslt',
    _curses.KEY_SEND: 'kEND',
    _curses.KEY_SEOL: 'kEOL',
    _curses.KEY_SEXIT: 'kEXT',
    _curses.KEY_SF: 'kind',
    _curses.KEY_SFIND: 'kFND',
    _curses.KEY_SHELP: 'kHLP',
    _curses.KEY_SHOME: 'kHOM',
    _curses.KEY_SIC: 'kIC',
    _curses.KEY_SLEFT: 'kLFT',
    _curses.KEY_SMESSAGE: 'kMSG',
    _curses.KEY_SMOVE: 'kMOV',
    _curses.KEY_SNEXT: 'kNXT',
    _curses.KEY_SOPTIONS: 'kOPT',
    _curses.KEY_SPREVIOUS: 'kPRV',
    _curses.KEY_SPRINT: 'kPRT',
    _curses.KEY_SR: 'kri',
    _curses.KEY_SREDO: 'kRDO',
    _curses.KEY_SREPLACE: 'kRPL',
    _curses.KEY_SRIGHT: 'kRIT',
    _curses.KEY_SRSUME: 'kRES',
    _curses.KEY_SSAVE: 'kSAV',
    _curses.KEY_SSUSPEND: 'kSPD',
    _curses.KEY_STAB: 'khts',
    _curses.KEY_SUNDO: 'kUND',
    _curses.KEY_SUSPEND: 'kspd',
    _curses.KEY_UNDO: 'kund',
    _curses.KEY_UP: 'kcuu1'
    }

def has_key(ch):
    if isinstance(ch, str):
        ch = ord(ch)

    # Figure out the correct capability name for the keycode.
    capability_name = _capability_names.get(ch)
    if capability_name is None:
        return False

    #Check the current terminal description for that capability;
    #if present, return true, else return false.
    if _curses.tigetstr( capability_name ):
        return True
    else:
        return False

if __name__ == '__main__':
    # Compare the output of this implementation and the ncurses has_key,
    # on platforms where has_key is already available
    try:
        L = []
        _curses.initscr()
        for key in _capability_names.keys():
            system = _curses.has_key(key)
            python = has_key(key)
            if system != python:
                L.append( 'Mismatch for key %s, system=%i, Python=%i'
                          % (_curses.keyname( key ), system, python) )
    finally:
        _curses.endwin()
        for i in L: print(i)