ó ˜7Új[ãóT•SrSSKrSSKrSSKrSrS SjrSrS Sjr"SS5rg) aÎWhat every game's referee shares: where the bots are, how a match is seated, and the files a run leaves. check: the route's bot plays every bot of the season's field (field//), seats swapped; the score is the mean over the field and each opponent is a subtask. metrics.json is what the site keeps (scienceslack.json names it). practice: a few matches against the field, each leaving a replay in replays/ and an entry in replays/matches.json. éNcóº•[RRU5(d[R"SU35 [RR U5$)z„The route's folder the check was given, absolute (bots run in their own folder); a missing bot is the route's mistake, said plainly.zNo route folder at )ÚosÚpathÚisdirÚsysÚexitÚabspath)Úargs Úa/private/var/folders/v3/mcwwdgb158s9czwmdjf2pvmh0000gn/T/scienceslack-job-29-lIAUSs/kit/league.pyÚbot_dirr s>€ô �7‰7�=‰=˜× Ñ Ü �ŠÐ& s eÐ,Ô-Ü �7‰7�?‰?˜3Ó ÐócóV^•[U4Sj[R"T555$)Nc3óà># •UHcn[RR[RRTU55(dMGUR S5(aM_Uv• Me g7f)Ú.N)rrrÚjoinÚ startswith)Ú.0ÚdÚroots €r Ú Úfield..sEøé€ÐpÒ-˜´·±·±¼r¿w¹w¿|¹|ÈDÐRSÓ?T×1U“!Ð^_×^jÑ^jÐkn×^o—!‘!Ò-ùsƒAA.Á A.Á% A.)ÚsortedrÚlistdir)rs`r Úfieldrsø€Ü ÔpœRŸZšZ¨Ô-ÓpÓ pÐpr cóš•[RRSS5RS5nUS:XaS$UR SS5S$)NÚ SS_ROUTE_DIRÚroutesÚ/Úmainééÿÿÿÿ)rÚenvironÚgetÚrstripÚsplit)rs r Ú route_namer&sA€Ü � ‰ �‰�~ xÓ0×7Ñ7¸Ó<€Aؘ(“]ˆ6Ð;¨¯©°°Q«¸Ñ(;Ð;r c ó¶•[US5UR5VVs0sHupEU[US5_M snnS.nUb[US5US'[US5n[R"XgSSS9 SSS5 [ S US S [ U5S 3S RSUSR555-5 gs snnf!,(df  N]=f)Né)ÚscoreÚsubtaskséÚcostÚwéT)ÚindentÚ sort_keyszscore r)z over z: z, c3ó6# •UHupUSUS3v• M g7f)Ú z.3gN©)rÚkÚvs r rÚ write_metrics..!s"é€ÐDxÒ`wÑX\ÐXYÈÀsÈ!ÈAÈcÈ7Å^Ò`wùs‚r*)ÚroundÚitemsÚopenÚjsonÚdumpÚprintÚlenr)r)r*r,rr4r5ÚoutÚfs r Ú write_metricsr@s¼€Ü˜% “OÈXÏ^É^ÔM]Ô1^ÒM]ÁTÀQ°!´U¸1¸a³[².ÑM]Ò1^Ñ _€CØ ÑܘD !“nˆˆF‰ Ü ˆd�CŒ˜AÜ � Š �# ¨dÒ3÷ ä ˆF�3�w‘<�. ¤s¨8£} o°RÐ 8¸4¿9¹9ÑDxÐ`cÐdnÑ`o×`uÑ`uÔ`wÓDxÓ;xÑ xÕyùó 2_÷ �úsŸCÁC à Ccó(•\rSrSrSrSSjrSrSrg)ÚReplaysé$zYreplays/ per match, and replays/matches.json saying who sat where and how it ended.cóL•U/sUlUl[R"USS9 g)NT)Úexist_ok)rÚindexrÚmakedirs)Úselfrs r Ú__init__ÚReplays.__init__'s €Ø $ bЈŒ �4”:Ü � Š �D 4Ó(r có.•[[RRURU5S5nUR [ U[5(aUO[R"USS95 SSS5 URRXXES.5 [[RRURS5S5n[R"URUSS9 SSS5 g!,(df  NŠ=f!,(df  g=f)Nr-)Ú,Ú:)Ú separators)ÚfileÚtitleÚseatsÚresultz matches.jsonr.)r/) r9rrrrÚwriteÚ isinstanceÚstrr:ÚdumpsrFÚappendr;)rHrOÚdatarPrQrRr?s r ÚaddÚ Replays.add+s²€Ü ”"—'‘'—,‘,˜tŸy™y¨$Ó/°Ô 5¸Ø �G‰GœJ t¬S×1Ñ1‘D´t·z²zÀ$ÐS]Ñ7^Ô _÷6à � ‰ ×Ñ 4À%ÑZÔ[Ü ”"—'‘'—,‘,˜tŸy™y¨.Ó9¸3Ô ?À1Ü �IŠI�d—j‘j !¨AÒ .÷@Ð ?÷6Õ 5ú÷@Õ ?úsµrbs2ðñ÷ Óò ôqò<ô z÷ /ò /r