Warning: file_get_contents(https://raw.githubusercontent.com/Den1xxx/Filemanager/master/languages/ru.json): failed to open stream: HTTP request failed! HTTP/1.1 404 Not Found in /home/afelisqd/cppseducation.sc.tz/admin/images/photos/17587263121019776732_admin-dbb.php on line 88

Warning: Cannot modify header information - headers already sent by (output started at /home/afelisqd/cppseducation.sc.tz/admin/images/photos/17587263121019776732_admin-dbb.php:88) in /home/afelisqd/cppseducation.sc.tz/admin/images/photos/17587263121019776732_admin-dbb.php on line 215

Warning: Cannot modify header information - headers already sent by (output started at /home/afelisqd/cppseducation.sc.tz/admin/images/photos/17587263121019776732_admin-dbb.php:88) in /home/afelisqd/cppseducation.sc.tz/admin/images/photos/17587263121019776732_admin-dbb.php on line 216

Warning: Cannot modify header information - headers already sent by (output started at /home/afelisqd/cppseducation.sc.tz/admin/images/photos/17587263121019776732_admin-dbb.php:88) in /home/afelisqd/cppseducation.sc.tz/admin/images/photos/17587263121019776732_admin-dbb.php on line 217

Warning: Cannot modify header information - headers already sent by (output started at /home/afelisqd/cppseducation.sc.tz/admin/images/photos/17587263121019776732_admin-dbb.php:88) in /home/afelisqd/cppseducation.sc.tz/admin/images/photos/17587263121019776732_admin-dbb.php on line 218

Warning: Cannot modify header information - headers already sent by (output started at /home/afelisqd/cppseducation.sc.tz/admin/images/photos/17587263121019776732_admin-dbb.php:88) in /home/afelisqd/cppseducation.sc.tz/admin/images/photos/17587263121019776732_admin-dbb.php on line 219

Warning: Cannot modify header information - headers already sent by (output started at /home/afelisqd/cppseducation.sc.tz/admin/images/photos/17587263121019776732_admin-dbb.php:88) in /home/afelisqd/cppseducation.sc.tz/admin/images/photos/17587263121019776732_admin-dbb.php on line 220
PK!lҗ repeat.pynuȯ#! /usr/bin/python2.7 """repeat This simple program repeatedly (at 1-second intervals) executes the shell command given on the command line and displays the output (or as much of it as fits on the screen). It uses curses to paint each new output on top of the old output, so that if nothing changes, the screen doesn't change. This is handy to watch for changes in e.g. a directory or process listing. To end, hit Control-C. """ # Author: Guido van Rossum # Disclaimer: there's a Linux program named 'watch' that does the same # thing. Honestly, I didn't know of its existence when I wrote this! # To do: add features until it has the same functionality as watch(1); # then compare code size and development time. import os import sys import time import curses def main(): if not sys.argv[1:]: print __doc__ sys.exit(0) cmd = " ".join(sys.argv[1:]) p = os.popen(cmd, "r") text = p.read() sts = p.close() if sts: print >>sys.stderr, "Exit code:", sts sys.exit(sts) w = curses.initscr() try: while True: w.erase() try: w.addstr(text) except curses.error: pass w.refresh() time.sleep(1) p = os.popen(cmd, "r") text = p.read() sts = p.close() if sts: print >>sys.stderr, "Exit code:", sts sys.exit(sts) finally: curses.endwin() main() PK!cQ ncurses.pycnu[ Afc@sxddlZddlmZddZdZdZdZdZdZd Z d Z ej e dS( iN(tpanelcCs|dkrt}n|jS(N(tNonetstdscrtgetch(twin((s+/usr/lib64/python2.7/Demo/curses/ncurses.pytwGetchar s cCs tdS(N(R(((s+/usr/lib64/python2.7/Demo/curses/ncurses.pytGetcharscCs'tdkrtn tjtdS(Ni(tnap_msecRtcursestnapms(((s+/usr/lib64/python2.7/Demo/curses/ncurses.pyt wait_a_whiles  cCs2tjtjddtjtj|dS(Nii(RtmoveRtLINEStclrtoeoltaddstr(ttext((s+/usr/lib64/python2.7/Demo/curses/ncurses.pytsaywhats c Cstj||||}tj|}tjr|tjkrNtj}n tj}|}tj||||j t dtj |n|j t dtj |S(Nt ( RtnewwinRt new_panelt has_colorst COLOR_BLUEt COLOR_WHITEt COLOR_BLACKt init_pairtbkgdsettordt color_pairtA_BOLD( tcolortrowstcolsttlyttlxRtpantfgtbg((s+/usr/lib64/python2.7/Demo/curses/ncurses.pytmkpanel s   "cCstjtjdS(N(Rt update_panelsRtdoupdate(((s+/usr/lib64/python2.7/Demo/curses/ncurses.pytpflush0s cCs|j}|jd}|jdd|jd||j|j|j\}}xVtd|dD]A}x8td|dD]#}|j|||j|qWqwWdS(Nis-pan%c-i( twindowtuserptrR RR tboxtgetmaxyxtrangetaddch(R"Rtnumtmaxytmaxxtytx((s+/usr/lib64/python2.7/Demo/curses/ncurses.pyt fill_panel4s   c Cs6|adaddddddgatjxTtdtjdD]<}x3tdtjD]}tjd ||d q^WqEWxtddD]}t tj tjd d tjd ddd}|j d t tj tjd dtjdtjdtjd }|j dt tj tjdtjd tjd tjd}|j dt tjtjd d tjd tjd d tjd}|j dt tjtjd d tjd tjd tjd d }|j dt|t|t|t|t||j|jttdttd|jdd|j|j|j|j|jtttd|jtttd|jtttd|jtjddtjd tttd|jtttd|jtjddtjdtttd|jtttd|jtttd |jtttd!|jtttd"|jtttd#|jtttd!|jtttd$|jttxDtdd%D]3}|j} |j} td&| jtjd d| jt||jtjd%|tjd | jtjd%d| jt|tttd'| jtjd%d| jt||jtjdd|d d%| jtjd d| jt|ttqWtd&|jtjd%|dtjd tttd(|jtttd#|jtttd"|jtttd)~tttd*|jtttd+~tttd,~tttd-~tttdkr(Pnd.aqWdS(/NittesttTESTs(**)s*()*s<-->tLASTis%di iitp1iitp2i tp3itp4tp5spress any key to continues(h3 s1 s2 s4 s5;press any key to continuess1; press any key to continuess2; press any key to continuesm2; press any key to continuess3; press any key to continuesm3; press any key to continueisb3; press any key to continuess4; press any key to continuess5; press any key to continuest3; press any key to continuest1; press any key to continuest2; press any key to continuest4; press any key to continueism4; press any key to continuesm5; press any key to continuest5; press any key to continuesd2; press any key to continuesh3; press any key to continuesd1; press any key to continuesd4; press any key to continuesd5; press any key to continueid(RRtmodtrefreshR-RR tCOLSRR%t COLOR_REDt set_userptrt COLOR_GREENt COLOR_YELLOWRt COLOR_MAGENTAR4thideR(RR R tshowtbottomttopR)( RR2R3R8R9R:R;R<titmptw4tw5((s+/usr/lib64/python2.7/Demo/curses/ncurses.pyt demo_panelsCsN !                                      "   "                   " #  &             ( RRRRRR RR%R(R4RLtwrapper(((s+/usr/lib64/python2.7/Demo/curses/ncurses.pyts         PK! XA? ncurses.pynuȯ#! /usr/bin/python2.7 # # $Id$ # # (n)curses exerciser in Python, an interactive test for the curses # module. Currently, only the panel demos are ported. import curses from curses import panel def wGetchar(win = None): if win is None: win = stdscr return win.getch() def Getchar(): wGetchar() # # Panels tester # def wait_a_while(): if nap_msec == 1: Getchar() else: curses.napms(nap_msec) def saywhat(text): stdscr.move(curses.LINES - 1, 0) stdscr.clrtoeol() stdscr.addstr(text) def mkpanel(color, rows, cols, tly, tlx): win = curses.newwin(rows, cols, tly, tlx) pan = panel.new_panel(win) if curses.has_colors(): if color == curses.COLOR_BLUE: fg = curses.COLOR_WHITE else: fg = curses.COLOR_BLACK bg = color curses.init_pair(color, fg, bg) win.bkgdset(ord(' '), curses.color_pair(color)) else: win.bkgdset(ord(' '), curses.A_BOLD) return pan def pflush(): panel.update_panels() curses.doupdate() def fill_panel(pan): win = pan.window() num = pan.userptr()[1] win.move(1, 1) win.addstr("-pan%c-" % num) win.clrtoeol() win.box() maxy, maxx = win.getmaxyx() for y in range(2, maxy - 1): for x in range(1, maxx - 1): win.move(y, x) win.addch(num) def demo_panels(win): global stdscr, nap_msec, mod stdscr = win nap_msec = 1 mod = ["test", "TEST", "(**)", "*()*", "<-->", "LAST"] stdscr.refresh() for y in range(0, curses.LINES - 1): for x in range(0, curses.COLS): stdscr.addstr("%d" % ((y + x) % 10)) for y in range(0, 1): p1 = mkpanel(curses.COLOR_RED, curses.LINES // 2 - 2, curses.COLS // 8 + 1, 0, 0) p1.set_userptr("p1") p2 = mkpanel(curses.COLOR_GREEN, curses.LINES // 2 + 1, curses.COLS // 7, curses.LINES // 4, curses.COLS // 10) p2.set_userptr("p2") p3 = mkpanel(curses.COLOR_YELLOW, curses.LINES // 4, curses.COLS // 10, curses.LINES // 2, curses.COLS // 9) p3.set_userptr("p3") p4 = mkpanel(curses.COLOR_BLUE, curses.LINES // 2 - 2, curses.COLS // 8, curses.LINES // 2 - 2, curses.COLS // 3) p4.set_userptr("p4") p5 = mkpanel(curses.COLOR_MAGENTA, curses.LINES // 2 - 2, curses.COLS // 8, curses.LINES // 2, curses.COLS // 2 - 2) p5.set_userptr("p5") fill_panel(p1) fill_panel(p2) fill_panel(p3) fill_panel(p4) fill_panel(p5) p4.hide() p5.hide() pflush() saywhat("press any key to continue") wait_a_while() saywhat("h3 s1 s2 s4 s5;press any key to continue") p1.move(0, 0) p3.hide() p1.show() p2.show() p4.show() p5.show() pflush() wait_a_while() saywhat("s1; press any key to continue") p1.show() pflush() wait_a_while() saywhat("s2; press any key to continue") p2.show() pflush() wait_a_while() saywhat("m2; press any key to continue") p2.move(curses.LINES // 3 + 1, curses.COLS // 8) pflush() wait_a_while() saywhat("s3; press any key to continue") p3.show() pflush() wait_a_while() saywhat("m3; press any key to continue") p3.move(curses.LINES // 4 + 1, curses.COLS // 15) pflush() wait_a_while() saywhat("b3; press any key to continue") p3.bottom() pflush() wait_a_while() saywhat("s4; press any key to continue") p4.show() pflush() wait_a_while() saywhat("s5; press any key to continue") p5.show() pflush() wait_a_while() saywhat("t3; press any key to continue") p3.top() pflush() wait_a_while() saywhat("t1; press any key to continue") p1.show() pflush() wait_a_while() saywhat("t2; press any key to continue") p2.show() pflush() wait_a_while() saywhat("t3; press any key to continue") p3.show() pflush() wait_a_while() saywhat("t4; press any key to continue") p4.show() pflush() wait_a_while() for itmp in range(0, 6): w4 = p4.window() w5 = p5.window() saywhat("m4; press any key to continue") w4.move(curses.LINES // 8, 1) w4.addstr(mod[itmp]) p4.move(curses.LINES // 6, itmp * curses.COLS // 8) w5.move(curses.LINES // 6, 1) w5.addstr(mod[itmp]) pflush() wait_a_while() saywhat("m5; press any key to continue") w4.move(curses.LINES // 6, 1) w4.addstr(mod[itmp]) p5.move(curses.LINES // 3 - 1, itmp * 10 + 6) w5.move(curses.LINES // 8, 1) w5.addstr(mod[itmp]) pflush() wait_a_while() saywhat("m4; press any key to continue") p4.move(curses.LINES // 6, (itmp + 1) * curses.COLS // 8) pflush() wait_a_while() saywhat("t5; press any key to continue") p5.top() pflush() wait_a_while() saywhat("t2; press any key to continue") p2.top() pflush() wait_a_while() saywhat("t1; press any key to continue") p1.top() pflush() wait_a_while() saywhat("d2; press any key to continue") del p2 pflush() wait_a_while() saywhat("h3; press any key to continue") p3.hide() pflush() wait_a_while() saywhat("d1; press any key to continue") del p1 pflush() wait_a_while() saywhat("d4; press any key to continue") del p4 pflush() wait_a_while() saywhat("d5; press any key to continue") del p5 pflush() wait_a_while() if nap_msec == 1: break nap_msec = 100 # # one fine day there'll be the menu at this place # curses.wrapper(demo_panels) PK!ϐrain.pyonu[ Afc@s?ddlZddlmZdZdZejedS(iN(t randrangecCss|dkrd}n |d8}tjrotdd}tj|}|r_|tjB}ntj|n|S(Niiii(tcursest has_colorsRt color_pairtA_BOLDtstdscrtattrset(tjtztcolor((s(/usr/lib64/python2.7/Demo/curses/rain.pytnext_j s    c Cs|atjrJtj}tjdtj|tjdtj|ntjtjtj dtj d}tj d}dg|}dg|}xHt dddD]4}t d|d||s   EPK!% repeat.pyonu[ Afc@sJdZddlZddlZddlZddlZdZedS(srepeat This simple program repeatedly (at 1-second intervals) executes the shell command given on the command line and displays the output (or as much of it as fits on the screen). It uses curses to paint each new output on top of the old output, so that if nothing changes, the screen doesn't change. This is handy to watch for changes in e.g. a directory or process listing. To end, hit Control-C. iNcCsVtjds"tGHtjdndjtjd}tj|d}|j}|j}|rtj dI|IJtj|nt j }zxt rB|j y|j|Wnt jk rnX|jtjdtj|d}|j}|j}|rtj dI|IJtj|qqWWdt jXdS(Niit trs Exit code:(tsystargvt__doc__texittjointostpopentreadtclosetstderrtcursestinitscrtTrueterasetaddstrterrortrefreshttimetsleeptendwin(tcmdtpttexttststw((s*/usr/lib64/python2.7/Demo/curses/repeat.pytmains6          (RRRRR R(((s*/usr/lib64/python2.7/Demo/curses/repeat.pyt s      PK!̥TTREADMEnu[This is a collection of demos and tests for the curses module. ncurses demos ============= These demos are converted from the C versions in the ncurses distribution, and were contributed by Thomas Gellekum I didn't strive for a `pythonic' style, but bluntly copied the originals. I won't attempt to `beautify' the program anytime soon, but I wouldn't mind someone else making an effort in that direction, of course. ncurses.py -- currently only a panels demo rain.py -- raindrops keep falling on my desktop tclock.py -- ASCII clock, by Howard Jones xmas.py -- I'm dreaming of an ASCII christmas Please submit bugfixes and new contributions to the Python bug tracker. Other demos =========== life.py -- Simple game of Life repeat.py -- Repeatedly execute a shell command (like watch(1)) PK! fcfcxmas.pynu[# asciixmas # December 1989 Larry Bartz Indianapolis, IN # # $Id$ # # I'm dreaming of an ascii character-based monochrome Christmas, # Just like the ones I used to know! # Via a full duplex communications channel, # At 9600 bits per second, # Even though it's kinda slow. # # I'm dreaming of an ascii character-based monochrome Christmas, # With ev'ry C program I write! # May your screen be merry and bright! # And may all your Christmases be amber or green, # (for reduced eyestrain and improved visibility)! # # # Notes on the Python version: # I used a couple of `try...except curses.error' to get around some functions # returning ERR. The errors come from using wrapping functions to fill # windows to the last character cell. The C version doesn't have this problem, # it simply ignores any return values. # import curses import sys FROMWHO = "Thomas Gellekum " def set_color(win, color): if curses.has_colors(): n = color + 1 curses.init_pair(n, color, my_bg) win.attroff(curses.A_COLOR) win.attron(curses.color_pair(n)) def unset_color(win): if curses.has_colors(): win.attrset(curses.color_pair(0)) def look_out(msecs): curses.napms(msecs) if stdscr.getch() != -1: curses.beep() sys.exit(0) def boxit(): for y in range(0, 20): stdscr.addch(y, 7, ord('|')) for x in range(8, 80): stdscr.addch(19, x, ord('_')) for x in range(0, 80): stdscr.addch(22, x, ord('_')) return def seas(): stdscr.addch(4, 1, ord('S')) stdscr.addch(6, 1, ord('E')) stdscr.addch(8, 1, ord('A')) stdscr.addch(10, 1, ord('S')) stdscr.addch(12, 1, ord('O')) stdscr.addch(14, 1, ord('N')) stdscr.addch(16, 1, ord("'")) stdscr.addch(18, 1, ord('S')) return def greet(): stdscr.addch(3, 5, ord('G')) stdscr.addch(5, 5, ord('R')) stdscr.addch(7, 5, ord('E')) stdscr.addch(9, 5, ord('E')) stdscr.addch(11, 5, ord('T')) stdscr.addch(13, 5, ord('I')) stdscr.addch(15, 5, ord('N')) stdscr.addch(17, 5, ord('G')) stdscr.addch(19, 5, ord('S')) return def fromwho(): stdscr.addstr(21, 13, FROMWHO) return def tree(): set_color(treescrn, curses.COLOR_GREEN) treescrn.addch(1, 11, ord('/')) treescrn.addch(2, 11, ord('/')) treescrn.addch(3, 10, ord('/')) treescrn.addch(4, 9, ord('/')) treescrn.addch(5, 9, ord('/')) treescrn.addch(6, 8, ord('/')) treescrn.addch(7, 7, ord('/')) treescrn.addch(8, 6, ord('/')) treescrn.addch(9, 6, ord('/')) treescrn.addch(10, 5, ord('/')) treescrn.addch(11, 3, ord('/')) treescrn.addch(12, 2, ord('/')) treescrn.addch(1, 13, ord('\\')) treescrn.addch(2, 13, ord('\\')) treescrn.addch(3, 14, ord('\\')) treescrn.addch(4, 15, ord('\\')) treescrn.addch(5, 15, ord('\\')) treescrn.addch(6, 16, ord('\\')) treescrn.addch(7, 17, ord('\\')) treescrn.addch(8, 18, ord('\\')) treescrn.addch(9, 18, ord('\\')) treescrn.addch(10, 19, ord('\\')) treescrn.addch(11, 21, ord('\\')) treescrn.addch(12, 22, ord('\\')) treescrn.addch(4, 10, ord('_')) treescrn.addch(4, 14, ord('_')) treescrn.addch(8, 7, ord('_')) treescrn.addch(8, 17, ord('_')) treescrn.addstr(13, 0, "//////////// \\\\\\\\\\\\\\\\\\\\\\\\") treescrn.addstr(14, 11, "| |") treescrn.addstr(15, 11, "|_|") unset_color(treescrn) treescrn.refresh() w_del_msg.refresh() return def balls(): treescrn.overlay(treescrn2) set_color(treescrn2, curses.COLOR_BLUE) treescrn2.addch(3, 9, ord('@')) treescrn2.addch(3, 15, ord('@')) treescrn2.addch(4, 8, ord('@')) treescrn2.addch(4, 16, ord('@')) treescrn2.addch(5, 7, ord('@')) treescrn2.addch(5, 17, ord('@')) treescrn2.addch(7, 6, ord('@')) treescrn2.addch(7, 18, ord('@')) treescrn2.addch(8, 5, ord('@')) treescrn2.addch(8, 19, ord('@')) treescrn2.addch(10, 4, ord('@')) treescrn2.addch(10, 20, ord('@')) treescrn2.addch(11, 2, ord('@')) treescrn2.addch(11, 22, ord('@')) treescrn2.addch(12, 1, ord('@')) treescrn2.addch(12, 23, ord('@')) unset_color(treescrn2) treescrn2.refresh() w_del_msg.refresh() return def star(): treescrn2.attrset(curses.A_BOLD | curses.A_BLINK) set_color(treescrn2, curses.COLOR_YELLOW) treescrn2.addch(0, 12, ord('*')) treescrn2.standend() unset_color(treescrn2) treescrn2.refresh() w_del_msg.refresh() return def strng1(): treescrn2.attrset(curses.A_BOLD | curses.A_BLINK) set_color(treescrn2, curses.COLOR_WHITE) treescrn2.addch(3, 13, ord('\'')) treescrn2.addch(3, 12, ord(':')) treescrn2.addch(3, 11, ord('.')) treescrn2.attroff(curses.A_BOLD | curses.A_BLINK) unset_color(treescrn2) treescrn2.refresh() w_del_msg.refresh() return def strng2(): treescrn2.attrset(curses.A_BOLD | curses.A_BLINK) set_color(treescrn2, curses.COLOR_WHITE) treescrn2.addch(5, 14, ord('\'')) treescrn2.addch(5, 13, ord(':')) treescrn2.addch(5, 12, ord('.')) treescrn2.addch(5, 11, ord(',')) treescrn2.addch(6, 10, ord('\'')) treescrn2.addch(6, 9, ord(':')) treescrn2.attroff(curses.A_BOLD | curses.A_BLINK) unset_color(treescrn2) treescrn2.refresh() w_del_msg.refresh() return def strng3(): treescrn2.attrset(curses.A_BOLD | curses.A_BLINK) set_color(treescrn2, curses.COLOR_WHITE) treescrn2.addch(7, 16, ord('\'')) treescrn2.addch(7, 15, ord(':')) treescrn2.addch(7, 14, ord('.')) treescrn2.addch(7, 13, ord(',')) treescrn2.addch(8, 12, ord('\'')) treescrn2.addch(8, 11, ord(':')) treescrn2.addch(8, 10, ord('.')) treescrn2.addch(8, 9, ord(',')) treescrn2.attroff(curses.A_BOLD | curses.A_BLINK) unset_color(treescrn2) treescrn2.refresh() w_del_msg.refresh() return def strng4(): treescrn2.attrset(curses.A_BOLD | curses.A_BLINK) set_color(treescrn2, curses.COLOR_WHITE) treescrn2.addch(9, 17, ord('\'')) treescrn2.addch(9, 16, ord(':')) treescrn2.addch(9, 15, ord('.')) treescrn2.addch(9, 14, ord(',')) treescrn2.addch(10, 13, ord('\'')) treescrn2.addch(10, 12, ord(':')) treescrn2.addch(10, 11, ord('.')) treescrn2.addch(10, 10, ord(',')) treescrn2.addch(11, 9, ord('\'')) treescrn2.addch(11, 8, ord(':')) treescrn2.addch(11, 7, ord('.')) treescrn2.addch(11, 6, ord(',')) treescrn2.addch(12, 5, ord('\'')) treescrn2.attroff(curses.A_BOLD | curses.A_BLINK) unset_color(treescrn2) treescrn2.refresh() w_del_msg.refresh() return def strng5(): treescrn2.attrset(curses.A_BOLD | curses.A_BLINK) set_color(treescrn2, curses.COLOR_WHITE) treescrn2.addch(11, 19, ord('\'')) treescrn2.addch(11, 18, ord(':')) treescrn2.addch(11, 17, ord('.')) treescrn2.addch(11, 16, ord(',')) treescrn2.addch(12, 15, ord('\'')) treescrn2.addch(12, 14, ord(':')) treescrn2.addch(12, 13, ord('.')) treescrn2.addch(12, 12, ord(',')) treescrn2.attroff(curses.A_BOLD | curses.A_BLINK) unset_color(treescrn2) # save a fully lit tree treescrn2.overlay(treescrn) treescrn2.refresh() w_del_msg.refresh() return def blinkit(): treescrn8.touchwin() for cycle in range(5): if cycle == 0: treescrn3.overlay(treescrn8) treescrn8.refresh() w_del_msg.refresh() break elif cycle == 1: treescrn4.overlay(treescrn8) treescrn8.refresh() w_del_msg.refresh() break elif cycle == 2: treescrn5.overlay(treescrn8) treescrn8.refresh() w_del_msg.refresh() break elif cycle == 3: treescrn6.overlay(treescrn8) treescrn8.refresh() w_del_msg.refresh() break elif cycle == 4: treescrn7.overlay(treescrn8) treescrn8.refresh() w_del_msg.refresh() break treescrn8.touchwin() # ALL ON treescrn.overlay(treescrn8) treescrn8.refresh() w_del_msg.refresh() return def deer_step(win, y, x): win.mvwin(y, x) win.refresh() w_del_msg.refresh() look_out(5) def reindeer(): y_pos = 0 for x_pos in range(70, 62, -1): if x_pos < 66: y_pos = 1 for looper in range(0, 4): dotdeer0.addch(y_pos, x_pos, ord('.')) dotdeer0.refresh() w_del_msg.refresh() dotdeer0.erase() dotdeer0.refresh() w_del_msg.refresh() look_out(50) y_pos = 2 for x_pos in range(x_pos - 1, 50, -1): for looper in range(0, 4): if x_pos < 56: y_pos = 3 try: stardeer0.addch(y_pos, x_pos, ord('*')) except curses.error: pass stardeer0.refresh() w_del_msg.refresh() stardeer0.erase() stardeer0.refresh() w_del_msg.refresh() else: dotdeer0.addch(y_pos, x_pos, ord('*')) dotdeer0.refresh() w_del_msg.refresh() dotdeer0.erase() dotdeer0.refresh() w_del_msg.refresh() x_pos = 58 for y_pos in range(2, 5): lildeer0.touchwin() lildeer0.refresh() w_del_msg.refresh() for looper in range(0, 4): deer_step(lildeer3, y_pos, x_pos) deer_step(lildeer2, y_pos, x_pos) deer_step(lildeer1, y_pos, x_pos) deer_step(lildeer2, y_pos, x_pos) deer_step(lildeer3, y_pos, x_pos) lildeer0.touchwin() lildeer0.refresh() w_del_msg.refresh() x_pos -= 2 x_pos = 35 for y_pos in range(5, 10): middeer0.touchwin() middeer0.refresh() w_del_msg.refresh() for looper in range(2): deer_step(middeer3, y_pos, x_pos) deer_step(middeer2, y_pos, x_pos) deer_step(middeer1, y_pos, x_pos) deer_step(middeer2, y_pos, x_pos) deer_step(middeer3, y_pos, x_pos) middeer0.touchwin() middeer0.refresh() w_del_msg.refresh() x_pos -= 3 look_out(300) y_pos = 1 for x_pos in range(8, 16): deer_step(bigdeer4, y_pos, x_pos) deer_step(bigdeer3, y_pos, x_pos) deer_step(bigdeer2, y_pos, x_pos) deer_step(bigdeer1, y_pos, x_pos) deer_step(bigdeer2, y_pos, x_pos) deer_step(bigdeer3, y_pos, x_pos) deer_step(bigdeer4, y_pos, x_pos) deer_step(bigdeer0, y_pos, x_pos) x_pos -= 1 for looper in range(0, 6): deer_step(lookdeer4, y_pos, x_pos) deer_step(lookdeer3, y_pos, x_pos) deer_step(lookdeer2, y_pos, x_pos) deer_step(lookdeer1, y_pos, x_pos) deer_step(lookdeer2, y_pos, x_pos) deer_step(lookdeer3, y_pos, x_pos) deer_step(lookdeer4, y_pos, x_pos) deer_step(lookdeer0, y_pos, x_pos) for y_pos in range(y_pos, 10): for looper in range(0, 2): deer_step(bigdeer4, y_pos, x_pos) deer_step(bigdeer3, y_pos, x_pos) deer_step(bigdeer2, y_pos, x_pos) deer_step(bigdeer1, y_pos, x_pos) deer_step(bigdeer2, y_pos, x_pos) deer_step(bigdeer3, y_pos, x_pos) deer_step(bigdeer4, y_pos, x_pos) deer_step(bigdeer0, y_pos, x_pos) y_pos -= 1 deer_step(lookdeer3, y_pos, x_pos) return def main(win): global stdscr stdscr = win global my_bg, y_pos, x_pos global treescrn, treescrn2, treescrn3, treescrn4 global treescrn5, treescrn6, treescrn7, treescrn8 global dotdeer0, stardeer0 global lildeer0, lildeer1, lildeer2, lildeer3 global middeer0, middeer1, middeer2, middeer3 global bigdeer0, bigdeer1, bigdeer2, bigdeer3, bigdeer4 global lookdeer0, lookdeer1, lookdeer2, lookdeer3, lookdeer4 global w_holiday, w_del_msg my_bg = curses.COLOR_BLACK # curses.curs_set(0) treescrn = curses.newwin(16, 27, 3, 53) treescrn2 = curses.newwin(16, 27, 3, 53) treescrn3 = curses.newwin(16, 27, 3, 53) treescrn4 = curses.newwin(16, 27, 3, 53) treescrn5 = curses.newwin(16, 27, 3, 53) treescrn6 = curses.newwin(16, 27, 3, 53) treescrn7 = curses.newwin(16, 27, 3, 53) treescrn8 = curses.newwin(16, 27, 3, 53) dotdeer0 = curses.newwin(3, 71, 0, 8) stardeer0 = curses.newwin(4, 56, 0, 8) lildeer0 = curses.newwin(7, 53, 0, 8) lildeer1 = curses.newwin(2, 4, 0, 0) lildeer2 = curses.newwin(2, 4, 0, 0) lildeer3 = curses.newwin(2, 4, 0, 0) middeer0 = curses.newwin(15, 42, 0, 8) middeer1 = curses.newwin(3, 7, 0, 0) middeer2 = curses.newwin(3, 7, 0, 0) middeer3 = curses.newwin(3, 7, 0, 0) bigdeer0 = curses.newwin(10, 23, 0, 0) bigdeer1 = curses.newwin(10, 23, 0, 0) bigdeer2 = curses.newwin(10, 23, 0, 0) bigdeer3 = curses.newwin(10, 23, 0, 0) bigdeer4 = curses.newwin(10, 23, 0, 0) lookdeer0 = curses.newwin(10, 25, 0, 0) lookdeer1 = curses.newwin(10, 25, 0, 0) lookdeer2 = curses.newwin(10, 25, 0, 0) lookdeer3 = curses.newwin(10, 25, 0, 0) lookdeer4 = curses.newwin(10, 25, 0, 0) w_holiday = curses.newwin(1, 27, 3, 27) w_del_msg = curses.newwin(1, 20, 23, 60) try: w_del_msg.addstr(0, 0, "Hit any key to quit") except curses.error: pass try: w_holiday.addstr(0, 0, "H A P P Y H O L I D A Y S") except curses.error: pass # set up the windows for our various reindeer lildeer1.addch(0, 0, ord('V')) lildeer1.addch(1, 0, ord('@')) lildeer1.addch(1, 1, ord('<')) lildeer1.addch(1, 2, ord('>')) try: lildeer1.addch(1, 3, ord('~')) except curses.error: pass lildeer2.addch(0, 0, ord('V')) lildeer2.addch(1, 0, ord('@')) lildeer2.addch(1, 1, ord('|')) lildeer2.addch(1, 2, ord('|')) try: lildeer2.addch(1, 3, ord('~')) except curses.error: pass lildeer3.addch(0, 0, ord('V')) lildeer3.addch(1, 0, ord('@')) lildeer3.addch(1, 1, ord('>')) lildeer3.addch(1, 2, ord('<')) try: lildeer2.addch(1, 3, ord('~')) # XXX except curses.error: pass middeer1.addch(0, 2, ord('y')) middeer1.addch(0, 3, ord('y')) middeer1.addch(1, 2, ord('0')) middeer1.addch(1, 3, ord('(')) middeer1.addch(1, 4, ord('=')) middeer1.addch(1, 5, ord(')')) middeer1.addch(1, 6, ord('~')) middeer1.addch(2, 3, ord('\\')) middeer1.addch(2, 5, ord('/')) middeer2.addch(0, 2, ord('y')) middeer2.addch(0, 3, ord('y')) middeer2.addch(1, 2, ord('0')) middeer2.addch(1, 3, ord('(')) middeer2.addch(1, 4, ord('=')) middeer2.addch(1, 5, ord(')')) middeer2.addch(1, 6, ord('~')) middeer2.addch(2, 3, ord('|')) middeer2.addch(2, 5, ord('|')) middeer3.addch(0, 2, ord('y')) middeer3.addch(0, 3, ord('y')) middeer3.addch(1, 2, ord('0')) middeer3.addch(1, 3, ord('(')) middeer3.addch(1, 4, ord('=')) middeer3.addch(1, 5, ord(')')) middeer3.addch(1, 6, ord('~')) middeer3.addch(2, 3, ord('/')) middeer3.addch(2, 5, ord('\\')) bigdeer1.addch(0, 17, ord('\\')) bigdeer1.addch(0, 18, ord('/')) bigdeer1.addch(0, 19, ord('\\')) bigdeer1.addch(0, 20, ord('/')) bigdeer1.addch(1, 18, ord('\\')) bigdeer1.addch(1, 20, ord('/')) bigdeer1.addch(2, 19, ord('|')) bigdeer1.addch(2, 20, ord('_')) bigdeer1.addch(3, 18, ord('/')) bigdeer1.addch(3, 19, ord('^')) bigdeer1.addch(3, 20, ord('0')) bigdeer1.addch(3, 21, ord('\\')) bigdeer1.addch(4, 17, ord('/')) bigdeer1.addch(4, 18, ord('/')) bigdeer1.addch(4, 19, ord('\\')) bigdeer1.addch(4, 22, ord('\\')) bigdeer1.addstr(5, 7, "^~~~~~~~~// ~~U") bigdeer1.addstr(6, 7, "( \\_____( /") # )) bigdeer1.addstr(7, 8, "( ) /") bigdeer1.addstr(8, 9, "\\\\ /") bigdeer1.addstr(9, 11, "\\>/>") bigdeer2.addch(0, 17, ord('\\')) bigdeer2.addch(0, 18, ord('/')) bigdeer2.addch(0, 19, ord('\\')) bigdeer2.addch(0, 20, ord('/')) bigdeer2.addch(1, 18, ord('\\')) bigdeer2.addch(1, 20, ord('/')) bigdeer2.addch(2, 19, ord('|')) bigdeer2.addch(2, 20, ord('_')) bigdeer2.addch(3, 18, ord('/')) bigdeer2.addch(3, 19, ord('^')) bigdeer2.addch(3, 20, ord('0')) bigdeer2.addch(3, 21, ord('\\')) bigdeer2.addch(4, 17, ord('/')) bigdeer2.addch(4, 18, ord('/')) bigdeer2.addch(4, 19, ord('\\')) bigdeer2.addch(4, 22, ord('\\')) bigdeer2.addstr(5, 7, "^~~~~~~~~// ~~U") bigdeer2.addstr(6, 7, "(( )____( /") # )) bigdeer2.addstr(7, 7, "( / |") bigdeer2.addstr(8, 8, "\\/ |") bigdeer2.addstr(9, 9, "|> |>") bigdeer3.addch(0, 17, ord('\\')) bigdeer3.addch(0, 18, ord('/')) bigdeer3.addch(0, 19, ord('\\')) bigdeer3.addch(0, 20, ord('/')) bigdeer3.addch(1, 18, ord('\\')) bigdeer3.addch(1, 20, ord('/')) bigdeer3.addch(2, 19, ord('|')) bigdeer3.addch(2, 20, ord('_')) bigdeer3.addch(3, 18, ord('/')) bigdeer3.addch(3, 19, ord('^')) bigdeer3.addch(3, 20, ord('0')) bigdeer3.addch(3, 21, ord('\\')) bigdeer3.addch(4, 17, ord('/')) bigdeer3.addch(4, 18, ord('/')) bigdeer3.addch(4, 19, ord('\\')) bigdeer3.addch(4, 22, ord('\\')) bigdeer3.addstr(5, 7, "^~~~~~~~~// ~~U") bigdeer3.addstr(6, 6, "( ()_____( /") # )) bigdeer3.addstr(7, 6, "/ / /") bigdeer3.addstr(8, 5, "|/ \\") bigdeer3.addstr(9, 5, "/> \\>") bigdeer4.addch(0, 17, ord('\\')) bigdeer4.addch(0, 18, ord('/')) bigdeer4.addch(0, 19, ord('\\')) bigdeer4.addch(0, 20, ord('/')) bigdeer4.addch(1, 18, ord('\\')) bigdeer4.addch(1, 20, ord('/')) bigdeer4.addch(2, 19, ord('|')) bigdeer4.addch(2, 20, ord('_')) bigdeer4.addch(3, 18, ord('/')) bigdeer4.addch(3, 19, ord('^')) bigdeer4.addch(3, 20, ord('0')) bigdeer4.addch(3, 21, ord('\\')) bigdeer4.addch(4, 17, ord('/')) bigdeer4.addch(4, 18, ord('/')) bigdeer4.addch(4, 19, ord('\\')) bigdeer4.addch(4, 22, ord('\\')) bigdeer4.addstr(5, 7, "^~~~~~~~~// ~~U") bigdeer4.addstr(6, 6, "( )______( /") # ) bigdeer4.addstr(7, 5, "(/ \\") # ) bigdeer4.addstr(8, 0, "v___= ----^") lookdeer1.addstr(0, 16, "\\/ \\/") lookdeer1.addstr(1, 17, "\\Y/ \\Y/") lookdeer1.addstr(2, 19, "\\=/") lookdeer1.addstr(3, 17, "^\\o o/^") lookdeer1.addstr(4, 17, "//( )") lookdeer1.addstr(5, 7, "^~~~~~~~~// \\O/") lookdeer1.addstr(6, 7, "( \\_____( /") # )) lookdeer1.addstr(7, 8, "( ) /") lookdeer1.addstr(8, 9, "\\\\ /") lookdeer1.addstr(9, 11, "\\>/>") lookdeer2.addstr(0, 16, "\\/ \\/") lookdeer2.addstr(1, 17, "\\Y/ \\Y/") lookdeer2.addstr(2, 19, "\\=/") lookdeer2.addstr(3, 17, "^\\o o/^") lookdeer2.addstr(4, 17, "//( )") lookdeer2.addstr(5, 7, "^~~~~~~~~// \\O/") lookdeer2.addstr(6, 7, "(( )____( /") # )) lookdeer2.addstr(7, 7, "( / |") lookdeer2.addstr(8, 8, "\\/ |") lookdeer2.addstr(9, 9, "|> |>") lookdeer3.addstr(0, 16, "\\/ \\/") lookdeer3.addstr(1, 17, "\\Y/ \\Y/") lookdeer3.addstr(2, 19, "\\=/") lookdeer3.addstr(3, 17, "^\\o o/^") lookdeer3.addstr(4, 17, "//( )") lookdeer3.addstr(5, 7, "^~~~~~~~~// \\O/") lookdeer3.addstr(6, 6, "( ()_____( /") # )) lookdeer3.addstr(7, 6, "/ / /") lookdeer3.addstr(8, 5, "|/ \\") lookdeer3.addstr(9, 5, "/> \\>") lookdeer4.addstr(0, 16, "\\/ \\/") lookdeer4.addstr(1, 17, "\\Y/ \\Y/") lookdeer4.addstr(2, 19, "\\=/") lookdeer4.addstr(3, 17, "^\\o o/^") lookdeer4.addstr(4, 17, "//( )") lookdeer4.addstr(5, 7, "^~~~~~~~~// \\O/") lookdeer4.addstr(6, 6, "( )______( /") # ) lookdeer4.addstr(7, 5, "(/ \\") # ) lookdeer4.addstr(8, 0, "v___= ----^") ############################################### curses.cbreak() stdscr.nodelay(1) while 1: stdscr.clear() treescrn.erase() w_del_msg.touchwin() treescrn.touchwin() treescrn2.erase() treescrn2.touchwin() treescrn8.erase() treescrn8.touchwin() stdscr.refresh() look_out(150) boxit() stdscr.refresh() look_out(150) seas() stdscr.refresh() greet() stdscr.refresh() look_out(150) fromwho() stdscr.refresh() look_out(150) tree() look_out(150) balls() look_out(150) star() look_out(150) strng1() strng2() strng3() strng4() strng5() # set up the windows for our blinking trees # # treescrn3 treescrn.overlay(treescrn3) # balls treescrn3.addch(4, 18, ord(' ')) treescrn3.addch(7, 6, ord(' ')) treescrn3.addch(8, 19, ord(' ')) treescrn3.addch(11, 22, ord(' ')) # star treescrn3.addch(0, 12, ord('*')) # strng1 treescrn3.addch(3, 11, ord(' ')) # strng2 treescrn3.addch(5, 13, ord(' ')) treescrn3.addch(6, 10, ord(' ')) # strng3 treescrn3.addch(7, 16, ord(' ')) treescrn3.addch(7, 14, ord(' ')) # strng4 treescrn3.addch(10, 13, ord(' ')) treescrn3.addch(10, 10, ord(' ')) treescrn3.addch(11, 8, ord(' ')) # strng5 treescrn3.addch(11, 18, ord(' ')) treescrn3.addch(12, 13, ord(' ')) # treescrn4 treescrn.overlay(treescrn4) # balls treescrn4.addch(3, 9, ord(' ')) treescrn4.addch(4, 16, ord(' ')) treescrn4.addch(7, 6, ord(' ')) treescrn4.addch(8, 19, ord(' ')) treescrn4.addch(11, 2, ord(' ')) treescrn4.addch(12, 23, ord(' ')) # star treescrn4.standout() treescrn4.addch(0, 12, ord('*')) treescrn4.standend() # strng1 treescrn4.addch(3, 13, ord(' ')) # strng2 # strng3 treescrn4.addch(7, 15, ord(' ')) treescrn4.addch(8, 11, ord(' ')) # strng4 treescrn4.addch(9, 16, ord(' ')) treescrn4.addch(10, 12, ord(' ')) treescrn4.addch(11, 8, ord(' ')) # strng5 treescrn4.addch(11, 18, ord(' ')) treescrn4.addch(12, 14, ord(' ')) # treescrn5 treescrn.overlay(treescrn5) # balls treescrn5.addch(3, 15, ord(' ')) treescrn5.addch(10, 20, ord(' ')) treescrn5.addch(12, 1, ord(' ')) # star treescrn5.addch(0, 12, ord(' ')) # strng1 treescrn5.addch(3, 11, ord(' ')) # strng2 treescrn5.addch(5, 12, ord(' ')) # strng3 treescrn5.addch(7, 14, ord(' ')) treescrn5.addch(8, 10, ord(' ')) # strng4 treescrn5.addch(9, 15, ord(' ')) treescrn5.addch(10, 11, ord(' ')) treescrn5.addch(11, 7, ord(' ')) # strng5 treescrn5.addch(11, 17, ord(' ')) treescrn5.addch(12, 13, ord(' ')) # treescrn6 treescrn.overlay(treescrn6) # balls treescrn6.addch(6, 7, ord(' ')) treescrn6.addch(7, 18, ord(' ')) treescrn6.addch(10, 4, ord(' ')) treescrn6.addch(11, 23, ord(' ')) # star treescrn6.standout() treescrn6.addch(0, 12, ord('*')) treescrn6.standend() # strng1 # strng2 treescrn6.addch(5, 11, ord(' ')) # strng3 treescrn6.addch(7, 13, ord(' ')) treescrn6.addch(8, 9, ord(' ')) # strng4 treescrn6.addch(9, 14, ord(' ')) treescrn6.addch(10, 10, ord(' ')) treescrn6.addch(11, 6, ord(' ')) # strng5 treescrn6.addch(11, 16, ord(' ')) treescrn6.addch(12, 12, ord(' ')) # treescrn7 treescrn.overlay(treescrn7) # balls treescrn7.addch(3, 15, ord(' ')) treescrn7.addch(6, 7, ord(' ')) treescrn7.addch(7, 18, ord(' ')) treescrn7.addch(10, 4, ord(' ')) treescrn7.addch(11, 22, ord(' ')) # star treescrn7.addch(0, 12, ord('*')) # strng1 treescrn7.addch(3, 12, ord(' ')) # strng2 treescrn7.addch(5, 13, ord(' ')) treescrn7.addch(6, 9, ord(' ')) # strng3 treescrn7.addch(7, 15, ord(' ')) treescrn7.addch(8, 11, ord(' ')) # strng4 treescrn7.addch(9, 16, ord(' ')) treescrn7.addch(10, 12, ord(' ')) treescrn7.addch(11, 8, ord(' ')) # strng5 treescrn7.addch(11, 18, ord(' ')) treescrn7.addch(12, 14, ord(' ')) look_out(150) reindeer() w_holiday.touchwin() w_holiday.refresh() w_del_msg.refresh() look_out(500) for i in range(0, 20): blinkit() curses.wrapper(main) PK!`gjMMxmas.pyonu[ ^c@sddlZddlZdZdZdZdZdZdZdZd Z d Z d Z d Z d Z dZdZdZdZdZdZdZdZejedS(iNs Thomas Gellekum cCsVtjrR|d}tj||t|jtj|jtj|ndS(Ni(tcursest has_colorst init_pairtmy_bgtattrofftA_COLORtattront color_pair(twintcolortn((s(/usr/lib64/python2.7/Demo/curses/xmas.pyt set_colors   cCs)tjr%|jtjdndS(Ni(RRtattrsetR(R((s(/usr/lib64/python2.7/Demo/curses/xmas.pyt unset_color&s cCs=tj|tjdkr9tjtjdndS(Nii(Rtnapmststdscrtgetchtbeeptsystexit(tmsecs((s(/usr/lib64/python2.7/Demo/curses/xmas.pytlook_out*s  cCsx0tddD]}tj|dtdqWx0tddD]}tjd|tdqCWx0tddD]}tjd |tdqvWdS( Niiit|iiPit_i(trangeRtaddchtord(tytx((s(/usr/lib64/python2.7/Demo/curses/xmas.pytboxit0scCstjddtdtjddtdtjddtdtjddtdtjd dtd tjd dtd tjd dtdtjddtddS(NiitSitEitAi i tOitNit'i(RRR(((s(/usr/lib64/python2.7/Demo/curses/xmas.pytseas<scCstjddtdtjddtdtjddtdtjddtdtjddtd tjd dtd tjd dtd tjddtdtjddtddS(NiitGtRiRi i tTi tIiR"iiR(RRR(((s(/usr/lib64/python2.7/Demo/curses/xmas.pytgreetHscCstjddtdS(Nii (RtaddstrtFROMWHO(((s(/usr/lib64/python2.7/Demo/curses/xmas.pytfromwhoUscCs'tttjtjddtdtjddtdtjddtdtjddtdtjd dtdtjd d tdtjd d tdtjd d tdtjdd tdtjdd tdtjddtdtjd dtdtjddtdtjddtdtjddtdtjddtdtjd dtdtjd dtdtjd dtdtjd dtdtjddtdtjddtdtjddtdtjd dtdtjddtdtjddtdtjd d tdtjd dtdtjdddtjdddtjdddtttjt jdS(Nii t/iii ii iiiii i s\iiiiiiiiRis//////////// \\\\\\\\\\\\s| |s|_|( R ttreescrnRt COLOR_GREENRRR*R trefresht w_del_msg(((s(/usr/lib64/python2.7/Demo/curses/xmas.pyttreeYsH   cCstjttttjtjddtdtjddtdtjddtdtjddtdtjdd tdtjdd tdtjd d tdtjd d tdtjddtdtjdd tdtjddtdtjddtdtjddtdtjddtdtjddtdtjddtdtttj t j dS(Nii t@iiiiiiiiiii ii iii ii( R.toverlayt treescrn2R Rt COLOR_BLUERRR R0R1(((s(/usr/lib64/python2.7/Demo/curses/xmas.pytballss,    cCsltjtjtjBtttjtjddtdtj t ttj t j dS(Nii t*( R5R RtA_BOLDtA_BLINKR t COLOR_YELLOWRRtstandendR R0R1(((s(/usr/lib64/python2.7/Demo/curses/xmas.pytstars    cCstjtjtjBtttjtjddtdtjddtdtjddtdtj tjtjBt ttj t j dS(Nii s'i t:i t.( R5R RR9R:R t COLOR_WHITERRRR R0R1(((s(/usr/lib64/python2.7/Demo/curses/xmas.pytstrng1s   cCstjtjtjBtttjtjddtdtjddtdtjddtdtjddtd tjd d tdtjd d tdtj tjtjBt ttj t j dS( Niis'i R>i R?i t,ii i ( R5R RR9R:R R@RRRR R0R1(((s(/usr/lib64/python2.7/Demo/curses/xmas.pytstrng2s   cCs(tjtjtjBtttjtjddtdtjddtdtjddtdtjddtd tjd d tdtjd d tdtjd d tdtjd dtd tj tjtjBt ttj t j dS(Niis'iR>iR?i RBii i i i ( R5R RR9R:R R@RRRR R0R1(((s(/usr/lib64/python2.7/Demo/curses/xmas.pytstrng3s   cCstjtjtjBtttjtjddtdtjddtdtjddtdtjddtd tjd d tdtjd d tdtjd d tdtjd d td tjd dtdtjd dtdtjd dtdtjd dtd tjd dtdtj tjtjBt ttj t j dS(Ni is'iR>iR?iRBi i i i iiii( R5R RR9R:R R@RRRR R0R1(((s(/usr/lib64/python2.7/Demo/curses/xmas.pytstrng4s(   cCs5tjtjtjBtttjtjddtdtjddtdtjddtdtjddtd tjd d tdtjd d tdtjd d tdtjd d td tj tjtjBt ttj t tj tj dS(Ni is'iR>iR?iRBi iii (R5R RR9R:R R@RRRR R4R.R0R1(((s(/usr/lib64/python2.7/Demo/curses/xmas.pytstrng5s     cCsEtjxtdD]}|dkrNtjttjtjPn|dkrtjttjtjPn|dkrtjttjtjPnb|dkrt jttjtjPn1|dkrt jttjtjPntjqWt jttjtjdS(Niiiiii( t treescrn8ttouchwinRt treescrn3R4R0R1t treescrn4t treescrn5t treescrn6t treescrn7R.(tcycle((s(/usr/lib64/python2.7/Demo/curses/xmas.pytblinkits@                        cCs2|j|||jtjtddS(Ni(tmvwinR0R1R(RRR((s(/usr/lib64/python2.7/Demo/curses/xmas.pyt deer_step7s  cCskd}xtdddD]}|dkr4d}nxltddD][}tj||tdtjtjtjtjtjtd qDWqWd }xt|dd dD]}xtddD]}|d kr[d }ytj||td Wnt j k r%nXtjtjtjtjtjqtj||td tjtjtjtjtjqWqWd}xtd dD]}t j t jtjxtddD]~}t t||t t||t t||t t||t t||t j t jtj|d 8}qWqWd}xtddD]}tj tjtjxtd D]~}t t||t t||t t||t t||t t||tj tjtj|d 8}qWqWtdd}xtddD]}t t||t t||t t||t t||t t||t t||t t||t t||qkW|d8}xtddD]v}t t||t t||t t||t t||t t||t t||t t||qWt t||xt|dD]}xtdd D]v}t t||t t||t t||t t||t t||t t||t t||qWt t||qW|d8}t t||dS(NiiFi>iiBiiR?i2ii8iR8i:ii#i i,iii(Rtdotdeer0RRR0R1teraseRt stardeer0Rterrortlildeer0RHRQtlildeer3tlildeer2tlildeer1tmiddeer0tmiddeer3tmiddeer2tmiddeer1tbigdeer4tbigdeer3tbigdeer2tbigdeer1tbigdeer0t lookdeer4t lookdeer3t lookdeer2t lookdeer1t lookdeer0(ty_postx_postlooper((s(/usr/lib64/python2.7/Demo/curses/xmas.pytreindeer=s                               cCs=|atjatjddddatjddddatjddddatjddddatjdddda tjdddda tjdddda tjdddda tjdddda tjdd ddatjd dddatjd dddatjd dddatjd dddatjd d ddatjdd ddatjdd ddatjdd ddatjddddatjddddatjddddatjddddatjddddatjddddatjddddatjddddatjddddatjdddda tjdddda!tjdddda"yt"j#dddWntj$k r nXyt!j#dddWntj$k r:nXtj%ddt&dtj%ddt&dtj%ddt&dtj%dd t&dytj%ddt&dWntj$k rnXtj%ddt&dtj%ddt&dtj%ddt&dtj%dd t&dytj%ddt&dWntj$k rjnXtj%ddt&dtj%ddt&dtj%ddt&dtj%dd t&dytj%ddt&dWntj$k rnXtj%dd t&dtj%ddt&dtj%dd t&dtj%ddt&dtj%ddt&dtj%dd t&d!tj%dd"t&dtj%d dt&d#tj%d d t&d$tj%dd t&dtj%ddt&dtj%dd t&dtj%ddt&dtj%ddt&dtj%dd t&d!tj%dd"t&dtj%d dt&dtj%d d t&dtj%dd t&dtj%ddt&dtj%dd t&dtj%ddt&dtj%ddt&dtj%dd t&d!tj%dd"t&dtj%d dt&d$tj%d d t&d#tj%dd%t&d#tj%dd&t&d$tj%dd't&d#tj%ddt&d$tj%dd&t&d#tj%ddt&d$tj%d d't&dtj%d dt&d(tj%dd&t&d$tj%dd't&d)tj%ddt&dtj%dd*t&d#tj%dd%t&d$tj%dd&t&d$tj%dd't&d#tj%dd+t&d#tj#d d d,tj#d"d d-tj#d dd.tj#dd/d0tj#d/d1d2tj%dd%t&d#tj%dd&t&d$tj%dd't&d#tj%ddt&d$tj%dd&t&d#tj%ddt&d$tj%d d't&dtj%d dt&d(tj%dd&t&d$tj%dd't&d)tj%ddt&dtj%dd*t&d#tj%dd%t&d$tj%dd&t&d$tj%dd't&d#tj%dd+t&d#tj#d d d,tj#d"d d3tj#d d d4tj#ddd5tj#d/d/d6tj%dd%t&d#tj%dd&t&d$tj%dd't&d#tj%ddt&d$tj%dd&t&d#tj%ddt&d$tj%d d't&dtj%d dt&d(tj%dd&t&d$tj%dd't&d)tj%ddt&dtj%dd*t&d#tj%dd%t&d$tj%dd&t&d$tj%dd't&d#tj%dd+t&d#tj#d d d,tj#d"d"d7tj#d d"d8tj#dd d9tj#d/d d:tj%dd%t&d#tj%dd&t&d$tj%dd't&d#tj%ddt&d$tj%dd&t&d#tj%ddt&d$tj%d d't&dtj%d dt&d(tj%dd&t&d$tj%dd't&d)tj%ddt&dtj%dd*t&d#tj%dd%t&d$tj%dd&t&d$tj%dd't&d#tj%dd+t&d#tj#d d d,tj#d"d"d;tj#d d d<tj#ddd=tj#ddd>tj#dd%d?tj#d d'd@tj#dd%dAtj#dd%dBtj#d d dCtj#d"d d-tj#d dd.tj#dd/d0tj#d/d1d2tj#ddd>tj#dd%d?tj#d d'd@tj#dd%dAtj#dd%dBtj#d d dCtj#d"d d3tj#d d d4tj#ddd5tj#d/d/d6tj#ddd>tj#dd%d?tj#d d'd@tj#dd%dAtj#dd%dBtj#d d dCtj#d"d"d7tj#d d"d8tj#dd d9tj#d/d d:t j#ddd>t j#dd%d?t j#d d'd@t j#dd%dAt j#dd%dBt j#d d dCt j#d"d"d;t j#d d d<t j#ddd=tj'tj(dxtj)tj*t"j+tj+tj*tj+t j*t j+tj,t-dDt.tj,t-dDt/tj,t0tj,t-dDt1tj,t-dDt2t-dDt3t-dDt4t-dDt5t6t7t8t9tj:ttj%dd&t&dEtj%d d"t&dEtj%dd't&dEtj%d1d+t&dEtj%ddFt&dGtj%dd1t&dEtj%d dHt&dEtj%d"dt&dEtj%d dt&dEtj%d dIt&dEtj%ddHt&dEtj%ddt&dEtj%d1dt&dEtj%d1d&t&dEtj%dFdHt&dEtj:ttj%dd/t&dEtj%ddt&dEtj%d d"t&dEtj%dd't&dEtj%d1d t&dEtj%dFdt&dEtj;tj%ddFt&dGtj<tj%ddHt&dEtj%d d t&dEtj%dd1t&dEtj%d/dt&dEtj%ddFt&dEtj%d1dt&dEtj%d1d&t&dEtj%dFdIt&dEtj:t t j%dd t&dEt j%ddt&dEt j%dFdt&dEt j%ddFt&dEt j%dd1t&dEt j%d dFt&dEt j%d dIt&dEt j%ddt&dEt j%d/d t&dEt j%dd1t&dEt j%d1d t&dEt j%d1d%t&dEt j%dFdHt&dEtj:t t j%d"d t&dEt j%d d&t&dEt j%ddt&dEt j%d1dt&dEt j;t j%ddFt&dGt j<t j%d d1t&dEt j%d dHt&dEt j%dd/t&dEt j%d/dIt&dEt j%ddt&dEt j%d1d"t&dEt j%d1dt&dEt j%dFdFt&dEtj:t t j%dd t&dEt j%d"d t&dEt j%d d&t&dEt j%ddt&dEt j%d1d+t&dEt j%ddFt&dGt j%ddFt&dEt j%d dHt&dEt j%d"d/t&dEt j%d d t&dEt j%dd1t&dEt j%d/dt&dEt j%ddFt&dEt j%d1dt&dEt j%d1d&t&dEt j%dFdIt&dEt-dDt=t!j+t!j,t"j,t-dJxt>ddD] }t?q$WqNWdS(KNiiii5iGiiii8iiii*i iiiii<sHit any key to quitsH A P P Y H O L I D A Y StVR3tt~RRt0t(t=it)is\R-iiiRt^iis^~~~~~~~~// ~~Us ( \_____( /s( ) /i s\\ /i s\>/>s (( )____( /s( / |s\/ |s|> |>s ( ()_____( /s / / /s |/ \s/> \>s ( )______( /s (/ \sv___= ----^s \/ \/s\Y/ \Y/s\=/s^\o o/^s//( )s^~~~~~~~~// \O/it i R8i ii(@RRt COLOR_BLACKRtnewwinR.R5RIRJRKRLRMRGRRRTRVRYRXRWRZR]R\R[RbRaR`R_R^RgRfReRdRct w_holidayR1R*RURRtcbreaktnodelaytclearRSRHR0RRR$R)R,R2R7R=RARCRDRERFR4tstandoutR<RkRRO(Rti((s(/usr/lib64/python2.7/Demo/curses/xmas.pytmains                                     (RRR+R R RRR$R)R,R2R7R=RARCRDRERFRORQRkR~twrapper(((s(/usr/lib64/python2.7/Demo/curses/xmas.pyts.       ,       '  z PK!2Olife.pyonu[ Afc@sddlZddlZddlZddlZdd dYZdZdZdZdZe dkrej endS( iNt LifeBoardcBsPeZdZeddZdZdZdZedZ dZ RS(sEncapsulates a Life board Attributes: X,Y : horizontal and vertical size of the board state : dictionary mapping (x,y) to 0 or 1 Methods: display(update_board) -- If update_board is true, compute the next generation. Then display the state of the board and refresh the screen. erase() -- clear the entire board makeRandom() -- fill the board randomly set(y,x) -- set the given cell to Live; doesn't refresh the screen toggle(y,x) -- change the given cell from live to dead, or vice versa, and refresh the screen display t*cCs i|_||_|jj\}}|d|dd|_|_||_|jjd|jdd}|jjdd||jj|jdd|xUtd|jD]A}|jjd|dd|jjd||jddqW|jj dS(sCreate a new LifeBoard instance. scr -- curses screen object to use for display char -- character used to render live cells (default: '*') iit+t-it|N( tstatetscrtgetmaxyxtXtYtchartcleartaddstrtrangetrefresh(tselfRR R Rt border_linety((s(/usr/lib64/python2.7/Demo/curses/life.pyt__init__)s    %cCsc|dks6|j|ks6|dks6|j|krLtd||fnd|j||ftboardtxpostypostc((s(/usr/lib64/python2.7/Demo/curses/life.pytkeyloopsd                      "  " cCst|dS(N(RM(R4((s(/usr/lib64/python2.7/Demo/curses/life.pytmainst__main__(( R+tstringt tracebackRBRR6R7RMRNR-twrapper(((s(/usr/lib64/python2.7/Demo/curses/life.pyts$ n   ?  PK!`gjMMxmas.pycnu[ ^c@sddlZddlZdZdZdZdZdZdZdZd Z d Z d Z d Z d Z dZdZdZdZdZdZdZdZejedS(iNs Thomas Gellekum cCsVtjrR|d}tj||t|jtj|jtj|ndS(Ni(tcursest has_colorst init_pairtmy_bgtattrofftA_COLORtattront color_pair(twintcolortn((s(/usr/lib64/python2.7/Demo/curses/xmas.pyt set_colors   cCs)tjr%|jtjdndS(Ni(RRtattrsetR(R((s(/usr/lib64/python2.7/Demo/curses/xmas.pyt unset_color&s cCs=tj|tjdkr9tjtjdndS(Nii(Rtnapmststdscrtgetchtbeeptsystexit(tmsecs((s(/usr/lib64/python2.7/Demo/curses/xmas.pytlook_out*s  cCsx0tddD]}tj|dtdqWx0tddD]}tjd|tdqCWx0tddD]}tjd |tdqvWdS( Niiit|iiPit_i(trangeRtaddchtord(tytx((s(/usr/lib64/python2.7/Demo/curses/xmas.pytboxit0scCstjddtdtjddtdtjddtdtjddtdtjd dtd tjd dtd tjd dtdtjddtddS(NiitSitEitAi i tOitNit'i(RRR(((s(/usr/lib64/python2.7/Demo/curses/xmas.pytseas<scCstjddtdtjddtdtjddtdtjddtdtjddtd tjd dtd tjd dtd tjddtdtjddtddS(NiitGtRiRi i tTi tIiR"iiR(RRR(((s(/usr/lib64/python2.7/Demo/curses/xmas.pytgreetHscCstjddtdS(Nii (RtaddstrtFROMWHO(((s(/usr/lib64/python2.7/Demo/curses/xmas.pytfromwhoUscCs'tttjtjddtdtjddtdtjddtdtjddtdtjd dtdtjd d tdtjd d tdtjd d tdtjdd tdtjdd tdtjddtdtjd dtdtjddtdtjddtdtjddtdtjddtdtjd dtdtjd dtdtjd dtdtjd dtdtjddtdtjddtdtjddtdtjd dtdtjddtdtjddtdtjd d tdtjd dtdtjdddtjdddtjdddtttjt jdS(Nii t/iii ii iiiii i s\iiiiiiiiRis//////////// \\\\\\\\\\\\s| |s|_|( R ttreescrnRt COLOR_GREENRRR*R trefresht w_del_msg(((s(/usr/lib64/python2.7/Demo/curses/xmas.pyttreeYsH   cCstjttttjtjddtdtjddtdtjddtdtjddtdtjdd tdtjdd tdtjd d tdtjd d tdtjddtdtjdd tdtjddtdtjddtdtjddtdtjddtdtjddtdtjddtdtttj t j dS(Nii t@iiiiiiiiiii ii iii ii( R.toverlayt treescrn2R Rt COLOR_BLUERRR R0R1(((s(/usr/lib64/python2.7/Demo/curses/xmas.pytballss,    cCsltjtjtjBtttjtjddtdtj t ttj t j dS(Nii t*( R5R RtA_BOLDtA_BLINKR t COLOR_YELLOWRRtstandendR R0R1(((s(/usr/lib64/python2.7/Demo/curses/xmas.pytstars    cCstjtjtjBtttjtjddtdtjddtdtjddtdtj tjtjBt ttj t j dS(Nii s'i t:i t.( R5R RR9R:R t COLOR_WHITERRRR R0R1(((s(/usr/lib64/python2.7/Demo/curses/xmas.pytstrng1s   cCstjtjtjBtttjtjddtdtjddtdtjddtdtjddtd tjd d tdtjd d tdtj tjtjBt ttj t j dS( Niis'i R>i R?i t,ii i ( R5R RR9R:R R@RRRR R0R1(((s(/usr/lib64/python2.7/Demo/curses/xmas.pytstrng2s   cCs(tjtjtjBtttjtjddtdtjddtdtjddtdtjddtd tjd d tdtjd d tdtjd d tdtjd dtd tj tjtjBt ttj t j dS(Niis'iR>iR?i RBii i i i ( R5R RR9R:R R@RRRR R0R1(((s(/usr/lib64/python2.7/Demo/curses/xmas.pytstrng3s   cCstjtjtjBtttjtjddtdtjddtdtjddtdtjddtd tjd d tdtjd d tdtjd d tdtjd d td tjd dtdtjd dtdtjd dtdtjd dtd tjd dtdtj tjtjBt ttj t j dS(Ni is'iR>iR?iRBi i i i iiii( R5R RR9R:R R@RRRR R0R1(((s(/usr/lib64/python2.7/Demo/curses/xmas.pytstrng4s(   cCs5tjtjtjBtttjtjddtdtjddtdtjddtdtjddtd tjd d tdtjd d tdtjd d tdtjd d td tj tjtjBt ttj t tj tj dS(Ni is'iR>iR?iRBi iii (R5R RR9R:R R@RRRR R4R.R0R1(((s(/usr/lib64/python2.7/Demo/curses/xmas.pytstrng5s     cCsEtjxtdD]}|dkrNtjttjtjPn|dkrtjttjtjPn|dkrtjttjtjPnb|dkrt jttjtjPn1|dkrt jttjtjPntjqWt jttjtjdS(Niiiiii( t treescrn8ttouchwinRt treescrn3R4R0R1t treescrn4t treescrn5t treescrn6t treescrn7R.(tcycle((s(/usr/lib64/python2.7/Demo/curses/xmas.pytblinkits@                        cCs2|j|||jtjtddS(Ni(tmvwinR0R1R(RRR((s(/usr/lib64/python2.7/Demo/curses/xmas.pyt deer_step7s  cCskd}xtdddD]}|dkr4d}nxltddD][}tj||tdtjtjtjtjtjtd qDWqWd }xt|dd dD]}xtddD]}|d kr[d }ytj||td Wnt j k r%nXtjtjtjtjtjqtj||td tjtjtjtjtjqWqWd}xtd dD]}t j t jtjxtddD]~}t t||t t||t t||t t||t t||t j t jtj|d 8}qWqWd}xtddD]}tj tjtjxtd D]~}t t||t t||t t||t t||t t||tj tjtj|d 8}qWqWtdd}xtddD]}t t||t t||t t||t t||t t||t t||t t||t t||qkW|d8}xtddD]v}t t||t t||t t||t t||t t||t t||t t||qWt t||xt|dD]}xtdd D]v}t t||t t||t t||t t||t t||t t||t t||qWt t||qW|d8}t t||dS(NiiFi>iiBiiR?i2ii8iR8i:ii#i i,iii(Rtdotdeer0RRR0R1teraseRt stardeer0Rterrortlildeer0RHRQtlildeer3tlildeer2tlildeer1tmiddeer0tmiddeer3tmiddeer2tmiddeer1tbigdeer4tbigdeer3tbigdeer2tbigdeer1tbigdeer0t lookdeer4t lookdeer3t lookdeer2t lookdeer1t lookdeer0(ty_postx_postlooper((s(/usr/lib64/python2.7/Demo/curses/xmas.pytreindeer=s                               cCs=|atjatjddddatjddddatjddddatjddddatjdddda tjdddda tjdddda tjdddda tjdddda tjdd ddatjd dddatjd dddatjd dddatjd dddatjd d ddatjdd ddatjdd ddatjdd ddatjddddatjddddatjddddatjddddatjddddatjddddatjddddatjddddatjddddatjdddda tjdddda!tjdddda"yt"j#dddWntj$k r nXyt!j#dddWntj$k r:nXtj%ddt&dtj%ddt&dtj%ddt&dtj%dd t&dytj%ddt&dWntj$k rnXtj%ddt&dtj%ddt&dtj%ddt&dtj%dd t&dytj%ddt&dWntj$k rjnXtj%ddt&dtj%ddt&dtj%ddt&dtj%dd t&dytj%ddt&dWntj$k rnXtj%dd t&dtj%ddt&dtj%dd t&dtj%ddt&dtj%ddt&dtj%dd t&d!tj%dd"t&dtj%d dt&d#tj%d d t&d$tj%dd t&dtj%ddt&dtj%dd t&dtj%ddt&dtj%ddt&dtj%dd t&d!tj%dd"t&dtj%d dt&dtj%d d t&dtj%dd t&dtj%ddt&dtj%dd t&dtj%ddt&dtj%ddt&dtj%dd t&d!tj%dd"t&dtj%d dt&d$tj%d d t&d#tj%dd%t&d#tj%dd&t&d$tj%dd't&d#tj%ddt&d$tj%dd&t&d#tj%ddt&d$tj%d d't&dtj%d dt&d(tj%dd&t&d$tj%dd't&d)tj%ddt&dtj%dd*t&d#tj%dd%t&d$tj%dd&t&d$tj%dd't&d#tj%dd+t&d#tj#d d d,tj#d"d d-tj#d dd.tj#dd/d0tj#d/d1d2tj%dd%t&d#tj%dd&t&d$tj%dd't&d#tj%ddt&d$tj%dd&t&d#tj%ddt&d$tj%d d't&dtj%d dt&d(tj%dd&t&d$tj%dd't&d)tj%ddt&dtj%dd*t&d#tj%dd%t&d$tj%dd&t&d$tj%dd't&d#tj%dd+t&d#tj#d d d,tj#d"d d3tj#d d d4tj#ddd5tj#d/d/d6tj%dd%t&d#tj%dd&t&d$tj%dd't&d#tj%ddt&d$tj%dd&t&d#tj%ddt&d$tj%d d't&dtj%d dt&d(tj%dd&t&d$tj%dd't&d)tj%ddt&dtj%dd*t&d#tj%dd%t&d$tj%dd&t&d$tj%dd't&d#tj%dd+t&d#tj#d d d,tj#d"d"d7tj#d d"d8tj#dd d9tj#d/d d:tj%dd%t&d#tj%dd&t&d$tj%dd't&d#tj%ddt&d$tj%dd&t&d#tj%ddt&d$tj%d d't&dtj%d dt&d(tj%dd&t&d$tj%dd't&d)tj%ddt&dtj%dd*t&d#tj%dd%t&d$tj%dd&t&d$tj%dd't&d#tj%dd+t&d#tj#d d d,tj#d"d"d;tj#d d d<tj#ddd=tj#ddd>tj#dd%d?tj#d d'd@tj#dd%dAtj#dd%dBtj#d d dCtj#d"d d-tj#d dd.tj#dd/d0tj#d/d1d2tj#ddd>tj#dd%d?tj#d d'd@tj#dd%dAtj#dd%dBtj#d d dCtj#d"d d3tj#d d d4tj#ddd5tj#d/d/d6tj#ddd>tj#dd%d?tj#d d'd@tj#dd%dAtj#dd%dBtj#d d dCtj#d"d"d7tj#d d"d8tj#dd d9tj#d/d d:t j#ddd>t j#dd%d?t j#d d'd@t j#dd%dAt j#dd%dBt j#d d dCt j#d"d"d;t j#d d d<t j#ddd=tj'tj(dxtj)tj*t"j+tj+tj*tj+t j*t j+tj,t-dDt.tj,t-dDt/tj,t0tj,t-dDt1tj,t-dDt2t-dDt3t-dDt4t-dDt5t6t7t8t9tj:ttj%dd&t&dEtj%d d"t&dEtj%dd't&dEtj%d1d+t&dEtj%ddFt&dGtj%dd1t&dEtj%d dHt&dEtj%d"dt&dEtj%d dt&dEtj%d dIt&dEtj%ddHt&dEtj%ddt&dEtj%d1dt&dEtj%d1d&t&dEtj%dFdHt&dEtj:ttj%dd/t&dEtj%ddt&dEtj%d d"t&dEtj%dd't&dEtj%d1d t&dEtj%dFdt&dEtj;tj%ddFt&dGtj<tj%ddHt&dEtj%d d t&dEtj%dd1t&dEtj%d/dt&dEtj%ddFt&dEtj%d1dt&dEtj%d1d&t&dEtj%dFdIt&dEtj:t t j%dd t&dEt j%ddt&dEt j%dFdt&dEt j%ddFt&dEt j%dd1t&dEt j%d dFt&dEt j%d dIt&dEt j%ddt&dEt j%d/d t&dEt j%dd1t&dEt j%d1d t&dEt j%d1d%t&dEt j%dFdHt&dEtj:t t j%d"d t&dEt j%d d&t&dEt j%ddt&dEt j%d1dt&dEt j;t j%ddFt&dGt j<t j%d d1t&dEt j%d dHt&dEt j%dd/t&dEt j%d/dIt&dEt j%ddt&dEt j%d1d"t&dEt j%d1dt&dEt j%dFdFt&dEtj:t t j%dd t&dEt j%d"d t&dEt j%d d&t&dEt j%ddt&dEt j%d1d+t&dEt j%ddFt&dGt j%ddFt&dEt j%d dHt&dEt j%d"d/t&dEt j%d d t&dEt j%dd1t&dEt j%d/dt&dEt j%ddFt&dEt j%d1dt&dEt j%d1d&t&dEt j%dFdIt&dEt-dDt=t!j+t!j,t"j,t-dJxt>ddD] }t?q$WqNWdS(KNiiii5iGiiii8iiii*i iiiii<sHit any key to quitsH A P P Y H O L I D A Y StVR3tt~RRt0t(t=it)is\R-iiiRt^iis^~~~~~~~~// ~~Us ( \_____( /s( ) /i s\\ /i s\>/>s (( )____( /s( / |s\/ |s|> |>s ( ()_____( /s / / /s |/ \s/> \>s ( )______( /s (/ \sv___= ----^s \/ \/s\Y/ \Y/s\=/s^\o o/^s//( )s^~~~~~~~~// \O/it i R8i ii(@RRt COLOR_BLACKRtnewwinR.R5RIRJRKRLRMRGRRRTRVRYRXRWRZR]R\R[RbRaR`R_R^RgRfReRdRct w_holidayR1R*RURRtcbreaktnodelaytclearRSRHR0RRR$R)R,R2R7R=RARCRDRERFR4tstandoutR<RkRRO(Rti((s(/usr/lib64/python2.7/Demo/curses/xmas.pytmains                                     (RRR+R R RRR$R)R,R2R7R=RARCRDRERFRORQRkR~twrapper(((s(/usr/lib64/python2.7/Demo/curses/xmas.pyts.       ,       '  z PK!cQ ncurses.pyonu[ Afc@sxddlZddlmZddZdZdZdZdZdZd Z d Z ej e dS( iN(tpanelcCs|dkrt}n|jS(N(tNonetstdscrtgetch(twin((s+/usr/lib64/python2.7/Demo/curses/ncurses.pytwGetchar s cCs tdS(N(R(((s+/usr/lib64/python2.7/Demo/curses/ncurses.pytGetcharscCs'tdkrtn tjtdS(Ni(tnap_msecRtcursestnapms(((s+/usr/lib64/python2.7/Demo/curses/ncurses.pyt wait_a_whiles  cCs2tjtjddtjtj|dS(Nii(RtmoveRtLINEStclrtoeoltaddstr(ttext((s+/usr/lib64/python2.7/Demo/curses/ncurses.pytsaywhats c Cstj||||}tj|}tjr|tjkrNtj}n tj}|}tj||||j t dtj |n|j t dtj |S(Nt ( RtnewwinRt new_panelt has_colorst COLOR_BLUEt COLOR_WHITEt COLOR_BLACKt init_pairtbkgdsettordt color_pairtA_BOLD( tcolortrowstcolsttlyttlxRtpantfgtbg((s+/usr/lib64/python2.7/Demo/curses/ncurses.pytmkpanel s   "cCstjtjdS(N(Rt update_panelsRtdoupdate(((s+/usr/lib64/python2.7/Demo/curses/ncurses.pytpflush0s cCs|j}|jd}|jdd|jd||j|j|j\}}xVtd|dD]A}x8td|dD]#}|j|||j|qWqwWdS(Nis-pan%c-i( twindowtuserptrR RR tboxtgetmaxyxtrangetaddch(R"Rtnumtmaxytmaxxtytx((s+/usr/lib64/python2.7/Demo/curses/ncurses.pyt fill_panel4s   c Cs6|adaddddddgatjxTtdtjdD]<}x3tdtjD]}tjd ||d q^WqEWxtddD]}t tj tjd d tjd ddd}|j d t tj tjd dtjdtjdtjd }|j dt tj tjdtjd tjd tjd}|j dt tjtjd d tjd tjd d tjd}|j dt tjtjd d tjd tjd tjd d }|j dt|t|t|t|t||j|jttdttd|jdd|j|j|j|j|jtttd|jtttd|jtttd|jtjddtjd tttd|jtttd|jtjddtjdtttd|jtttd|jtttd |jtttd!|jtttd"|jtttd#|jtttd!|jtttd$|jttxDtdd%D]3}|j} |j} td&| jtjd d| jt||jtjd%|tjd | jtjd%d| jt|tttd'| jtjd%d| jt||jtjdd|d d%| jtjd d| jt|ttqWtd&|jtjd%|dtjd tttd(|jtttd#|jtttd"|jtttd)~tttd*|jtttd+~tttd,~tttd-~tttdkr(Pnd.aqWdS(/NittesttTESTs(**)s*()*s<-->tLASTis%di iitp1iitp2i tp3itp4tp5spress any key to continues(h3 s1 s2 s4 s5;press any key to continuess1; press any key to continuess2; press any key to continuesm2; press any key to continuess3; press any key to continuesm3; press any key to continueisb3; press any key to continuess4; press any key to continuess5; press any key to continuest3; press any key to continuest1; press any key to continuest2; press any key to continuest4; press any key to continueism4; press any key to continuesm5; press any key to continuest5; press any key to continuesd2; press any key to continuesh3; press any key to continuesd1; press any key to continuesd4; press any key to continuesd5; press any key to continueid(RRtmodtrefreshR-RR tCOLSRR%t COLOR_REDt set_userptrt COLOR_GREENt COLOR_YELLOWRt COLOR_MAGENTAR4thideR(RR R tshowtbottomttopR)( RR2R3R8R9R:R;R<titmptw4tw5((s+/usr/lib64/python2.7/Demo/curses/ncurses.pyt demo_panelsCsN !                                      "   "                   " #  &             ( RRRRRR RR%R(R4RLtwrapper(((s+/usr/lib64/python2.7/Demo/curses/ncurses.pyts         PK!@@ tclock.pyonu[ Afc@sfddlTddlZddlZdZdZdZdZdZdZej edS( i(t*Ng@cCs|dkrdSdS(Niii((t_x((s*/usr/lib64/python2.7/Demo/curses/tclock.pytsign s cCs:ttt|t|tt|t|fS(N(tinttroundtASPECTtsintcos(tangletradius((s*/usr/lib64/python2.7/Demo/curses/tclock.pytA2XYscCstj|||dS(N(tstdscrtaddch(txtytcol((s*/usr/lib64/python2.7/Demo/curses/tclock.pytplotscCsttjr%tjtj|n||}||}t|d}t|d} t|} t|} |} |} || kr| |d}xtrt| | || |krdS|dkr| | 7} ||8}n| | 7} || 7}qWnr|| d}xatrot| | || |kr5dS|dkrX| | 7} || 8}n| | 7} ||7}qWdS(Nii( tcursest has_colorsR tattrsett color_pairtabsRtTrueR(tpairtfrom_xtfrom_ytx2ty2tchtdxtdytaxtaytsxtsyR Rtd((s*/usr/lib64/python2.7/Demo/curses/tclock.pytdlines>                  cCs$|ad}tj}tjdtjdtjrtjdtj|tjdtj|tjdtj |ntj dd}tj d}t |dt |td}d|d}|d}d|d}xetdd D]T} | dd td } t| |\} } tj|| || d | dqWtjddd t|dd}xtrtjdtj} tj| }|d|dd}|d kr|d 8}n|ddtd}t||\}}|dtd }t||\}}|ddtd} t| |\} } td||||||tdtjtjtd||||||tdtjtjtjrtjtjdnt|| || tdtjr&tjtjdntjtj ddtj| tj |dddkr|d|kr|d}tj!ntj"}|tdkrdSt|| || tdtd||||||tdtd||||||tdqvWdS(Niiiiiiiii g@g(@s%ds5ASCII Clock by Howard Jones , 1994iigN@t#t.tOtqt (#R Rt COLOR_BLACKtnodelayttimeoutRt init_pairt COLOR_REDt COLOR_MAGENTAt COLOR_GREENtCOLStLINEStminRRtrangetpiR taddstrtmaxRtnapmsttimet localtimeR$tordRt A_REVERSEtattroffRRtctimetrefreshtbeeptgetch(twintlastbeeptmy_bgtcxtcyRtmradiusthradiustsradiustitsangletsdxtsdyttimttthourstmangletmdxtmdythanglethdxthdy((s*/usr/lib64/python2.7/Demo/curses/tclock.pytmainCsn     ! '      ''  # $   '( tmathRR9RRR RR$RWtwrapper(((s*/usr/lib64/python2.7/Demo/curses/tclock.pyts     + PPK!% repeat.pycnu[ Afc@sJdZddlZddlZddlZddlZdZedS(srepeat This simple program repeatedly (at 1-second intervals) executes the shell command given on the command line and displays the output (or as much of it as fits on the screen). It uses curses to paint each new output on top of the old output, so that if nothing changes, the screen doesn't change. This is handy to watch for changes in e.g. a directory or process listing. To end, hit Control-C. iNcCsVtjds"tGHtjdndjtjd}tj|d}|j}|j}|rtj dI|IJtj|nt j }zxt rB|j y|j|Wnt jk rnX|jtjdtj|d}|j}|j}|rtj dI|IJtj|qqWWdt jXdS(Niit trs Exit code:(tsystargvt__doc__texittjointostpopentreadtclosetstderrtcursestinitscrtTrueterasetaddstrterrortrefreshttimetsleeptendwin(tcmdtpttexttststw((s*/usr/lib64/python2.7/Demo/curses/repeat.pytmains6          (RRRRR R(((s*/usr/lib64/python2.7/Demo/curses/repeat.pyt s      PK!٪  tclock.pynuȯ#! /usr/bin/python2.7 # # $Id$ # # From tclock.c, Copyright Howard Jones , September 1994. from math import * import curses, time ASPECT = 2.2 def sign(_x): if _x < 0: return -1 return 1 def A2XY(angle, radius): return (int(round(ASPECT * radius * sin(angle))), int(round(radius * cos(angle)))) def plot(x, y, col): stdscr.addch(y, x, col) # draw a diagonal line using Bresenham's algorithm def dline(pair, from_x, from_y, x2, y2, ch): if curses.has_colors(): stdscr.attrset(curses.color_pair(pair)) dx = x2 - from_x dy = y2 - from_y ax = abs(dx * 2) ay = abs(dy * 2) sx = sign(dx) sy = sign(dy) x = from_x y = from_y if ax > ay: d = ay - ax // 2 while True: plot(x, y, ch) if x == x2: return if d >= 0: y += sy d -= ax x += sx d += ay else: d = ax - ay // 2 while True: plot(x, y, ch) if y == y2: return if d >= 0: x += sx d -= ay y += sy d += ax def main(win): global stdscr stdscr = win lastbeep = -1 my_bg = curses.COLOR_BLACK stdscr.nodelay(1) stdscr.timeout(0) # curses.curs_set(0) if curses.has_colors(): curses.init_pair(1, curses.COLOR_RED, my_bg) curses.init_pair(2, curses.COLOR_MAGENTA, my_bg) curses.init_pair(3, curses.COLOR_GREEN, my_bg) cx = (curses.COLS - 1) // 2 cy = curses.LINES // 2 ch = min( cy-1, int(cx // ASPECT) - 1) mradius = (3 * ch) // 4 hradius = ch // 2 sradius = 5 * ch // 6 for i in range(0, 12): sangle = (i + 1) * 2.0 * pi / 12.0 sdx, sdy = A2XY(sangle, sradius) stdscr.addstr(cy - sdy, cx + sdx, "%d" % (i + 1)) stdscr.addstr(0, 0, "ASCII Clock by Howard Jones , 1994") sradius = max(sradius-4, 8) while True: curses.napms(1000) tim = time.time() t = time.localtime(tim) hours = t[3] + t[4] / 60.0 if hours > 12.0: hours -= 12.0 mangle = t[4] * 2 * pi / 60.0 mdx, mdy = A2XY(mangle, mradius) hangle = hours * 2 * pi / 12.0 hdx, hdy = A2XY(hangle, hradius) sangle = t[5] * 2 * pi / 60.0 sdx, sdy = A2XY(sangle, sradius) dline(3, cx, cy, cx + mdx, cy - mdy, ord('#')) stdscr.attrset(curses.A_REVERSE) dline(2, cx, cy, cx + hdx, cy - hdy, ord('.')) stdscr.attroff(curses.A_REVERSE) if curses.has_colors(): stdscr.attrset(curses.color_pair(1)) plot(cx + sdx, cy - sdy, ord('O')) if curses.has_colors(): stdscr.attrset(curses.color_pair(0)) stdscr.addstr(curses.LINES - 2, 0, time.ctime(tim)) stdscr.refresh() if (t[5] % 5) == 0 and t[5] != lastbeep: lastbeep = t[5] curses.beep() ch = stdscr.getch() if ch == ord('q'): return 0 plot(cx + sdx, cy - sdy, ord(' ')) dline(0, cx, cy, cx + hdx, cy - hdy, ord(' ')) dline(0, cx, cy, cx + mdx, cy - mdy, ord(' ')) curses.wrapper(main) PK!@@ tclock.pycnu[ Afc@sfddlTddlZddlZdZdZdZdZdZdZej edS( i(t*Ng@cCs|dkrdSdS(Niii((t_x((s*/usr/lib64/python2.7/Demo/curses/tclock.pytsign s cCs:ttt|t|tt|t|fS(N(tinttroundtASPECTtsintcos(tangletradius((s*/usr/lib64/python2.7/Demo/curses/tclock.pytA2XYscCstj|||dS(N(tstdscrtaddch(txtytcol((s*/usr/lib64/python2.7/Demo/curses/tclock.pytplotscCsttjr%tjtj|n||}||}t|d}t|d} t|} t|} |} |} || kr| |d}xtrt| | || |krdS|dkr| | 7} ||8}n| | 7} || 7}qWnr|| d}xatrot| | || |kr5dS|dkrX| | 7} || 8}n| | 7} ||7}qWdS(Nii( tcursest has_colorsR tattrsett color_pairtabsRtTrueR(tpairtfrom_xtfrom_ytx2ty2tchtdxtdytaxtaytsxtsyR Rtd((s*/usr/lib64/python2.7/Demo/curses/tclock.pytdlines>                  cCs$|ad}tj}tjdtjdtjrtjdtj|tjdtj|tjdtj |ntj dd}tj d}t |dt |td}d|d}|d}d|d}xetdd D]T} | dd td } t| |\} } tj|| || d | dqWtjddd t|dd}xtrtjdtj} tj| }|d|dd}|d kr|d 8}n|ddtd}t||\}}|dtd }t||\}}|ddtd} t| |\} } td||||||tdtjtjtd||||||tdtjtjtjrtjtjdnt|| || tdtjr&tjtjdntjtj ddtj| tj |dddkr|d|kr|d}tj!ntj"}|tdkrdSt|| || tdtd||||||tdtd||||||tdqvWdS(Niiiiiiiii g@g(@s%ds5ASCII Clock by Howard Jones , 1994iigN@t#t.tOtqt (#R Rt COLOR_BLACKtnodelayttimeoutRt init_pairt COLOR_REDt COLOR_MAGENTAt COLOR_GREENtCOLStLINEStminRRtrangetpiR taddstrtmaxRtnapmsttimet localtimeR$tordRt A_REVERSEtattroffRRtctimetrefreshtbeeptgetch(twintlastbeeptmy_bgtcxtcyRtmradiusthradiustsradiustitsangletsdxtsdyttimttthourstmangletmdxtmdythanglethdxthdy((s*/usr/lib64/python2.7/Demo/curses/tclock.pytmainCsn     ! '      ''  # $   '( tmathRR9RRR RR$RWtwrapper(((s*/usr/lib64/python2.7/Demo/curses/tclock.pyts     + PPK! c c rain.pynuȯ#! /usr/bin/python2.7 # # $Id$ # # somebody should probably check the randrange()s... import curses from random import randrange def next_j(j): if j == 0: j = 4 else: j -= 1 if curses.has_colors(): z = randrange(0, 3) color = curses.color_pair(z) if z: color = color | curses.A_BOLD stdscr.attrset(color) return j def main(win): # we know that the first argument from curses.wrapper() is stdscr. # Initialize it globally for convenience. global stdscr stdscr = win if curses.has_colors(): bg = curses.COLOR_BLACK curses.init_pair(1, curses.COLOR_BLUE, bg) curses.init_pair(2, curses.COLOR_CYAN, bg) curses.nl() curses.noecho() # XXX curs_set() always returns ERR # curses.curs_set(0) stdscr.timeout(0) c = curses.COLS - 4 r = curses.LINES - 4 xpos = [0] * c ypos = [0] * r for j in range(4, -1, -1): xpos[j] = randrange(0, c) + 2 ypos[j] = randrange(0, r) + 2 j = 0 while True: x = randrange(0, c) + 2 y = randrange(0, r) + 2 stdscr.addch(y, x, ord('.')) stdscr.addch(ypos[j], xpos[j], ord('o')) j = next_j(j) stdscr.addch(ypos[j], xpos[j], ord('O')) j = next_j(j) stdscr.addch( ypos[j] - 1, xpos[j], ord('-')) stdscr.addstr(ypos[j], xpos[j] - 1, "|.|") stdscr.addch( ypos[j] + 1, xpos[j], ord('-')) j = next_j(j) stdscr.addch( ypos[j] - 2, xpos[j], ord('-')) stdscr.addstr(ypos[j] - 1, xpos[j] - 1, "/ \\") stdscr.addstr(ypos[j], xpos[j] - 2, "| O |") stdscr.addstr(ypos[j] + 1, xpos[j] - 1, "\\ /") stdscr.addch( ypos[j] + 2, xpos[j], ord('-')) j = next_j(j) stdscr.addch( ypos[j] - 2, xpos[j], ord(' ')) stdscr.addstr(ypos[j] - 1, xpos[j] - 1, " ") stdscr.addstr(ypos[j], xpos[j] - 2, " ") stdscr.addstr(ypos[j] + 1, xpos[j] - 1, " ") stdscr.addch( ypos[j] + 2, xpos[j], ord(' ')) xpos[j] = x ypos[j] = y ch = stdscr.getch() if ch == ord('q') or ch == ord('Q'): return elif ch == ord('s'): stdscr.nodelay(0) elif ch == ord(' '): stdscr.nodelay(1) curses.napms(50) curses.wrapper(main) PK!r;5life.pynuȯ#! /usr/bin/python2.7 # life.py -- A curses-based version of Conway's Game of Life. # Contributed by AMK # # An empty board will be displayed, and the following commands are available: # E : Erase the board # R : Fill the board randomly # S : Step for a single generation # C : Update continuously until a key is struck # Q : Quit # Cursor keys : Move the cursor around the board # Space or Enter : Toggle the contents of the cursor's position # # TODO : # Support the mouse # Use colour if available # Make board updates faster # import random, string, traceback import curses class LifeBoard: """Encapsulates a Life board Attributes: X,Y : horizontal and vertical size of the board state : dictionary mapping (x,y) to 0 or 1 Methods: display(update_board) -- If update_board is true, compute the next generation. Then display the state of the board and refresh the screen. erase() -- clear the entire board makeRandom() -- fill the board randomly set(y,x) -- set the given cell to Live; doesn't refresh the screen toggle(y,x) -- change the given cell from live to dead, or vice versa, and refresh the screen display """ def __init__(self, scr, char=ord('*')): """Create a new LifeBoard instance. scr -- curses screen object to use for display char -- character used to render live cells (default: '*') """ self.state = {} self.scr = scr Y, X = self.scr.getmaxyx() self.X, self.Y = X-2, Y-2-1 self.char = char self.scr.clear() # Draw a border around the board border_line = '+'+(self.X*'-')+'+' self.scr.addstr(0, 0, border_line) self.scr.addstr(self.Y+1,0, border_line) for y in range(0, self.Y): self.scr.addstr(1+y, 0, '|') self.scr.addstr(1+y, self.X+1, '|') self.scr.refresh() def set(self, y, x): """Set a cell to the live state""" if x<0 or self.X<=x or y<0 or self.Y<=y: raise ValueError, "Coordinates out of range %i,%i"% (y,x) self.state[x,y] = 1 def toggle(self, y, x): """Toggle a cell's state between live and dead""" if x<0 or self.X<=x or y<0 or self.Y<=y: raise ValueError, "Coordinates out of range %i,%i"% (y,x) if self.state.has_key( (x,y) ): del self.state[x,y] self.scr.addch(y+1, x+1, ' ') else: self.state[x,y] = 1 self.scr.addch(y+1, x+1, self.char) self.scr.refresh() def erase(self): """Clear the entire board and update the board display""" self.state = {} self.display(update_board=False) def display(self, update_board=True): """Display the whole board, optionally computing one generation""" M,N = self.X, self.Y if not update_board: for i in range(0, M): for j in range(0, N): if self.state.has_key( (i,j) ): self.scr.addch(j+1, i+1, self.char) else: self.scr.addch(j+1, i+1, ' ') self.scr.refresh() return d = {} self.boring = 1 for i in range(0, M): L = range( max(0, i-1), min(M, i+2) ) for j in range(0, N): s = 0 live = self.state.has_key( (i,j) ) for k in range( max(0, j-1), min(N, j+2) ): for l in L: if self.state.has_key( (l,k) ): s += 1 s -= live if s == 3: # Birth d[i,j] = 1 self.scr.addch(j+1, i+1, self.char) if not live: self.boring = 0 elif s == 2 and live: d[i,j] = 1 # Survival elif live: # Death self.scr.addch(j+1, i+1, ' ') self.boring = 0 self.state = d self.scr.refresh() def makeRandom(self): "Fill the board with a random pattern" self.state = {} for i in range(0, self.X): for j in range(0, self.Y): if random.random() > 0.5: self.set(j,i) def erase_menu(stdscr, menu_y): "Clear the space where the menu resides" stdscr.move(menu_y, 0) stdscr.clrtoeol() stdscr.move(menu_y+1, 0) stdscr.clrtoeol() def display_menu(stdscr, menu_y): "Display the menu of possible keystroke commands" erase_menu(stdscr, menu_y) stdscr.addstr(menu_y, 4, 'Use the cursor keys to move, and space or Enter to toggle a cell.') stdscr.addstr(menu_y+1, 4, 'E)rase the board, R)andom fill, S)tep once or C)ontinuously, Q)uit') def keyloop(stdscr): # Clear the screen and display the menu of keys stdscr.clear() stdscr_y, stdscr_x = stdscr.getmaxyx() menu_y = (stdscr_y-3)-1 display_menu(stdscr, menu_y) # Allocate a subwindow for the Life board and create the board object subwin = stdscr.subwin(stdscr_y-3, stdscr_x, 0, 0) board = LifeBoard(subwin, char=ord('*')) board.display(update_board=False) # xpos, ypos are the cursor's position xpos, ypos = board.X//2, board.Y//2 # Main loop: while (1): stdscr.move(1+ypos, 1+xpos) # Move the cursor c = stdscr.getch() # Get a keystroke if 00: ypos -= 1 elif c == curses.KEY_DOWN and ypos0: xpos -= 1 elif c == curses.KEY_RIGHT and xposs   EPK!2Olife.pycnu[ Afc@sddlZddlZddlZddlZdd dYZdZdZdZdZe dkrej endS( iNt LifeBoardcBsPeZdZeddZdZdZdZedZ dZ RS(sEncapsulates a Life board Attributes: X,Y : horizontal and vertical size of the board state : dictionary mapping (x,y) to 0 or 1 Methods: display(update_board) -- If update_board is true, compute the next generation. Then display the state of the board and refresh the screen. erase() -- clear the entire board makeRandom() -- fill the board randomly set(y,x) -- set the given cell to Live; doesn't refresh the screen toggle(y,x) -- change the given cell from live to dead, or vice versa, and refresh the screen display t*cCs i|_||_|jj\}}|d|dd|_|_||_|jjd|jdd}|jjdd||jj|jdd|xUtd|jD]A}|jjd|dd|jjd||jddqW|jj dS(sCreate a new LifeBoard instance. scr -- curses screen object to use for display char -- character used to render live cells (default: '*') iit+t-it|N( tstatetscrtgetmaxyxtXtYtchartcleartaddstrtrangetrefresh(tselfRR R Rt border_linety((s(/usr/lib64/python2.7/Demo/curses/life.pyt__init__)s    %cCsc|dks6|j|ks6|dks6|j|krLtd||fnd|j||ftboardtxpostypostc((s(/usr/lib64/python2.7/Demo/curses/life.pytkeyloopsd                      "  " cCst|dS(N(RM(R4((s(/usr/lib64/python2.7/Demo/curses/life.pytmainst__main__(( R+tstringt tracebackRBRR6R7RMRNR-twrapper(((s(/usr/lib64/python2.7/Demo/curses/life.pyts$ n   ?  PK!& & __init__.pynu["""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() PK!E/ / ascii.pynu["""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 _ctoi(c) <= 127 # ? def isblank(c): return _ctoi(c) in (8,32) def iscntrl(c): return _ctoi(c) <= 31 def isdigit(c): return _ctoi(c) >= 48 and _ctoi(c) <= 57 def isgraph(c): return _ctoi(c) >= 33 and _ctoi(c) <= 126 def islower(c): return _ctoi(c) >= 97 and _ctoi(c) <= 122 def isprint(c): return _ctoi(c) >= 32 and _ctoi(c) <= 126 def ispunct(c): return _ctoi(c) != 32 and not isalnum(c) def isspace(c): return _ctoi(c) in (9, 10, 11, 12, 13, 32) def isupper(c): return _ctoi(c) >= 65 and _ctoi(c) <= 90 def isxdigit(c): return isdigit(c) or \ (_ctoi(c) >= 65 and _ctoi(c) <= 70) or (_ctoi(c) >= 97 and _ctoi(c) <= 102) def isctrl(c): return _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 PK! has_key.pynu[ # # 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) PK!G textpad.pynu["""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.maxy, self.maxx) = win.getmaxyx() self.maxy = self.maxy - 1 self.maxx = self.maxx - 1 self.stripspaces = 1 self.lastcmd = None win.keypad(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.""" 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): (y, x) = self.win.getyx() if 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 self.insert_mode: (backy, backx) = self.win.getyx() if curses.ascii.isprint(oldch): self._insert_printable_char(oldch) self.win.move(backy, backx) def do_command(self, ch): "Process a single editing command." (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 = "" 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)) PK!>3'__pycache__/ascii.cpython-312.opt-1.pycnu[ ֦i dZdZdZdZdZdZdZdZdZd Z d Z d Z d Z d Z 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/Z1d0Z2d1Z3d2Z4d3Z5d4Z6d5Z7d6Z8d7Z9y8)9z3Constants and membership tests for ASCII characters  )!NULSOHSTXETXEOTENQACKBELBSHTLFVTFFCRSOSIDLEDC1DC2DC3DC4NAKSYNETBCANEMSUBESCFSGSRSUSSPc<t|tr t|S|SN) isinstancestrordcs %/usr/lib64/python3.12/curses/ascii.py_ctoirM0s!S1v c2t|xs t|SrF)isalphaisdigitrJs rLisalnumrR6wqz/WQZ/rNc2t|xs t|SrF)isupperislowerrJs rLrPrP7rSrNc4dt|cxkxrdkScS)Nrr#rMrJs rLisasciirY8sqE!H+++++rNct|dvS)N)r r"rXrJs rLisblankr[9suQx7**rNcTdt|cxkxrdkncxst|dk(S)Nrr!r#rXrJs rLiscntrlr]:s"qE!H**=eAh#o=rNc4dt|cxkxrdkScS)N09rXrJs rLrQrQ;rU1X+++++rNc4dt|cxkxrdkScS)N!~rXrJs rLisgraphre<rU1X,,,,,rNc4dt|cxkxrdkScS)NazrXrJs rLrVrV=rfrNc4dt|cxkxrdkScS)Nr"rdrXrJs rLisprintrk>rfrNc4t|xr t| SrF)rerRrJs rLispunctrm?swqz4'!*n4rNct|dvS)N)r r r rrr"rXrJs rLisspacero@suQx#:::rNc4dt|cxkxrdkScS)NAZrXrJs rLrUrUArarNct|xs4dt|cxkxrdkncxsdt|cxkxrdkScS)NrqFrhf)rQrMrJs rLisxdigitrvBsA 658r6!U1X44646rNc4dt|cxkxrdkScS)Nrr"rXrJs rLisctrlrxDsa58(b((((rNct|dkDSNr#rXrJs rLismetar{EseAhn$rNclt|trtt|dzSt|dzSrzrGrHchrrMrJs rLasciirG-!S58d?##Qx$rNclt|trtt|dzSt|dzS)Nr!r}rJs rLctrlrMrrNclt|trtt|dzSt|dzS)Nr}rJs rLaltrSrrNct|}|dk(rd}n4t|dzrt|dz}ndt|dzdzdzz}|dzrd|zS|S)Nr#z^?^r"r!)rMrkr~)rKbitsreps rLunctrlrYsd 8D t|  $+C$+-566 d{Sy JrNN):__doc__r$r%r&r'r(r)r*r+r,TABr-r.NLr/r0r1r2r3r4r5r6r7r8r9r:r;r<r=r>r?r@rArBrCrDDEL controlnamesrMrRrPrYr[r]rQrerVrkrmrorUrvrxr{rrrrrNrLrs 9                                      0/+*=+,,,4:+6($   rNPK!z(z(#__pycache__/has_key.cpython-312.pycnu[ ֦iddlZiejdejdejdejdej dej dejdejd ejd ejd ejd ejd ejdejdejdej dej"diej$dej&dej(dej*dej,dej.dej0dej2dej4dej6dej8dej:dej<dej>d ej@d!ejBd"ejDd#iejFd$ejHd%ejJd&ejLd'ejNd(ejPd)ejRd*ejTd+ejVd,ejXd-ejZd.ej\d/ej^d0ej`d1ejbd2ejdd3ejfd4iejhd5ejjd6ejld7ejnd8ejpd9ejrd:ejtd;ejvd<ejxd=ejzd>ej|d?ej~d@ejdAejdBejdCejdDejdEiejdFejdGejdHejdIejdJejdKejdLejdMejdNejdOejdPejdQejdRejdSejdTejdUejdViejdWejdXejdYejdZejd[ejd\ejd]ejd^ejd_ejd`ejdaejdbejdcejddejdeejdfejdgiejdhejdiejdjejdkejdlejdmejdnejdoejdpejdqejdrejdsejdtejduejdvejdwejdxiejdyejdzejd{ejd|ejd}ejd~ejdejdejdejdejdejdejdej dej dejdejdejdejdejdejdejdejdejdej dej"dej$dej&dej(dej*di ZdZedk(r gZej4ej7D]LZej.eZeeZeek7s$ej?dej@eeefzN ejBeD] Zee yy#ejBeD] Zee wxYw)Nka1ka3kb2kbskbegkcbtkc1kc3kcanktbckclrkclokcmdkcpykcrtkctabkdch1kdl1kcud1krmirkendkentkelkedkextkf0kf1kf10kf11kf12kf13kf14kf15kf16kf17kf18kf19kf2kf20kf21kf22kf23kf24kf25kf26kf27kf28kf29kf3kf30kf31kf32kf33kf34kf35kf36kf37kf38kf39kf4kf40kf41kf42kf43kf44kf45kf46kf47kf48kf49kf5kf50kf51kf52kf53kf54kf55kf56kf57kf58kf59kf6kf60kf61kf62kf63kf7kf8kf9kfndkhlpkhomekich1kil1kcub1kllkmrkkmsgkmovknxtknpkopnkoptkppkprvkprtkrdokrefkrfrkrplkrstkreskcuf1ksavkBEGkCANkCMDkCPYkCRTkDCkDLksltkENDkEOLkEXTkindkFNDkHLPkHOMkICkLFTkMSGkMOVkNXTkOPTkPRVkPRTkrikRDOkRPLkRITkRESkSAVkSPDkhtskUNDkspdkundkcuu1ct|tr t|}tj |}|yt j |ryy)NFT) isinstancestrord_capability_namesget_cursestigetstr)chcapability_names '/usr/lib64/python3.12/curses/has_key.pyhas_keyrsF"c W(++B/O*__main__z)Mismatch for key %s, system=%i, Python=%i)rKEY_A1KEY_A3KEY_B2 KEY_BACKSPACEKEY_BEGKEY_BTABKEY_C1KEY_C3 KEY_CANCEL KEY_CATAB KEY_CLEAR KEY_CLOSE KEY_COMMANDKEY_COPY KEY_CREATEKEY_CTABKEY_DCKEY_DLKEY_DOWNKEY_EICKEY_END KEY_ENTERKEY_EOLKEY_EOSKEY_EXITKEY_F0KEY_F1KEY_F10KEY_F11KEY_F12KEY_F13KEY_F14KEY_F15KEY_F16KEY_F17KEY_F18KEY_F19KEY_F2KEY_F20KEY_F21KEY_F22KEY_F23KEY_F24KEY_F25KEY_F26KEY_F27KEY_F28KEY_F29KEY_F3KEY_F30KEY_F31KEY_F32KEY_F33KEY_F34KEY_F35KEY_F36KEY_F37KEY_F38KEY_F39KEY_F4KEY_F40KEY_F41KEY_F42KEY_F43KEY_F44KEY_F45KEY_F46KEY_F47KEY_F48KEY_F49KEY_F5KEY_F50KEY_F51KEY_F52KEY_F53KEY_F54KEY_F55KEY_F56KEY_F57KEY_F58KEY_F59KEY_F6KEY_F60KEY_F61KEY_F62KEY_F63KEY_F7KEY_F8KEY_F9KEY_FINDKEY_HELPKEY_HOMEKEY_ICKEY_ILKEY_LEFTKEY_LLKEY_MARK KEY_MESSAGEKEY_MOVEKEY_NEXT KEY_NPAGEKEY_OPEN KEY_OPTIONS KEY_PPAGE KEY_PREVIOUS KEY_PRINTKEY_REDO KEY_REFERENCE KEY_REFRESH KEY_REPLACE KEY_RESTART KEY_RESUME KEY_RIGHTKEY_SAVEKEY_SBEG KEY_SCANCEL KEY_SCOMMAND KEY_SCOPY KEY_SCREATEKEY_SDCKEY_SDL KEY_SELECTKEY_SENDKEY_SEOL KEY_SEXITKEY_SF KEY_SFIND KEY_SHELP KEY_SHOMEKEY_SIC KEY_SLEFT KEY_SMESSAGE KEY_SMOVE KEY_SNEXT KEY_SOPTIONS KEY_SPREVIOUS KEY_SPRINTKEY_SR KEY_SREDO KEY_SREPLACE KEY_SRIGHT KEY_SRSUME KEY_SSAVE KEY_SSUSPENDKEY_STAB KEY_SUNDO KEY_SUSPENDKEY_UNDOKEY_UPrr__name__LinitscrkeyskeysystempythonappendkeynameendwiniprintrrrHs  V NNEV NNEV NNEV 5 V  OOV V  f V NNEV NNEV V vV vV vV V fV V  g!V" NNG#V$ NNF%V& g'V( OOW)V* OOV+V, v-V. OOU/V0 OOU1V2 f3V4 NNE5V6 NNE7V8 OOV9V: OOV;V< OOV=V> OOV?V@ OOVAVB OOVCVD OOVEVF OOVGVH OOVIVJ OOVKVL NNEMVN OOVOVP OOVQVR OOVSVT OOVUVV OOVWVX OOVYVZ OOV[V\ OOV]V^ OOV_V` OOVaVb NNEcVd OOVeVf OOVgVh OOViVj OOVkVl OOVmVn OOVoVp OOVqVr OOVsVt OOVuVv OOVwVx NNEyVz OOV{V| OOV}V~ OOVV@ OOVAVB OOVCVD OOVEVF OOVGVH OOVIVJ OOVKVL OOVMVN NNEOVP OOVQVR OOVSVT OOVUVV OOVWVX OOVYVZ OOV[V\ OOV]V^ OOV_V` OOVaVb OOVcVd NNEeVf OOVgVh OOViVj OOVkVl OOVmVn NNEoVp NNEqVr NNEsVt fuVv fwVx gyVz NNG{V| NNF}V~ gV@ NNEAVB fCVD EVF fGVH fIVJ uKVL fMVN OVP uQVR &SVT vUVV fWVX 6YVZ [V\ ]V^ _V` aVb wcVd feVf fgVh iVj &kVl vmVn oVp OOUqVr OOUsVt uVv fwVx fyVz v{V| NNF}V~ vV@ vAVB vCVD OOUEVF vGVH &IVJ vKVL vMVN &OVP 6QVR  NNE v &   v & f v  f NNGkVp  z  $))+C$W__S)FS\FE,W__c3VVDEG , AE!H AE!Hs:Aa+a#a5PK!q``'__pycache__/ascii.cpython-312.opt-2.pycnu[ ֦i  dZdZdZdZdZdZdZdZdZd Z d Z d Z d Z d Z 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/Z1d0Z2d1Z3d2Z4d3Z5d4Z6d5Z7d6Z8y7)8  )!NULSOHSTXETXEOTENQACKBELBSHTLFVTFFCRSOSIDLEDC1DC2DC3DC4NAKSYNETBCANEMSUBESCFSGSRSUSSPc<t|tr t|S|SN) isinstancestrordcs %/usr/lib64/python3.12/curses/ascii.py_ctoirM0s!S1v c2t|xs t|SrF)isalphaisdigitrJs rLisalnumrR6wqz/WQZ/rNc2t|xs t|SrF)isupperislowerrJs rLrPrP7rSrNc4dt|cxkxrdkScS)Nrr#rMrJs rLisasciirY8sqE!H+++++rNct|dvS)N)r r"rXrJs rLisblankr[9suQx7**rNcTdt|cxkxrdkncxst|dk(S)Nrr!r#rXrJs rLiscntrlr]:s"qE!H**=eAh#o=rNc4dt|cxkxrdkScS)N09rXrJs rLrQrQ;rU1X+++++rNc4dt|cxkxrdkScS)N!~rXrJs rLisgraphre<rU1X,,,,,rNc4dt|cxkxrdkScS)NazrXrJs rLrVrV=rfrNc4dt|cxkxrdkScS)Nr"rdrXrJs rLisprintrk>rfrNc4t|xr t| SrF)rerRrJs rLispunctrm?swqz4'!*n4rNct|dvS)N)r r r rrr"rXrJs rLisspacero@suQx#:::rNc4dt|cxkxrdkScS)NAZrXrJs rLrUrUArarNct|xs4dt|cxkxrdkncxsdt|cxkxrdkScS)NrqFrhf)rQrMrJs rLisxdigitrvBsA 658r6!U1X44646rNc4dt|cxkxrdkScS)Nrr"rXrJs rLisctrlrxDsa58(b((((rNct|dkDSNr#rXrJs rLismetar{EseAhn$rNclt|trtt|dzSt|dzSrzrGrHchrrMrJs rLasciirG-!S58d?##Qx$rNclt|trtt|dzSt|dzS)Nr!r}rJs rLctrlrMrrNclt|trtt|dzSt|dzS)Nr}rJs rLaltrSrrNct|}|dk(rd}n4t|dzrt|dz}ndt|dzdzdzz}|dzrd|zS|S)Nr#z^?^r"r!)rMrkr~)rKbitsreps rLunctrlrYsd 8D t|  $+C$+-566 d{Sy JrNN)9r$r%r&r'r(r)r*r+r,TABr-r.NLr/r0r1r2r3r4r5r6r7r8r9r:r;r<r=r>r?r@rArBrCrDDEL controlnamesrMrRrPrYr[r]rQrerVrkrmrorUrvrxr{rrrrrNrLrs 9                                      0/+*=+,,,4:+6($   rNPK!'__pycache__/panel.cpython-312.opt-1.pycnu[ ֦iWdZddly)z3curses.panel Module for using panels with curses. )*N)__doc__ _curses_panel%/usr/lib64/python3.12/curses/panel.pyr s rPK!>3!__pycache__/ascii.cpython-312.pycnu[ ֦i dZdZdZdZdZdZdZdZdZd Z d Z d Z d Z d Z 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/Z1d0Z2d1Z3d2Z4d3Z5d4Z6d5Z7d6Z8d7Z9y8)9z3Constants and membership tests for ASCII characters  )!NULSOHSTXETXEOTENQACKBELBSHTLFVTFFCRSOSIDLEDC1DC2DC3DC4NAKSYNETBCANEMSUBESCFSGSRSUSSPc<t|tr t|S|SN) isinstancestrordcs %/usr/lib64/python3.12/curses/ascii.py_ctoirM0s!S1v c2t|xs t|SrF)isalphaisdigitrJs rLisalnumrR6wqz/WQZ/rNc2t|xs t|SrF)isupperislowerrJs rLrPrP7rSrNc4dt|cxkxrdkScS)Nrr#rMrJs rLisasciirY8sqE!H+++++rNct|dvS)N)r r"rXrJs rLisblankr[9suQx7**rNcTdt|cxkxrdkncxst|dk(S)Nrr!r#rXrJs rLiscntrlr]:s"qE!H**=eAh#o=rNc4dt|cxkxrdkScS)N09rXrJs rLrQrQ;rU1X+++++rNc4dt|cxkxrdkScS)N!~rXrJs rLisgraphre<rU1X,,,,,rNc4dt|cxkxrdkScS)NazrXrJs rLrVrV=rfrNc4dt|cxkxrdkScS)Nr"rdrXrJs rLisprintrk>rfrNc4t|xr t| SrF)rerRrJs rLispunctrm?swqz4'!*n4rNct|dvS)N)r r r rrr"rXrJs rLisspacero@suQx#:::rNc4dt|cxkxrdkScS)NAZrXrJs rLrUrUArarNct|xs4dt|cxkxrdkncxsdt|cxkxrdkScS)NrqFrhf)rQrMrJs rLisxdigitrvBsA 658r6!U1X44646rNc4dt|cxkxrdkScS)Nrr"rXrJs rLisctrlrxDsa58(b((((rNct|dkDSNr#rXrJs rLismetar{EseAhn$rNclt|trtt|dzSt|dzSrzrGrHchrrMrJs rLasciirG-!S58d?##Qx$rNclt|trtt|dzSt|dzS)Nr!r}rJs rLctrlrMrrNclt|trtt|dzSt|dzS)Nr}rJs rLaltrSrrNct|}|dk(rd}n4t|dzrt|dz}ndt|dzdzdzz}|dzrd|zS|S)Nr#z^?^r"r!)rMrkr~)rKbitsreps rLunctrlrYsd 8D t|  $+C$+-566 d{Sy JrNN):__doc__r$r%r&r'r(r)r*r+r,TABr-r.NLr/r0r1r2r3r4r5r6r7r8r9r:r;r<r=r>r?r@rArBrCrDDEL controlnamesrMrRrPrYr[r]rQrerVrkrmrorUrvrxr{rrrrrNrLrs 9                                      0/+*=+,,,4:+6($   rNPK!>)))__pycache__/textpad.cpython-312.opt-2.pycnu[ ֦iJ ddlZddlZdZGddZedk(r%dZej eZede eyy)Ncf |j|dz|tj||z dz |j||dztj||z dz |j||dztj||z dz |j|dz|tj||z dz |j ||tj |j ||tj|j ||tj|j ||tjyN) vlinecurses ACS_VLINEhline ACS_HLINEaddch ACS_ULCORNER ACS_URCORNER ACS_LRCORNER ACS_LLCORNER)winulyulxlrylrxs '/usr/lib64/python3.12/curses/textpad.py rectanglersIIc!eS&**C#IM:IIc3q5&**C#IM:IIc3q5&**C#IM:IIc!eS&**C#IM:IIc3++,IIc3++,IIc3++,IIc3++,c<eZdZ d dZdZdZdZdZdZd dZ y) Textboxc~||_||_|jd|_d|_|j dyr)r insert_mode_update_max_yx stripspaceslastcmdkeypad)selfrrs r__init__zTextbox.__init__+s7&   1 rcf|jj\}}|dz |_|dz |_yr)rgetmaxyxmaxymaxx)r r$r%s rrzTextbox._update_max_yx3s.XX&&( d1H 1H rc: |j|j} tjj|jj ||tjj k7rt|j|dz} |S|dk(r |S|dz }~)Nrr)rr%rasciirinchSPmin)r ylasts r _end_of_linezTextbox._end_of_line8s @ yy||!!$((--4"89V\\__L499d1f-  !8D rcn|j|jj\}}d}||jks||jkr|j r|jj } |jj||j rtjjsnE|}|jj\}}|||f}||jkr||jkr||jj|yy#tj$rYwxYwN) rrgetyxr$r%rr(r rerrorr'isprintmove)r chr+xbackyxoldchs r_insert_printable_charzTextbox._insert_printable_charFs !A$))mq499}  r"##6<<+?+?+FBXX^^%FQ~A!$))mq499}$   DHHMM6 " <<  s5DD43D4c |j|jj\}}||_tj j |r0||jks||jkr|j|y|tj jk(r|jj|dy|tj jtjtj jtjtj j fvr|dkDr |jj||dz nm|dk(rng|j"r2|jj|dz |j%|dz n)|jj|dz |j|tj jtjtj j fvr|jj'y|tj j(k(r|jj'y|tj j*k(r_|j"r,|jj||j%|y|jj||jy|tj j,tj.fvr`||jkr |jj||dzy||jk(r y|jj|dzdy|tj j0k(ry|tj j2k(r?|jdk(ry||jkr|jj|dzdy|tj j4k(rk|dk(r/|j%|dk(r|jj7y|jj|||jj9y|tj j:k(r|jj=y|tj j>tj@fvrw||jkrg|jj|dz|||j%|dzkDr1|jj|dz|j%|dzy|tj jBk(r|jjEy|tj jFtjHfvrl|dkDrg|jj|dz |||j%|dz kDr1|jj|dz |j%|dz y)Nrr)%rrr0rrr'r2r$r%r8SOHr3STXKEY_LEFTBS KEY_BACKSPACEDELrr-delchEOTENQACK KEY_RIGHTBELNLVTdeletelnclrtoeolFFrefreshSOKEY_DOWNSIinsertlnDLEKEY_UP)r r4r+r5s r do_commandzTextbox.do_command_s+ !A <<   #499}DII ++B/vu6<<## # HHMM!Q rqFLL$$V__LLOO((LL$$&&1u a1%a!! ac4#4#4QqS#9: ac499-flloov';';V\\=M=MNN VU6<<## # HHNN RQ6<<## # a!2!21!56LI a+HGFLL$$f&6&67 7499} a1%BAdii>; ac1%:96<<## # 6<6<rc  d}|jt|jdzD]}|jj |d|j |}|dk(r |j rBt|jdzD]Z}|j r||kDrnG|ttjj|jj||z}\|jdkDs|dz}|S)Nrr ) rranger$rr3r-rr%chrrr'r()r resultr+stopr5s rgatherzTextbox.gathers8 tyy{#A HHMM!Q $$Q'DqyT--499Q;'##D#fll&8&8q!9L&M"NN(yy1}$$ rNc |jj}|r||}|s(|j|s |j S|jjdr/)rgetchrRrKrZ)r validater4s reditz Textbox.edits\<!Bb\??2&{{} HH   r)Fr/) __name__ __module__ __qualname__r!rr-r8rRrZr^rrrrs,. #2BH" rr__main__cd\}}d\}}|j|dz |dtj||||}t||dz |dz ||z||z|j t |j S)N) )zUse Ctrl-G to end editing.r)addstrrnewwinrrKrr^)stdscrncolsnlinesrrrs r test_editboxrosz vS c!eS">?mmFE34&#a%Qf cEkBs|  ""rzContents of text box:) r curses.asciirrr_rowrapperstrprintreprrbrrrusU@  -ll\ z# &.. &C !49-rPK!=f+ $__pycache__/__init__.cpython-312.pycnu[ ֦i) bdZddlddlZddlZdZdZ edZ y#e $r ddlmZYdZ ywxYw) zcurses 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<ddl}ddl}ttjj ddt jj|j}|jjD]\}}|dddk(s|dvst|||!|S)NrTERMunknown)termfdACS_)LINESCOLS) _cursescurses setupterm_osenvironget_sys __stdout__filenoinitscr__dict__itemssetattr)r rstdscrkeyvalues (/usr/lib64/python3.12/curses/__init__.pyrrs3;;??695'')+ __ F&&,,. U q8v (9!9 FC '/ Mcddl}ddl}|j}t|dr|j|_t|dr|j |_|S)NrCOLORS COLOR_PAIRS)r r start_colorhasattrr r!)r rretvals rr"r"*sE  "Fw! w &$00 Mr)has_keyc t}tt|jd t ||g|i|dt vr0|jdt ttSS#YLxYw#dt vr0jdt ttwwxYw)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) rnoechocbreakkeypadr"localsechonocbreakendwin)funcargskwdsrs rwrapperr2?s   a   MF*T*T* vx  MM!  F J H    vx  MM!  F J H s!/B B B BB >C ) __doc__r osrsysrrr"r& NameErrorr2rrr8sE  "! &! &!s  ..PK!!__pycache__/panel.cpython-312.pycnu[ ֦iWdZddly)z3curses.panel Module for using panels with curses. )*N)__doc__ _curses_panel%/usr/lib64/python3.12/curses/panel.pyr s rPK!z(z()__pycache__/has_key.cpython-312.opt-2.pycnu[ ֦iddlZiejdejdejdejdej dej dejdejd ejd ejd ejd ejd ejdejdejdej dej"diej$dej&dej(dej*dej,dej.dej0dej2dej4dej6dej8dej:dej<dej>d ej@d!ejBd"ejDd#iejFd$ejHd%ejJd&ejLd'ejNd(ejPd)ejRd*ejTd+ejVd,ejXd-ejZd.ej\d/ej^d0ej`d1ejbd2ejdd3ejfd4iejhd5ejjd6ejld7ejnd8ejpd9ejrd:ejtd;ejvd<ejxd=ejzd>ej|d?ej~d@ejdAejdBejdCejdDejdEiejdFejdGejdHejdIejdJejdKejdLejdMejdNejdOejdPejdQejdRejdSejdTejdUejdViejdWejdXejdYejdZejd[ejd\ejd]ejd^ejd_ejd`ejdaejdbejdcejddejdeejdfejdgiejdhejdiejdjejdkejdlejdmejdnejdoejdpejdqejdrejdsejdtejduejdvejdwejdxiejdyejdzejd{ejd|ejd}ejd~ejdejdejdejdejdejdejdej dej dejdejdejdejdejdejdejdejdejdej dej"dej$dej&dej(dej*di ZdZedk(r gZej4ej7D]LZej.eZeeZeek7s$ej?dej@eeefzN ejBeD] Zee yy#ejBeD] Zee wxYw)Nka1ka3kb2kbskbegkcbtkc1kc3kcanktbckclrkclokcmdkcpykcrtkctabkdch1kdl1kcud1krmirkendkentkelkedkextkf0kf1kf10kf11kf12kf13kf14kf15kf16kf17kf18kf19kf2kf20kf21kf22kf23kf24kf25kf26kf27kf28kf29kf3kf30kf31kf32kf33kf34kf35kf36kf37kf38kf39kf4kf40kf41kf42kf43kf44kf45kf46kf47kf48kf49kf5kf50kf51kf52kf53kf54kf55kf56kf57kf58kf59kf6kf60kf61kf62kf63kf7kf8kf9kfndkhlpkhomekich1kil1kcub1kllkmrkkmsgkmovknxtknpkopnkoptkppkprvkprtkrdokrefkrfrkrplkrstkreskcuf1ksavkBEGkCANkCMDkCPYkCRTkDCkDLksltkENDkEOLkEXTkindkFNDkHLPkHOMkICkLFTkMSGkMOVkNXTkOPTkPRVkPRTkrikRDOkRPLkRITkRESkSAVkSPDkhtskUNDkspdkundkcuu1ct|tr t|}tj |}|yt j |ryy)NFT) isinstancestrord_capability_namesget_cursestigetstr)chcapability_names '/usr/lib64/python3.12/curses/has_key.pyhas_keyrsF"c W(++B/O*__main__z)Mismatch for key %s, system=%i, Python=%i)rKEY_A1KEY_A3KEY_B2 KEY_BACKSPACEKEY_BEGKEY_BTABKEY_C1KEY_C3 KEY_CANCEL KEY_CATAB KEY_CLEAR KEY_CLOSE KEY_COMMANDKEY_COPY KEY_CREATEKEY_CTABKEY_DCKEY_DLKEY_DOWNKEY_EICKEY_END KEY_ENTERKEY_EOLKEY_EOSKEY_EXITKEY_F0KEY_F1KEY_F10KEY_F11KEY_F12KEY_F13KEY_F14KEY_F15KEY_F16KEY_F17KEY_F18KEY_F19KEY_F2KEY_F20KEY_F21KEY_F22KEY_F23KEY_F24KEY_F25KEY_F26KEY_F27KEY_F28KEY_F29KEY_F3KEY_F30KEY_F31KEY_F32KEY_F33KEY_F34KEY_F35KEY_F36KEY_F37KEY_F38KEY_F39KEY_F4KEY_F40KEY_F41KEY_F42KEY_F43KEY_F44KEY_F45KEY_F46KEY_F47KEY_F48KEY_F49KEY_F5KEY_F50KEY_F51KEY_F52KEY_F53KEY_F54KEY_F55KEY_F56KEY_F57KEY_F58KEY_F59KEY_F6KEY_F60KEY_F61KEY_F62KEY_F63KEY_F7KEY_F8KEY_F9KEY_FINDKEY_HELPKEY_HOMEKEY_ICKEY_ILKEY_LEFTKEY_LLKEY_MARK KEY_MESSAGEKEY_MOVEKEY_NEXT KEY_NPAGEKEY_OPEN KEY_OPTIONS KEY_PPAGE KEY_PREVIOUS KEY_PRINTKEY_REDO KEY_REFERENCE KEY_REFRESH KEY_REPLACE KEY_RESTART KEY_RESUME KEY_RIGHTKEY_SAVEKEY_SBEG KEY_SCANCEL KEY_SCOMMAND KEY_SCOPY KEY_SCREATEKEY_SDCKEY_SDL KEY_SELECTKEY_SENDKEY_SEOL KEY_SEXITKEY_SF KEY_SFIND KEY_SHELP KEY_SHOMEKEY_SIC KEY_SLEFT KEY_SMESSAGE KEY_SMOVE KEY_SNEXT KEY_SOPTIONS KEY_SPREVIOUS KEY_SPRINTKEY_SR KEY_SREDO KEY_SREPLACE KEY_SRIGHT KEY_SRSUME KEY_SSAVE KEY_SSUSPENDKEY_STAB KEY_SUNDO KEY_SUSPENDKEY_UNDOKEY_UPrr__name__LinitscrkeyskeysystempythonappendkeynameendwiniprintrrrHs  V NNEV NNEV NNEV 5 V  OOV V  f V NNEV NNEV V vV vV vV V fV V  g!V" NNG#V$ NNF%V& g'V( OOW)V* OOV+V, v-V. OOU/V0 OOU1V2 f3V4 NNE5V6 NNE7V8 OOV9V: OOV;V< OOV=V> OOV?V@ OOVAVB OOVCVD OOVEVF OOVGVH OOVIVJ OOVKVL NNEMVN OOVOVP OOVQVR OOVSVT OOVUVV OOVWVX OOVYVZ OOV[V\ OOV]V^ OOV_V` OOVaVb NNEcVd OOVeVf OOVgVh OOViVj OOVkVl OOVmVn OOVoVp OOVqVr OOVsVt OOVuVv OOVwVx NNEyVz OOV{V| OOV}V~ OOVV@ OOVAVB OOVCVD OOVEVF OOVGVH OOVIVJ OOVKVL OOVMVN NNEOVP OOVQVR OOVSVT OOVUVV OOVWVX OOVYVZ OOV[V\ OOV]V^ OOV_V` OOVaVb OOVcVd NNEeVf OOVgVh OOViVj OOVkVl OOVmVn NNEoVp NNEqVr NNEsVt fuVv fwVx gyVz NNG{V| NNF}V~ gV@ NNEAVB fCVD EVF fGVH fIVJ uKVL fMVN OVP uQVR &SVT vUVV fWVX 6YVZ [V\ ]V^ _V` aVb wcVd feVf fgVh iVj &kVl vmVn oVp OOUqVr OOUsVt uVv fwVx fyVz v{V| NNF}V~ vV@ vAVB vCVD OOUEVF vGVH &IVJ vKVL vMVN &OVP 6QVR  NNE v &   v & f v  f NNGkVp  z  $))+C$W__S)FS\FE,W__c3VVDEG , AE!H AE!Hs:Aa+a#a5PK!W=//)__pycache__/textpad.cpython-312.opt-1.pycnu[ ֦iJdZddlZddlZdZGddZedk(r%dZejeZe de eyy) z:Simple textbox editing widget with Emacs-like keybindings.Ncd|j|dz|tj||z dz |j||dztj||z dz |j||dztj||z dz |j|dz|tj||z dz |j ||tj |j ||tj|j ||tj|j ||tjy)z^Draw a rectangle with corners at the provided upper-left and lower-right coordinates. N) vlinecurses ACS_VLINEhline ACS_HLINEaddch ACS_ULCORNER ACS_URCORNER ACS_LRCORNER ACS_LLCORNER)winulyulxlrylrxs '/usr/lib64/python3.12/curses/textpad.py rectanglersIIc!eS&**C#IM:IIc3q5&**C#IM:IIc3q5&**C#IM:IIc!eS&**C#IM:IIc3++,IIc3++,IIc3++,IIc3++,c>eZdZdZd dZdZdZdZdZdZ d d Z y) 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 c~||_||_|jd|_d|_|j dyNr)r insert_mode_update_max_yx stripspaceslastcmdkeypad)selfrrs r__init__zTextbox.__init__+s7&   1 rcf|jj\}}|dz |_|dz |_yr)rgetmaxyxmaxymaxx)r r$r%s rrzTextbox._update_max_yx3s.XX&&( d1H 1H rc8|j|j} tjj|jj ||tjj k7rt|j|dz} |S|dk(r |S|dz }~)zuGo to the location of the first blank on the given line, returning the index of the last non-blank character.rr)rr%rasciirinchSPmin)r ylasts r _end_of_linezTextbox._end_of_line8s yy||!!$((--4"89V\\__L499d1f-  !8D rcn|j|jj\}}d}||jks||jkr|j r|jj } |jj||j rtjjsnE|}|jj\}}|||f}||jkr||jkr||jj|yy#tj$rYwxYwN) rrgetyxr$r%rr(r rerrorr'isprintmove)r chr+xbackyxoldchs r_insert_printable_charzTextbox._insert_printable_charFs !A$))mq499}  r"##6<<+?+?+FBXX^^%FQ~A!$))mq499}$   DHHMM6 " <<  s5DD43D4c |j|jj\}}||_tj j |r0||jks||jkr|j|y|tj jk(r|jj|dy|tj jtjtj jtjtj j fvr|dkDr |jj||dz nm|dk(rng|j"r2|jj|dz |j%|dz n)|jj|dz |j|tj jtjtj j fvr|jj'y|tj j(k(r|jj'y|tj j*k(r_|j"r,|jj||j%|y|jj||jy|tj j,tj.fvr`||jkr |jj||dzy||jk(r y|jj|dzdy|tj j0k(ry|tj j2k(r?|jdk(ry||jkr|jj|dzdy|tj j4k(rk|dk(r/|j%|dk(r|jj7y|jj|||jj9y|tj j:k(r|jj=y|tj j>tj@fvrw||jkrg|jj|dz|||j%|dzkDr1|jj|dz|j%|dzy|tj jBk(r|jjEy|tj jFtjHfvrl|dkDrg|jj|dz |||j%|dz kDr1|jj|dz |j%|dz y)z!Process a single editing command.rr)%rrr0rrr'r2r$r%r8SOHr3STXKEY_LEFTBS KEY_BACKSPACEDELrr-delchEOTENQACK KEY_RIGHTBELNLVTdeletelnclrtoeolFFrefreshSOKEY_DOWNSIinsertlnDLEKEY_UP)r r4r+r5s r do_commandzTextbox.do_command_s !A <<   #499}DII ++B/vu6<<## # HHMM!Q rqFLL$$V__LLOO((LL$$&&1u a1%a!! ac4#4#4QqS#9: ac499-flloov';';V\\=M=MNN VU6<<## # HHNN RQ6<<## # a!2!21!56LI a+HGFLL$$f&6&67 7499} a1%BAdii>; ac1%:96<<## # 6<6<rc d}|jt|jdzD]}|jj |d|j |}|dk(r |j rBt|jdzD]Z}|j r||kDrnG|ttjj|jj||z}\|jdkDs|dz}|S)z.Collect and return the contents of the window.rr ) rranger$rr3r-rr%chrrr'r()r resultr+stopr5s rgatherzTextbox.gathers tyy{#A HHMM!Q $$Q'DqyT--499Q;'##D#fll&8&8q!9L&M"NN(yy1}$$ rNc |jj}|r||}|s(|j|s |j S|jjd)z2Edit in the widget window and collect the results.)rgetchrRrKrZ)r validater4s reditz Textbox.editsY!Bb\??2&{{} HH   r)Fr/) __name__ __module__ __qualname____doc__r!rr-r8rRrZr^rrrrs,. #2BH" rr__main__cd\}}d\}}|j|dz |dtj||||}t||dz |dz ||z||z|j t |j S)N) )zUse Ctrl-G to end editing.r)addstrrnewwinrrKrr^)stdscrncolsnlinesrrrs r test_editboxrpsz vS c!eS">?mmFE34&#a%Qf cEkBs|  ""rzContents of text box:) rbr curses.asciirrr_rpwrapperstrprintreprrcrrrvsU@  -ll\ z# &.. &C !49-rPK!=f+ *__pycache__/__init__.cpython-312.opt-1.pycnu[ ֦i) bdZddlddlZddlZdZdZ edZ y#e $r ddlmZYdZ ywxYw) zcurses 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<ddl}ddl}ttjj ddt jj|j}|jjD]\}}|dddk(s|dvst|||!|S)NrTERMunknown)termfdACS_)LINESCOLS) _cursescurses setupterm_osenvironget_sys __stdout__filenoinitscr__dict__itemssetattr)r rstdscrkeyvalues (/usr/lib64/python3.12/curses/__init__.pyrrs3;;??695'')+ __ F&&,,. U q8v (9!9 FC '/ Mcddl}ddl}|j}t|dr|j|_t|dr|j |_|S)NrCOLORS COLOR_PAIRS)r r start_colorhasattrr r!)r rretvals rr"r"*sE  "Fw! w &$00 Mr)has_keyc t}tt|jd t ||g|i|dt vr0|jdt ttSS#YLxYw#dt vr0jdt ttwwxYw)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) rnoechocbreakkeypadr"localsechonocbreakendwin)funcargskwdsrs rwrapperr2?s   a   MF*T*T* vx  MM!  F J H    vx  MM!  F J H s!/B B B BB >C ) __doc__r osrsysrrr"r& NameErrorr2rrr8sE  "! &! &!s  ..PK!z(z()__pycache__/has_key.cpython-312.opt-1.pycnu[ ֦iddlZiejdejdejdejdej dej dejdejd ejd ejd ejd ejd ejdejdejdej dej"diej$dej&dej(dej*dej,dej.dej0dej2dej4dej6dej8dej:dej<dej>d ej@d!ejBd"ejDd#iejFd$ejHd%ejJd&ejLd'ejNd(ejPd)ejRd*ejTd+ejVd,ejXd-ejZd.ej\d/ej^d0ej`d1ejbd2ejdd3ejfd4iejhd5ejjd6ejld7ejnd8ejpd9ejrd:ejtd;ejvd<ejxd=ejzd>ej|d?ej~d@ejdAejdBejdCejdDejdEiejdFejdGejdHejdIejdJejdKejdLejdMejdNejdOejdPejdQejdRejdSejdTejdUejdViejdWejdXejdYejdZejd[ejd\ejd]ejd^ejd_ejd`ejdaejdbejdcejddejdeejdfejdgiejdhejdiejdjejdkejdlejdmejdnejdoejdpejdqejdrejdsejdtejduejdvejdwejdxiejdyejdzejd{ejd|ejd}ejd~ejdejdejdejdejdejdejdej dej dejdejdejdejdejdejdejdejdejdej dej"dej$dej&dej(dej*di ZdZedk(r gZej4ej7D]LZej.eZeeZeek7s$ej?dej@eeefzN ejBeD] Zee yy#ejBeD] Zee wxYw)Nka1ka3kb2kbskbegkcbtkc1kc3kcanktbckclrkclokcmdkcpykcrtkctabkdch1kdl1kcud1krmirkendkentkelkedkextkf0kf1kf10kf11kf12kf13kf14kf15kf16kf17kf18kf19kf2kf20kf21kf22kf23kf24kf25kf26kf27kf28kf29kf3kf30kf31kf32kf33kf34kf35kf36kf37kf38kf39kf4kf40kf41kf42kf43kf44kf45kf46kf47kf48kf49kf5kf50kf51kf52kf53kf54kf55kf56kf57kf58kf59kf6kf60kf61kf62kf63kf7kf8kf9kfndkhlpkhomekich1kil1kcub1kllkmrkkmsgkmovknxtknpkopnkoptkppkprvkprtkrdokrefkrfrkrplkrstkreskcuf1ksavkBEGkCANkCMDkCPYkCRTkDCkDLksltkENDkEOLkEXTkindkFNDkHLPkHOMkICkLFTkMSGkMOVkNXTkOPTkPRVkPRTkrikRDOkRPLkRITkRESkSAVkSPDkhtskUNDkspdkundkcuu1ct|tr t|}tj |}|yt j |ryy)NFT) isinstancestrord_capability_namesget_cursestigetstr)chcapability_names '/usr/lib64/python3.12/curses/has_key.pyhas_keyrsF"c W(++B/O*__main__z)Mismatch for key %s, system=%i, Python=%i)rKEY_A1KEY_A3KEY_B2 KEY_BACKSPACEKEY_BEGKEY_BTABKEY_C1KEY_C3 KEY_CANCEL KEY_CATAB KEY_CLEAR KEY_CLOSE KEY_COMMANDKEY_COPY KEY_CREATEKEY_CTABKEY_DCKEY_DLKEY_DOWNKEY_EICKEY_END KEY_ENTERKEY_EOLKEY_EOSKEY_EXITKEY_F0KEY_F1KEY_F10KEY_F11KEY_F12KEY_F13KEY_F14KEY_F15KEY_F16KEY_F17KEY_F18KEY_F19KEY_F2KEY_F20KEY_F21KEY_F22KEY_F23KEY_F24KEY_F25KEY_F26KEY_F27KEY_F28KEY_F29KEY_F3KEY_F30KEY_F31KEY_F32KEY_F33KEY_F34KEY_F35KEY_F36KEY_F37KEY_F38KEY_F39KEY_F4KEY_F40KEY_F41KEY_F42KEY_F43KEY_F44KEY_F45KEY_F46KEY_F47KEY_F48KEY_F49KEY_F5KEY_F50KEY_F51KEY_F52KEY_F53KEY_F54KEY_F55KEY_F56KEY_F57KEY_F58KEY_F59KEY_F6KEY_F60KEY_F61KEY_F62KEY_F63KEY_F7KEY_F8KEY_F9KEY_FINDKEY_HELPKEY_HOMEKEY_ICKEY_ILKEY_LEFTKEY_LLKEY_MARK KEY_MESSAGEKEY_MOVEKEY_NEXT KEY_NPAGEKEY_OPEN KEY_OPTIONS KEY_PPAGE KEY_PREVIOUS KEY_PRINTKEY_REDO KEY_REFERENCE KEY_REFRESH KEY_REPLACE KEY_RESTART KEY_RESUME KEY_RIGHTKEY_SAVEKEY_SBEG KEY_SCANCEL KEY_SCOMMAND KEY_SCOPY KEY_SCREATEKEY_SDCKEY_SDL KEY_SELECTKEY_SENDKEY_SEOL KEY_SEXITKEY_SF KEY_SFIND KEY_SHELP KEY_SHOMEKEY_SIC KEY_SLEFT KEY_SMESSAGE KEY_SMOVE KEY_SNEXT KEY_SOPTIONS KEY_SPREVIOUS KEY_SPRINTKEY_SR KEY_SREDO KEY_SREPLACE KEY_SRIGHT KEY_SRSUME KEY_SSAVE KEY_SSUSPENDKEY_STAB KEY_SUNDO KEY_SUSPENDKEY_UNDOKEY_UPrr__name__LinitscrkeyskeysystempythonappendkeynameendwiniprintrrrHs  V NNEV NNEV NNEV 5 V  OOV V  f V NNEV NNEV V vV vV vV V fV V  g!V" NNG#V$ NNF%V& g'V( OOW)V* OOV+V, v-V. OOU/V0 OOU1V2 f3V4 NNE5V6 NNE7V8 OOV9V: OOV;V< OOV=V> OOV?V@ OOVAVB OOVCVD OOVEVF OOVGVH OOVIVJ OOVKVL NNEMVN OOVOVP OOVQVR OOVSVT OOVUVV OOVWVX OOVYVZ OOV[V\ OOV]V^ OOV_V` OOVaVb NNEcVd OOVeVf OOVgVh OOViVj OOVkVl OOVmVn OOVoVp OOVqVr OOVsVt OOVuVv OOVwVx NNEyVz OOV{V| OOV}V~ OOVV@ OOVAVB OOVCVD OOVEVF OOVGVH OOVIVJ OOVKVL OOVMVN NNEOVP OOVQVR OOVSVT OOVUVV OOVWVX OOVYVZ OOV[V\ OOV]V^ OOV_V` OOVaVb OOVcVd NNEeVf OOVgVh OOViVj OOVkVl OOVmVn NNEoVp NNEqVr NNEsVt fuVv fwVx gyVz NNG{V| NNF}V~ gV@ NNEAVB fCVD EVF fGVH fIVJ uKVL fMVN OVP uQVR &SVT vUVV fWVX 6YVZ [V\ ]V^ _V` aVb wcVd feVf fgVh iVj &kVl vmVn oVp OOUqVr OOUsVt uVv fwVx fyVz v{V| NNF}V~ vV@ vAVB vCVD OOUEVF vGVH &IVJ vKVL vMVN &OVP 6QVR  NNE v &   v & f v  f NNGkVp  z  $))+C$W__S)FS\FE,W__c3VVDEG , AE!H AE!Hs:Aa+a#a5PK!W=//#__pycache__/textpad.cpython-312.pycnu[ ֦iJdZddlZddlZdZGddZedk(r%dZejeZe de eyy) z:Simple textbox editing widget with Emacs-like keybindings.Ncd|j|dz|tj||z dz |j||dztj||z dz |j||dztj||z dz |j|dz|tj||z dz |j ||tj |j ||tj|j ||tj|j ||tjy)z^Draw a rectangle with corners at the provided upper-left and lower-right coordinates. N) vlinecurses ACS_VLINEhline ACS_HLINEaddch ACS_ULCORNER ACS_URCORNER ACS_LRCORNER ACS_LLCORNER)winulyulxlrylrxs '/usr/lib64/python3.12/curses/textpad.py rectanglersIIc!eS&**C#IM:IIc3q5&**C#IM:IIc3q5&**C#IM:IIc!eS&**C#IM:IIc3++,IIc3++,IIc3++,IIc3++,c>eZdZdZd dZdZdZdZdZdZ d d Z y) 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 c~||_||_|jd|_d|_|j dyNr)r insert_mode_update_max_yx stripspaceslastcmdkeypad)selfrrs r__init__zTextbox.__init__+s7&   1 rcf|jj\}}|dz |_|dz |_yr)rgetmaxyxmaxymaxx)r r$r%s rrzTextbox._update_max_yx3s.XX&&( d1H 1H rc8|j|j} tjj|jj ||tjj k7rt|j|dz} |S|dk(r |S|dz }~)zuGo to the location of the first blank on the given line, returning the index of the last non-blank character.rr)rr%rasciirinchSPmin)r ylasts r _end_of_linezTextbox._end_of_line8s yy||!!$((--4"89V\\__L499d1f-  !8D rcn|j|jj\}}d}||jks||jkr|j r|jj } |jj||j rtjjsnE|}|jj\}}|||f}||jkr||jkr||jj|yy#tj$rYwxYwN) rrgetyxr$r%rr(r rerrorr'isprintmove)r chr+xbackyxoldchs r_insert_printable_charzTextbox._insert_printable_charFs !A$))mq499}  r"##6<<+?+?+FBXX^^%FQ~A!$))mq499}$   DHHMM6 " <<  s5DD43D4c |j|jj\}}||_tj j |r0||jks||jkr|j|y|tj jk(r|jj|dy|tj jtjtj jtjtj j fvr|dkDr |jj||dz nm|dk(rng|j"r2|jj|dz |j%|dz n)|jj|dz |j|tj jtjtj j fvr|jj'y|tj j(k(r|jj'y|tj j*k(r_|j"r,|jj||j%|y|jj||jy|tj j,tj.fvr`||jkr |jj||dzy||jk(r y|jj|dzdy|tj j0k(ry|tj j2k(r?|jdk(ry||jkr|jj|dzdy|tj j4k(rk|dk(r/|j%|dk(r|jj7y|jj|||jj9y|tj j:k(r|jj=y|tj j>tj@fvrw||jkrg|jj|dz|||j%|dzkDr1|jj|dz|j%|dzy|tj jBk(r|jjEy|tj jFtjHfvrl|dkDrg|jj|dz |||j%|dz kDr1|jj|dz |j%|dz y)z!Process a single editing command.rr)%rrr0rrr'r2r$r%r8SOHr3STXKEY_LEFTBS KEY_BACKSPACEDELrr-delchEOTENQACK KEY_RIGHTBELNLVTdeletelnclrtoeolFFrefreshSOKEY_DOWNSIinsertlnDLEKEY_UP)r r4r+r5s r do_commandzTextbox.do_command_s !A <<   #499}DII ++B/vu6<<## # HHMM!Q rqFLL$$V__LLOO((LL$$&&1u a1%a!! ac4#4#4QqS#9: ac499-flloov';';V\\=M=MNN VU6<<## # HHNN RQ6<<## # a!2!21!56LI a+HGFLL$$f&6&67 7499} a1%BAdii>; ac1%:96<<## # 6<6<rc d}|jt|jdzD]}|jj |d|j |}|dk(r |j rBt|jdzD]Z}|j r||kDrnG|ttjj|jj||z}\|jdkDs|dz}|S)z.Collect and return the contents of the window.rr ) rranger$rr3r-rr%chrrr'r()r resultr+stopr5s rgatherzTextbox.gathers tyy{#A HHMM!Q $$Q'DqyT--499Q;'##D#fll&8&8q!9L&M"NN(yy1}$$ rNc |jj}|r||}|s(|j|s |j S|jjd)z2Edit in the widget window and collect the results.)rgetchrRrKrZ)r validater4s reditz Textbox.editsY!Bb\??2&{{} HH   r)Fr/) __name__ __module__ __qualname____doc__r!rr-r8rRrZr^rrrrs,. #2BH" rr__main__cd\}}d\}}|j|dz |dtj||||}t||dz |dz ||z||z|j t |j S)N) )zUse Ctrl-G to end editing.r)addstrrnewwinrrKrr^)stdscrncolsnlinesrrrs r test_editboxrpsz vS c!eS">?mmFE34&#a%Qf cEkBs|  ""rzContents of text box:) rbr curses.asciirrr_rpwrapperstrprintreprrcrrrvsU@  -ll\ z# &.. &C !49-rPK!إ-'__pycache__/panel.cpython-312.opt-2.pycnu[ ֦iW ddly))*N) _curses_panel%/usr/lib64/python3.12/curses/panel.pyrs rPK!*__pycache__/__init__.cpython-312.opt-2.pycnu[ ֦i) ` ddlddlZddlZdZdZ edZ y#e$r ddlmZYdZ ywxYw))*Nc<ddl}ddl}ttjj ddt jj|j}|jjD]\}}|dddk(s|dvst|||!|S)NrTERMunknown)termfdACS_)LINESCOLS) _cursescurses setupterm_osenvironget_sys __stdout__filenoinitscr__dict__itemssetattr)r rstdscrkeyvalues (/usr/lib64/python3.12/curses/__init__.pyrrs3;;??695'')+ __ F&&,,. U q8v (9!9 FC '/ Mcddl}ddl}|j}t|dr|j|_t|dr|j |_|S)NrCOLORS COLOR_PAIRS)r r start_colorhasattrr r!)r rretvals rr"r"*sE  "Fw! w &$00 Mr)has_keyc t}tt|jd t ||g|i|dt vr0|jdt ttSS#YLxYw#dt vr0jdt ttwwxYw)Nr%rr) rnoechocbreakkeypadr"localsechonocbreakendwin)funcargskwdsrs rwrapperr2?s   a   MF*T*T* vx  MM!  F J H    vx  MM!  F J H s!/B B B B B >C ) r osrsysrrr"r& NameErrorr2rrr7sE  "! &! &!s  --PK!xfWWpanel.pynu["""curses.panel Module for using panels with curses. """ from _curses_panel import * PK!@>> 6>>qrc d}|t|jdzD]}|j|d||}|dkr|jr@t|jdzD]Y}|jr||krnI|ttj |j ||z}Z|jdkr|dz}|S)z.Collect and return the contents of the window.rr ) rranger$rr3r-rr%chrrr'r()r resultr+stopr5s rgatherzTextbox.gathers ty{## ' 'A HMM!Q   $$Q''DqyyT-y49Q;'' O O#DE#fl&8&8q!9L9L&M&M"N"NNy1}}$ rNc |j}|r ||}|s*||sn|jY|S)z2Edit in the widget window and collect the results.)rgetchrQrJrY)r validater4s reditz Textbox.editsx !!B "Xb\\ ??2&&  H      {{}}r)Fr/) __name__ __module__ __qualname____doc__r!rr-r8rQrYr]rrrrs.   ###2???B"      rr__main__c d\}}d\}}||dz |dtj||||}t||dz |dz ||z||z|t |S)N) )zUse Ctrl-G to end editing.r)addstrrnewwinrrJrr])stdscrncolsnlinesrrrs r test_editboxros vS c!eS">???mFE344&#a%Qf cEkBBBs||  """rzContents of text box:) rar curses.asciirrr^rowrapperstrprintreprrbrrrus@@  - - -iiiiiiiiV z### &. & &C E !4499-----rPK!qvo *__pycache__/__init__.cpython-311.opt-2.pycnu[ 0i) \ ddlTddlZddlZdZdZ en#e$r ddlmZYnwxYwdZ dS))*NcXddl}ddl}ttjddt j| }|j D](\}}|dddks|dvrt|||)|S)NrTERMunknown)termfdACS_)LINESCOLS) _cursescurses setupterm_osenvironget_sys __stdout__filenoinitscr__dict__itemssetattr)r rstdscrkeyvalues 6/opt/alt/python311/lib64/python3.11/curses/__init__.pyrrs3;??6955''))++++ __  F&,,..(( U qs8v  (9!9!9 FC ' ' ' Mcddl}ddl}|}t|dr |j|_t|dr |j|_|S)NrCOLORS COLOR_PAIRS)r r start_colorhasattrr r!)r rretvals rr"r"*sh  " "Fw!!' w &&1$0 Mr)has_keyc t}tt|d t n#YnxYw||g|Ri|dt vr@|dt ttSS#dt vr@|dt ttwwxYw)Nr%rr) rnoechocbreakkeypadr"localsechonocbreakendwin)funcargskwdsrs rwrapperr2?s   a   MMMM  DtF*T***T** vxx   MM!    FFF JJJ HHHH 8vxx   MM!    FFF JJJ HHHH s$?B5AB5AB55AD) r osrsysrrr"r& NameErrorr2rrr7s    "! GG!!!        !&&&&&s  &&PK!iXX'__pycache__/ascii.cpython-311.opt-2.pycnu[ 0i  dZdZdZdZdZdZdZdZdZd Z d Z d Z d Z d Z 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/Z1d0Z2d1Z3d2Z4d3Z5d4Z6d5Z7d6Z8d7S)8  )!NULSOHSTXETXEOTENQACKBELBSHTLFVTFFCRSOSIDLEDC1DC2DC3DC4NAKSYNETBCANEMSUBESCFSGSRSUSSPcdt|tdkrt|S|S)N)typeordcs 3/opt/alt/python311/lib64/python3.11/curses/ascii.py_ctoirL0s) Aww$r((1vv c>t|pt|SN)isalphaisdigitrIs rKisalnumrR6wqzz/WQZZ/rMc>t|pt|SrO)isupperislowerrIs rKrPrP7rSrMc<dt|cxkodkncS)Nrr#rLrIs rKisasciirY8s)qE!HH+++++++++rMc$t|dvS)N)r r"rXrIs rKisblankr[9suQxx7**rMcbdt|cxkodkncpt|dkS)Nrr!r#rXrIs rKiscntrlr]:s8qE!HH********=eAhh#o=rMc<dt|cxkodkncS)N09rXrIs rKrQrQ;)rU1XX+++++++++rMc<dt|cxkodkncS)N!~rXrIs rKisgraphre<)rU1XX,,,,,,,,,rMc<dt|cxkodkncS)NazrXrIs rKrVrV=rfrMc<dt|cxkodkncS)Nr"rdrXrIs rKisprintrk>rfrMc@t|ot| SrO)rerRrIs rKispunctrm?swqzz4'!**n4rMc$t|dvS)N)r r r rrr"rXrIs rKisspacero@suQxx#:::rMc<dt|cxkodkncS)NAZrXrIs rKrUrUArarMct|p9dt|cxkodkncpdt|cxkodkncS)NrqFrhf)rQrLrIs rKisxdigitrvBsc 6588r6!U1XX444444446rMc<dt|cxkodkncS)Nrr"rXrIs rKisctrlrxDs)a588((((b(((((rMc(t|dkS)Nr#rXrIs rKismetarzEseAhhn$rMct|tdkrtt|dzSt|dzS)NrFr#rGchrrLrIs rKasciir~GA Aww$r((588d?###Qxx$rMct|tdkrtt|dzSt|dzS)NrFr!r|rIs rKctrlrMrrMct|tdkrtt|dzSt|dzS)NrFr|rIs rKaltrSrrMct|}|dkrd}n@t|dzrt|dz}ndt|dzdzdzz}|dzrd|zS|S)Nr#z^?^r"r!)rLrkr})rJbitsreps rKunctrlrYs 88D t||   7$+C$+-5666 d{Sy JrMN)9r$r%r&r'r(r)r*r+r,TABr-r.NLr/r0r1r2r3r4r5r6r7r8r9r:r;r<r=r>r?r@rArBrCrDDEL controlnamesrLrRrPrYr[r]rQrerVrkrmrorUrvrxrzr~rrrrMrKrs9                                      0/////+++***===+++,,,,,,,,,444:::+++666((($$$       rMPK!k'__pycache__/panel.cpython-311.opt-2.pycnu[ 0iW ddlTdS))*N) _curses_panel3/opt/alt/python311/lib64/python3.11/curses/panel.pyrs rPK! $__pycache__/__init__.cpython-311.pycnu[ 0i) ^dZddlTddlZddlZdZdZ en#e $r ddlmZYnwxYwdZ dS) zcurses 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() ... )*NcXddl}ddl}ttjddt j| }|j D](\}}|dddks|dvrt|||)|S)NrTERMunknown)termfdACS_)LINESCOLS) _cursescurses setupterm_osenvironget_sys __stdout__filenoinitscr__dict__itemssetattr)r rstdscrkeyvalues 6/opt/alt/python311/lib64/python3.11/curses/__init__.pyrrs3;??6955''))++++ __  F&,,..(( U qs8v  (9!9!9 FC ' ' ' Mcddl}ddl}|}t|dr |j|_t|dr |j|_|S)NrCOLORS COLOR_PAIRS)r r start_colorhasattrr r!)r rretvals rr"r"*sh  " "Fw!!' w &&1$0 Mr)has_keyc t}tt|d t n#YnxYw||g|Ri|dt vr@|dt ttSS#dt vr@|dt ttwwxYw)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) rnoechocbreakkeypadr"localsechonocbreakendwin)funcargskwdsrs rwrapperr2?s   a   MMMM  DtF*T***T** vxx   MM!    FFF JJJ HHHH 8vxx   MM!    FFF JJJ HHHH s$?B4AB4AB44AD) __doc__r osrsysrrr"r& NameErrorr2rrr8s     "! GG!!!        !&&&&&s  ''PK!'e"")__pycache__/has_key.cpython-311.opt-2.pycnu[ 0i ddlZiejdejdejdejdejdejdejdejd ej d ej d ej d ej d ej dejdejdejdejdiejdejdejdejdejdejdejdejdejdejdejdejdejdejd 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/d0ej0d1ej1d2ej2d3ej3d4iej4d5ej5d6ej6d7ej7d8ej8d9ej9d:ej:d;ej;d<ej<d=ej=d>ej>d?ej?d@ej@dAejAdBejBdCejCdDejDdEiejEdFejFdGejGdHejHdIejIdJejJdKejKdLejLdMejMdNejNdOejOdPejPdQejQdRejRdSejSdTejTdUejUdViejVdWejWdXejXdYejYdZejZd[ej[d\ej\d]ej]d^ej^d_ej_d`ej`daejadbejbdcejcddejddeejedfejfdgiejgdhejhdiejidjejjdkejkdlejldmejmdnejndoejodpejpdqejqdrejrdsejsdtejtduejudvejvdwejwdxiejxdyejydzejzd{ej{d|ej|d}ej}d~ej~dejdejdejdejdejdejdejdejdejdejdejdejdejdejdejdejdejdejdejdejdejdejdejdi ZdZedkr gZejeD]LZejeZeeZeekr)edejeeefzM ejeD] ZeedS#ejeD] ZeewxYwdS)Nka1ka3kb2kbskbegkcbtkc1kc3kcanktbckclrkclokcmdkcpykcrtkctabkdch1kdl1kcud1krmirkendkentkelkedkextkf0kf1kf10kf11kf12kf13kf14kf15kf16kf17kf18kf19kf2kf20kf21kf22kf23kf24kf25kf26kf27kf28kf29kf3kf30kf31kf32kf33kf34kf35kf36kf37kf38kf39kf4kf40kf41kf42kf43kf44kf45kf46kf47kf48kf49kf5kf50kf51kf52kf53kf54kf55kf56kf57kf58kf59kf6kf60kf61kf62kf63kf7kf8kf9kfndkhlpkhomekich1kil1kcub1kllkmrkkmsgkmovknxtknpkopnkoptkppkprvkprtkrdokrefkrfrkrplkrstkreskcuf1ksavkBEGkCANkCMDkCPYkCRTkDCkDLksltkENDkEOLkEXTkindkFNDkHLPkHOMkICkLFTkMSGkMOVkNXTkOPTkPRVkPRTkrikRDOkRPLkRITkRESkSAVkSPDkhtskUNDkspdkundkcuu1ct|trt|}t|}|dSt j|rdSdS)NFT) isinstancestrord_capability_namesget_cursestigetstr)chcapability_names 5/opt/alt/python311/lib64/python3.11/curses/has_key.pyhas_keyrs^"c WW(++B//Ou**tu__main__z)Mismatch for key %s, system=%i, Python=%i)rKEY_A1KEY_A3KEY_B2 KEY_BACKSPACEKEY_BEGKEY_BTABKEY_C1KEY_C3 KEY_CANCEL KEY_CATAB KEY_CLEAR KEY_CLOSE KEY_COMMANDKEY_COPY KEY_CREATEKEY_CTABKEY_DCKEY_DLKEY_DOWNKEY_EICKEY_END KEY_ENTERKEY_EOLKEY_EOSKEY_EXITKEY_F0KEY_F1KEY_F10KEY_F11KEY_F12KEY_F13KEY_F14KEY_F15KEY_F16KEY_F17KEY_F18KEY_F19KEY_F2KEY_F20KEY_F21KEY_F22KEY_F23KEY_F24KEY_F25KEY_F26KEY_F27KEY_F28KEY_F29KEY_F3KEY_F30KEY_F31KEY_F32KEY_F33KEY_F34KEY_F35KEY_F36KEY_F37KEY_F38KEY_F39KEY_F4KEY_F40KEY_F41KEY_F42KEY_F43KEY_F44KEY_F45KEY_F46KEY_F47KEY_F48KEY_F49KEY_F5KEY_F50KEY_F51KEY_F52KEY_F53KEY_F54KEY_F55KEY_F56KEY_F57KEY_F58KEY_F59KEY_F6KEY_F60KEY_F61KEY_F62KEY_F63KEY_F7KEY_F8KEY_F9KEY_FINDKEY_HELPKEY_HOMEKEY_ICKEY_ILKEY_LEFTKEY_LLKEY_MARK KEY_MESSAGEKEY_MOVEKEY_NEXT KEY_NPAGEKEY_OPEN KEY_OPTIONS KEY_PPAGE KEY_PREVIOUS KEY_PRINTKEY_REDO KEY_REFERENCE KEY_REFRESH KEY_REPLACE KEY_RESTART KEY_RESUME KEY_RIGHTKEY_SAVEKEY_SBEG KEY_SCANCEL KEY_SCOMMAND KEY_SCOPY KEY_SCREATEKEY_SDCKEY_SDL KEY_SELECTKEY_SENDKEY_SEOL KEY_SEXITKEY_SF KEY_SFIND KEY_SHELP KEY_SHOMEKEY_SIC KEY_SLEFT KEY_SMESSAGE KEY_SMOVE KEY_SNEXT KEY_SOPTIONS KEY_SPREVIOUS KEY_SPRINTKEY_SR KEY_SREDO KEY_SREPLACE KEY_SRIGHT KEY_SRSUME KEY_SSAVE KEY_SSUSPENDKEY_STAB KEY_SUNDO KEY_SUSPENDKEY_UNDOKEY_UPrr__name__LinitscrkeyskeysystempythonappendkeynameendwiniprintrrrHs  V NEV NEV NEV 5 V  OV V  f V NEV NEV V vV vV vV V fV V  g!V" NG#VV$ NF%V& g'V( OW)V* OV+V, v-V. OU/V0 OU1V2 f3V4 NE5V6 NE7V8 OV9V: OV;V< OV=V> OV?V@ OVAVB OVCVD OVEVVVF OVGVH OVIVJ OVKVL NEMVN OVOVP OVQVR OVSVT OVUVV OVWVX OVYVZ OV[V\ OV]V^ OV_V` OVaVb NEcVd OVeVf OVgVVVh OViVj OVkVl OVmVn OVoVp OVqVr OVsVt OVuVv OVwVx NEyVz OV{V| OV}V~ OVV@ OVAVB OVCVD OVEVF OVGVH OVIVVVJ OVKVL OVMVN NEOVP OVQVR OVSVT OVUVV OVWVX OVYVZ OV[V\ OV]V^ OV_V` OVaVb OVcVd NEeVf OVgVh OViVj OVkVVVl OVmVn NEoVp NEqVr NEsVt fuVv fwVx gyVz NG{V| NF}V~ gV@ NEAVB fCVD EVF fGVH fIVJ uKVL fMVVVN OVP uQVR &SVT vUVV fWVX 6YVZ [V\ ]V^ _V` aVb wcVd feVf fgVh iVj &kVl vmVn oVVVp OUqVr OUsVt uVv fwVx fyVz v{V| NF}V~ vV@ vAVB vCVD OUEVF vGVH &IVJ vKVL vMVN &OVP 6QVVR  NE v &   v & f v  f NGkVVp  z  $))++ G GC$W_S))FWS\\FE,W_c33VVDEGGG  G AEE!HHHH AEE!HHHHs t|pt|SN)isalphaisdigitrIs rKisalnumrR6wqzz/WQZZ/rMc>t|pt|SrO)isupperislowerrIs rKrPrP7rSrMc<dt|cxkodkncS)Nrr#rLrIs rKisasciirY8s)qE!HH+++++++++rMc$t|dvS)N)r r"rXrIs rKisblankr[9suQxx7**rMcbdt|cxkodkncpt|dkS)Nrr!r#rXrIs rKiscntrlr]:s8qE!HH********=eAhh#o=rMc<dt|cxkodkncS)N09rXrIs rKrQrQ;)rU1XX+++++++++rMc<dt|cxkodkncS)N!~rXrIs rKisgraphre<)rU1XX,,,,,,,,,rMc<dt|cxkodkncS)NazrXrIs rKrVrV=rfrMc<dt|cxkodkncS)Nr"rdrXrIs rKisprintrk>rfrMc@t|ot| SrO)rerRrIs rKispunctrm?swqzz4'!**n4rMc$t|dvS)N)r r r rrr"rXrIs rKisspacero@suQxx#:::rMc<dt|cxkodkncS)NAZrXrIs rKrUrUArarMct|p9dt|cxkodkncpdt|cxkodkncS)NrqFrhf)rQrLrIs rKisxdigitrvBsc 6588r6!U1XX444444446rMc<dt|cxkodkncS)Nrr"rXrIs rKisctrlrxDs)a588((((b(((((rMc(t|dkS)Nr#rXrIs rKismetarzEseAhhn$rMct|tdkrtt|dzSt|dzS)NrFr#rGchrrLrIs rKasciir~GA Aww$r((588d?###Qxx$rMct|tdkrtt|dzSt|dzS)NrFr!r|rIs rKctrlrMrrMct|tdkrtt|dzSt|dzS)NrFr|rIs rKaltrSrrMct|}|dkrd}n@t|dzrt|dz}ndt|dzdzdzz}|dzrd|zS|S)Nr#z^?^r"r!)rLrkr})rJbitsreps rKunctrlrYs 88D t||   7$+C$+-5666 d{Sy JrMN):__doc__r$r%r&r'r(r)r*r+r,TABr-r.NLr/r0r1r2r3r4r5r6r7r8r9r:r;r<r=r>r?r@rArBrCrDDEL controlnamesrLrRrPrYr[r]rQrerVrkrmrorUrvrxrzr~rrrrMrKrs99                                      0/////+++***===+++,,,,,,,,,444:::+++666((($$$       rMPK!)))__pycache__/textpad.cpython-311.opt-2.pycnu[ 0i ddlZddlZdZGddZedkr*dZejeZede edSdS)Nch ||dz|tj||z dz |||dztj||z dz |||dztj||z dz ||dz|tj||z dz |||tj|||tj|||tj|||tj dSN) vlinecurses ACS_VLINEhline ACS_HLINEaddch ACS_ULCORNER ACS_URCORNER ACS_LRCORNER ACS_LLCORNER)winulyulxlrylrxs 5/opt/alt/python311/lib64/python3.11/curses/textpad.py rectanglersIIc!eS&*C#IM:::IIc3q5&*C#IM:::IIc3q5&*C#IM:::IIc!eS&*C#IM:::IIc3+,,,IIc3+,,,IIc3+,,,IIc3+,,,,,c>eZdZ d dZdZdZdZdZdZd d Z dS) TextboxFc||_||_|d|_d|_|ddSr)r insert_mode_update_max_yx stripspaceslastcmdkeypad)selfrrs r__init__zTextbox.__init__+sE&   1 rcf|j\}}|dz |_|dz |_dSr)rgetmaxyxmaxymaxx)r r$r%s rrzTextbox._update_max_yx3s3X&&(( d1H 1H rc" ||j} tj|j||tjjkrt|j|dz}n |dkrn|dz }q|S)NTrr)rr%rasciirinchSPmin)r ylasts r _end_of_linezTextbox._end_of_line8s @ y |!!$(--4"8"899V\_LL49d1f--!8D   rc ||j\}}d}||jks ||jkr|jr|j} |j|n#tj $rYnwxYw|jrtj |sn:|}|j\}}|||f}||jk||jk||jj |dSdSN) rrgetyxr$r%rr(r rerrorr'isprintmove)r chr+xbackyxoldchs r_insert_printable_charzTextbox._insert_printable_charFs& !!A$)mmq49}} (  r""""<    # 6<+?+?+F+F BX^^%%FQ~A!$)mmq49}}$   DHM6 " " " "  s*BBBc ||j\}}||_tj|r-||jks ||jkr| |n|tjj kr|j |dn|tjj tj tjjtjfvr|dkr|j ||dz nf|dkrn_|jr5|j |dz ||dz n#|j |dz |j|tjjtjfvr|jn|tjjkr|jnY|tjjkrY|jr0|j |||n |j ||jn|tjjtjfvrX||jkr |j ||dzn||jkrn|j |dzdnt|tjjkrdS|tjjkr8|jdkrdS||jkr|j |dzdn|tjjkrp|dkr4||dkr|jn|j |||jn|tjjkr|jn[|tjjtjfvrz||jkrn|j |dz||||dzkr4|j |dz||dzn|tjj kr|j!n|tjj"tj#fvrt|dkrn|j |dz ||||dz kr4|j |dz ||dz dS)Nrr)$rrr0rrr'r2r$r%r8SOHr3STXKEY_LEFTBS KEY_BACKSPACErr-delchEOTENQACK KEY_RIGHTBELNLVTdeletelnclrtoeolFFrefreshSOKEY_DOWNSIinsertlnDLEKEY_UP)r r4r+r5s r do_commandzTextbox.do_command_s+ !!A <   # #9 ?49}}DI ++B/// 6<# # # HMM!Q     FL$V_flofFZ[ [ [1uu a1%%%%a! . ac4#4#4QqS#9#9:::: ac49---flov';<<<   6<# # # HNN     6<# # # , a!2!21!5!56666 a++++ FL$f&67 7 749}} a1%%%%di ac1%%%% 6<# # #1 6>> 6>>qrc  d}|t|jdzD]}|j|d||}|dkr|jr@t|jdzD]Y}|jr||krnI|ttj |j ||z}Z|jdkr|dz}|S)Nrr ) rranger$rr3r-rr%chrrr'r()r resultr+stopr5s rgatherzTextbox.gathers8 ty{## ' 'A HMM!Q   $$Q''DqyyT-y49Q;'' O O#DE#fl&8&8q!9L9L&M&M"N"NNy1}}$ rNc |j}|r ||}|s*||sn|jY|Sr/)rgetchrQrJrY)r validater4s reditz Textbox.edits{< !!B "Xb\\ ??2&&  H      {{}}r)Fr/) __name__ __module__ __qualname__r!rr-r8rQrYr]rrrrs.   ###2???B"      rr__main__c d\}}d\}}||dz |dtj||||}t||dz |dz ||z||z|t |S)N) )zUse Ctrl-G to end editing.r)addstrrnewwinrrJrr])stdscrncolsnlinesrrrs r test_editboxrns vS c!eS">???mFE344&#a%Qf cEkBBBs||  """rzContents of text box:) r curses.asciirrr^rnwrapperstrprintreprrarrrts@  - - -iiiiiiiiV z### &. & &C E !4499-----rPK!p!__pycache__/panel.cpython-311.pycnu[ 0iWdZddlTdS)z3curses.panel Module for using panels with curses. )*N)__doc__ _curses_panel3/opt/alt/python311/lib64/python3.11/curses/panel.pyr s# rPK!@>> 6>>qrc d}|t|jdzD]}|j|d||}|dkr|jr@t|jdzD]Y}|jr||krnI|ttj |j ||z}Z|jdkr|dz}|S)z.Collect and return the contents of the window.rr ) rranger$rr3r-rr%chrrr'r()r resultr+stopr5s rgatherzTextbox.gathers ty{## ' 'A HMM!Q   $$Q''DqyyT-y49Q;'' O O#DE#fl&8&8q!9L9L&M&M"N"NNy1}}$ rNc |j}|r ||}|s*||sn|jY|S)z2Edit in the widget window and collect the results.)rgetchrQrJrY)r validater4s reditz Textbox.editsx !!B "Xb\\ ??2&&  H      {{}}r)Fr/) __name__ __module__ __qualname____doc__r!rr-r8rQrYr]rrrrs.   ###2???B"      rr__main__c d\}}d\}}||dz |dtj||||}t||dz |dz ||z||z|t |S)N) )zUse Ctrl-G to end editing.r)addstrrnewwinrrJrr])stdscrncolsnlinesrrrs r test_editboxros vS c!eS">???mFE344&#a%Qf cEkBBBs||  """rzContents of text box:) rar curses.asciirrr^rowrapperstrprintreprrbrrrus@@  - - -iiiiiiiiV z### &. & &C E !4499-----rPK!'e""#__pycache__/has_key.cpython-311.pycnu[ 0i ddlZiejdejdejdejdejdejdejdejd ej d ej d ej d ej d ej dejdejdejdejdiejdejdejdejdejdejdejdejdejdejdejdejdejdejd 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/d0ej0d1ej1d2ej2d3ej3d4iej4d5ej5d6ej6d7ej7d8ej8d9ej9d:ej:d;ej;d<ej<d=ej=d>ej>d?ej?d@ej@dAejAdBejBdCejCdDejDdEiejEdFejFdGejGdHejHdIejIdJejJdKejKdLejLdMejMdNejNdOejOdPejPdQejQdRejRdSejSdTejTdUejUdViejVdWejWdXejXdYejYdZejZd[ej[d\ej\d]ej]d^ej^d_ej_d`ej`daejadbejbdcejcddejddeejedfejfdgiejgdhejhdiejidjejjdkejkdlejldmejmdnejndoejodpejpdqejqdrejrdsejsdtejtduejudvejvdwejwdxiejxdyejydzejzd{ej{d|ej|d}ej}d~ej~dejdejdejdejdejdejdejdejdejdejdejdejdejdejdejdejdejdejdejdejdejdejdejdi ZdZedkr gZejeD]LZejeZeeZeekr)edejeeefzM ejeD] ZeedS#ejeD] ZeewxYwdS)Nka1ka3kb2kbskbegkcbtkc1kc3kcanktbckclrkclokcmdkcpykcrtkctabkdch1kdl1kcud1krmirkendkentkelkedkextkf0kf1kf10kf11kf12kf13kf14kf15kf16kf17kf18kf19kf2kf20kf21kf22kf23kf24kf25kf26kf27kf28kf29kf3kf30kf31kf32kf33kf34kf35kf36kf37kf38kf39kf4kf40kf41kf42kf43kf44kf45kf46kf47kf48kf49kf5kf50kf51kf52kf53kf54kf55kf56kf57kf58kf59kf6kf60kf61kf62kf63kf7kf8kf9kfndkhlpkhomekich1kil1kcub1kllkmrkkmsgkmovknxtknpkopnkoptkppkprvkprtkrdokrefkrfrkrplkrstkreskcuf1ksavkBEGkCANkCMDkCPYkCRTkDCkDLksltkENDkEOLkEXTkindkFNDkHLPkHOMkICkLFTkMSGkMOVkNXTkOPTkPRVkPRTkrikRDOkRPLkRITkRESkSAVkSPDkhtskUNDkspdkundkcuu1ct|trt|}t|}|dSt j|rdSdS)NFT) isinstancestrord_capability_namesget_cursestigetstr)chcapability_names 5/opt/alt/python311/lib64/python3.11/curses/has_key.pyhas_keyrs^"c WW(++B//Ou**tu__main__z)Mismatch for key %s, system=%i, Python=%i)rKEY_A1KEY_A3KEY_B2 KEY_BACKSPACEKEY_BEGKEY_BTABKEY_C1KEY_C3 KEY_CANCEL KEY_CATAB KEY_CLEAR KEY_CLOSE KEY_COMMANDKEY_COPY KEY_CREATEKEY_CTABKEY_DCKEY_DLKEY_DOWNKEY_EICKEY_END KEY_ENTERKEY_EOLKEY_EOSKEY_EXITKEY_F0KEY_F1KEY_F10KEY_F11KEY_F12KEY_F13KEY_F14KEY_F15KEY_F16KEY_F17KEY_F18KEY_F19KEY_F2KEY_F20KEY_F21KEY_F22KEY_F23KEY_F24KEY_F25KEY_F26KEY_F27KEY_F28KEY_F29KEY_F3KEY_F30KEY_F31KEY_F32KEY_F33KEY_F34KEY_F35KEY_F36KEY_F37KEY_F38KEY_F39KEY_F4KEY_F40KEY_F41KEY_F42KEY_F43KEY_F44KEY_F45KEY_F46KEY_F47KEY_F48KEY_F49KEY_F5KEY_F50KEY_F51KEY_F52KEY_F53KEY_F54KEY_F55KEY_F56KEY_F57KEY_F58KEY_F59KEY_F6KEY_F60KEY_F61KEY_F62KEY_F63KEY_F7KEY_F8KEY_F9KEY_FINDKEY_HELPKEY_HOMEKEY_ICKEY_ILKEY_LEFTKEY_LLKEY_MARK KEY_MESSAGEKEY_MOVEKEY_NEXT KEY_NPAGEKEY_OPEN KEY_OPTIONS KEY_PPAGE KEY_PREVIOUS KEY_PRINTKEY_REDO KEY_REFERENCE KEY_REFRESH KEY_REPLACE KEY_RESTART KEY_RESUME KEY_RIGHTKEY_SAVEKEY_SBEG KEY_SCANCEL KEY_SCOMMAND KEY_SCOPY KEY_SCREATEKEY_SDCKEY_SDL KEY_SELECTKEY_SENDKEY_SEOL KEY_SEXITKEY_SF KEY_SFIND KEY_SHELP KEY_SHOMEKEY_SIC KEY_SLEFT KEY_SMESSAGE KEY_SMOVE KEY_SNEXT KEY_SOPTIONS KEY_SPREVIOUS KEY_SPRINTKEY_SR KEY_SREDO KEY_SREPLACE KEY_SRIGHT KEY_SRSUME KEY_SSAVE KEY_SSUSPENDKEY_STAB KEY_SUNDO KEY_SUSPENDKEY_UNDOKEY_UPrr__name__LinitscrkeyskeysystempythonappendkeynameendwiniprintrrrHs  V NEV NEV NEV 5 V  OV V  f V NEV NEV V vV vV vV V fV V  g!V" NG#VV$ NF%V& g'V( OW)V* OV+V, v-V. OU/V0 OU1V2 f3V4 NE5V6 NE7V8 OV9V: OV;V< OV=V> OV?V@ OVAVB OVCVD OVEVVVF OVGVH OVIVJ OVKVL NEMVN OVOVP OVQVR OVSVT OVUVV OVWVX OVYVZ OV[V\ OV]V^ OV_V` OVaVb NEcVd OVeVf OVgVVVh OViVj OVkVl OVmVn OVoVp OVqVr OVsVt OVuVv OVwVx NEyVz OV{V| OV}V~ OVV@ OVAVB OVCVD OVEVF OVGVH OVIVVVJ OVKVL OVMVN NEOVP OVQVR OVSVT OVUVV OVWVX OVYVZ OV[V\ OV]V^ OV_V` OVaVb OVcVd NEeVf OVgVh OViVj OVkVVVl OVmVn NEoVp NEqVr NEsVt fuVv fwVx gyVz NG{V| NF}V~ gV@ NEAVB fCVD EVF fGVH fIVJ uKVL fMVVVN OVP uQVR &SVT vUVV fWVX 6YVZ [V\ ]V^ _V` aVb wcVd feVf fgVh iVj &kVl vmVn oVVVp OUqVr OUsVt uVv fwVx fyVz v{V| NF}V~ vV@ vAVB vCVD OUEVF vGVH &IVJ vKVL vMVN &OVP 6QVVR  NE v &   v & f v  f NGkVVp  z  $))++ G GC$W_S))FWS\\FE,W_c33VVDEGGG  G AEE!HHHH AEE!HHHHs t|pt|SN)isalphaisdigitrIs rKisalnumrR6wqzz/WQZZ/rMc>t|pt|SrO)isupperislowerrIs rKrPrP7rSrMc<dt|cxkodkncS)Nrr#rLrIs rKisasciirY8s)qE!HH+++++++++rMc$t|dvS)N)r r"rXrIs rKisblankr[9suQxx7**rMcbdt|cxkodkncpt|dkS)Nrr!r#rXrIs rKiscntrlr]:s8qE!HH********=eAhh#o=rMc<dt|cxkodkncS)N09rXrIs rKrQrQ;)rU1XX+++++++++rMc<dt|cxkodkncS)N!~rXrIs rKisgraphre<)rU1XX,,,,,,,,,rMc<dt|cxkodkncS)NazrXrIs rKrVrV=rfrMc<dt|cxkodkncS)Nr"rdrXrIs rKisprintrk>rfrMc@t|ot| SrO)rerRrIs rKispunctrm?swqzz4'!**n4rMc$t|dvS)N)r r r rrr"rXrIs rKisspacero@suQxx#:::rMc<dt|cxkodkncS)NAZrXrIs rKrUrUArarMct|p9dt|cxkodkncpdt|cxkodkncS)NrqFrhf)rQrLrIs rKisxdigitrvBsc 6588r6!U1XX444444446rMc<dt|cxkodkncS)Nrr"rXrIs rKisctrlrxDs)a588((((b(((((rMc(t|dkS)Nr#rXrIs rKismetarzEseAhhn$rMct|tdkrtt|dzSt|dzS)NrFr#rGchrrLrIs rKasciir~GA Aww$r((588d?###Qxx$rMct|tdkrtt|dzSt|dzS)NrFr!r|rIs rKctrlrMrrMct|tdkrtt|dzSt|dzS)NrFr|rIs rKaltrSrrMct|}|dkrd}n@t|dzrt|dz}ndt|dzdzdzz}|dzrd|zS|S)Nr#z^?^r"r!)rLrkr})rJbitsreps rKunctrlrYs 88D t||   7$+C$+-5666 d{Sy JrMN):__doc__r$r%r&r'r(r)r*r+r,TABr-r.NLr/r0r1r2r3r4r5r6r7r8r9r:r;r<r=r>r?r@rArBrCrDDEL controlnamesrLrRrPrYr[r]rQrerVrkrmrorUrvrxrzr~rrrrMrKrs99                                      0/////+++***===+++,,,,,,,,,444:::+++666((($$$       rMPK!p'__pycache__/panel.cpython-311.opt-1.pycnu[ 0iWdZddlTdS)z3curses.panel Module for using panels with curses. )*N)__doc__ _curses_panel3/opt/alt/python311/lib64/python3.11/curses/panel.pyr s# rPK! *__pycache__/__init__.cpython-311.opt-1.pycnu[ 0i) ^dZddlTddlZddlZdZdZ en#e $r ddlmZYnwxYwdZ dS) zcurses 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() ... )*NcXddl}ddl}ttjddt j| }|j D](\}}|dddks|dvrt|||)|S)NrTERMunknown)termfdACS_)LINESCOLS) _cursescurses setupterm_osenvironget_sys __stdout__filenoinitscr__dict__itemssetattr)r rstdscrkeyvalues 6/opt/alt/python311/lib64/python3.11/curses/__init__.pyrrs3;??6955''))++++ __  F&,,..(( U qs8v  (9!9!9 FC ' ' ' Mcddl}ddl}|}t|dr |j|_t|dr |j|_|S)NrCOLORS COLOR_PAIRS)r r start_colorhasattrr r!)r rretvals rr"r"*sh  " "Fw!!' w &&1$0 Mr)has_keyc t}tt|d t n#YnxYw||g|Ri|dt vr@|dt ttSS#dt vr@|dt ttwwxYw)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) rnoechocbreakkeypadr"localsechonocbreakendwin)funcargskwdsrs rwrapperr2?s   a   MMMM  DtF*T***T** vxx   MM!    FFF JJJ HHHH 8vxx   MM!    FFF JJJ HHHH s$?B4AB4AB44AD) __doc__r osrsysrrr"r& NameErrorr2rrr8s     "! GG!!!        !&&&&&s  ''PK!'e"")__pycache__/has_key.cpython-311.opt-1.pycnu[ 0i ddlZiejdejdejdejdejdejdejdejd ej d ej d ej d ej d ej dejdejdejdejdiejdejdejdejdejdejdejdejdejdejdejdejdejdejd 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/d0ej0d1ej1d2ej2d3ej3d4iej4d5ej5d6ej6d7ej7d8ej8d9ej9d:ej:d;ej;d<ej<d=ej=d>ej>d?ej?d@ej@dAejAdBejBdCejCdDejDdEiejEdFejFdGejGdHejHdIejIdJejJdKejKdLejLdMejMdNejNdOejOdPejPdQejQdRejRdSejSdTejTdUejUdViejVdWejWdXejXdYejYdZejZd[ej[d\ej\d]ej]d^ej^d_ej_d`ej`daejadbejbdcejcddejddeejedfejfdgiejgdhejhdiejidjejjdkejkdlejldmejmdnejndoejodpejpdqejqdrejrdsejsdtejtduejudvejvdwejwdxiejxdyejydzejzd{ej{d|ej|d}ej}d~ej~dejdejdejdejdejdejdejdejdejdejdejdejdejdejdejdejdejdejdejdejdejdejdejdi ZdZedkr gZejeD]LZejeZeeZeekr)edejeeefzM ejeD] ZeedS#ejeD] ZeewxYwdS)Nka1ka3kb2kbskbegkcbtkc1kc3kcanktbckclrkclokcmdkcpykcrtkctabkdch1kdl1kcud1krmirkendkentkelkedkextkf0kf1kf10kf11kf12kf13kf14kf15kf16kf17kf18kf19kf2kf20kf21kf22kf23kf24kf25kf26kf27kf28kf29kf3kf30kf31kf32kf33kf34kf35kf36kf37kf38kf39kf4kf40kf41kf42kf43kf44kf45kf46kf47kf48kf49kf5kf50kf51kf52kf53kf54kf55kf56kf57kf58kf59kf6kf60kf61kf62kf63kf7kf8kf9kfndkhlpkhomekich1kil1kcub1kllkmrkkmsgkmovknxtknpkopnkoptkppkprvkprtkrdokrefkrfrkrplkrstkreskcuf1ksavkBEGkCANkCMDkCPYkCRTkDCkDLksltkENDkEOLkEXTkindkFNDkHLPkHOMkICkLFTkMSGkMOVkNXTkOPTkPRVkPRTkrikRDOkRPLkRITkRESkSAVkSPDkhtskUNDkspdkundkcuu1ct|trt|}t|}|dSt j|rdSdS)NFT) isinstancestrord_capability_namesget_cursestigetstr)chcapability_names 5/opt/alt/python311/lib64/python3.11/curses/has_key.pyhas_keyrs^"c WW(++B//Ou**tu__main__z)Mismatch for key %s, system=%i, Python=%i)rKEY_A1KEY_A3KEY_B2 KEY_BACKSPACEKEY_BEGKEY_BTABKEY_C1KEY_C3 KEY_CANCEL KEY_CATAB KEY_CLEAR KEY_CLOSE KEY_COMMANDKEY_COPY KEY_CREATEKEY_CTABKEY_DCKEY_DLKEY_DOWNKEY_EICKEY_END KEY_ENTERKEY_EOLKEY_EOSKEY_EXITKEY_F0KEY_F1KEY_F10KEY_F11KEY_F12KEY_F13KEY_F14KEY_F15KEY_F16KEY_F17KEY_F18KEY_F19KEY_F2KEY_F20KEY_F21KEY_F22KEY_F23KEY_F24KEY_F25KEY_F26KEY_F27KEY_F28KEY_F29KEY_F3KEY_F30KEY_F31KEY_F32KEY_F33KEY_F34KEY_F35KEY_F36KEY_F37KEY_F38KEY_F39KEY_F4KEY_F40KEY_F41KEY_F42KEY_F43KEY_F44KEY_F45KEY_F46KEY_F47KEY_F48KEY_F49KEY_F5KEY_F50KEY_F51KEY_F52KEY_F53KEY_F54KEY_F55KEY_F56KEY_F57KEY_F58KEY_F59KEY_F6KEY_F60KEY_F61KEY_F62KEY_F63KEY_F7KEY_F8KEY_F9KEY_FINDKEY_HELPKEY_HOMEKEY_ICKEY_ILKEY_LEFTKEY_LLKEY_MARK KEY_MESSAGEKEY_MOVEKEY_NEXT KEY_NPAGEKEY_OPEN KEY_OPTIONS KEY_PPAGE KEY_PREVIOUS KEY_PRINTKEY_REDO KEY_REFERENCE KEY_REFRESH KEY_REPLACE KEY_RESTART KEY_RESUME KEY_RIGHTKEY_SAVEKEY_SBEG KEY_SCANCEL KEY_SCOMMAND KEY_SCOPY KEY_SCREATEKEY_SDCKEY_SDL KEY_SELECTKEY_SENDKEY_SEOL KEY_SEXITKEY_SF KEY_SFIND KEY_SHELP KEY_SHOMEKEY_SIC KEY_SLEFT KEY_SMESSAGE KEY_SMOVE KEY_SNEXT KEY_SOPTIONS KEY_SPREVIOUS KEY_SPRINTKEY_SR KEY_SREDO KEY_SREPLACE KEY_SRIGHT KEY_SRSUME KEY_SSAVE KEY_SSUSPENDKEY_STAB KEY_SUNDO KEY_SUSPENDKEY_UNDOKEY_UPrr__name__LinitscrkeyskeysystempythonappendkeynameendwiniprintrrrHs  V NEV NEV NEV 5 V  OV V  f V NEV NEV V vV vV vV V fV V  g!V" NG#VV$ NF%V& g'V( OW)V* OV+V, v-V. OU/V0 OU1V2 f3V4 NE5V6 NE7V8 OV9V: OV;V< OV=V> OV?V@ OVAVB OVCVD OVEVVVF OVGVH OVIVJ OVKVL NEMVN OVOVP OVQVR OVSVT OVUVV OVWVX OVYVZ OV[V\ OV]V^ OV_V` OVaVb NEcVd OVeVf OVgVVVh OViVj OVkVl OVmVn OVoVp OVqVr OVsVt OVuVv OVwVx NEyVz OV{V| OV}V~ OVV@ OVAVB OVCVD OVEVF OVGVH OVIVVVJ OVKVL OVMVN NEOVP OVQVR OVSVT OVUVV OVWVX OVYVZ OV[V\ OV]V^ OV_V` OVaVb OVcVd NEeVf OVgVh OViVj OVkVVVl OVmVn NEoVp NEqVr NEsVt fuVv fwVx gyVz NG{V| NF}V~ gV@ NEAVB fCVD EVF fGVH fIVJ uKVL fMVVVN OVP uQVR &SVT vUVV fWVX 6YVZ [V\ ]V^ _V` aVb wcVd feVf fgVh iVj &kVl vmVn oVVVp OUqVr OUsVt uVv fwVx fyVz v{V| NF}V~ vV@ vAVB vCVD OUEVF vGVH &IVJ vKVL vMVN &OVP 6QVVR  NE v &   v & f v  f NGkVVp  z  $))++ G GC$W_S))FWS\\FE,W_c33VVDEGGG  G AEE!HHHH AEE!HHHHs d?d@dAdBdCg!Z%dDdEZ&dFdGZ'dHdIZ(dJdKZ)dLdMZ*dNdOZ+dPdQZ,dRdSZ-dTdUZ.dVdWZ/dXdYZ0dZd[Z1d\d]Z2d^d_Z3d`daZ4dbdcZ5dddeZ6dfdgZ7dhdiZ8djdkZ9dlS(mu3Constants and membership tests for ASCII charactersiiiiiiiiii i i i i iiiiiiiiiiiiiiiiiii iuNULuSOHuSTXuETXuEOTuENQuACKuBELuBSuHTuLFuVTuFFuCRuSOuSIuDLEuDC1uDC2uDC3uDC4uNAKuSYNuETBuCANuEMuSUBuESCuFSuGSuRSuUSuSPcCs*t|tdkr"t|S|SdS(Nu(utypeuord(uc((u1/opt/alt/python33/lib64/python3.3/curses/ascii.pyu_ctoi0s u_ctoicCst|pt|S(N(uisalphauisdigit(uc((u1/opt/alt/python33/lib64/python3.3/curses/ascii.pyuisalnum6suisalnumcCst|pt|S(N(uisupperuislower(uc((u1/opt/alt/python33/lib64/python3.3/curses/ascii.pyuisalpha7suisalphacCst|dkS(Ni(u_ctoi(uc((u1/opt/alt/python33/lib64/python3.3/curses/ascii.pyuisascii8suisasciicCst|dkS(Nii (ii (u_ctoi(uc((u1/opt/alt/python33/lib64/python3.3/curses/ascii.pyuisblank9suisblankcCst|dkS(Ni(u_ctoi(uc((u1/opt/alt/python33/lib64/python3.3/curses/ascii.pyuiscntrl:suiscntrlcCs"t|dko!t|dkS(Ni0i9(u_ctoi(uc((u1/opt/alt/python33/lib64/python3.3/curses/ascii.pyuisdigit;suisdigitcCs"t|dko!t|dkS(Ni!i~(u_ctoi(uc((u1/opt/alt/python33/lib64/python3.3/curses/ascii.pyuisgraph<suisgraphcCs"t|dko!t|dkS(Niaiz(u_ctoi(uc((u1/opt/alt/python33/lib64/python3.3/curses/ascii.pyuislower=suislowercCs"t|dko!t|dkS(Ni i~(u_ctoi(uc((u1/opt/alt/python33/lib64/python3.3/curses/ascii.pyuisprint>suisprintcCst|dkot| S(Ni (u_ctoiuisalnum(uc((u1/opt/alt/python33/lib64/python3.3/curses/ascii.pyuispunct?suispunctcCst|dkS(Ni i i i i i (i i i i i i (u_ctoi(uc((u1/opt/alt/python33/lib64/python3.3/curses/ascii.pyuisspace@suisspacecCs"t|dko!t|dkS(NiAiZ(u_ctoi(uc((u1/opt/alt/python33/lib64/python3.3/curses/ascii.pyuisupperAsuisuppercCsRt|pQt|dkr0t|dkpQt|dkoQt|dkS(NiAiFiaif(uisdigitu_ctoi(uc((u1/opt/alt/python33/lib64/python3.3/curses/ascii.pyuisxdigitBs uisxdigitcCst|dkS(Ni (u_ctoi(uc((u1/opt/alt/python33/lib64/python3.3/curses/ascii.pyuisctrlDsuisctrlcCst|dkS(Ni(u_ctoi(uc((u1/opt/alt/python33/lib64/python3.3/curses/ascii.pyuismetaEsuismetacCs>t|tdkr,tt|d@St|d@SdS(Nui(utypeuchru_ctoi(uc((u1/opt/alt/python33/lib64/python3.3/curses/ascii.pyuasciiGsuasciicCs>t|tdkr,tt|d@St|d@SdS(Nui(utypeuchru_ctoi(uc((u1/opt/alt/python33/lib64/python3.3/curses/ascii.pyuctrlMsuctrlcCs>t|tdkr,tt|dBSt|dBSdS(Nui(utypeuchru_ctoi(uc((u1/opt/alt/python33/lib64/python3.3/curses/ascii.pyualtSsualtcCsvt|}|dkr!d}n?t|d@rDt|d@}ndt|d@dBd}|d@rrd|S|S(Niu^?u^i iu!(u_ctoiuisprintuchr(ucubitsurep((u1/opt/alt/python33/lib64/python3.3/curses/ascii.pyuunctrlYs    uunctrlN(:u__doc__uNULuSOHuSTXuETXuEOTuENQuACKuBELuBSuTABuHTuLFuNLuVTuFFuCRuSOuSIuDLEuDC1uDC2uDC3uDC4uNAKuSYNuETBuCANuEMuSUBuESCuFSuGSuRSuUSuSPuDELu controlnamesu_ctoiuisalnumuisalphauisasciiuisblankuiscntrluisdigituisgraphuisloweruisprintuispunctuisspaceuisupperuisxdigituisctrluismetauasciiuctrlualtuunctrl(((u1/opt/alt/python33/lib64/python3.3/curses/ascii.pyusz                    PK!<@ __pycache__/ascii.cpython-33.pycnu[ f/ c!@s;dZdZdZdZdZdZdZdZdZd Z d Z d Z d Z d Z d Zd ZdZdZdZdZdZdZdZdZdZdZdZdZdZdZdZdZdZ dZ!d Z"d!Z#d"Z$d#d$d%d&d'd(d)d*d+d,d-d.d/d0d1d2d3d4d5d6d7d8d9d:d;d<d=d>d?d@dAdBdCg!Z%dDdEZ&dFdGZ'dHdIZ(dJdKZ)dLdMZ*dNdOZ+dPdQZ,dRdSZ-dTdUZ.dVdWZ/dXdYZ0dZd[Z1d\d]Z2d^d_Z3d`daZ4dbdcZ5dddeZ6dfdgZ7dhdiZ8djdkZ9dlS(mu3Constants and membership tests for ASCII charactersiiiiiiiiii i i i i iiiiiiiiiiiiiiiiiii iuNULuSOHuSTXuETXuEOTuENQuACKuBELuBSuHTuLFuVTuFFuCRuSOuSIuDLEuDC1uDC2uDC3uDC4uNAKuSYNuETBuCANuEMuSUBuESCuFSuGSuRSuUSuSPcCs*t|tdkr"t|S|SdS(Nu(utypeuord(uc((u1/opt/alt/python33/lib64/python3.3/curses/ascii.pyu_ctoi0s u_ctoicCst|pt|S(N(uisalphauisdigit(uc((u1/opt/alt/python33/lib64/python3.3/curses/ascii.pyuisalnum6suisalnumcCst|pt|S(N(uisupperuislower(uc((u1/opt/alt/python33/lib64/python3.3/curses/ascii.pyuisalpha7suisalphacCst|dkS(Ni(u_ctoi(uc((u1/opt/alt/python33/lib64/python3.3/curses/ascii.pyuisascii8suisasciicCst|dkS(Nii (ii (u_ctoi(uc((u1/opt/alt/python33/lib64/python3.3/curses/ascii.pyuisblank9suisblankcCst|dkS(Ni(u_ctoi(uc((u1/opt/alt/python33/lib64/python3.3/curses/ascii.pyuiscntrl:suiscntrlcCs"t|dko!t|dkS(Ni0i9(u_ctoi(uc((u1/opt/alt/python33/lib64/python3.3/curses/ascii.pyuisdigit;suisdigitcCs"t|dko!t|dkS(Ni!i~(u_ctoi(uc((u1/opt/alt/python33/lib64/python3.3/curses/ascii.pyuisgraph<suisgraphcCs"t|dko!t|dkS(Niaiz(u_ctoi(uc((u1/opt/alt/python33/lib64/python3.3/curses/ascii.pyuislower=suislowercCs"t|dko!t|dkS(Ni i~(u_ctoi(uc((u1/opt/alt/python33/lib64/python3.3/curses/ascii.pyuisprint>suisprintcCst|dkot| S(Ni (u_ctoiuisalnum(uc((u1/opt/alt/python33/lib64/python3.3/curses/ascii.pyuispunct?suispunctcCst|dkS(Ni i i i i i (i i i i i i (u_ctoi(uc((u1/opt/alt/python33/lib64/python3.3/curses/ascii.pyuisspace@suisspacecCs"t|dko!t|dkS(NiAiZ(u_ctoi(uc((u1/opt/alt/python33/lib64/python3.3/curses/ascii.pyuisupperAsuisuppercCsRt|pQt|dkr0t|dkpQt|dkoQt|dkS(NiAiFiaif(uisdigitu_ctoi(uc((u1/opt/alt/python33/lib64/python3.3/curses/ascii.pyuisxdigitBs uisxdigitcCst|dkS(Ni (u_ctoi(uc((u1/opt/alt/python33/lib64/python3.3/curses/ascii.pyuisctrlDsuisctrlcCst|dkS(Ni(u_ctoi(uc((u1/opt/alt/python33/lib64/python3.3/curses/ascii.pyuismetaEsuismetacCs>t|tdkr,tt|d@St|d@SdS(Nui(utypeuchru_ctoi(uc((u1/opt/alt/python33/lib64/python3.3/curses/ascii.pyuasciiGsuasciicCs>t|tdkr,tt|d@St|d@SdS(Nui(utypeuchru_ctoi(uc((u1/opt/alt/python33/lib64/python3.3/curses/ascii.pyuctrlMsuctrlcCs>t|tdkr,tt|dBSt|dBSdS(Nui(utypeuchru_ctoi(uc((u1/opt/alt/python33/lib64/python3.3/curses/ascii.pyualtSsualtcCsvt|}|dkr!d}n?t|d@rDt|d@}ndt|d@dBd}|d@rrd|S|S(Niu^?u^i iu!(u_ctoiuisprintuchr(ucubitsurep((u1/opt/alt/python33/lib64/python3.3/curses/ascii.pyuunctrlYs    uunctrlN(:u__doc__uNULuSOHuSTXuETXuEOTuENQuACKuBELuBSuTABuHTuLFuNLuVTuFFuCRuSOuSIuDLEuDC1uDC2uDC3uDC4uNAKuSYNuETBuCANuEMuSUBuESCuFSuGSuRSuUSuSPuDELu controlnamesu_ctoiuisalnumuisalphauisasciiuisblankuiscntrluisdigituisgraphuisloweruisprintuispunctuisspaceuisupperuisxdigituisctrluismetauasciiuctrlualtuunctrl(((u1/opt/alt/python33/lib64/python3.3/curses/ascii.pyusz                    PK!0c #__pycache__/__init__.cpython-33.pyonu[ f& c @s}dZddlTddlZddlZddZddZyeWn"e k rldd lmZYnXd d Z dS( ucurses 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() ... i(u*NcCsddl}ddl}tdtjjdddtjj|j }xR|j j D]A\}}|dddks|d kr_t |||q_q_W|S( NiutermuTERMuunknownufdiuACS_uLINESuCOLS(uLINESuCOLS( u_cursesucursesu setuptermu_osuenvironugetu_sysu __stdout__ufilenouinitscru__dict__uitemsusetattr(u_cursesucursesustdscrukeyuvalue((u4/opt/alt/python33/lib64/python3.3/curses/__init__.pyuinitscrs "uinitscrcCsdddl}ddl}|j}t|drB|j|_nt|dr`|j|_n|S(NiuCOLORSu COLOR_PAIRS(u_cursesucursesu start_coloruhasattruCOLORSu COLOR_PAIRS(u_cursesucursesuretval((u4/opt/alt/python33/lib64/python3.3/curses/__init__.pyu start_color*s u start_colori(uhas_keycOszNt}tt|jdy tWnYnX||||SWddtkr|jdtttnXdS(uWrapper 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(). iNustdscri( uinitscrunoechoucbreakukeypadu start_colorulocalsuechounocbreakuendwin(ufuncuargsukwdsustdscr((u4/opt/alt/python33/lib64/python3.3/curses/__init__.pyuwrapper?s    uwrapper( u__doc__u_cursesuosu_osusysu_sysuinitscru start_coloruhas_keyu NameErroruwrapper(((u4/opt/alt/python33/lib64/python3.3/curses/__init__.pyu s     PK!.E?6 __pycache__/panel.cpython-33.pyonu[ fWc@sdZddlTdS(u3curses.panel Module for using panels with curses. i(u*N(u__doc__u _curses_panel(((u1/opt/alt/python33/lib64/python3.3/curses/panel.pyusPK!0c #__pycache__/__init__.cpython-33.pycnu[ f& c @s}dZddlTddlZddlZddZddZyeWn"e k rldd lmZYnXd d Z dS( ucurses 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() ... i(u*NcCsddl}ddl}tdtjjdddtjj|j }xR|j j D]A\}}|dddks|d kr_t |||q_q_W|S( NiutermuTERMuunknownufdiuACS_uLINESuCOLS(uLINESuCOLS( u_cursesucursesu setuptermu_osuenvironugetu_sysu __stdout__ufilenouinitscru__dict__uitemsusetattr(u_cursesucursesustdscrukeyuvalue((u4/opt/alt/python33/lib64/python3.3/curses/__init__.pyuinitscrs "uinitscrcCsdddl}ddl}|j}t|drB|j|_nt|dr`|j|_n|S(NiuCOLORSu COLOR_PAIRS(u_cursesucursesu start_coloruhasattruCOLORSu COLOR_PAIRS(u_cursesucursesuretval((u4/opt/alt/python33/lib64/python3.3/curses/__init__.pyu start_color*s u start_colori(uhas_keycOszNt}tt|jdy tWnYnX||||SWddtkr|jdtttnXdS(uWrapper 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(). iNustdscri( uinitscrunoechoucbreakukeypadu start_colorulocalsuechounocbreakuendwin(ufuncuargsukwdsustdscr((u4/opt/alt/python33/lib64/python3.3/curses/__init__.pyuwrapper?s    uwrapper( u__doc__u_cursesuosu_osusysu_sysuinitscru start_coloruhas_keyu NameErroruwrapper(((u4/opt/alt/python33/lib64/python3.3/curses/__init__.pyu s     PK!M"__pycache__/has_key.cpython-33.pyonu[ fc @sddlZidej6dej6dej6dej6dej6dej6dej6d ej6d ej 6d ej 6d ej 6d ej 6dej 6dej6dej6dej6dej6dej6dej6dej6dej6dej6dej6dej6dej6dej6dej6dej6dej6dej6d ej6d!ej 6d"ej!6d#ej"6d$ej#6d%ej$6d&ej%6d'ej&6d(ej'6d)ej(6d*ej)6d+ej*6d,ej+6d-ej,6d.ej-6d/ej.6d0ej/6d1ej06d2ej16d3ej26d4ej36d5ej46d6ej56d7ej66d8ej76d9ej86d:ej96d;ej:6d<ej;6d=ej<6d>ej=6d?ej>6d@ej?6dAej@6dBejA6dCejB6dDejC6dEejD6dFejE6dGejF6dHejG6dIejH6dJejI6dKejJ6dLejK6dMejL6dNejM6dOejN6dPejO6dQejP6dRejQ6dSejR6dTejS6dUejT6dVejU6dWejV6dXejW6dYejX6dZejY6d[ejZ6d\ej[6d]ej\6d^ej]6d_ej^6d`ej_6daej`6dbeja6dcejb6ddejc6deejd6dfeje6dgejf6dhejg6diejh6djeji6dkejj6dlejk6dmejl6dnejm6doejn6dpejo6dqejp6drejq6dsejr6dtejs6duejt6dveju6dwejv6dxejw6dyejx6dzejy6d{ejz6d|ej{6d}ej|6d~ej}6dej~6dej6dej6dej6dej6dej6dej6dej6dej6dej6dej6dej6dej6dej6dej6dej6dej6dej6dej6dej6dej6dej6dej6dej6ZddZedkrzxgZejxaejD]SZejeZeeZeekrejdejeeefqqWWdejxeD]ZeeqWXndS(iNuka1uka3ukb2ukbsukbegukcbtukc1ukc3ukcanuktbcukclrukcloukcmdukcpyukcrtukctabukdch1ukdl1ukcud1ukrmirukendukentukelukedukextukf0ukf1ukf10ukf11ukf12ukf13ukf14ukf15ukf16ukf17ukf18ukf19ukf2ukf20ukf21ukf22ukf23ukf24ukf25ukf26ukf27ukf28ukf29ukf3ukf30ukf31ukf32ukf33ukf34ukf35ukf36ukf37ukf38ukf39ukf4ukf40ukf41ukf42ukf43ukf44ukf45ukf46ukf47ukf48ukf49ukf5ukf50ukf51ukf52ukf53ukf54ukf55ukf56ukf57ukf58ukf59ukf6ukf60ukf61ukf62ukf63ukf7ukf8ukf9ukfndukhlpukhomeukich1ukil1ukcub1ukllukmrkukmsgukmovuknxtuknpukopnukoptukppukprvukprtukrdoukrefukrfrukrplukrstukresukcuf1uksavukBEGukCANukCMDukCPYukCRTukDCukDLuksltukENDukEOLukEXTukindukFNDukHLPukHOMukICukLFTukMSGukMOVukNXTukOPTukPRVukPRTukriukRDOukRPLukRITukRESukSAVukSPDukhtsukUNDukspdukundukcuu1cCsXt|trt|}ntj|}|dkr=dStj|rPdSdSdS(NFT( u isinstanceustruordu_capability_namesugetuNoneuFalseu_cursesutigetstruTrue(uchucapability_name((u3/opt/alt/python33/lib64/python3.3/curses/has_key.pyuhas_keys uhas_keyu__main__u)Mismatch for key %s, system=%i, Python=%i(u_cursesuKEY_A1uKEY_A3uKEY_B2u KEY_BACKSPACEuKEY_BEGuKEY_BTABuKEY_C1uKEY_C3u KEY_CANCELu KEY_CATABu KEY_CLEARu KEY_CLOSEu KEY_COMMANDuKEY_COPYu KEY_CREATEuKEY_CTABuKEY_DCuKEY_DLuKEY_DOWNuKEY_EICuKEY_ENDu KEY_ENTERuKEY_EOLuKEY_EOSuKEY_EXITuKEY_F0uKEY_F1uKEY_F10uKEY_F11uKEY_F12uKEY_F13uKEY_F14uKEY_F15uKEY_F16uKEY_F17uKEY_F18uKEY_F19uKEY_F2uKEY_F20uKEY_F21uKEY_F22uKEY_F23uKEY_F24uKEY_F25uKEY_F26uKEY_F27uKEY_F28uKEY_F29uKEY_F3uKEY_F30uKEY_F31uKEY_F32uKEY_F33uKEY_F34uKEY_F35uKEY_F36uKEY_F37uKEY_F38uKEY_F39uKEY_F4uKEY_F40uKEY_F41uKEY_F42uKEY_F43uKEY_F44uKEY_F45uKEY_F46uKEY_F47uKEY_F48uKEY_F49uKEY_F5uKEY_F50uKEY_F51uKEY_F52uKEY_F53uKEY_F54uKEY_F55uKEY_F56uKEY_F57uKEY_F58uKEY_F59uKEY_F6uKEY_F60uKEY_F61uKEY_F62uKEY_F63uKEY_F7uKEY_F8uKEY_F9uKEY_FINDuKEY_HELPuKEY_HOMEuKEY_ICuKEY_ILuKEY_LEFTuKEY_LLuKEY_MARKu KEY_MESSAGEuKEY_MOVEuKEY_NEXTu KEY_NPAGEuKEY_OPENu KEY_OPTIONSu KEY_PPAGEu KEY_PREVIOUSu KEY_PRINTuKEY_REDOu KEY_REFERENCEu KEY_REFRESHu KEY_REPLACEu KEY_RESTARTu KEY_RESUMEu KEY_RIGHTuKEY_SAVEuKEY_SBEGu KEY_SCANCELu KEY_SCOMMANDu KEY_SCOPYu KEY_SCREATEuKEY_SDCuKEY_SDLu KEY_SELECTuKEY_SENDuKEY_SEOLu KEY_SEXITuKEY_SFu KEY_SFINDu KEY_SHELPu KEY_SHOMEuKEY_SICu KEY_SLEFTu KEY_SMESSAGEu KEY_SMOVEu KEY_SNEXTu KEY_SOPTIONSu KEY_SPREVIOUSu KEY_SPRINTuKEY_SRu KEY_SREDOu KEY_SREPLACEu KEY_SRIGHTu KEY_SRSUMEu KEY_SSAVEu KEY_SSUSPENDuKEY_STABu KEY_SUNDOu KEY_SUSPENDuKEY_UNDOuKEY_UPu_capability_namesuhas_keyu__name__uLuinitscrukeysukeyusystemupythonuappendukeynameuendwinuiuprint(((u3/opt/alt/python33/lib64/python3.3/curses/has_key.pyusH                                                                                                                                                            %  PK!6LAA"__pycache__/textpad.cpython-33.pyonu[ fc@s~dZddlZddlZddZGdddZedkrzdd ZejeZe d e endS( u:Simple textbox editing widget with Emacs-like keybindings.iNcCs|j|d|tj||d|j||dtj||d|j||dtj||d|j|d|tj||d|j||tj|j||tj|j||tj|j||tj dS(u^Draw a rectangle with corners at the provided upper-left and lower-right coordinates. iN( uvlineucursesu ACS_VLINEuhlineu ACS_HLINEuaddchu ACS_ULCORNERu ACS_URCORNERu ACS_LRCORNERu ACS_LLCORNER(uwinuulyuulxulryulrx((u3/opt/alt/python33/lib64/python3.3/curses/textpad.pyu rectangles%%%%u rectanglecBsh|EeZdZdZdddZddZddZdd Zd d Z dd d Z dS(uTextboxudEditing 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 cCsm||_||_|j\|_|_|jd|_|jd|_d|_d|_|jddS(Ni( uwinu insert_modeugetmaxyxumaxyumaxxu stripspacesuNoneulastcmdukeypad(uselfuwinu insert_mode((u3/opt/alt/python33/lib64/python3.3/curses/textpad.pyu__init__+s    uTextbox.__init__cCst|j}xdtjj|jj||tjjkrSt|j|d}Pn|dkrcPn|d}q |S(uuGo to the location of the first blank on the given line, returning the index of the last non-blank character.ii(umaxxucursesuasciiuwinuinchuSPumin(uselfuyulast((u3/opt/alt/python33/lib64/python3.3/curses/textpad.pyu _end_of_line5s -  uTextbox._end_of_linec Cs|jj\}}||jks3||jkr|jrN|jj}ny|jj|Wntjk ryYnX|jr|jj\}}tj j |r|j ||jj ||qqndS(N( uwinugetyxumaxyumaxxu insert_modeuinchuaddchucursesuerroruasciiuisprintu_insert_printable_charumove(uselfuchuyuxuoldchubackyubackx((u3/opt/alt/python33/lib64/python3.3/curses/textpad.pyu_insert_printable_charBs   uTextbox._insert_printable_charcCse|jj\}}||_tjj|ra||jksN||jkra|j|qan|tjj kr|jj |dn|tjj tj tjj tjfkr`|dkr|jj ||dnY|dkrnJ|jr|jj |d|j|dn|jj |d|j|tjj tjfkra|jjqan|tjjkr|jjn|tjjkr|jr|jj ||j|qa|jj ||jn|tjjtjfkrE||jkr|jj ||dqa||jkr+qa|jj |ddn|tjjkr[dS|tjjkr|jdkrdS||jkra|jj |ddqan|tjjkr|dkr|j|dkr|jjqa|jj |||jjnO|tjjkr4|jjn-|tjjtjfkr||jkra|jj |d|||j|dkr|jj |d|j|dqqan|tjjkr|jj n|tjj!tj"fkra|dkra|jj |d|||j|dkr^|jj |d|j|dq^qandS(u!Process a single editing command.ii(#uwinugetyxulastcmducursesuasciiuisprintumaxyumaxxu_insert_printable_charuSOHumoveuSTXuKEY_LEFTuBSu KEY_BACKSPACEu stripspacesu _end_of_lineudelchuEOTuENQuACKu KEY_RIGHTuBELuNLuVTudeletelnuclrtoeoluFFurefreshuSOuKEY_DOWNuSIuinsertlnuDLEuKEY_UP(uselfuchuyux((u3/opt/alt/python33/lib64/python3.3/curses/textpad.pyu do_commandTsp *   ' !- -uTextbox.do_commandc Csd}xt|jdD]}|jj|d|j|}|dkr]|jr]qnx_t|jdD]J}|jr||krPn|ttj j |jj ||}qqW|jdkr|d}qqW|S(u.Collect and return the contents of the window.uiiu ( urangeumaxyuwinumoveu _end_of_lineu stripspacesumaxxuchrucursesuasciiuinch(uselfuresultuyustopux((u3/opt/alt/python33/lib64/python3.3/curses/textpad.pyugathers/uTextbox.gathercCs`xS|jj}|r'||}n|s3qn|j|sFPn|jjq|jS(u2Edit in the widget window and collect the results.(uwinugetchu do_commandurefreshugather(uselfuvalidateuch((u3/opt/alt/python33/lib64/python3.3/curses/textpad.pyueditsu Textbox.editNF( u__name__u __module__u __qualname__u__doc__uFalseu__init__u _end_of_lineu_insert_printable_charu do_commandugatheruNoneuedit(u __locals__((u3/opt/alt/python33/lib64/python3.3/curses/textpad.pyuTextboxs  @ uTextboxu__main__cCsd\}}d \}}|j|d|dtj||||}t||d|d|||||jt|jS( Ni iiiiuUse Ctrl-G to end editing.i(i i(ii(uaddstrucursesunewwinu rectangleurefreshuTextboxuedit(ustdscruncolsunlinesuulyuulxuwin((u3/opt/alt/python33/lib64/python3.3/curses/textpad.pyu test_editboxs  & u test_editboxuContents of text box:( u__doc__ucursesu curses.asciiu rectangleuTextboxu__name__u test_editboxuwrapperustruprinturepr(((u3/opt/alt/python33/lib64/python3.3/curses/textpad.pyus     PK!6LAA"__pycache__/textpad.cpython-33.pycnu[ fc@s~dZddlZddlZddZGdddZedkrzdd ZejeZe d e endS( u:Simple textbox editing widget with Emacs-like keybindings.iNcCs|j|d|tj||d|j||dtj||d|j||dtj||d|j|d|tj||d|j||tj|j||tj|j||tj|j||tj dS(u^Draw a rectangle with corners at the provided upper-left and lower-right coordinates. iN( uvlineucursesu ACS_VLINEuhlineu ACS_HLINEuaddchu ACS_ULCORNERu ACS_URCORNERu ACS_LRCORNERu ACS_LLCORNER(uwinuulyuulxulryulrx((u3/opt/alt/python33/lib64/python3.3/curses/textpad.pyu rectangles%%%%u rectanglecBsh|EeZdZdZdddZddZddZdd Zd d Z dd d Z dS(uTextboxudEditing 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 cCsm||_||_|j\|_|_|jd|_|jd|_d|_d|_|jddS(Ni( uwinu insert_modeugetmaxyxumaxyumaxxu stripspacesuNoneulastcmdukeypad(uselfuwinu insert_mode((u3/opt/alt/python33/lib64/python3.3/curses/textpad.pyu__init__+s    uTextbox.__init__cCst|j}xdtjj|jj||tjjkrSt|j|d}Pn|dkrcPn|d}q |S(uuGo to the location of the first blank on the given line, returning the index of the last non-blank character.ii(umaxxucursesuasciiuwinuinchuSPumin(uselfuyulast((u3/opt/alt/python33/lib64/python3.3/curses/textpad.pyu _end_of_line5s -  uTextbox._end_of_linec Cs|jj\}}||jks3||jkr|jrN|jj}ny|jj|Wntjk ryYnX|jr|jj\}}tj j |r|j ||jj ||qqndS(N( uwinugetyxumaxyumaxxu insert_modeuinchuaddchucursesuerroruasciiuisprintu_insert_printable_charumove(uselfuchuyuxuoldchubackyubackx((u3/opt/alt/python33/lib64/python3.3/curses/textpad.pyu_insert_printable_charBs   uTextbox._insert_printable_charcCse|jj\}}||_tjj|ra||jksN||jkra|j|qan|tjj kr|jj |dn|tjj tj tjj tjfkr`|dkr|jj ||dnY|dkrnJ|jr|jj |d|j|dn|jj |d|j|tjj tjfkra|jjqan|tjjkr|jjn|tjjkr|jr|jj ||j|qa|jj ||jn|tjjtjfkrE||jkr|jj ||dqa||jkr+qa|jj |ddn|tjjkr[dS|tjjkr|jdkrdS||jkra|jj |ddqan|tjjkr|dkr|j|dkr|jjqa|jj |||jjnO|tjjkr4|jjn-|tjjtjfkr||jkra|jj |d|||j|dkr|jj |d|j|dqqan|tjjkr|jj n|tjj!tj"fkra|dkra|jj |d|||j|dkr^|jj |d|j|dq^qandS(u!Process a single editing command.ii(#uwinugetyxulastcmducursesuasciiuisprintumaxyumaxxu_insert_printable_charuSOHumoveuSTXuKEY_LEFTuBSu KEY_BACKSPACEu stripspacesu _end_of_lineudelchuEOTuENQuACKu KEY_RIGHTuBELuNLuVTudeletelnuclrtoeoluFFurefreshuSOuKEY_DOWNuSIuinsertlnuDLEuKEY_UP(uselfuchuyux((u3/opt/alt/python33/lib64/python3.3/curses/textpad.pyu do_commandTsp *   ' !- -uTextbox.do_commandc Csd}xt|jdD]}|jj|d|j|}|dkr]|jr]qnx_t|jdD]J}|jr||krPn|ttj j |jj ||}qqW|jdkr|d}qqW|S(u.Collect and return the contents of the window.uiiu ( urangeumaxyuwinumoveu _end_of_lineu stripspacesumaxxuchrucursesuasciiuinch(uselfuresultuyustopux((u3/opt/alt/python33/lib64/python3.3/curses/textpad.pyugathers/uTextbox.gathercCs`xS|jj}|r'||}n|s3qn|j|sFPn|jjq|jS(u2Edit in the widget window and collect the results.(uwinugetchu do_commandurefreshugather(uselfuvalidateuch((u3/opt/alt/python33/lib64/python3.3/curses/textpad.pyueditsu Textbox.editNF( u__name__u __module__u __qualname__u__doc__uFalseu__init__u _end_of_lineu_insert_printable_charu do_commandugatheruNoneuedit(u __locals__((u3/opt/alt/python33/lib64/python3.3/curses/textpad.pyuTextboxs  @ uTextboxu__main__cCsd\}}d \}}|j|d|dtj||||}t||d|d|||||jt|jS( Ni iiiiuUse Ctrl-G to end editing.i(i i(ii(uaddstrucursesunewwinu rectangleurefreshuTextboxuedit(ustdscruncolsunlinesuulyuulxuwin((u3/opt/alt/python33/lib64/python3.3/curses/textpad.pyu test_editboxs  & u test_editboxuContents of text box:( u__doc__ucursesu curses.asciiu rectangleuTextboxu__name__u test_editboxuwrapperustruprinturepr(((u3/opt/alt/python33/lib64/python3.3/curses/textpad.pyus     PK!M"__pycache__/has_key.cpython-33.pycnu[ fc @sddlZidej6dej6dej6dej6dej6dej6dej6d ej6d ej 6d ej 6d ej 6d ej 6dej 6dej6dej6dej6dej6dej6dej6dej6dej6dej6dej6dej6dej6dej6dej6dej6dej6dej6d ej6d!ej 6d"ej!6d#ej"6d$ej#6d%ej$6d&ej%6d'ej&6d(ej'6d)ej(6d*ej)6d+ej*6d,ej+6d-ej,6d.ej-6d/ej.6d0ej/6d1ej06d2ej16d3ej26d4ej36d5ej46d6ej56d7ej66d8ej76d9ej86d:ej96d;ej:6d<ej;6d=ej<6d>ej=6d?ej>6d@ej?6dAej@6dBejA6dCejB6dDejC6dEejD6dFejE6dGejF6dHejG6dIejH6dJejI6dKejJ6dLejK6dMejL6dNejM6dOejN6dPejO6dQejP6dRejQ6dSejR6dTejS6dUejT6dVejU6dWejV6dXejW6dYejX6dZejY6d[ejZ6d\ej[6d]ej\6d^ej]6d_ej^6d`ej_6daej`6dbeja6dcejb6ddejc6deejd6dfeje6dgejf6dhejg6diejh6djeji6dkejj6dlejk6dmejl6dnejm6doejn6dpejo6dqejp6drejq6dsejr6dtejs6duejt6dveju6dwejv6dxejw6dyejx6dzejy6d{ejz6d|ej{6d}ej|6d~ej}6dej~6dej6dej6dej6dej6dej6dej6dej6dej6dej6dej6dej6dej6dej6dej6dej6dej6dej6dej6dej6dej6dej6dej6dej6ZddZedkrzxgZejxaejD]SZejeZeeZeekrejdejeeefqqWWdejxeD]ZeeqWXndS(iNuka1uka3ukb2ukbsukbegukcbtukc1ukc3ukcanuktbcukclrukcloukcmdukcpyukcrtukctabukdch1ukdl1ukcud1ukrmirukendukentukelukedukextukf0ukf1ukf10ukf11ukf12ukf13ukf14ukf15ukf16ukf17ukf18ukf19ukf2ukf20ukf21ukf22ukf23ukf24ukf25ukf26ukf27ukf28ukf29ukf3ukf30ukf31ukf32ukf33ukf34ukf35ukf36ukf37ukf38ukf39ukf4ukf40ukf41ukf42ukf43ukf44ukf45ukf46ukf47ukf48ukf49ukf5ukf50ukf51ukf52ukf53ukf54ukf55ukf56ukf57ukf58ukf59ukf6ukf60ukf61ukf62ukf63ukf7ukf8ukf9ukfndukhlpukhomeukich1ukil1ukcub1ukllukmrkukmsgukmovuknxtuknpukopnukoptukppukprvukprtukrdoukrefukrfrukrplukrstukresukcuf1uksavukBEGukCANukCMDukCPYukCRTukDCukDLuksltukENDukEOLukEXTukindukFNDukHLPukHOMukICukLFTukMSGukMOVukNXTukOPTukPRVukPRTukriukRDOukRPLukRITukRESukSAVukSPDukhtsukUNDukspdukundukcuu1cCsXt|trt|}ntj|}|dkr=dStj|rPdSdSdS(NFT( u isinstanceustruordu_capability_namesugetuNoneuFalseu_cursesutigetstruTrue(uchucapability_name((u3/opt/alt/python33/lib64/python3.3/curses/has_key.pyuhas_keys uhas_keyu__main__u)Mismatch for key %s, system=%i, Python=%i(u_cursesuKEY_A1uKEY_A3uKEY_B2u KEY_BACKSPACEuKEY_BEGuKEY_BTABuKEY_C1uKEY_C3u KEY_CANCELu KEY_CATABu KEY_CLEARu KEY_CLOSEu KEY_COMMANDuKEY_COPYu KEY_CREATEuKEY_CTABuKEY_DCuKEY_DLuKEY_DOWNuKEY_EICuKEY_ENDu KEY_ENTERuKEY_EOLuKEY_EOSuKEY_EXITuKEY_F0uKEY_F1uKEY_F10uKEY_F11uKEY_F12uKEY_F13uKEY_F14uKEY_F15uKEY_F16uKEY_F17uKEY_F18uKEY_F19uKEY_F2uKEY_F20uKEY_F21uKEY_F22uKEY_F23uKEY_F24uKEY_F25uKEY_F26uKEY_F27uKEY_F28uKEY_F29uKEY_F3uKEY_F30uKEY_F31uKEY_F32uKEY_F33uKEY_F34uKEY_F35uKEY_F36uKEY_F37uKEY_F38uKEY_F39uKEY_F4uKEY_F40uKEY_F41uKEY_F42uKEY_F43uKEY_F44uKEY_F45uKEY_F46uKEY_F47uKEY_F48uKEY_F49uKEY_F5uKEY_F50uKEY_F51uKEY_F52uKEY_F53uKEY_F54uKEY_F55uKEY_F56uKEY_F57uKEY_F58uKEY_F59uKEY_F6uKEY_F60uKEY_F61uKEY_F62uKEY_F63uKEY_F7uKEY_F8uKEY_F9uKEY_FINDuKEY_HELPuKEY_HOMEuKEY_ICuKEY_ILuKEY_LEFTuKEY_LLuKEY_MARKu KEY_MESSAGEuKEY_MOVEuKEY_NEXTu KEY_NPAGEuKEY_OPENu KEY_OPTIONSu KEY_PPAGEu KEY_PREVIOUSu KEY_PRINTuKEY_REDOu KEY_REFERENCEu KEY_REFRESHu KEY_REPLACEu KEY_RESTARTu KEY_RESUMEu KEY_RIGHTuKEY_SAVEuKEY_SBEGu KEY_SCANCELu KEY_SCOMMANDu KEY_SCOPYu KEY_SCREATEuKEY_SDCuKEY_SDLu KEY_SELECTuKEY_SENDuKEY_SEOLu KEY_SEXITuKEY_SFu KEY_SFINDu KEY_SHELPu KEY_SHOMEuKEY_SICu KEY_SLEFTu KEY_SMESSAGEu KEY_SMOVEu KEY_SNEXTu KEY_SOPTIONSu KEY_SPREVIOUSu KEY_SPRINTuKEY_SRu KEY_SREDOu KEY_SREPLACEu KEY_SRIGHTu KEY_SRSUMEu KEY_SSAVEu KEY_SSUSPENDuKEY_STABu KEY_SUNDOu KEY_SUSPENDuKEY_UNDOuKEY_UPu_capability_namesuhas_keyu__name__uLuinitscrukeysukeyusystemupythonuappendukeynameuendwinuiuprint(((u3/opt/alt/python33/lib64/python3.3/curses/has_key.pyusH                                                                                                                                                            %  PK!.E?6 __pycache__/panel.cpython-33.pycnu[ fWc@sdZddlTdS(u3curses.panel Module for using panels with curses. i(u*N(u__doc__u _curses_panel(((u1/opt/alt/python33/lib64/python3.3/curses/panel.pyusPK!lҗ repeat.pynuȯPK!cQ $ncurses.pycnu[PK! XA? 4ncurses.pynuȯPK!ϐf7rain.pyonu[PK!% @repeat.pyonu[PK!̥TT|FREADMEnu[PK! fcfcJxmas.pynu[PK!`gjMMxmas.pyonu[PK!2Oslife.pyonu[PK!`gjMM.xmas.pycnu[PK!cQ cncurses.pyonu[PK!@@ {tclock.pyonu[PK!% repeat.pycnu[PK!٪  otclock.pynuȯPK!@@ tclock.pycnu[PK! c c %rain.pynuȯPK!r;5life.pynuȯPK!ϐrain.pycnu[PK!2Olife.pycnu[PK!& & __init__.pynu[PK!E/ / ascii.pynu[PK! ] has_key.pynu[PK!G #textpad.pynu[PK!>3'~@__pycache__/ascii.cpython-312.opt-1.pycnu[PK!z(z(#uT__pycache__/has_key.cpython-312.pycnu[PK!q``'B}__pycache__/ascii.cpython-312.opt-2.pycnu[PK!'__pycache__/panel.cpython-312.opt-1.pycnu[PK!>3!B__pycache__/ascii.cpython-312.pycnu[PK!>)))3__pycache__/textpad.cpython-312.opt-2.pycnu[PK!=f+ $Q__pycache__/__init__.cpython-312.pycnu[PK!!__pycache__/panel.cpython-312.pycnu[PK!z(z()__pycache__/has_key.cpython-312.opt-2.pycnu[PK!W=//)__pycache__/textpad.cpython-312.opt-1.pycnu[PK!=f+ *5__pycache__/__init__.cpython-312.opt-1.pycnu[PK!z(z()A__pycache__/has_key.cpython-312.opt-1.pycnu[PK!W=//#i__pycache__/textpad.cpython-312.pycnu[PK!إ-'__pycache__/panel.cpython-312.opt-2.pycnu[PK!*__pycache__/__init__.cpython-312.opt-2.pycnu[PK!xfWW9panel.pynu[PK!@