a zee1@s,dZddlZddlZddlZddlZddlZddlZddlm Z m Z m Z ddl m Z ddlmZgdZgdZgdZd d gZeeeed gZgd Zd ddddddddddddddddddddZdd Zd!d"Zz eeWneyed#Yn0Gd$d%d%eZd&d'Zd(d)Zd*Zdgd,d-ZGd.d/d/ej Z!ee!ej"d0Gd1d2d2ej#Z$ej"Z"Gd3d4d4e%Z&Gd5d d eZ'Gd6d7d7eZ(Gd8d9d9e%Z)Gd:d;d;e%Z*Gdd?d?e%Z,Gd@dAdAe%Z-GdBdCdCe%Z.GdDdEdEe-e,Z/e/Z0dFdGZ1GdHdIdIe+Z2GdJdKdKe/Z3e3Z4dhdMd Z5dNdOZ6edPZ7ze7dkrle6e7Wn<e8yedQe7Yn eyedRe7Yn0dSdTZ9dUdVZ:dWdXZ;dYZZ?e@d`kr(dadbZAdcddZBdedfZCeBeCeDdS)iz-turtle 1.1b- - for Python 3.1 - 4. 5. 2009N)isfilesplitjoin)deepcopy) simpledialog) ScrolledCanvas TurtleScreenScreen RawTurtleTurtleRawPenPenShapeVec2D)addshapebgcolorbgpicbye clearscreen colormodedelay exitonclick getcanvas getshapeslistenmainloopmodenuminputonkey onkeypress onkeyrelease onscreenclickontimerregister_shape resetscreen screensizesetupsetworldcoordinates textinputtitletracerturtlesupdate window_height window_width)Obackbackward begin_fill begin_polybkcircleclear clearstamp clearstampsclonecolordegreesdistancedotdownend_fillend_polyfd fillcolorfillingforwardget_polygetpen getscreen get_shapepoly getturtlegotoheading hideturtlehomehtisdown isvisibleleftltonclickondrag onreleasepdpenpencolorpendownpensizepenuppospositionpuradiansrightreset resizemodertseth setheadingsetpos setposition settiltangle setundobuffersetxsetyshape shapesizeshapetransform shearfactor showturtlespeedststamptilt tiltangletowards turtlesizeundoundobufferentriesupwidthwritexcorycorwrite_docstringdictdone Terminator)rr0r3r@rMrQrUr[r]rbrcrerfrqrvryrz?g?ii,standard? iclassicblacknoresizeTenglishturtlescreenzPython Turtle GraphicsF)rzheight canvwidth canvheight leftright topbottomrrrundobuffersizerkrWrAravisiblelanguage exampleturtle examplescreenr) using_IDLEc Cst|d}|}Wdn1s(0Yi}|D]}|}|r:|drVq:z|d\}}Wn&tytd||fYq:Yn0|}|}|dvrt|}n2zd|vrt|}nt |}WntyYn0|||<q:|S)Nr#=zBad line in config-file %s: %s)TrueFalseNonez''z"".) open readlinesstrip startswithr ValueErrorprintevalfloatint)filenamefZcfglinescfgdictlinekeyvaluer:/opt/bitninja-python-dojo/embedded/lib/python3.9/turtle.py config_dicts0 &       rcCsd}i}i}t|rt|}d|vr0d|d}ztt\}}t||}Wnty`d}Yn0t|rrt|}t|t|dS)Nz turtle.cfgZ importconfigz turtle_%s.cfg)rrr__file__r Exception_CFGr,)rZ default_cfgZcfgdict1Zcfgdict2headtailZ cfg_file2rrr readconfigs      rz"No configfile read, reason unknownc@s\eZdZddZddZddZddZd d Zd d Zd dZ ddZ ddZ ddZ dS)rcCst|||fSN)tuple__new__)clsxyrrrrsz Vec2D.__new__cCs"t|d|d|d|dSNrrselfotherrrr__add__sz Vec2D.__add__cCsDt|tr*|d|d|d|dSt|d||d|Sr) isinstancerrrrr__mul__s  z Vec2D.__mul__cCs2t|tst|tr.t|d||d|StSr)rrrrNotImplementedrrrr__rmul__szVec2D.__rmul__cCs"t|d|d|d|dSrrrrrr__sub__sz Vec2D.__sub__cCst|d |d Srrrrrr__neg__sz Vec2D.__neg__cCs|dd|dddS)Nrrrrrrrr__abs__ sz Vec2D.__abs__cCsjt|d |d}|tjd}t|t|}}t|d||d||d||d|S)Nrrf@)rmathpicossin)rangleZperpcsrrrrotate sz Vec2D.rotatecCs|d|dfSrrrrrr__getnewargs__szVec2D.__getnewargs__cCsd|S)Nz (%.2f,%.2f)rrrrr__repr__szVec2D.__repr__N) __name__ __module__ __qualname__rrrrrrrrrrrrrrrsrcCsTt|j}||D]}t||q|jD]\}}t|tjkr0|||<q0dSr) list __bases__reverse __methodDict__dict__itemstypetypes FunctionType)r_dictZbaseListZ_superrrrrrr!s  rcCsi}t|||Sr)rkeys)rrrrr __methods+s rzTdef %(method)s(self, *args, **kw): return self.%(attribute)s.%(method)s(*args, **kw)rc Csi}t||i}t|}|D]B}|dddksd|dddksd||vsd||vrXq"||||<q"|D]D\}} || d} t|trt||d} t| | t||| |qndS)Nr_)methodfunc)rZ attribute) rrrrrstr __stringBodyexecsetattr) Z fromClassZtoClassZtoPartZexcludeZ_dict_1rZmfcexrrdZ execStringrrr__forwardmethods5s  0    rc@s`eZdZdddZdddZd d Zd d Zd dZddZddZ ddZ ddZ ddZ dS)r^Xc Cs0tjj||||d||_|||_|_|||_|_d|_ tj ||||j tj dd|_ tj ||j jtjd|_tj ||j jd|_|j j|jj|jjd|jdd dd |jdd dd |j jd |d ddd d d d |jjd |d dd d d d d |jjd |d d dd d d d ||jd |jdS)N)rzrwhiter)rzrbgZreliefZ borderwidth)commandZorient)r)ZxscrollcommandZyscrollcommandrr)ZweightZminsizenewsZpadxZin_ZpadyrowcolumnZrowspanZ columnspanZstickyz )TKFrame__init__winfo_toplevelZ _rootwindowrzrrrrCanvasZSUNKEN_canvasZ ScrollbarZxviewZ HORIZONTALhscrollZyviewvscrollZ configuresetZ rowconfigureZcolumnconfiguregridr`bindonResize)rmasterrzrrrrrrrPs8     zScrolledCanvas.__init__NcCs|r ||_|r||_|r||_|jj||j d|j d|jd|jdfd|jd|j|jd|j|jd|j|jd|j| dS)Nr)r scrollregionr) rrrrconfig xview_movetorz yview_movetor adjustScrollsrrrrrrrr`is$zScrolledCanvas.resetc Cs|j}|j}|jd|j||j|jd|j||j||jks`||jkr|jjd|ddddddd|j jd|dddddddn|j |j dS)Nrrrrr) r winfo_width winfo_heightr rr rrrrZ grid_forget)rcwidthcheightrrrr {s   zScrolledCanvas.adjustScrollscCs |dSr)r )reventrrrrszScrolledCanvas.onResizecGs |jj|Sr)rbboxrargsrrrrszScrolledCanvas.bboxcOs|jj|i|Sr)rcgetrrkwargsrrrrszScrolledCanvas.cgetcOs|jj|i|dSr)rr rrrrr szScrolledCanvas.configcOs|jj|i|dSr)rrrrrrrszScrolledCanvas.bindcOs|jj|i|dSr)runbindrrrrrszScrolledCanvas.unbindcCs|jdSr)r focus_forcerrrrrszScrolledCanvas.focus_force)rrrr)NNN) rrrrr`r rrrr rrrrrrrrJs  rrc@sDeZdZddZddZddZddZd d Zd d Zd dZ dS)_RootcCstj|dSr)rTkrrrrrrsz_Root.__init__cCs&t||||||_|jjddddS)NrZboth)expandfill)rrpack)rrzrrrrrr setupcanvassz_Root.setupcanvascCs|jSr)rrrrr _getcanvassz_Root._getcanvascCs|d||||fdS)Nz %dx%d%+d%+d)Zgeometry)rrzrstartxstartyrrr set_geometrysz_Root.set_geometrycCs|d|dS)NZWM_DELETE_WINDOW)Z wm_protocol)rdestroyrrr ondestroysz_Root.ondestroycCs|Sr)Zwinfo_screenwidthrrrr win_widthsz_Root.win_widthcCs|Sr)Zwinfo_screenheightrrrr win_heightsz_Root.win_heightN) rrrrr!r"r%r'r(r)rrrrrsrc@s(eZdZddZddZddZddZdFd d Zd dZdGddZ ddZ ddZ ddZ ddZ dHddZddZdIddZdJd d!ZdKd"d#ZdLd$d%Zd&d'ZdMd(d)Zd*d+Zd,d-Zd.d/Zd0d1Zd2d3Zd4d5Zd6d7Zd8d9Zd:d;ZdNdd?Z d@dAZ!dBdCZ"dOdDdEZ#d S)PTurtleScreenBasecCstjdd|jd}||S)Nr)rzrr)r PhotoImagecvblank)rZimgrrr _blankimageszTurtleScreenBase._blankimagecCstj||jdS)N)filer)rr+r,)rrrrr_imageszTurtleScreenBase._imagecCs||_t|tr"|jj}|jj}nJt|jd}t|jd}|jj| d| d|d|dfd||_||_d|_|_ dS)Nrzrrrr) r,rrrrrrr xscaleyscale)rr,whrrrrs  *zTurtleScreenBase.__init__cCs|jjddddS)N)rrrrrrrroutline)r,Zcreate_polygonrrrr _createpolyszTurtleScreenBase._createpolyNFc Csg}|D]*\}} |||j|| |jq|jj|g|R|dur`|jj||d|durx|jj||d|dur|jj||d|r|j|dS)Nr)r7rzappendr2r3r,coordsZ itemconfigureZ tag_raise) rZpolyitem coordlistrr7rztopclrrrrr _drawpolys  zTurtleScreenBase._drawpolyc Cs|jjddddddtjdS)Nrrr)rrzZcapstyle)r,Z create_linerZROUNDrrrr _createline szTurtleScreenBase._createlinec Cs|durPg}|D]*\}}|||j|| |jq|jj|g|R|durh|jj||d|dur|jj||d|r|j|dS)Nr9r:r;) rZlineitemr>rrzr?r@rrrrr _drawlines  zTurtleScreenBase._drawlinecCs|j|dSr)r,deleteritemrrr_delete(szTurtleScreenBase._deletecCs|jdSr)r,r,rrrr_update.szTurtleScreenBase._updatecCs|j|dSr)r,afterrrrrr_delay3szTurtleScreenBase._delaycCs2z|j|}d}Wntjy,d}Yn0|S)NTF)r,Z winfo_rgbrZTclError)rr9Zrgbokrrr_iscolorstring7s   zTurtleScreenBase._iscolorstringcCs0|dur |jj|d|n |jdSdS)N)rr)r,r rHr)rr9rrr_bgcolorAs zTurtleScreenBase._bgcolorcCst|\}}||j}||j}dddd}|jj|d| |||||d} |j| \} } } } |j| | dfS)NswrZse)rPcenterr_r)textanchorrfont)r2r3r,Z create_textrr,)rr[txtalignrSrWrrrRrFZx0Zy0Zx1Zy1rrr_writeJs    zTurtleScreenBase._writercsDdurj|d|n$fdd}j|d|||dS)N cs:j|jjj|j j}}||dSrr,canvasxrr2canvasyrr3rrrfunrrreventfunesz+TurtleScreenBase._onclick..eventfunr,Z tag_unbindZtag_bindrrFr]numaddr^rr\r_onclick\szTurtleScreenBase._onclickcsDdurj|d|n$fdd}j|d|||dS)Nzcs:j|jjj|j j}}||dSrrXr[r\rrr^wsz-TurtleScreenBase._onrelease..eventfunr_r`rr\r _onreleaseks zTurtleScreenBase._onreleasecsDdurj|d|n$fdd}j|d|||dS)NzcsRz:j|jjj|j j}}||WntyLYn0dSr)r,rYrr2rZrr3rr[r\rrr^s z*TurtleScreenBase._ondrag..eventfunr_r`rr\r_ondrag~s zTurtleScreenBase._ondragcs@durjd|n"fdd}jd|||dS)NrWcs:j|jjj|j j}}||dSrrXr[r\rrr^sz1TurtleScreenBase._onscreenclick..eventfunr,rr)rr]rarbr^rr\r_onscreenclicks zTurtleScreenBase._onscreenclickcs>dur|jd|dnfdd}|jd||dS)Nzcs dSrrrr]rrr^sz0TurtleScreenBase._onkeyrelease..eventfunrfrr]rr^rrir _onkeyreleases zTurtleScreenBase._onkeyreleasecsndur4|dur |jddqj|jd|dn6fdd}|durX|jd|n|jd||dS)Nz z cs dSrrrhrirrr^sz.TurtleScreenBase._onkeypress..eventfunrfrjrrir _onkeypresss zTurtleScreenBase._onkeypresscCs|jdSr)r,rrrrr_listenszTurtleScreenBase._listencCs(|dkr|j|n|j||dSNr)r,Z after_idlerIrr]trrr_ontimerszTurtleScreenBase._ontimercCs|jjdd|dS)Nrimage)r,Z create_image)rrsrrr _createimageszTurtleScreenBase._createimagecCs<|\}}|j|||j| |jf|jj||ddSNrr)r,r=r2r3 itemconfig)rrFr[rsrrrrr _drawimages zTurtleScreenBase._drawimagecCs |jj||d|j|dSru)r,rvZ tag_lower)rrFrsrrr _setbgpicszTurtleScreenBase._setbgpiccCs |j|Sr)r,rrErrr_typeszTurtleScreenBase._typecs.|j|fddtdtdD}|S)Ncs"g|]}||d fqS)rr.0ir@rr z/TurtleScreenBase._pointlist..rr)r,r=rangelen)rrFplrr}r _pointlists zTurtleScreenBase._pointlistcCs|jj||||fddS)Nr1)r,r )rsrx1sry1srx2sry2rrr_setscrollregionsz!TurtleScreenBase._setscrollregionc Cs~|j}|D]j}t|j|}g}|rd|dd\}}|||||||dd}q&|jj|g|RqdSNr)r,Zfind_allrr=r<) rZ xscalefactorZ yscalefactorrrFZ coordinatesZ newcoordlistrrrrr_rescales zTurtleScreenBase._rescalecCszt|jts|j|jfS||ur6|ur6durJnn|jj|jjfS|durX||_|durf||_|j|||dSr)rr,rrrr`rrrr_resizes  "zTurtleScreenBase._resizecCs@|j}|dkr|jd}|j}|dkr8|jd}||fS)Nrrzr)r,rr)rrzrrrr _window_sizes    zTurtleScreenBase._window_sizecCs|jjdSr)r,Ztkrrrrrrs zTurtleScreenBase.mainloopcCstj|||jdS)N)parent)rZ askstringr,)rr)promptrrrr(.s zTurtleScreenBase.textinputcCstj||||||jdS)N)Z initialvalueZminvaluemaxvaluer)rZaskfloatr,)rr)rdefaultZminvalZmaxvalrrrr=s zTurtleScreenBase.numinput)NNNF)NNNF)N)rN)rN)rN)rN)N)NNN)NNN)$rrrr.r0rr8rArBrCrGrHrKrMrNrVrcrdrergrkrlrmrqrtrwrxryrrrrrrr(rrrrrr*sJ            r*c@s eZdZdS)rNrrrrrrrrYsc@s eZdZdS)TurtleGraphicsErrorNrrrrrrbsrc@s eZdZdddZdddZdS)rNcCsz||_|dkr"t|trpt|}nN|dkrVt|trp|drpt|rpt |}n|dkrdg}n t d|||_ dS)Npolygonrs.gifcompoundzThere is no shape type %s) ryrrrrlowerendswithrrr0r_data)rtype_datarrrrns     zShape.__init__cCs:|jdkrtd|j|dur$|}|j|||gdS)Nrz Cannot add component to %s Shape)ryrrr<)rpolyrr7rrr addcomponent~s zShape.addcomponent)N)N)rrrrrrrrrrgs rc@s@eZdZdddZdddZddZd d Zd d Zd dZdS)TbufferrcCs$||_dgg||_d|_d|_dS)NrF)bufsizebufferptrcumulate)rrrrrrszTbuffer.__init__NcCsD|dur&t|jD]}dg|j|<qn||_dgg||_d|_dS)Nr)rrrr)rrr|rrrr`s z Tbuffer.resetcCsF|jdkrB|js0|jd|j|_||j|j<n|j|j|dSr)rrrrr<rErrrpushs  z Tbuffer.pushcCsJ|jdkrF|j|j}|dur"dSdg|j|j<|jd|j|_|SdSr)rrrrErrrpops  z Tbuffer.popcCs|j|jdgSr)rrcountrrrr nr_of_itemsszTbuffer.nr_of_itemscCst|jdt|jS)N )rrrrrrrrszTbuffer.__repr__)r)N) rrrrr`rrrrrrrrrs    rc@seZdZdZedededfddZddZdddZ ddZ ddZddZd?ddZd@ddZd d!Zd"d#Zd$d%Zd&d'Zd(d)Zd*d+ZdAd-d.Zd/d0ZdBd1d2ZdCd3d4ZdDd6d7ZdEd8d9ZdFd:d;ZeZe Z eZ!e Z"eZ#d S)GrTrrrc Cst||tddtddtddtddtddtddtd|d |_d d i|_||_||_td |_ g|_ | t j d kr|}|ddddd|ddddddS)Nr)rrrrr))r))rr)) )))rr))r)rr)rrrr)r)r)rr)rr)rr)rr)rr)rr)rr)rr)rr)r)Q#@Q@)Gz. @Q@)rr)rrr)Qr)Qr)Gz. r)Q#rr)rr)rr)rr)rr)gg$)rr)rr)rr)rr))rr)rr)rr)rr))rGz)rg'@)rr)rr)rrr)rrrs)Zarrowrr4ZsquareZtrianglerr-nopicrrdarwinZwmZ attributesrz-topmost10)r*rrr._shapes_bgpics_mode _delayvaluer _colormode_keysr5sysplatformrcall)rr,rrrZ rootwindowrrrrs&     zTurtleScreen.__init__cCstd|_td|_|d|d|_d|_d|_d|_g|_ | dd D]}| d|qP| d|j ddD]}|d|| d|qzdt_dS) Nrrallrrrrr)rr)rrrrGrt_bgpic _bgpicname_tracing_updatecounter_turtlesrrRrrrr _pen)rbtnrrrrr5s       zTurtleScreen.clearNcCs||dur|jS|}|dvr*td|||_|dvrp||j d|j d|jd|jdd|_|_|dS)NrlogoworldzNo turtle-graphics-mode %s)rrrr) rrrrrrr2r3r`rrrrrr s  zTurtleScreen.modecCs|dkr|dt||}t||}|\}}||d|d|j|j} } |j||_|j||_||j} | |j} |j| } |j| }|| | | || |j| |j| | dS)Nr) rrrr%r2r3rrrrr,)rZllxZllyZurxZuryZxspanZyspanZwxZwyZ oldxscaleZ oldyscalerrrrrrrr'-s            z TurtleScreen.setworldcoordinatescCsT|dur2|dr(td||}qFtdnt|trFtd|}||j|<dS)Nrrsz;Bad arguments for register_shape. Use help(register_shape)r)rrrr0rrrr)rnamerkrrrr#Ts   zTurtleScreen.register_shapec Cst|dkr|d}t|trD||s0|dkr4|Stdt|z|\}}}Wn&ttfyxtdt|Yn0|jdkrdd|||fD\}}}d|krd krnn.d|krd krnnd|krd ksntd t|d |||fS) Nrrrzbad color string: %sbad color arguments: %srcSsg|]}td|qSgo@roundr{rrrrr~rz*TurtleScreen._colorstr..bad color sequence: %s #%02x%02x%02x)rrrrMr TypeErrorrr)rr9rgbrrr _colorstrws   FzTurtleScreen._colorstrcsxdsStdkr.fdddD}n4tdkrVfddddD}n td tfd d |DS) Nrrcs"g|]}t||ddqS)rrrrzcstrrrr~rz'TurtleScreen._color..)rrrrcsg|]}dt|dqS)rr)r{r5rrrr~rrzbad colorstring: %sc3s|]}|jdVqdS)rN)r)r{rrrr rz&TurtleScreen._color..)rrrr)rrr@r)rrr_colors    zTurtleScreen._colorcCs8|dur|jS|dkr"t||_n|dkr4t||_dS)Nrr)rrr)rZcmoderrrrs  zTurtleScreen.colormodecCs$|jD]}||j|qdSr)r_setmoderr`)rrrrrr`s  zTurtleScreen.resetcCs|jSr)rrrrrr+szTurtleScreen.turtlescGs4|r||}nd}||}|dur0||}|Sr)rrNrrrr9rrrrs   zTurtleScreen.bgcolorcCsB|dur|jSt||_d|_|dur0t||_|jr>|dSrn)rrrrr,)rnrrrrr*s  zTurtleScreen.tracercCs|dur|jSt||_dSr)rrrJrrrrs zTurtleScreen.delaycCs<tjsdt_t|jdkr8|jd7_|j|j;_dS)NTrr)r_RUNNINGrrrrrrr _incrementudc s  zTurtleScreen._incrementudccCs<|j}d|_|D]}||q||_|dSNT)rr+ _update_data _drawturtlerH)rtracingrprrrr,s  zTurtleScreen.updatecCs |dSrnrrrrrr.szTurtleScreen.window_widthcCs |dSNrrrrrrr-&szTurtleScreen.window_heightcCs|jSr)r,rrrrr/s zTurtleScreen.getcanvascCst|jSr)sortedrrrrrrr;s zTurtleScreen.getshapesrcCs||||dSr)rgrr]rrbrrrrRFszTurtleScreen.onclickcCsF|dur ||jvr6|j|n||jvr6|j||||dSr)rremover<rkrr]rrrrrWs    zTurtleScreen.onkeycCsN|dur ||jvr>|j|n|dur>||jvr>|j||||dSr)rrr<rlrrrrrus   zTurtleScreen.onkeypresscCs |dSr)rm)rxdummyydummyrrrrs zTurtleScreen.listenrcCs|||dSr)rqrorrrr"szTurtleScreen.ontimercCsF|dur|jS||jvr(|||j|<||j|j|||_dSr)rrr0rxr)rZpicnamerrrrs  zTurtleScreen.bgpiccCs||||Sr)rrrrrr%szTurtleScreen.screensize)N)N)N)NN)N)rN)N)NN)r)N)NNN)$rrrrrrr5rr'r#rrrr`r+rr*rrr,r.r-rrrRrrrr"rr%r!r$rrr rrrrrsD ( "' #              rc@sPeZdZeddeddedddZdZdZdZefddZd d Z dAd d Z ddZ dBddZ ddZ ddZddZddZddZddZdd Zd!d"Zd#d$Zd%d&Zd'd(ZdCd)d*Zd+d,Zd-d.Zd/d0ZdDd1d2ZdEd3d4Zd5d6Zd7d8ZdFd9d:Z dGd;d<Z!dHd=d>Z"dId?d@Z#eZ$eZ%eZ&eZ'eZ(eZ)eZ*eZ+eZ,d S)J TNavigatorr)rrrrrrcCsB|j|_|j|_||_d|_|d|_||t |dSr) DEFAULT_ANGLEOFFSET _angleOffsetDEFAULT_ANGLEORIENT _angleOrientr undobufferr:rrr`rrrrrs zTNavigator.__init__cCstdd|_tj|j|_dS)Nr)r _positionrSTART_ORIENTATIONr_orientrrrrr`s zTNavigator.resetNcCsL|dur|jS|dvrdS||_|dvr6d|_d|_n|jd|_d|_dS)Nr)rrrr@r)rrr  _fullcirclerrrrrs zTNavigator._setmodecCs0||_d||_|jdkr"d|_n |d|_dS)Nihrrr)r _degreesPerAUrrrZ fullcirclerrr_setDegreesPerAUs   zTNavigator._setDegreesPerAUv@cCs||dSr)rrrrrr:szTNavigator.degreescCs|dtjdSr)rrrrrrrr^5s zTNavigator.radianscCs|j|j|}||dSr)r r _goto)rr;Zenderrr_goCszTNavigator._gocCs||j9}|j||_dSr)rr rrrrrr_rotateHs zTNavigator._rotatecCs ||_dSrr )rendrrrrMszTNavigator._gotocCs||dSrrrr;rrrrCQszTNavigator.forwardcCs|| dSrrrrrrr/hszTNavigator.backcCs|| dSrrrrrrr_|szTNavigator.rightcCs||dSrrrrrrrPszTNavigator.leftcCs|jSrrrrrrr[s zTNavigator.poscCs |jdSrnrrrrrr|s zTNavigator.xcorcCs |jdSrrrrrrr}s zTNavigator.ycorcCs,|dur|t|n|t||dSr)rr)rrrrrrrIszTNavigator.gotocCs|dd|ddSrn)rIrdrrrrrLs zTNavigator.homecCs|t||jddSrrrr )rrrrrriszTNavigator.setxcCs|t|jd|dSrnr)rrrrrrjszTNavigator.setycCsT|durt||}t|tr"|}n$t|tr6t|}nt|trF|j}t||jSr)rrrrr abs)rrrr[rrrr;%s     zTNavigator.distancecCs|durt||}t|tr"|}n$t|tr6t|}nt|trF|j}||j\}}tt||dtjdd}||j }|j |j ||j SNrrr) rrrrr rratan2rrrr r)rrrr[resultrrrruEs       zTNavigator.towardscCsJ|j\}}tt||dtjdd}||j}|j|j||jSr) r rrr rrrr r)rrrr!rrrrJhs   zTNavigator.headingcCs>|||j}|j}||d||d}||dS)N@)rJr rr)rZto_anglerfullrrrrdwszTNavigator.setheadingc Csp|jr|jdgd|j_|}|dur2|j}|durjt||j}dttdt|dd|}d||}d|}d |t |tj d |j }|d kr| | | }}}| } | } |d kr| d d n |d ||t|D].} |||||d ||q|| |d krR| | | |||jrld |j_dS) NseqTr g@gM@rrr"rrF)r rrrprrrminrrrr_tracerrKrrr) rradiusZextentstepsrpZfracr4Zw2ltrZdlr|rrrr4s>" "          zTNavigator.circlecCsdSrr)rrrrrrpszTNavigator.speedcCsdSrr)rarrrrr'szTNavigator._tracercCsdSrr)rrrrrrKszTNavigator._delay)N)r)N)N)N)NN)r)NN)N)-rrrrr Z DEFAULT_MODErrrr`rrr:r^rrrrCr/r_rPr[r|r}rIrLrirjr;rurJrdr4rpr'rKr@r3r0rbrQr\rerfrcrrrrrsX     # # A   rc@seZdZedfddZededfddZd-d d Zd.d d Zd dZddZ ddZ d/ddZ ddZ ddZ ddZddZddZdd Zd0d!d"Zd1d$d%Zd2d'd(Zd)d*Zd+d,ZeZeZeZe Ze ZeZeZdS)3TPenracCs||_d|_t|dSr) _resizemoder r-_reset)rrarrrrsz TPen.__init__rWrAcCsFd|_d|_||_||_d|_d|_d|_d|_d|_d|_ d|_ dS)NrTr)rrr)rrrr) _pensize_shown _pencolor _fillcolor_drawing_speed_stretchfactor _shearfactor_tilt _shapetrafo _outlinewidth)rrWrArrrr/sz TPen._resetNcCs.|dur|jS|}|dvr*|j|ddS)N)autouserrra)r.rrV)rZrmoderrrras zTPen.resizemodecCs|dur|jS|j|ddS)N)rY)r0rV)rrzrrrrYsz TPen.pensizecCs|js dS|jdddS)NFrXr4rVrrrrrZ0s z TPen.penupcCs|jr dS|jdddS)NTr>r?rrrrrX>s z TPen.pendowncCs|jSr)r4rrrrrNLs z TPen.isdowncCsjdddddd}|dur|jS||vr0||}n*d|krDdkrVnntt|}nd}|j|d dS) Nrrrrr)ZfastestfastnormalZslowZslowestrg%@)rp)r5rrrV)rrpZspeedsrrrrp[s z TPen.speedcGs|rht|}|dkr"|d}}n"|dkr4|\}}n|dkrD|}}||}||}|j||dn||j||jfSdS)Nrrrr)rWrA)rrrVrr2r3)rrr*ZpcolorZfcolorrrrr9s    z TPen.colorcGs:|r*||}||jkrdS|j|dn ||jSdS)N)rW)rr2rVrrrrrrWs   z TPen.pencolorcGs:|r*||}||jkrdS|j|dn ||jSdS)N)rA)rr3rVrrrrrrAs   zTPen.fillcolorcCs|jdddS)NTshownrVrrrrros zTPen.showturtlecCs|jdddS)NFrBrDrrrrrK szTPen.hideturtlecCs|jSr)r1rrrrrO s zTPen.isvisiblec Ks|j|j|j|j|j|j|j|j|j|j |j d }|s>|s>|St |t rN|}ni}| |i}|D]}||||<qd|jr|jd|fd}d|vr|j|dkrd}d|vrt |dtr||df|d<|j|dkrd}d|vr|j|dkrd}|r|d|vr&|d|_d|vr:|d|_d|vrN|d|_d|vrt |dtr|||df|d<|d|_d |vr|d |_d |vr|d |_d |vr|d }t |ttfr||f}||_d |vr|d |_d |vr|d |_ d|vr|d|_d|vr.|d|_ d |vsLd|vsLd |vr|j\} } |j} t|j t|j } } | | | | | | | | | | | | f|_|dS)N) rCrXrWrArYrpra stretchfactorrnr7rsrVFrXTrWrYrArprarErnr7rCrs)r1r4r2r3r0r5r.r6r7r:r8rdictr,r rrr_newLinerrrrrr9rH)rrVZpendictZ_pdpZ_p_bufrZnewLineZsfZscxZscyZshfsacarrrrV! s/                          zTPen.penTcCsdSrrrZusePosrrrrG sz TPen._newLineFcCsdSrr)rrZforcedrrrrH sz TPen._updatecCsdSrrrrrrr sz TPen._colorcCsdSrrrrrrr szTPen._colorstr)N)N)N)N)T)TF)rrrrrr/rarYrZrXrNrpr9rWrArorKrOrVrGrHrrrzryr]rUr=rqrMrrrrr-s8    &.%$    r-c@seZdZddZddZdS) _TurtleImagecCs||_d|_||dSr)rry _setshape)rr shapeIndexrrrr sz_TurtleImage.__init__cs|j||_|jdkr*j|jkr2nndS|jdkrPj|jkrXnndS|jdvrp|jn |jdkr|jD]}|qj|j|_|jdkr|_nF|jdkrԈjdj|_n&|jdkrfddj|jD|_dS)Nrrs)rsrrr-csg|] }qSrr8r{rFrrrr~ rz*_TurtleImage._setshape..) rrNryrrG_itemr8rtr)rrNrFrrQrrM s(""          z_TurtleImage._setshapeN)rrrrrMrrrrrL srLc@seZdZgZdedededfddZddZd d Zd d Zd dZ ddZ ddZ ddZ dlddZ ddZddZddZddZdmdd Zdnd!d"Zdod#d$Zd%d&Zdpd'd(Zd)d*Zdqd+d,Zd-d.Zd/d0Zdrd2d3Zd4d5Zd6d7Zd8d9Zd:d;Zdsdd?Z!d@dAZ"dBdCZ#dtdEdFZ$dGdHZ%dIdJZ&dKdLZ'dudMdNZ(dOdPZ)dvdSdTZ*dUdVZ+dWdXZ,dYdZZ-d[d\Z.d]d^Z/e/Z0dwd_d`Z1dxdbdcZ2dydddeZ3dzdfdgZ4dhdiZ5djdkZ6eZ7dS){r NrkrrcCs4t|tr||_n|t|tr:|tjvr2tj|||_nTt|ttfrtjD]}|j |krN||_qqNt||_tj|jn t d||j}t || t ||j|||_t|||_d|_d|_d|_|_||_d|_||_|jg|_|jg|_g|_||_t ||_!|"dS)Nzbad canvas argument %sF)#r_Screenrrr screensr<rrr,rrrrr-rrBdrawingLineItemrLr_poly _creatingPoly _fillitem _fillpathr1_hidden_from_screencurrentLineItemr  currentLiner stampItems_undobuffersizerr rH)rZcanvasrkrrrrrrr s@                 zRawTurtle.__init__cCs0t|t||||dSr)rr`r-r/_clearrrHrrrrr` s   zRawTurtle.resetcCs&|dus|dkrd|_n t||_dSrn)r r)rsizerrrrh szRawTurtle.setundobuffercCs|jdurdS|jSrn)r rrrrrrx, s zRawTurtle.undobufferentriescCsld|_|_|jD]}|j|q|j|_g|_|jrJ|j |j |jg|_| | |j dSr)rXrYrrrGrBr[r\r4r<r r7rhr^rErrrr_9 s    zRawTurtle._clearcCs||dSr)r_rHrrrrr5G s zRawTurtle.clearcCsF|j|jjdkrdSt|jdkrB|j|j|j|j|jdSr) rrrrr\rCr[r2r0rrrrrV s  zRawTurtle._update_datacCsx|j}|jdkrdS|jdkrD|||||jn0||jdkrt|D] }|q^|dSr) rrrrrHrKrrr+)rrrprrrrH^ s     zRawTurtle._updatecCs|j||Sr)rr*)rflagrrrrr'p szRawTurtle._tracercCs |j|Sr)rrrrrrr szRawTurtle._colorcCs |j|Sr)rrrrrrr szRawTurtle._colorstrc Cst|tr|Sz|\}}}Wn&ttfyBtdt|Yn0|jjdkrjdd|||fD\}}}d|kr~dkrnn.d|krdkrnnd|krdksntdt|d|||fS) NrrcSsg|]}td|qSrrrrrrr~ rz!RawTurtle._cc..rrrr)rrrrrrr)rrrrrrrr_cc s  Fz RawTurtle._cccs|j||j|j}d|_d|_t|}|_||_|_t|jj|_j|j |jjj }|dkr |j_ nJ|dkr j dj|j_ n*|dkrʇfddj |jjjD|j_ |_||S)Nrrsr-rcsg|] }qSrrOrPrQrrr~ rz#RawTurtle.clone..)rrGr4rrrLrNrr<rryr8rRrtrrBr[rH)rrqttyperrQrr8 s.      zRawTurtle.clonecCsB|dur|jjS||jvr*td||j||dS)NzThere is no shape named %s)rrNrrrrMrH)rrrrrrk s   zRawTurtle.shapecCs||ur|urdur8nn|j\}}|||jfS|dksH|dkrPtd|durt|durj||f}q||f}n|dur|jd|f}n|j}|dur|j}|jd||ddS)Nrz(stretch_wid/stretch_len must not be zeror<)rarEr7)r6r:rrV)rZ stretch_widZ stretch_lenr7rErrrrl s""    zRawTurtle.shapesizecCs |dur|jS|jd|ddS)Nr<)rarn)r7rV)rZshearrrrrn szRawTurtle.shearfactorcCs<| |j|j}|tjddtj}|jd|ddS)Nrrr<)rars)rr rrrVrrrsrrrrg szRawTurtle.settiltanglecCs>|dur0|j dtj|j}||j|jS||dS)Nr)r8rrr rrrgrerrrrt4 szRawTurtle.tiltanglecCs|||dSr)rgrtrrrrrsN szRawTurtle.tiltcCs6||ur(|ur(|ur(dur2nn|jS|j\}}}}|durL|}|durX|}|durd|}|durp|}||||dkrtd||||f|_t| |dtj} t| t| } } | || || || || || || || |f\} } }}| |f|_| ||_| |_ |j dddS)Nrz0Bad shape transform matrix: must not be singularrr<r=) r9rrr rrrr6r7r8rV)rt11t12t21t22Zm11Zm12Zm21Zm22ZalfarIrJZa11Za12Za21Za22rrrrma s&,       zRawTurtle.shapetransformcs^|j|j\|j\tjj}dt||\fdd|DS)NrcsFg|]>\}}||j ||jfqSr)r2r3r{rrZe0e1Zp0Zp1rrrr~ sz(RawTurtle._polytrafo..)rr r rr3r2r)rrerrkr _polytrafo s  zRawTurtle._polytrafocCs2|jj|jj}|jdkr.||j|jdkSdS)Nrr)rrrrNry _getshapepolyr)rrkrrrrG s  zRawTurtle.get_shapepolyFcsx|jdks|r|j\n>|jdkrNtd|jd}|dd|f\n|jdkr\|Stfdd|DS) Nr<r;rg@rrc3s2|]*\}}||||fVqdSrrrjrfrgrhrirrr rz*RawTurtle._getshapepoly..)r.r9maxr0r)rrrr*rrprro s  zRawTurtle._getshapepolyc Cs|j}|j|jj}|j}|jj}|jr*|jdkr*|jdkr*d|_ |j }|dkr|j dkrfd}n|j dkrx|j }n|j }|||}|j|j}}|j|||||ddnt|d kr|||j|nZ|d krt||D]D\} \} }}||| d} |j| | |||||j ddqnx|j r6dS|dkrR||d d d nJ|d krv|||j|jd j n&|d kr|D]} || d d d qd|_ dS)NrFrrrr;Trr7rzr?rsrrrrrr-)rrrrNryrRr1rrrZrr.r0r:rnror3r2rArwr ziprb) rrrkrdZtitemtshaper4fcocrFrrrrr sH         zRawTurtle._drawturtlec CsT|j}|j|jj}|j}|j}|dkr|}|jdkr@d}n|jdkrR|j}n|j }| | |}|j |j }}|j|||||ddn|dkr|d}|||j|n|d kr4g}|D]} |} || qt|}t||D]D\} \} }}| | | d} |j| | |||||j ddq|j||jd |f|S) Nrrrr;Trrrsrrrr)rrrrNryrr8r.r0r:rnror3r2rArtrwr r<rrtrbr]r r) rrrkrdrustitemr4rvrwelementrFrrrrrr s>     zRawTurtle.stampcCs||jvrDt|tr,|D]}|j|qn |j||j|d|f}|j}||jvr`dS|j|}|j|||j kr|j d|j |_ |j |j d|j dgdS)Nrrr) r]rrrrGrr rindexrrinsert)rstampidZsubitemrFbufrzrrr _clearstamp s        zRawTurtle._clearstampcCs|||dSr)r~rH)rr|rrrr6 s zRawTurtle.clearstampcCs^|dur|jdd}n&|dkr0|jd|}n|j|d}|D]}||qB|dSrn)r]r~rH)rrZtoDeleterFrrrr7- s zRawTurtle.clearstampsc Cs|j|j|jt|jtf}|j}d|j|||j|j dd| |j|j ddff}|j rh|j ||j}|jrZ|jdkrZ||}|d|jd|d|jd}dt|ddd|j|j}|d|} td|D]R} | dkrd } nd } || | |_|jr2||j||jf|j|j| |q|jrZ|j|jd d |jd |jrn|j |t|jtr|j|||_|jr|j|t|j dkr||dS)Ngorrrrr皙?rTFrrrrrz*)r4r2r0rrYrrr r[r\rrr rr5rr2r3rrrCrUrHr<rWrVrrG) rrgo_modesrZ undo_entrystartdiffdiffsqnhopsdeltarr?rrrrI s\      $$       zRawTurtle._gotocs|\}}}}|\}}}} |\} } } |jt|j|dkrDtd| |_| |_| ddgkrbd} n|} j| | | |dfdd|jD}|D]}||j |q|}|j rj dkr||}|d j d |dj d }dt|dd d |j |j }|d |}td|D]P}|dkr@d}nd}||||_|rr|j||jf||||q,|rj|jdd|d||_|jrt|jd kr|j|jgkrd|_d|_| r|jgkrd|_tdn|jdur|j|dS)Nrz$undogoto: HALLO-DA-STIMMT-WAS-NICHT!rrrcs&g|]}|vr|dkr|qS)r)ryrzrrrrr~ sz'RawTurtle._undogoto..rrrrrrTFrzUnwahrscheinlich in _undogoto!)rrr rr[r\rCrrGrr5rr2r3rrrUrHrWrrVrrY)rentryoldnewrZcoodataZdrawingZpcZpsrBZcLIZcLrZusepcZtodeleter|rrrrrrr?rrr _undogoto~ sf     $$          zRawTurtle._undogotocCs|jr|jd||jf||j9}|j|}|jj}|dkr|jdkrd|j}dtt ||}d||}t |D]}|j||_| q|||_| dS)Nrotrrg@r) r rrr rrrr5rrrrH)rrZ neworientrZanglevelr)rrrrrr s      zRawTurtle._rotateTcCsnt|jdkrD|j|j|j|j|j|j|_|j |jn|jj|jddg|_|rj|j g|_dS)NrT)r?) rr\rrCr[r2r0rBrr<r rKrrrrG s zRawTurtle._newLinecCs t|jtSr)rrYrrrrrrB s zRawTurtle.fillingcCsX|s"|j|_|j|j|jg|_||j rL|j d|jf| dS)N beginfill) rBrr8rXrr<r rYrGr rrHrrrrr1 s   zRawTurtle.begin_fillcCs^|rZt|jdkrF|jj|j|j|jd|jrF|jd|jfd|_|_| dS)Nrr9dofill) rBrrYrrArXr3r rrHrrrrr> s  zRawTurtle.end_fillc GsB|sNt|ttfr0||}|jt|jd}qr|j}|sr|jt|jd}n$|durh|jt|jd}||}t|jdr|j |j ||}|j ||j r|j d|fn|}|j r|j dgd|j _zH|dkr|||||||dW||n ||0|j r>d|j _dS) Nr_dotr<r$Tr;rF)rrrrr0rqr2hasattrrrr rr<r rrVrrarMrXrYrWrC)rr`r9rFrVrrrr< s:        z RawTurtle.dotcCsB|j|j||||j\}}|j||jr>|jd|f|S)Nwri)rrVr r2rr<r r)rrTrUrSrFrrrrrVH s zRawTurtle._writerPArialrrAcCs`|jr|jdgd|j_|t|||}|rN|\}}||||jr\d|j_dS)Nr$TF)r rrrVrrr[re)rargmoverUrSrrrrrrr{R s  zRawTurtle.writecCs|jg|_d|_dSr)r rVrWrrrrr2o s zRawTurtle.begin_polycCs d|_dSNF)rWrrrrr?} s zRawTurtle.end_polycCs|jdurt|jSdSr)rVrrrrrrD s zRawTurtle.get_polycCs|jSrrQrrrrrF szRawTurtle.getscreencCs|SrrrrrrrH szRawTurtle.getturtlecCs |j|Sr)rrrJrrrrK szRawTurtle._delayrcCs"|j|jj||||dSr)rrcrrRrHrrrrrR szRawTurtle.onclickcCs"|j|jj||||dSr)rrdrrRrHrrrrrT szRawTurtle.onreleasecCs|j|jj|||dSr)rrerrRrrrrrS szRawTurtle.ondragcCs,|jdurdS|dkr@|\}}|| ||j|j}n|dkr\|d}||n|dkrp||n|dvr|d}|j||j |n|dkr|d}|jj |dddd nh|d kr|d}d|_ |_ ||jvr(|j||j |n$|d kr(t ||d|jdS) Nrrrrr)rr<rrsrr6rrV)r rrrr6rrrGrrrArXrYr-rV)ractionrrZdegPAUdummyrxrFrrr_undos:           zRawTurtle._undocCsl|jdurdS|j}|d}|dd}|dkr\|rh|}||d|ddq4n |||dS)Nrrr$)r rr)rrFrrrrrrw's   zRawTurtle.undo)NN)N)NNN)N)N)NNNN)F)N)T)N)FrPr)N)rN)rN)rN)8rrrrTrrr`rhrxr_r5rrHr'rrrbr8rkrlrnrgrtrsrmrnrGrorrrr~r6r7rrrrGrBr1r>r<rVr{r2r?rDrFrHrErKrRrTrSrrwrvrrrrr sp (  (  (   (  (- 5A  0        r cCstjdurtt_tjSr)r _screenrSrrrrr Js r c@sfeZdZdZdZedZddZededededfd d Zd d Z d dZ ddZ ddZ dS)rSNr)cCstjdur4tt_|_|jtj|j|jtjdurtd}td}td}td}td}td}|j |||||j t_t |tj| ||||dS)Nrzrrrrr)rS_rootrr)_titler'_destroyrrr!r"rrr&)rrzrrrrrrrrrXs   z_Screen.__init__rzrrrcCst|jdsdS|j}|j}t|trNd|krBdkrNnn||}|durb||d}t|trd|krdkrnn||}|dur||d}|j|||||dS)Nr%rrr)rrr(r)rrr%r,)rrzrr#r$rOshrrrr&ns   " " z _Screen.setupcCs tjdurtj||t_dSr)rSrr)r)rZ titlestringrrrr)s  z _Screen.titlecCs:|j}|tjur(dt_dt_dt_dt_dt_|dSr) rrSr rrrrrr&)rrootrrrrs z_Screen._destroycCs |dSr)rrrrrrsz _Screen.byecsLfdd}|tdr"dSz tWntyFtdYn0dS)Ncs dSr)r)rrrrrexitGracefullysz+_Screen.exitonclick..exitGracefullyrr)rRrrAttributeErrorexit)rrrrrrs    z_Screen.exitonclick) rrrrrrrrr&r)rrrrrrrrSRs  ( rSc@s0eZdZdZdZedededfddZdS)r NrkrrcCs,tjdurtt_tj|tj|||ddS)N)rkrr)r rr r r)rrkrrrrrrs  zTurtle.__init__)rrrrrrrrrrrr s r turtle_docstringdictcCsi}tD]}d|}t|j||<qtD]}d|}t|j||<q(td|d}tdd|D}|d|ddD](}|d t||d ||q||d}|d t||d |||d |Wdn1s0YdS) Nz_Screen.zTurtle.z%s.pyr4css$|]}|ddtvr|VqdS)rrN)r _alias_listrrrrrsz&write_docstringdict..zdocsdict = { rz%s : z """%s """, z """%s """ z} ) _tg_screen_functionsr__doc___tg_turtle_functionsrrr{reprclose)rdocsdict methodnamerrrrrrr~s$   c Cs^dd|i}t|}|j}|D]6}z||t|_Wq"tyVtd|Yq"0q"dS)Nz!turtle_docstringdict_%(language)srzBad docstring-entry: %s)r __import__rrrrr)langmodnamemodulerrrrrread_docstringss rrzCannot find docsdict forz;Unknown Error when trying to import %s-docstring-dictionaryc Csd}}t|j\}}}|dd}|dd}|jp:g}dd|D}dgt|t||}ddt||D} |dur| d||d||dur| d||d|d| }d |}d|}d |}||fS) NrrcSsg|]}d|fqS)z=%rr)r{rrrrr~<rz"getmethparlist..cSsg|]\}}||qSrr)r{rZdfltrrrr~>r*z**z, z(%s))inspectZgetargs__code__ __defaults__rrtr<r) obZdefTextZcallTextrZvarargsZvarkwZitems2ZrealArgsdefaultsZitems1rrrgetmethparlist,s&     rcCsJddl}|durdStd}|d|d}|d|}|d|}|S)Nrr%s.r \(.+ %s\)::rerreplacecompilesub)docstrrZ turtlename newdocstrparexprrr_turtle_docreviseKs rcCsJddl}|durdStd}|d|d}|d|}|d|}|S)Nrrrrrrr)rrZ screennamerrrrr_screen_docreviseWs rardef {name}{paramslist}: if {obj} is None: if not TurtleScreen._RUNNING: TurtleScreen._RUNNING = True raise Terminator {obj} = {init} try: return {obj}.{name}{argslist} except TK.TclError: if not TurtleScreen._RUNNING: TurtleScreen._RUNNING = True raise Terminator raise c Csl|D]b}t||}t|\}}|dkr4td||qtj|||||d} t| t||jt|_qdS)Nrz>>>>>>)objinitrZ paramslistZargslist)getattrrr __func_bodyformatrglobalsr) Z functionsrrrZ docreviserrZpl1Zpl2Zdefstrrrr_make_global_funcsws     rzTurtle._screenzScreen()z Turtle._penzTurtle()__main__cCstrtntdSr)rNr]rUrrrr switchpensrcCslttdttdttdtdD]Z}|dkrDttdD]}tdt dqL|dkrxt dt ttd tq2td t d td tt dtdt dtdt d tt dd t dd t dtdD]$}tdt dtdt dqtdttdD]&}tdt dtdt dq:t dS)NTdrrrrZZmaroonr rrFZ startstartrredr)r`r*ryr0r=rzrr1rCrPr9r>r_r{)r|rrrrdemo1sX         rcCsBtdttdttddtddd}tdtdD]}tt |dqBt dt rnt q`t tdtd d}td tdtd td d D]p}|dkrttd d|dd|tdD]}t|tdqt|d7}tdttddqtdttdtdttddtdttdD](}t ddtdtdtdq`ttdttdttdt}|dt}|d|d| |d|d||dd|d||d|dd|d|dtt|d}||dkr|d|d ||||d|d!dkr| | t|d7}qZ|j d"d#d$d%|d&|dd'd(}t!"dt r| | q|d|j d)d*d+|#|ddS),Nrrrr"rrzwait a moment...rZgreenrrrx Fr rZyellowr2rr;i(rZblueZorangerg @g333333?rzCAUGHT! )rrboldr_)rSrUrcSsttdSr)rr)rrrrrbabaszdemo2..babaz Click me!)ZCourierrr)rS)$rprqrYrdrur;rbrrr4r{rxrwr`rQrrWr1rAr@r>r]rUr9rkrHrar rPryrIr=rrtimesleeprR)r(rZlaenger|Ztrirrrrrrdemo2s                             r)r)r)EZ_vertkinterrrrrrrZos.pathrrrcopyrrZ _tg_classesrrZ _tg_utilities__all__rrrrrrrrrrrrrrrrrobjectr*rrrrrrr-rLr r r rSr r r~rZ _LANGUAGE ImportErrorrrrrrrrrrrrrrrrrgs     5  c /&/O} "      5c