ÿØÿà JFIF    ÿÛ „ !.%+&8&+/1555$;@;4?.451 4,$,44444444444414444444444444444444444444444444444444ÿÀ  á á" ÿÄ     ÿÄ ?    !1AQaq"2‘¡±ÁðBRbrÑá#‚’¢²3S CñÿÄ   ÿÄ !    !1QAa‘2ÿÚ   ? 5˜Z¯V¦cø)›t/? z¨±>Õ5€¶‹Á¤·¼z¼Ü¬+ñ®v¤¨_ˆR­BFn©—˜ý®ç̝P8gýt·ÉSTŦˆìät?þé¼íìN/Þa)ì–í6ô… Ï¿øÃj´¿KÇü]ÿ ªô¹-eKànëÕHTx}ýSÜ›ÿ ”7Ø×&µ<¦  ¥ÑO¶[Ù¯ä¨ÞÃÿ PZ-¬;#õ|•oaÿ ©CìÞz3˜öː/¤­ñTûIØ}š^ mÓ%ªxˆ¥ÉŸu=Z+ISe¿45™¼u;ú&WØ÷€æßQ™®{|íx*TC“#ZŠìZ§²‹ 6pv…³¿¡äª*áZÐ%ÒOáˆo"x«OHk w±æ+¬V(kMúŸ5Vö«$ ÁrÏbàb57/luR ¸ÑÛj Òµì`Мq­û žICÀÊ•©4€Âcà¨Ï€O´<èÐ:›ù(Ë^L8þ‘ÍÌ#¸Ð_Ì©ÙK(Öz 4¬û+¸;ü’V’84‘¬ÃŽ:[â‡ÔÌáõp¢~§ªlæ£ö{®G>J¼"°‡7¯ÆÉèßû ‹É‹§ÁòÃýâßî ^ƾÙõ‹×óH#«LP½ïX=xÑÍ$|W?•~• îëÔ©ª‹ {ÝT…Kÿ ”hûâá)J*ö˜–ÔU;iÇ€/ ÆþjóZ\ýwØ=Ìm ºèËL9 ýèÆð/¨’¥öo=nË.%Îì ŽÕ¯È|{Oj²ƒE6e/ßdÄõ²Ìâ1O®ò×TsəԸhOMýíMˆ¿¼H˜l²,7Â¥#MF/Úf°Ö½± ¸–dr‹NýÊ íjqx{œÉ ä-È ¦ øÄër¨q°ð †nцýÑÄÆ’mä…n<0È™;ÁÝá¯ÁZƒ7FÀmì­ É&9ˆîéi¶ùN§Y• ÃZãAâ?•‡©‰ , ó¾IŸŠc1 4â&y­&pŠ­6;M À 0¹qç»p.á …ŸÅáK@%6·y6ƒ‰3?”úºŽ‰éX5ªPT §µ!=Mž«Ú½‹ÅgÂSâÉaþÓoö–¯ÁÔìR>5éÿ üs¶ÆUcÌ kÇR ]ÿ ù¬¼«VŽ;Â|‡~¢¦”ÏŰæ {L™Õ°Óv¹ò¸írޡעCÃ!íVÕ {¶»sŒNPg/ "uÕbkm²“$ďå¿é¹§°½æz¯6 †s¿!s–wÚÝ“™Œ °.ûj>·+™Òa…©Œ&rÝÎtÛë긪Ît’LAVp%c Úý[ÄzJ¾ÇàXXç@˜ó<êL]·T˜¾¥1Ó©V‡g´æ½¦Ý@¹óø!_@´ÞâSÁ —S3™•& ]@JHÚý©ZŽ €×æÔr»Áf!‡yÞ4Mv*èÓã_{‘åóUuљØ«Oïé*®EvÑ Œ÷‡U \"㪒ÍK+À 4“M¡ï:0¥5í!'<@î´”>Ç»&Z–ïCCV˜Ì5Šo&îhè.žû |ÓK©h$s6KìŒëã)¹hI¦GïOåóI;ììü#É$Š0…Ææ¥TØ.5­¾gn´ “ÂÖ\:hœ89G)J@„}œ:’Ò{/Š"¦_Æ×7Æ3VÇŠÊa]ÚŒÙ€Ä–=®uÁßâACZƒ§§£ Qnâ:«,×{tyø¬iÛcœÜÄ€H½ÄÍCk´÷šß .W'b¤Íåh]÷€=,Žv×cÚEÚHXJX¶îo¨FÒtèöŸ>ªª6[J®Fµ£sGÁeqõfe\íjÒÐïÄÐGˆe1Ø‹.Ø”‘Ëuø Y­ˆÜ ŽG|zùªüMpDnQWÄ”%JŠ™)â*p@Örš«ÕT2Ð%ˆG#ª„ ·¤!°ŸOTÂT¸aÚ%4&h™LµšØüÐ.F¿²ÐÞ_Ç‚¾ÅÃaÜ÷09Æ q€öy˜v‡85õN÷]¬äѼóS{°_MެúÔ#°Ç¸0åÞè2ëôPcvÆw9®ií1Ä8F™˜à‰´+‰Ik1òÝ7“Ñ×ÒsÝ\x‚h`ÞÑ`ó"|µEcý£n˜h`}GÞ !±ù²Ápü²ß6 0ïi󜵩SÈÇ7˜-ÕURO˜¦´f$ªž-Í6(œ}<„ éc øs]ŽŽ„*—¾ ìdŽ„)méª\¿êÎIg¾ØÞ~I#C/¼¼´EÁÈŽi8“©õådô·>euä ƒ'Ê×लR1ÉJE1ÐAát`t;ÇР%Ý<‡¥„ÍÆ`×Oyó)õiI€ñQaŸ4Ûù\áàaÃÔ¹HÃu¹*k€¦<„e S‡&õÏ B!ŽhüÞ`yj}mªf×\¿ Ç~æ­9‡û\՞Ǖg²1Žû5V7 !àöšm° c`ܬøÇìµÒ'P"?…´Ö,"§^•õލsÔ)6˜sæéÍR¼ ò|Sl”‹7 nPW Gòú÷½§O¯‡„l¡kSÞŒr½PÊ@æ¢pŽ-mÿ #Ÿ˜Àº¶Áä¦;ïÔæ$1££`“Õ>„—·ž)ßð³ñ#Ï Ô$¶œ‰ÊE‹À;÷º ¯«P:Ñ”8–IÊtpÞ3ª“>ê“þës4ò2OÏÕ­±zô†Õ§‰.÷ä¸;¿˜“'œ›žª}«Œ{ª±Ì 9ÔóÞÕ‡0 $íWV3Üì¬ —@kÝ4@¿r¼±½¬™›?øØæ´'Áé®CË3-g$˜ö‡×auÚi´Žp/êÛ æF›Ú2v‹ã¿¿,nB1̨ƃqÞa5͝@&Æû“él÷ \C²½UÍc ¯k×¢U ÖéQå™—-r wô ÞÏ<Ò=&=ÿ Ôê Òêˈt,i—;LîÜ á¸*ÚÃ1$êL•LÍ <É)ýÐà’ ;F™{ƒ™˜€&'}‚ãÄK`¡ÞT@I;®žZóè‚s’7®°›+§O­Åq©é»²9<Ô J ¼9O’HL»Ùïì¸rk¼Ž_ý‘TŸu[²ßÚŒ·ü÷B%¯E ŸÔX5êO´ Ç•€’I0 ÉJX` ñ¹õ%;µŸD‘«´€àwÒ™U ûئžÖö\×®×´8 ½‡ºÐÆÓ§?Àkmœ=;d5*@-ì0F Rªýš[Ü6âö̃ڸr*KA9· u*µæ£?U¸Âêí†8@¦X4 e-ò„0s{ HâUpU?¼mñRa°®a%Ð'tÉ×’\¾ÊÉ]t›h>·(Ë@R¼¡Ãt h}’O÷au<+nT…Ö…MӐ??Óe95 q>í/;&JSû °¯ÊéÞ øƒ*Ã2½Ài&:nôUl=¾¿5eˆ3”ñc|Ú2V”>„»&eE;«ÚäC p¢Û úy 9š[ŒÌx¼擼A&DåÒ¯ˆ¤ÀÌ;"˜ ÏQä¸åhÊ}Ûq«Û0WžÒ|»€ø®öCm5•\ÇÀ§Pe3£]0ÃàLDÉ‰1øªxjgwT‚÷¿LΨK‹›ùs—xˆÜ±µ kæ¸f‰‰ÜGk/LÛØ6d9ò¶ùA{ƒA3š/¬D¬khÓk‰`˜"㯒r¿±Óã jx‡°e}<Ñø\3y:'À•/h½Í€Ç4~g ?Û(¼]v‘ªlKÎâ~?O‚W%{Ì:“'©úNq¾›úo(X’¥¯ˆ nFê{Ç€ü?º'ë ø‹ì Þ09ŒÌç9Æ —ËC`j@ÓÄ(+a‹un¸#ÂꟋ{K`‘ÑÍÍ'à´»/Û,KW;Þ4²þð ï Nm|~fGÏ(…³Ã)«1ö­Õ ¥‡¨©ƒÃ™ü-s=à=U66Ï«Ýc蓦W¹íž®›nÔ%êÇìŒ<#Ü×84ån®Ð ÒåOC` ñânÑs‡¢ç 1õ%Îhì½Ã½® e:ݼUZo™`  ÅZŸŒÊ«ê1ÏÄo$q¹Þ€©ˆhÐÉä¯ñ[!…Ú˜àJ:x2$Íß&PåT£6ç— ‡Í*4Ýšçjÿ ‰É nófÐ ó(L5C•åÆ\rMÒ@ò }y-W}™üýVù—ú¢=Ù”c®‘< M ž ´Phr ¦©TD ‘ù.$´÷O‡‘V2Æò.=IUŒ=ž‡â¬i™aþÓåÙ?òUø'ØÖ•.~* šTŒ!•-×áºTâ®ä#õü'´ eýlYÅÓeÕKÂrT"CÚ@u!Óxƒ{š3€}1¿(r}%«nËamjÑ%ÑNEò v ˜à  σöK³,*º.àzù¨™Ó ÚçâU¦*¿ 9{%Ö¹ njûdaXöb) kÛÆ±ûÓ\°M7ˆÂ=û›ç¿Ã‚­V»Cg–8ÙêE- j)k$º`Ã-ùEýeBÆÇ]c¡°ñty&Òd0nõ'¡W+ƒ*|–øµFa\GQªEAÔp5\Ǽ·¼Ç8·õ -â§Ú[ ‡ uZeÖ 3}×d'+¹:ð+K†Û®s!Ï$úe€<Û”x)1»a­¡LC]¸µík…ÚàA»AYº{†ªS[¦5HÒ7ù --,ísòDØ€èk ÞÀîÜ ò@â( ËNˆë›4ô½•/¦o‡€Û7 ê•ÆêòðÜy'Án½µ á˜ݦ ndeo…[ì¶Ê,¥R³Ä=À±—–ß;£™´ñSâ*g§”ïaið‘Jå~™ÓÞ ß³Õ¢»8x埒²52>AÊb&-÷\7´éÄù€T˜,w;3{ï˜k…à¹ÄqÀ«œ{€\ ˆ¾[´¨јr &Úé„Ívˆ±8†¿]|¬ņ4I×pÞS1ÈÖz‰#Ìv‡G!YNògñ:màTz¢Ý1ô©^O=~ë|5Bã™ç•¼µõ•bÆ@úÕS¬ÈŒ#¬zünrŸ û” Z²•èðV"ÁHÚý©wÝ €7¼Ìu1hÑa3Éä û f$o¿É ™Ú›ÝçnpÒ3äÌ3†Í§,Äï]$‰/pê †«À¼¸e9­Æê_C]žƒ·ý·frÁN«, E=›Çq -‰öŒ:aÏ¿±í&£Í:-} 84‘ÿ eƒQÑeëSsuiA ³g㟥ú£?ÿ ʼn*”“÷aühe:ÊWa@ÒÞk±eØ] F Ô—r.åä˜ @ö¥ªZoÐýYL·¥S²G/‡ñ <~*ZÆ´è>JlòàÛÆ½ÿ 窘ìGN¢:I®KšJp/`íIÁÀõ#Ä-€ö­šµŒoF4|ÆQØÆ@Ì|£Ô…¢À{9˜è½Üó›€ôYÒÎYsið;ís¤€à²ˆ‚4qÉVŒI$ ‰"° æµ8cXGjœˏ¡Aâý•ËÜ¢ûï e·çLx']á"oÅÎê3¯Ç—¹”ó0nå‚âg{Œñ> S´˜îè°g238‚ãköÝfÚd´6Ò€;ò÷±¢™¼›º ¢Æ'¥Ðx'e¬ç ]bÈÆV¢ó‹kýBO ðÊâ$Ÿ!×T 3Mýמ žìٍàÌü‘8÷€àæØ8æ©6‰©L´«…oãpð„~Çk‰!ñ;‹”ÛžÍ àž±z Ÿôû øŸÝužÏ;ÿ #|u6™Þ¬ÚˆÐõA4¶â|ôl|Ê2ŽÇ¤ÝÅÇY.<#Aí.k§hóF‚”Y; M½Ö4hŸ4&›­¿tès´%FìL¥£Ãk‰ÇT¤haÁ¤ÚxfÉ`ÑìË›>i 3t‚:,–+^÷´–{Û–Nxi"x‘Ûg î¨>¥Õ܁ùZH,2Û“:8xÊ¢Çí9.É-Ìâã-=çjwµS˜dütžçwýGòú®®ûº_ˆýx$–¡ãøO EÚÛÏ÷R„×w+3£Á£öUMyR²¹âŒ°š›¸Ñãò9§Ó_Dl+Ùßc›úšGÅÌc†Ž!Ko=¶.‘Îÿ c²(2®V mª.ÿ ¹B›¹å ù„öŸSV>™ü¯$y:G¢Z×àøúdî¹û­·ýÇ´:•c LÍõi_‹ö+ÎæGÊè>OŠ•äž´§Þ{X}¨1ÚTc›»Qþ•êô°t¿OP?eæ~É{5]•ÙR£r5†nZ\ã@ &îJõ ¾àC°þV>fé¥/ü5ñÊIº_é5 ;e­h<@ Ä&æÃëE%;X,ÒãÆÞ`Oò¦kŸm#˜!ÀyÄ¢| óLšò¥Ä` ¶R=|ÈCâh5ò3DˆïF†ðÒ#ÅìÛœ?¸yhBãœí ZxßÎÄhºRK„`Þödvײ™ÀÈÑÒgŒuY w³%†ƒÓzõ ÖÏp‚dH®¦A´ù§»ÓÇMæ~)ˆð‡û:ù&Ä •vGD´À n ݇¼Ö8Fö óáà£~Ë¥x`oK|Ä?fxiØü%pìR>éò+Û±éÎ>núlFŤ'tq8LZÏvÃ?„¡ß±È⽆¯³íü@x|PöUäèØã¡ð‚ŒAìÏ"vÍwóŸÍ{ ý0.z È•Ö{,N¡£¡ŸKÕÙž>Ýœþ ÍÀ°<×EA!Å‚D™IúOÍ¡>ôG}Â` ÍßkÜL™Ž Þð™ {IøF²¹òQ3&!ÃÂÞz.d&Ï-sH¸,Ôõ˜ŽP€ 77ˆÝ¼ÊëÜw =cÕ Ú,ØÐ5ÎYÐ)ì´öœgŒ[¤ßv㙑8心>h]§µháYš£²ºÑ.{Ï7Sð•?´~×SÃKýJÛ˜ ™Íäiúu<µX¶1õ^kâçIÑ£sZ4h>j*ÔšD:4­¿_ ÷¸ Õxæÿ ¸?Mù _•­ÊÐ ä ÷ý ÑwL œ­ïnTkÛUÍN©ë:¦fV ¶ÜÔÜMªÅâA½–¿R×TXš-%iTÊT•‡Ù‚JôϐZxWÑè‰f‰òG º ×Õû2aZ7OU3[“×AT–ÞŒ…-‘¤”Ì ì&(ˆ¿­•ƒkï’:ðY¦W‘ Å)“†‘˜³Åtcø˜ñTÂwÚÇ4|üLÇªí–v- qˆèU qPE.†â‘˜µ Æ,ÐÅs]8¾„oúÑ i>ÜxxÈó)ƒ ´æÁâØ$À‰vžŸf$Ž |ãw;ÀÁIJ»b` {¦Ó¤Ú$©YÀ‘n@Óïž«9J¼êG m¤ ܯ¹ÌW4€ÐÒÅÛ‡#褕Ÿn-?í|с¥÷Ú¹¬'´ÞÜ9ÓK `hê£SÄSà?7—Wí_´…óB›»:=Ãïq`<8ñÓŒÑlú2d¬ê³£hÖ[l|$vÝro~'R®‰§°ñmY ͧäP |PUª¹·:3Œ[Û{Xÿ ºâ@‚W–Äé u‚ ¯´*=íή.pûÒdt @G‰¬ s¸ ëÉücr ÞæÑ¨Ê@>¤¢Ö±. Þ'¯°ÌME[YéïĵÂCå½ Ué©Áû'Ê9%eÔðNU”ë‘ÌsD3/®+UI˜9h.WC”빓$#:pz:YÓ ¿xž* ³$Í +$kñAŠ‹†¢ Uê>¸)_š¬÷©ßAÂÔb9ÇU ¯¾á•9¯ÏÏ÷O÷¼¼Fähal1‰3Ì[Ïr•´UCksNÐ] R‘¸¥H+§Šé†c©vÖÞ0iÓ76s†î!§=ß ¼~Ô'°Ãmäoäš³ªøi1úÉ)³yV8 CLÄØÁ‘WYïi€H6ÖÑiámø^ÈY´°Ñ7¥Û*—Ñ©L«Qƒï—Ùrÿ ›£Ð*š¸ˆL©ˆ$ˆ ÷¾D§9È®«qbqC)–ˆïv´çñsÑVT­Ø, <àïºÀO«Jý·õ àfPìð .wFšir´þ’2_Y *Æ€x\« ì€9š@ Ž|F⇥ˆkZ@hÖÄ0t¿-<“‹qµ¾*ZL¤Ú)&BJpÓF5=$„at*Zš$’ÑtdûÝRI1 2މ$€$I$#‰SÞ’Hë¬ï;Á$¡t$’`<(ñÇt)$‡Ð.Êf¢X’Kt=Éé$‚ˆªè¢oÝëòI%Rgcª÷ŠyI%¡‰ÿ !ñ)´õ $¤ Ô’IIGÿÙa 3g@sddlZddlZddlZddlZddlZddlZddlZddlZddl Z ddl Z ddl Tddl m Z ddlmZddl mZddl mZddlmZddlmZdd lmZdd lmZdd lmZdd lmZdd lmZddlmZddlmZddlmZddlmZddl m!Z!ddl"m#Z#ddlm$Z$dZ%de&Z'ejdkZ(ddZ)GdddZ*ddZ+e,dZ-dd Z.Gd!d"d"Z/d#d$Z0d%d&d'd(Z1d)d*Z2d+d,Z3d-d.Z4e5d/krdd0l6m7Z7e7d1d2d3d4dd5l8m9Z9e9e4dS)6N)*)Font) Scrollbar) simpledialog) messagebox)idleConf) configdialog)grep)help) help_about)macosx)MultiCallCreator)pyparse)query)replace)search) wheel_event) py_extensions)windowz (%s)darwincCsbtj\}}}}}d||f}|d|f7}|dkrB|d|f7}n|dkr^|d|d|f7}|S)Nz%s%sz%s candidatezrc%sfinalr)sys version_info)majorminormicrolevelserialreleaser!-/opt/python39/lib/python3.9/idlelib/editor.py_sphinx_version&s r#c@s<eZdZddlmZddlmZmZddlm Z ddl m Z m Z ddl mZddlmZddlmZdd lmZdd lmZdd lmZdd lmZdd lmZmZmZmZddl m!Z!ddl"m#Z#ddl$m%Z%e&'Z(dZ)dZ*dZ+dddZ,dddZ-ddZ.ddZ/ddZ0ddZ1ddd Z2gd!Z3d"d#Z4d$d%Z5d&d'Z6d(d)Z7d*d+Z8dZ9d,d-Z:d.gZ;d/d0Zd5d6Z?dd7d8Z@dd9d:ZAdd;d<ZBdd=d>ZCd?d@ZDdAdBZEdCdDZFddEdFZGddGdHZHdIdJZIdKdLZJdMdNZKdOdPZLdQdRZMdSdTZNdUdVZOdWdXZPdYdZZQd[d\ZRd]d^ZSdd_d`ZTddadbZUddcddZVdedfZWdgdhZXdidjZYdkdlZZdmdnZ[dodpZ\dqdrZ]dsdtZ^e_j`e_jaduZbdvdwZcdxdyZddzd{Zed|d}Zfd~dZgddZhddZiddZjdddZkddZlddZmddZnddZoddZpddZqddZrddZsdddZtddZudddZvddZwddZxddZyddZzddZ{ddZ|ddZ}ddZ~ddZddiZddZdddZdddZddZdddZdddZddZdd„ZddĄZddƄZdddȄZddʄZdd̄Zdd΄ZddЄZdd҄ZddԄZddքZddd؄ZdS) EditorWindowr) Percolator)ColorDelegator color_config) UndoDelegator) IOBindingencoding)mainmenu)MultiStatusBar) AutoComplete) AutoExpand)Calltip) CodeContext) LineNumbers)FormatParagraph FormatRegionIndentsRstrip) ParenMatch)Squeezer) ZoomHeightNTc CsL ddlm}tjdurtjtjdd}tj drvddtj dd}tj d r^d }qd }tj||dd}nVtj ddd krtjtjdd t } tj| r| }ntj dkrtjtjd}tj|}tj|r|t_tj dkrdtjt_ndtj ddt_||_|p*|j}||_t||_tj||jd|_} |rl|j|_|j|j_ni|_i|j_tjotjtjd|_d|_t| |_ } t!| dd|_"} tj#ddddd} dddd| d tj#ddd!ddd"}t$t%| fi||_&}|j&|j_'|(|)|j*d#|j+|j,d$|j-t./rx|,d$|j-|,d%|j0|,d&|j0n|,d'|j0|,d(t1|,d)t1|,d*t1|,d+|j2|,d,|j3|,d-|j4|,d.|j5|,d/|j6|,d0|j7|,d1|j8|,d2|j9|,d3|j:|,d4|j;|,d5d6d7|,d8|j<|,d9|j=|,d:|j>|,d;|j?|,d<|j@|,d=|jA|,d>|jB|,d?|jC|,d@|jD|,dA|jE|,dB|jF|G||_H}|,dC|jI|,dD|jJ|,dE|jK|,dF|jL|,dG|jM|,dH|jN|O|}|,dI|jP|,dJ|jQ|,dK|Rd|,dL|RdM|,dN|jS|,dO|jT|,dP|jU|r ||j|<|r||jV|<|,dQ|jW|,dR|jjX|,dS|jY|,dT|jZ|,dU|j[|\| j]t^t_dMdV| j`dMdMdW| jadMdMdW|jb| dX<| jcdMdtddY| je|dZ<tf|jdd|d[<|jcdMdMtddY|g|htj#dd\d]d^d}| |_id_|_j|jj|_k|ltmtd`s|j&dat_n|odb|_p|q||_r}|s|_t}|u||jv|_v|jw|_w|x|jy|z||_{}|||j}dc|_~|dcd|_d|_d|_|rtj|rtj |s||rdd|_~||}||n||dd|_~||y|||jde}|rT|df}|dur(dg}|dkrB||dM}||_t|jtj|_tj|_tj|_|dhdi|djdkdldm|dndo|dpdq|drdqdsdt||}|,dh|j|,dj|j|,du|j|,dv||j|,dw||j||}|,dx|j|,dr|j||}|,dy|j|,dz|j|,d{|j|,d|||j|||_}|,dn|j|,dp|j|,d}|j|,d~||j|jr|||_|,d|jjn|ddd|j r:|||_tj#dddd^d r*||,d|jn|ddddS)Nr) ScriptBindingZDocz index.htmllinuxz python-docs-z%s.%s.%sz/var/www/html/python/z/var/www/html/python/index.htmlz/usr/share/doc/winz Python%s.chmrz0Resources/English.lproj/Documentation/index.htmlzfile://zhttps://docs.python.org/%d.%d/)menuzrecent-files.lstvbar)namemainr$widthinttypetextZnoneZ wordprocessorheight)rApadxwrapZhighlightthicknessrCZtabstylerIZWM_DELETE_WINDOW<>zz<2>z<3>z z z z z<>z<>z <>z<>z<>z<>z<>z<><>z<>cSsdSNbreakr!eventr!r!r"z'EditorWindow.__init__..z<>z<>z<>z<>z<>z<>z <> <>z<>z<>z<>z<>z<>z<>z<>z<>z<>z<><>zzz<>z<>z<>z<>z<>z<>z<>z<>)sidefillexpand)Zweightcommand)rowcolumnZstickyZyscrollcommandfontIndentz use-spacesboolrblink_off_time insertofftime)2ii@KLFTrendz<>z z<>zzzz<>zz<>zz<>zzz<>z<>z<>z<>z<>z<>z<>z <>z<>z<>z<>optionsz *ode*ontextdisabledzline-numbers-defaultz<> *ine*umbers)Zidlelib.runscriptr9r$help_urlospathjoinr base_prefixplatformcountrisdirr#isfilenormpathflistrootMenumenubarrZListedTopleveltopvars tkinter_varsZ inversedict instance_dictrZuserdirrecent_files_pathprompt_last_lineFrame text_framerr@ GetOptionr TextrGZfocused_widget createmenubarapply_bindingsprotocolclosebind close_eventr ZisAquaTkright_menu_eventrhandle_winconfigcutcopypastecenter_insert_event help_dialog python_docs about_dialog config_dialogopen_module_event select_allremove_selection find_eventfind_again_eventfind_in_files_eventfind_selection_event replace_eventgoto_line_eventsmart_backspace_eventnewline_and_indent_eventsmart_indent_eventr3fregionindent_region_eventZdedent_region_eventZcomment_region_eventZuncomment_region_eventZtabify_region_eventZuntabify_region_eventr4Ztoggle_tabs_eventZchange_indentwidth_eventmove_at_edge_if_selection del_word_leftdel_word_right home_callbackdict new_callbackZclose_all_callbackopen_module_browseropen_path_browseropen_turtle_demoset_status_barpackZLEFTZBOTHZ rowconfigureZcolumnconfigure handle_yviewZgridZNSEWsetGetFontZ focus_set set_widthusetabstabwidth indentwidthset_notabs_indentwidthhasattrr`update_cursor_blinknum_context_linesr%perr(undo insertfilterundo_block_startundo_block_stopZset_saved_change_hooksaved_change_hookr)ioZset_filename_change_hookfilename_change_hookZ good_loadset_indentation_paramscolor code_context line_numbersexistsloadfileispythonsourceZ set_filenameResetColorizerupdate_recent_files_listload_extensionsmenudictgetindex add_separator wmenu_endZregister_callbackpostwindowsmenurZ askintegerrZaskyesno showerror event_addr-Zautocomplete_eventZtry_open_completions_eventZforce_open_completions_eventr.Zexpand_word_eventr2Zformat_paragraph_eventr6Zflash_paren_eventZparen_closed_eventZcheck_module_eventZrun_module_eventZrun_custom_eventr5Z do_rstripr/ctipZtry_open_calltip_eventZrefresh_calltip_eventZforce_open_calltip_eventr8Zzoom_height_eventallow_code_contextr0Ztoggle_code_context_eventupdate_menu_stateallow_line_numbersr1toggle_line_numbers_event)selfrrfilenamekeyrsr9ZdochomeZpyverZbasepathZchmfilervr}r@rCZ text_optionsrGrindentsZ usespacesrrr is_py_srcr>rcZ autocompleteZ parenmatchZ scriptbindingrr!r!r"__init__Is                                                  zEditorWindow.__init__cCs |dSN)rrrQr!r!r"raszEditorWindow.handle_winconfigcCs^|j}tt|jj|d|dg}|d|}t||ddd}|||_ dS)NZborderrJr=r])r]0) rGsummaptkZgetintZcgetZ winfo_widthrmeasurerC)rrGZ inner_paddingZ pixel_widthZzero_char_widthr!r!r"rdszEditorWindow.set_widthcCs|j\}}|j|dSrN)rZdefaultfilenamerrnew)rrQdirnamebasenamer!r!r"rqs zEditorWindow.new_callbackcCs|jd@dkr|jdkrdS|jdrd|jdddrd|jdddrdt|jddd }n8|jdd}tt |D]}||d vr~qq~t |}t|jd dd }||krd}d t |d }|jd @dkr|j dddn|jds|j dd n@|j|jdd|jd rB|j ddn|j dd|j|}|jd}|j|d|r||}}|j ddd|j d|||j d ||jd dS)NrZHomeZiomark<=zinsert lineendinsert linestart.rV)  insertzinsert linestart+csel1.0rc sel.firstZ my_anchor<sel.last>rO)stateZkeysymrGrcomparerDsplitrrangelenstr tag_removemark_settag_addsee)rrQZinsertptlineZlineatdestfirstlastr!r!r"rvsF       zEditorWindow.home_callbackcCs||j|_t|jdddd}tjdkr<|jjddtd|jjdd td|jjd d td|jjt t d |jt t d |j d |j |j d dd|j |j dS)NrVZgrey75)rIZ borderwidthZ backgroundrZ _padding1z )rWr\zCol: ?rzLn: ?)rWrXz<>z z)r,rv status_barr|rrm set_labelZRIGHTrZBOTTOMXrGrset_line_and_columnrZ after_idle)rsepr!r!r"rs zEditorWindow.set_status_barcCs>|jtd\}}|jdd||jdd|dS)Nrr\zCol: %srzLn: %s)rGrZINSERTrrr)rrQrr\r!r!r"rsz EditorWindow.set_line_and_column))fileZ_File)editZ_Edit)formatZF_ormat)runZ_Run)reZ_Options)rZ_Window)r Z_HelpcCs|j}i|_}|jD]N\}}t|\}}t||dd}t||d|d||<}|j|||dqtrt|ddd|d<}|jd|d | t|jdd |_ |jd j d d d|j d|jd t |_|dS)NZ_menu_postcommandr)rAtearoff postcommand)labelr> underlineZapple)rArZ applicationZIDLE)r r>rrr;z Recent Files)r r r>r )rur menu_specsprepstrgetattrrtZ add_cascader Z isCarbonTk fill_menusrecent_files_menuZinsert_cascaderENDbase_helpmenu_lengthreset_help_menu_entries)rZmbarrrAr r r r>r!r!r"rs,  zEditorWindow.createmenubarcCsJ|jd}|d}|dur d}||jkr<||jd|t|dS)NrrcrdrV)rrrdeleterZadd_windows_to_menu)rr>rcr!r!r"rs   zEditorWindow.postwindowsmenucCs|j|}|j||ddS)N)r r entryconfig)rr>rr menuitemr!r!r"update_menu_labels zEditorWindow.update_menu_labelcCs|j|}|j||ddS)Nrr)rr>rrrr!r!r"rs zEditorWindow.update_menu_statecGsT|dkr         zEditorWindow.right_menu_event)CloserLNcCsft|jdd}|jD]F}|d|d}}|durR|j|fdd}|j||dq|q||_dS)Nrr rVcSs||dSrevent_generaterGr,r!r!r"rZ%sz(EditorWindow.make_rmenu..commandr rZ)rtrGr) add_commandrr')rr'r+r r,rZr!r!r"r( s  zEditorWindow.make_rmenucCs|Sr)rmenu_check_copyrr!r!r"rmenu_check_cut,szEditorWindow.rmenu_check_cutcCs6z|jd}Wnty$YdS0|r.dSdSdS)NrrfnormalrGrr&)rZindxr!r!r"r3/s  zEditorWindow.rmenu_check_copycCs6z|jjd|jdWnty,YdS0dSdS)Nztk::GetSelectionZ CLIPBOARDrfr6)rGrcallr&r4r!r!r"rmenu_check_paste7s  zEditorWindow.rmenu_check_pastecCst|jdSrN)r Z AboutDialogrvrr!r!r"r?s zEditorWindow.about_dialogcCst|jddS)NZSettingsrO)rZ ConfigDialogrvrr!r!r"rEszEditorWindow.config_dialogcCs"|jr|j}n|j}t|dSrN)rsrvr Z show_idlehelp)rrQparentr!r!r"rKs  zEditorWindow.help_dialogc Csptjdddkr`zt|jWqlty\}z"tjdt||j dWYd}~qld}~00n t |jdS)Nr;r<Document Start Failuretitlemessager:rO) rrmri startfilerhOSErrorrrrrG webbrowseropen)rrQwhyr!r!r"rUs  zEditorWindow.python_docscCs|jddS)Nz<>rOrGr/rr!r!r"r`s zEditorWindow.cutcCs |jdsdS|jddS)Nrz<>rO)rGZ tag_rangesr/rr!r!r"rds  zEditorWindow.copycCs|jd|jddS)Nz <>rrO)rGr/rrr!r!r"rks  zEditorWindow.pastecCs.|jddd|jdd|jddS)Nrrzend-1crrO)rGrrrrr!r!r"rps zEditorWindow.select_allcCs |jddd|jddS)NrrrcrrO)rGrrrr!r!r"rvs zEditorWindow.remove_selectioncs*|jj|jjdfdd}|S)N)z sel.first+1cz sel.last-1ccs@|jd@dkr.move_at_edge)rGrr)rrFrGr!rEr"r{s z&EditorWindow.move_at_edge_if_selectioncCs|jddS)Nz rOrDrr!r!r"rs zEditorWindow.del_word_leftcCs|jddS)NzrOrDrr!r!r"rs zEditorWindow.del_word_rightcCst|jdSrN)rfindrGrr!r!r"rs zEditorWindow.find_eventcCst|jdSrN)rZ find_againrGrr!r!r"rs zEditorWindow.find_again_eventcCst|jdSrN)rZfind_selectionrGrr!r!r"rs z!EditorWindow.find_selection_eventcCst|j|j|jdSrN)r rGrrrrr!r!r"rsz EditorWindow.find_in_files_eventcCst|jdSrN)rrGrr!r!r"rs zEditorWindow.replace_eventcCsT|j}t|ddj}|durP|ddd|d|d|d|dS) Nz Go To Linez/Enter a positive integer ('big' = end of file):rrrcr.0rO)rGrZGotoresultrrrr)rrQrGlinenor!r!r"rs zEditorWindow.goto_line_eventcCsnz|jdd}Wnty,d}Yn0t|jdd|j}|durj|jr^|j|n |j ||S)Nrrr?z Open ModulezAEnter the name of a Python module to search on sys.path and open:) rGrstripr&rZ ModuleNamerJrrrBrr)rrA file_pathr!r!r" open_modules   zEditorWindow.open_modulecCs |dSrN)rNrr!r!r"rszEditorWindow.open_module_eventcCsJ|jj}|jjdkr|s,|}|dur,dSddlm}||j|dS)NZPyShellEditorWindowrOr)browser) rr __class____name__rNidlelibrOZ ModuleBrowserrs)rrQrrOr!r!r"rs  z EditorWindow.open_module_browsercCsddlm}||jdS)Nr) pathbrowserrO)rRrSZ PathBrowserrs)rrQrSr!r!r"rs  zEditorWindow.open_path_browsercCs&ddl}tjddg}|j|dddS)Nrz-cz,from turtledemo.__main__ import main; main()F)shellrO) subprocessr executablePopen)rrQrUcmdr!r!r"rszEditorWindow.open_turtle_democCsN|durJ|dkrJ|jdd||jddd|jddd|dS)Nrrz%d.0rrrcz insert +1l)rGrrrcenter)rrKr!r!r"gotolines zEditorWindow.gotolinecCs`|rtj|rdStjtj|\}}tj|tvr@dS|jdd}| do^d|vS)NTrz 1.0 lineendz#!Zpython) rirjrosplitextrnormcaserrGr startswith)rrbaseextrr!r!r"rszEditorWindow.ispythonsourcecCs|jr|j|d|_dSr)rrZunregister_maybe_terminater4r!r!r" close_hooks zEditorWindow.close_hookcCs ||_dSr)r`)rr`r!r!r"set_close_hookszEditorWindow.set_close_hookcCs2|jr|j|||j||dSr)rrZfilename_changed_editrrvZupdate_windowlist_registryrr4r!r!r"rs   z!EditorWindow.filename_change_hookcCsV|jr dS||jjr"||_|jrR|j|j|j|j|j|jdSr) rrrrr&r removefilterrrr4r!r!r" _addcolorizer s zEditorWindow._addcolorizercCs,|js dS|j|j|jd|_dSr)rZ removecolorsrrbr4r!r!r" _rmcolorizers  zEditorWindow._rmcolorizercCsH||t|j|jdur0|j|jdurD|jdSr) rdrcr$r'rGrZupdate_highlight_colorsrZ update_colorsr4r!r!r"rs    zEditorWindow.ResetColorizer_cCsp|d|||}|r6||jvr6|d|d|d||krR|d|n|d|d||dS)NERRORz wordstart rz+1c)rr IDENTCHARSrr)rrGposcharr!r!r"colorize_syntax_error.s  z"EditorWindow.colorize_syntax_errorcCs2tjddddd}|s"d|jd<n tj|jd<dS)NrBr$z cursor-blinkr_rErra)rr~rGr`)rZ cursorblinkr!r!r"r9s  z EditorWindow.update_cursor_blinkcCsN|jdur|j|jdur(|jt|jdd}||jd<|dS)NrBr$r])rZ update_fontrrrrsrGr)rZnew_fontr!r!r" ResetFontCs     zEditorWindow.ResetFontcCs|t|j_}|D]\}}|jj|g|Rq|D]8}t|}|r>|D]\}}|jj|g|RqXq>dSr) rGetCurrentKeySetr+default_keydefsitemsrGZ event_deleteget_standard_extension_namesGetExtensionBindings)rkeydefsrQkeylist extensionNamexkeydefsr!r!r"RemoveKeybindingsTs  zEditorWindow.RemoveKeybindingsc CsBt|j_}||D]}t|}|r ||q i}|jjD]B}i||d<|dD](}|rb|d||dt|dd<qbqJ|j D]}|j |}| t }|durq|d7}t d|D]r} | | dkr|| d} | r|| d} d} ||vr| ||vr||| } | rt|| } |j| | dqqdS)NrrVrZ acceleratorr r?)rw)rrmr+rnrrprqmenudefsrrrrrrFZ entrycgetget_acceleratorr) rrrrtruZ menuEventDictr>r+Z menubarItemrcrZaccelZitemNamerQr!r!r"ApplyKeybindings`s<      $        zEditorWindow.ApplyKeybindingscCs|jstjddddd|_dS)NrBr^z num-spacesrDrE)rrr~rr4r!r!r"rs z#EditorWindow.set_notabs_indentwidthcCs|t}|jd}|t}||jkr8||jd||rn||D]$}||d}|j |d|dqH||jd<dS)Nr rVrr1) rZGetAllExtraHelpSourcesListrrrrrr"_EditorWindow__extra_help_callbackr2)rZ help_listZhelpmenuZhelpmenu_lengthentryrXr!r!r"rs   z$EditorWindow.reset_help_menu_entriescs|ffdd }|S)Nc s|dstj|}tjdddkrtzt|Wq~typ}z"tj dt |j dWYd}~q~d}~00n t |dS)N)Zwwwhttpr;r<r;r<)r]rirjrqrrmr?r@rrrrGrArB)helpfilerCr4r!r"display_extra_helps   z>EditorWindow.__extra_help_callback..display_extra_helpr!)rr~rr!r4r"Z__extra_help_callbacks z"EditorWindow.__extra_help_callbackc sg}|j}|rRtj|rRt|dddd}|}Wdn1sH0Y|rtj|d}||vrx|||d|g|D]*}d|vstj|dds |qfd d |D}d }|dt |}|r~z@t|d ddd}| |Wdn1s0YWnXt y|}z>t |jd dshd|j_tjdd|d|jdWYd}~n d}~00|jjD]Z} | j} | dtt|D]8\} } | } | | } | j|| d| | ddqqdS)Nrutf_8r)r*errorsrgrrdcsg|]}|vr|qSr!r!).0rjZ bad_pathsr!r" rSz9EditorWindow.update_recent_files_list..Z1234567890ABCDEFGHIJKwrecentfiles_messageFTz IDLE Warningz)Cannot save Recent Files list to disk. z Select OK to continue.r<r)r rZr )rzrirjrrB readlinesabspathremoverappendr writelinesr@rrsrr showwarningrGrvryrrr enumeraterstrip#_EditorWindow__recent_file_callbackr2)rnew_fileZrf_listrMZ rf_list_filerjZulcharsZrf_fileerrinstancer>i file_namecallbackr!rr"rs\&   .   z%EditorWindow.update_recent_files_listcs|ffdd }|S)Ncsjj|ddS)N)ZeditFile)rrB)Z fn_closurer4r!r"open_recent_filesz=EditorWindow.__recent_file_callback..open_recent_filer!)rrrr!r4r"Z__recent_file_callbacksz#EditorWindow.__recent_file_callbackcCs|}|}|r*|r*|d|t}n|r4|}n|r>|}nd}|pL|pL|}|sfd|}d|}|j||j|dS)Nz - untitledz*%s*z*%s) short_title long_title _py_version get_savedrvZwm_titleZ wm_iconname)rZshortlongr=Ziconr!r!r"rs  zEditorWindow.saved_change_hookcCs |jSr)rrr4r!r!r"rszEditorWindow.get_savedcCs|j|dSr)r set_saved)rflagr!r!r"rszEditorWindow.set_savedcCs|jdSr)r reset_undor4r!r!r"rszEditorWindow.reset_undocCs|jj}|rtj|SdS)Nr)rrrirjr)rrr!r!r"rszEditorWindow.short_titlecCs |jjp dS)Nr?)rrr4r!r!r"rszEditorWindow.long_titlecCs |dSrN)rYrr!r!r"rsz EditorWindow.center_insert_eventrcCsH|j}|\}}||}||}td||d}|t|dS)NrVr=)rGgetwindowlinesrmaxrr)rmarkrGrvbotrKrIZnewtopr!r!r"rYs   zEditorWindow.centercCsN|j}|d}|d}||krF|dkrFt|d}||d}||fS)Nrz@0,65535rVrI)rGrZ winfo_heightrD)rrGrvrrIr!r!r"r s    zEditorWindow.getwindowlinescCs|j}tt||Sr)rGrDrr)rrrGr!r!r"rszEditorWindow.getlinenocCs(|j}td|}ttt|S)Nz(\d+)x(\d+)\+(-?\d+)\+(-?\d+))rvZ wm_geometryrematchlistrrDgroups)rZgeommr!r!r" get_geometrys  zEditorWindow.get_geometrycCs |dSrN)rrr!r!r"r szEditorWindow.close_eventcCsH|jrD|s:|jdkr&|j|j|j|jSdS)Nr6)rrrvrZ deiconifylowerZlift maybesaver4r!r!r"r$s   zEditorWindow.maybesavecCs:z"|}t|dkr||WSty4Yn0dS)Ncancel)rr_closeAttributeError)rZreplyr!r!r"r-s  zEditorWindow.closecCs|jjr|j|jjdt|j||jd|_d|_|j rX|j d|_ d|_ d|_ |j d|_ |j |jr|dS)N)r)rrrrZunregister_callbackrunload_extensionsrrrrGrxrrvZdestroyr`r4r!r!r"r6s"     zEditorWindow._closecCsi|_|dSr) extensionsload_standard_extensionsr4r!r!r"rJszEditorWindow.load_extensionscCs0t|jD]}t|dr|qi|_dS)Nr)rrvaluesrr)rinsr!r!r"rNs  zEditorWindow.unload_extensionscCsD|D]6}z||Wqtdt|tYq0qdS)NzFailed to load extension)rpload_extensionprintrepr traceback print_exc)rrAr!r!r"rTs  z%EditorWindow.load_standard_extensionscCs tjddS)NT)Z editor_only)rZ GetExtensionsr4r!r!r"rp\sz)EditorWindow.get_standard_extension_namesZZzDummyZzzdummyc Cs6|j||}z.command)r r rZrwvariable)r r rZrw) r+rxrnrrGrrrry get_var_objZ BooleanVarZadd_checkbuttonr2)rrxrrrrGZmnameZ entrylistr>r|r r,Z checkbuttonr rwrZvarr!r!r"rs<       zEditorWindow.fill_menuscCs&||}|r|}|St|dSr)rr NameError)rrArvaluer!r!r"getvars  zEditorWindow.getvarcCs(|||}|r||nt|dSr)rrr)rrArvartyperr!r!r"setvars  zEditorWindow.setvarcCs,|j|}|s(|r(||j|j|<}|Sr)rxrrG)rrArrr!r!r"rs zEditorWindow.get_var_objcCs,|jr$|jd|p"d|j|vSdSdS)NZTODOSTRINGrV)rrG tag_prevrangeZ tag_names)rZ text_indexr!r!r"is_char_in_strings zEditorWindow.is_char_in_stringcCs<z"|jd}|jd}||fWSty6YdS0dS)Nrr)NNr7)rrrr!r!r"get_selection_indicess     z"EditorWindow.get_selection_indicescCs|jdp t}t|S)Ntabs)rGTK_TABWIDTH_DEFAULTrD)rcurrentr!r!r"get_tk_tabwidthszEditorWindow.get_tk_tabwidthc CsB|j}||kr>|jdd|dd|jd|}|j|ddS)Nr]rz -displayofn)r)rGrrr8ZmasterZ configure)rZ newtabwidthrGZpixelsr!r!r"set_tk_tabwidths zEditorWindow.set_tk_tabwidthcCsP|r@|r@|}d|kr$dkr.nn||_|j|jkr@d|_||jdS)Nr=rF) guess_indentrrrr)rrZguessrr!r!r"rs z#EditorWindow.set_indentation_paramsc Cs>|j}|\}}|r6|r6||||d|dS|dd}|dkrp|dddrd|dn|dS|dd vr|ddS|j}t| |}|d |j |j }d } ||j krq|dd}| d } t| |}||ks|dd vrqq| |d | d||kr2| dd |||dS)NrrOrr?rrz insert-1crd rVrz insert-%dcr)rGrrrrrZbellrr expandtabsrr{rrr) rrQrGrrcharsrZhaveZwantZ ncharsdeletedr!r!r"rs@          z"EditorWindow.smart_backspace_eventc Cs|j}|\}}|z|rb|rbt|t|krJ|j|W|S||||d|| dd}t ||j \}}|t |kr| ||jn>|jrd}n&t ||j }|j} d| || }|d||dW|dS|0dS)NrrrrrO)rGrr index2linerrrrrrget_line_indentrr reindent_torrrrr) rrQrGrrprefixrawZ effectiveZpadrr!r!r"r)s4        zEditorWindow.smart_indent_eventc Cs|j}|\}}|z|r>|r>||||d||dd}dt|}}||krv||dvrv|d7}qX||kr|ddW|d| dS|d|}d}|r|ddvr||j kr|dd}|d7}q|r|d |d|ddvr|dq|ddt | d} t |j|j} |j s|jD]`} t| | d} t| d } || d}| || || }|dus| dkrJqqJ| |pdn@|d d}|r|d} nd } || d}| || d| }|t jkr|t jkr nn|t jkr:|d|nT|t jkrV|| n8|t j kr| !dkr~|d|n|| "nW|d| dS| #}|d|| $r|%|n|r| &r|'|W|d| dS|d| 0dS) NrrrrrVrgrOrdzinsert - %d charsrIZconsoler)(rGrrrrrrrrrr{rrrZParserrrrrrZset_codeZfind_good_parse_start_build_char_in_string_funcZset_lorZget_continuation_typeZC_NONEZC_STRING_FIRST_LINEZC_STRING_NEXT_LINESZ C_BRACKETrZcompute_bracket_indentZ C_BACKSLASHZget_num_lines_in_stmtZcompute_backslash_indentZget_base_indent_stringZis_block_openerrZis_block_closerr)rrQrGrrrrrindentlnor%contextZstartatZ startatindexZrawtextZbodrrr!r!r"rLs       T                            z%EditorWindow.newline_and_indent_eventcCs||jfdd}|S)NcSs||d|S)Nz+%dcr!)offsetZ _startindexZ_icisr!r!r"innersz6EditorWindow._build_char_in_string_func..inner)r)rZ startindexrr!r!r"rs z'EditorWindow._build_char_in_string_funccCs2|jr&t||j\}}d|d|Sd|SdS)Nrr)rdivmodr)rrZntabsZnspacesr!r!r" _make_blanksszEditorWindow._make_blankscCsJ|j}||dddr(|dd|r>|d|||dS)Nrz!=r)rGrrrrrr)rr\rGr!r!r"rs zEditorWindow.reindent_tocCsPt|j|j\}}|r@|r@t||j\}}t||j\}}nd}}||SNr)IndentSearcherrGrrr)ropenerZindentedrZ indentsmallZ indentlarger!r!r"rs zEditorWindow.guess_indentcCsN|jdurdS|jjr&|jd}n|jd}|jdd|dddS)NZShowZHiderergz Line Numbers)r>rr )rZis_shownZ hide_sidebarZ show_sidebarr)rrQZ menu_labelr!r!r"rs   z&EditorWindow.toggle_line_numbers_event)NNNN)N)N)N)N)N)N)N)N)N)N)N)N)r)r)N)NN)N)N)T)N)rQ __module__ __qualname__Zidlelib.percolatorr%Zidlelib.colorizerr&r'Z idlelib.undor(Zidlelib.iomenur)r*rRr+Zidlelib.statusbarr,Zidlelib.autocompleter-Zidlelib.autoexpandr.Zidlelib.calltipr/Zidlelib.codecontextr0Zidlelib.sidebarr1Zidlelib.formatr2r3r4r5Zidlelib.parenmatchr6Zidlelib.squeezerr7Zidlelib.zoomheightr8rgetfilesystemencodingZfilesystemencodingrhrrrrrrrrrr rrrrrr'rr)r(r5r3r9rrrrrrrrrrrrrrrrrrrNrrrrrZrr`rarrcrdrstring ascii_lettersdigitsrhrkrrlrvrzrrr{rrrrrrrrrrYrrrrrrrrrrrprrrrrrrrrrrrrrrrrrrrr!r!r!r"r$2s               +    %              $ .     %     ,#v  r$cCs tt|Sr)rDr)rr!r!r"rsrz[ \t]*cCs$t|}|t||fSr)_line_indent_rerrcrgroupr)rrrr!r!r"rs rc@s8eZdZddZddZejejdfddZdd Z d S) rcCs(||_||_d|_|_d|_|_dSr)rGrrfinished blkopenline indentedline)rrGrr!r!r"rs zIndentSearcher.__init__cCsL|jr dS|jd}|_t|d}|j|ddr:dS|j||dS)Nr?rVrIz>=rcz lineend+1c)rrrrGrr)rrrr!r!r"readlines zIndentSearcher.readline)classdefforiftrywhilec Cs>|jrn2||kr ||vr ||_n||kr:|jr:||_d|_dS)NrV)rrr) rrFtokenstartrcrINDENTNAMEZOPENERSr!r!r" tokeneater&szIndentSearcher.tokeneaterc Csltj}|jt_zHz$t|j}|D]}|j|q"WntjtfyLYn0W|t_n|t_0|j|j fSr) tokenizetabsizergenerate_tokensrr TokenError SyntaxErrorrr)rZ save_tabsizetokensrr!r!r"r2s zIndentSearcher.runN) rQrrrrrrrrrr!r!r!r"rs  rcCs6|d}|dkr.|d|||dd}||fS)NrerrV)rH)srr!r!r"rDs r[]/)Z bracketleftZ bracketrightZslashcCs||}|rtr"|dvr"dS|d}tddd|}tddd|}td d|}td d |}td d |}tdd|}tdd|}tdd|}tdd|}|S)N>rMrTrUr?rz-[a-z]\bcSs |Sr)rupperrr!r!r"rR]rSz!get_accelerator..z\b\w+\bcSst||Sr)keynamesrrrr!r!r"rR^rSzKey-ZCancelz Ctrl-BreakzControl-zCtrl-r+z>sz                     Z  4