Ë –7ÚjÇãóX—dZddlZddlZddlZddlZddlZddlZGd„d«Zd„Zd„Z y)a)A bot in its own process, spoken to one JSON line at a time. Start it with python -s, not -I: -I would ignore the fixed PYTHONHASHSEED that makes a bot that iterates over sets play the same game twice. The referee never imports a bot: it starts the bot's adapter (a small child program each game has, which loads the bot in the game's own interface) and sends it one line per turn. A move that takes longer than the time limit, or a bot that crashed, gets the game's default move; the referee counts those as errors. The child side is `serve(handle)`. éNcó"—eZdZdd„Zdd„Zd„Zy)ÚChildNcó¨—|ddc|_|_|_tjj «D��cic]\}}|j d«rŒ||“Œ}}}d|d<tj||tjtjtj|¬«|_ d\|_ |_ |jdd i|¬ «ycc}}w) NrF)ÚSS_ÚSLURM_Ú0ÚPYTHONHASHSEED)ÚcwdÚstdinÚstdoutÚstderrÚenv)órÚhelloT)Úlimit)rÚerrorsÚdeadÚosÚenvironÚitemsÚ startswithÚ subprocessÚPopenÚPIPEÚDEVNULLÚpÚbufÚnÚask)ÚselfÚargvr rÚstartÚkÚvrs ú_/private/var/folders/v3/mcwwdgb158s9czwmdjf2pvmh0000gn/T/scienceslack-job-31-rUHQq4/kit/host.pyÚ__init__zChild.__init__ sµ€Ø-2°A°uÐ*ˆŒ �D”K ¤Ü "§ ¡ × 0Ñ 0Ô 2ÔZÑ 2™˜˜1¸!¿,¹,ÐGXÕ:Yˆq�!‰tÐ 2ˆÑZØ #ˆÐ ÑÜ×!Ñ! $¨C´z·±ÌzÏÉÔgq×gyÑgyð@CôDˆŒØ!шŒ�$”&Ø �‰�'˜4�¨ˆÕ.ùó [s ¸CÁCc ó¶—|jry |xjdz c_|jjj t j i|¥d|ji¥«dzj««|jjj«tj«|xs |jz}|jjj«} d|jvr‚tj|gggt!d|tj«z ««\}}}|rt#j$|d«nd}|st&‚|xj|z c_d|jvrŒ‚|jj)dd«\}|_ t j*|«} t/| t0«r'd | vr#| j3d«|jk(r| d S�Œ#t,$rY�ŒwxYw#t4$rQ|xj6dz c_|j6d k\s|jj9«�|j;«YywxYw) zKThe child's answer to one message, or None when it is late, broken or gone.NérÚ ó girÚansweré)rrrr ÚwriteÚjsonÚdumpsÚencodeÚflushÚtimeÚ monotonicrr ÚfilenorÚselectÚmaxrÚreadÚ TimeoutErrorÚsplitÚloadsÚ ValueErrorÚ isinstanceÚdictÚgetÚ ExceptionrÚpollÚclose) r ÚmsgrÚdeadlineÚfdÚreadyÚ_ÚchunkÚlineÚmsg_ins r%rz Child.asksÜ€à �9Š9Øð Ø �FŠF�a‰K�FØ �F‰F�L‰L× Ñ ¤§ ¡ Ð+?¨cÐ+?°3¸¿¹Ñ+?Ó @À4Ñ G×OÑOÓQÔ RØ �F‰F�L‰L× Ñ Ô Ü—~‘~Ó'¨5Ò+>°D·J±JÑ?ˆHØ—‘—‘×%Ñ%Ó'ˆBØØ 4§8¡8Ñ+Ü"(§-¡-°°°b¸"¼cÀ#ÀxÔRV×R`ÑR`ÓRbÑGbÓ>cÓ"d‘K�E˜1˜aÙ49œBŸG™G B¨Ô0¸s�EÙ Ü*Ð*Ø—H’H Ñ%•Hð  4§8¡8Ò+ð "&§¡§¡°°qÓ!9‘��d”hðÜ!ŸZ™Z¨Ó-�Fô˜f¤dÔ+°¸FÑ0BÀvÇzÁzÐRUÃÐZ^×Z`ÑZ`ÒG`Ø! (Ñ+Ð+ñøô"òÚðûôò Ø �KŠK˜1Ñ �KØ�{‰{˜bÒ  D§F¡F§K¡K£MÐ$=Ø— ‘ ” Ùð  úsC�E+G>Å;$G>Æ G.Æ56G>Ç,G>Ç. G;Ç7G>Ç:G;Ç;G>Ç>AIÉIcóf—d|_ |jj«y#t$rYywxYw)NT)rrÚkillr?)r s r%rAz Child.close2s-€ØˆŒ ð Ø �F‰F�K‰K�MøÜò Ù ð ús ‰$¤ 0¯0)Ngð?g$@)N)Ú__name__Ú __module__Ú __qualname__r&rrA©rr%rr s„ó/óó<rrc ór—tj}tjt_tjD]{}t j |«}|jd«rdn||«}|jt j||jd«dœ«dz«|j«Œ}y)zfThe child's loop: each line from the referee in, handle(message) out; {'hello': True} answers at once.rTr)r+rr)N) ÚsysÚ __stdout__r r r r.r:r>r-r/r1)ÚhandleÚoutrHrBr+s r%ÚserverU:sx€ä �.‰.€CÜ—‘„C„JÜ— ” ˆÜ�j‰j˜ÓˆØŸ™ Ô)‘©v°c«{ˆØ � ‰ ”$—*‘*¨°S·W±W¸S³\ÑBÓCÀdÑJÔKØ � ‰ � ñ rcó€—ddl}tjjdtjj tjj |«««|jjd|«}|jj|«}|jj|«|D]}t||«sŒt||«cSt|«j«D�cgc]!}t!|«sŒt|dd«dk(sŒ |‘Œ#}}|st#|›ddj%|«›�«‚|dScc}w) zTThe first of names defined by the bot file at path, which may import its neighbours.rNÚbotrMÚz defines none of z, éÿÿÿÿ)Úimportlib.utilrQÚpathÚinsertrÚdirnameÚabspathÚutilÚspec_from_file_locationÚmodule_from_specÚloaderÚ exec_moduleÚhasattrÚgetattrÚvarsÚvaluesÚcallableÚ SystemExitÚjoin)r[ÚnamesÚ importlibÚspecÚmodrr$Úfnss r%ÚloadrpEsü€ã܇H�H‡O�O�A”r—w‘w—‘¤r§w¡w§¡°tÓ'<Ó=Ô>Ø �>‰>× 1Ñ 1°%¸Ó >€DØ �.‰.× )Ñ )¨$Ó /€C؇K�K×јCÔ Û ˆÜ �3˜�?ܘ3 “?Ò "ðô˜3“i×&Ñ&Ô(Ó bÑ(�¬H°Q­K¼GÀAÀ|ÐUWÓD;ÄD;) Ú__doc__r.rr5rrQr2rrUrprOrr%Úrrs*ðñ÷/×.×.÷,ñ,ò^ó r