From 5cc6cd19ea2261d0bb17758aea14c0d2bdd5de17 Mon Sep 17 00:00:00 2001 From: AKP Date: Wed, 13 Dec 2023 20:44:50 +0000 Subject: [PATCH] Benchmarks are back baybeeeeee --- challenges/2023/README.md | 2 + challenges/2023/benchmark-graph.png | Bin 0 -> 44569 bytes challenges/2023/benchmarks.jsonl | 25 ++++++ generate-benchmark-graph.py | 118 ++++++++++++++++++++++++++++ 4 files changed, 145 insertions(+) create mode 100644 challenges/2023/benchmark-graph.png create mode 100644 challenges/2023/benchmarks.jsonl create mode 100644 generate-benchmark-graph.py diff --git a/challenges/2023/README.md b/challenges/2023/README.md index 6668edb..20aecf1 100644 --- a/challenges/2023/README.md +++ b/challenges/2023/README.md @@ -6,6 +6,8 @@ Solutions to the [2023 Advent of Code](https://adventofcode.com/2023). --- +![Benchmark graph](./benchmark-graph.png) + | Day | Status | Solutions | Notes | diff --git a/challenges/2023/benchmark-graph.png b/challenges/2023/benchmark-graph.png new file mode 100644 index 0000000000000000000000000000000000000000..f70639939765dc9a466a25d1647e4f06c862e9df GIT binary patch literal 44569 zcmce;2Uyifwk?j@YKsVJ6BG%JqLM)Yk*p%&5F~>jp%uwFOGa%_$sEZ@&RKE>6_F%4 z9LYH+2?qoO-Y)E(apv9k-o5vKzdzqhw~gogLe;Ll*IIj3y^^~peu|Kikbr>T6h`8% z0s+A=|4WeW^Sd=&M}l=kxB$5)6x!h$20!ovy%+JH+|mPy?yU&EX#}VLt3qMHFY(-)BMvrqrZ>8Xx(BX zui+p%1kV6J4Dx0z#6SK>z(B(A@vmPK-=h2Lw-yA1mOuX9{fOMlBR~E~<$j0i$Dc+B zNMU>qevZeUKK|oRHwip${`k|oLkE`(GpO|<%e&9Ay;Qy|T|SkOQ^n+6iygmz|9;pf zpYuBEwDqi4u85I)i*o9Hwyu3Aw|2JHz{pk8)ELQ|`48 z*Cr(#(RcKw-12a{Ovo~%;%9vO07R_~MT&1O@Ei~$u z9Clul$-V(MXnXsxhLn;rosf(vRn(i@aj_6*v$Z-&W!l-%VKeNqnFhZkBq9o`uC7)u zHp@y=Okv{W%)eW07t67+(3_yD?V^0`+O-zqqXYzD^)xA8e#PRu8N+8lRx0#>!WyZhhjgbQ4E9h=|qa*FSSYB^%e ztG1G9o{Su_ooTy$lANV2%6^E^yEeYxyjoMi&eDA0OYYo2X+DkXw};)S@*?v+S)G5L z_^rTs%W8L{-+ZI}v7w=1U!_y=F%p{0w{JO0OG^zG`wAWB(ozZ@)*N%$#p8&puUcr@ z&i5#*t49b33Q`YkMhiM|S&rSs!$`w}^S116&*u>P!vuysM{|3H-*G*)CtEXPxq4rV zL~uPouQ?*=#BWz_avh6oPWJI3+WPkGX2J0M31VXSRC!m0gY{1C3mQj>%^|0pWZ9VP zP;J*Dt>?CnG0rzcY_0WQ;* zv-R!>2?GnuXDy%k;p%GoG|6Bl^=elazcBRjM~@wwt058YnrL`UMn$F3QGDoV02Uh$ z6M2*Sn0M`%m9PkQVsdhF;WPoktuxoS$p{EuqnQb2R_zI(6R~MxEjEBVZCHngho>tf zd42Muj+}RCXlPhnS!w5N70?k5iH^>Ow@iIlB;i;4+WNpt zmoZM8ONF!#-v06QIwvRI-|hRQI^0(MCI6X^uYQBbj7nUH|JW^BVyww2tSUyOSz<9- zX3DNn5}Ok3C<$|lUI4A0}@9`?PSnW_gjbvvXIDwlFoH4TE^(%#49A zCAXyQTvx7}Ta4ozV^UI*CXe6uM^38^SIHEAb&FHzF&WgKb-fTsAd# zm)-UipC3ClvACE8QE$+hEK{1zYrmx7@!~~OU7a|qdO;hB@b}njI-e#elXUZYxpW&z zxy^?(goK0$2?;wyNCXqtrdzdnmf#ch!^7GyNN9UT-al7{#XM+>)5NZ7pIpwFPt;V4 zG;evsi>q9QoS@=O&RU?~N`s&66nAxXMdLN(y0b{NxT=0>Niq`+?8`HkCYG0TVC~O` z>qj?mS8gx#=5Is#$c6=|oUVjP5clu#qvp>pUmEZ^&&g%f#eh+W5psE)dmsK+@Tk^n z-gWV}tM`<$)C*B!8MJC*m6ViJaC9t-c3#DxCAhb@N6BwzlHGb5vptuQLwe>6owl~N za+-o@@vv+8BORSJ-`@xbNNFxXa^&dERLi&Nl;LS;YLc=auzVr3J#)#luK)w1ACQug zBIZYxhE^G^+jmR9KvozLRk)K&V^XtTC#0$ZN4$~Xw~^;YJ(=Nli+xG3z+{gTQ?-5H zTC-l?ffQi~W8=7xTL+KJ?G*QTt}Bi5hDq2`**u%>|}He&fl;VBQw(Gqkih@L&DjZrvHGIQHuA@jFZ9vamE9AqGymwBCymVr49s zv#%{O?N^GsbClb-hef;}2C=WzetD=;4p(vU(j^i2yrh&==Tvhf9x{Ep*W=el z$7TFXy9h*cH;Q?93C3&Jcs6Qie*F#;)*sn@Gep9Z$#=8J6RpW@p+Hw!hYpK(V=zrItTc z*2$lrm&au>a?5skNE5!5{r&rQLOfnuK46CpGu;}4^W_;zjWjF66c0IORP8MB3vLcr z8};TT9Xmy7(=3#!l5vcfD)n9z-|V3MaCe?=6PIBJJ-0#IEq{U4mx&88!*L=njK)9t zI!*+NcNG{avfh7t3*xtG3D=gdFN<;v#7>o#^NQ$B>pN{X^1V5@VL(n!PPE&e14Nhv zt@GEXkn$&|rjjAF=DSt3ySMT4+&Z6#V5VhrDptLAEB7JEt*XIGiT2} zqQ7!w%D`!7vG~H%r%y|_%cIxVZ7vB245X^&L;K7X{l~}D;K3N$P@Zax-SX|qU-owvV#KQ^@ zgR;7ibJBX)2|uSRalPu>*vXw-G$uE1eks|Sid?MA9>|#OOquq=YwvHX`aS6@GBv(? z_wE<%)<~Y#fXC9|*K1ur8x>Nz>})jKHdlO(;>QI%zAGw9_RZM5J>DZQFz}(UYaO-y zIdbpXb6f^;ew+5NwCgt6uUz?LVQpDxr77QC}$%rbClrS-F&@f z1v$BZ?e*D9j806Grp1HFfX;e^OtZ{~tI}1nBJ^6LP2GmK)}{+>W)%kQ`b{@fkUay3KbMTvhVe=1R(@Zb5o}L?hK^p>TTR}k~`@(#M!&+CF zt?^C)E<>~T^q5z!PTkbGl`je6B$(a{DjJsf%`2BLi@tjGYOb#^gQ%trR#Wzc)^3#6 zXapTottK0JtJonZL%WRtD`Z#|R4*3wE0tPJI*;?)&IO@_@3d4Z4)tckuF?^&0Bgb; zPkruO>Y*dYCT93AUc3W;Rl1ioHQi{CH^xx!5=!sp<~HcEIk~F~9F>*BZuIuQhK2(hQD{W&>1#uG#qc^Jn>&{7=5dZY&LE zK+&G=9S-Nzx2nj7n2uf~XH`$cX*tRC7n`@{vUPQPB*0p0Xl`c3aqsadbJEe>reM=( zgOw(X;0Uvv25z;5e|hG$tWbOP{;v5c8iAX2yxQ8s0=V2V=dHY5XDx`eto@zp{Z1I9 zQ1gdZ85ksP-@c7ad|*~83WcKV7}2@d=f_F3tn)oQ2&?l>8&T3|8yLBlxh^5x59sWHsNGy0;MjXG6 z+=dUOiTP3&i-lZ49$&_L~HM zcvVJvdU_mbKX%~uR*tsQAAiKsGjefp;Vc2nB_`4%(0QDMCg|Zg1g4{Lwx6$nfHjs3H4sh8HdIyXs2FbJ5VMleW0;P`;^AyqBloMnuX>C5oQvbNo=P?BOg0)U zE3B++)b2x)4&?b^mwe`5CD z1MW1qm2HdS_^_ri5Ie`E(&=?rVe|WY%llSQBqvVDD=7uRQk3U-cFNP`@L`h}wjqs0p<4m<^Q3t&kNhQ*s+kdntM;3rTl|Y;nWs4>H0iV3od5ZDT=kaBzv>4&*X+03;8b8M2DhE$Gh~vlxYwV z4top)B3(Yg6X1?@)DEy2JTMZ2z5>HlJYE?x3XDvAZ@zv8pq*_PWK04IQHR3AMu|fd1L_utLHt&_!&lbrpUIoX9HM*<;CZ?Zr~?>&27*$&k;YDem^%J z5W@E6vUXxv;sUii)Oy!Jz>*F_>=>iYWM84(b;ZTOa-O=NerE5bV#CfW;yb4<+%TA^ z4>TICs+{^9{#qwu9U^XM~4gm*M1VG}y`whyuw@oFW zk{S3@?RJ$$7CaHwYX3t0{C)KJkPLx9vJMA&i7G>W60pw~gdhiMYi^{im;RtQJ3c-> zC?X<4M@d6#lapO^H=NxIu2#>1a0a{TdvX{&Z*CNqw}FIK?e975E}FY_vK9|u=Ua9B z1(Urg*o{U%cwqBzUS*RZ57x*1h3A^stCdt#RQwFnur~8q#dE;?wkKZ8t}f*KZX8is zUf%R5_X{rNbz)dpmZ$V@mhjZD zsBF z>_IF5EdRwH7?lL%W6`SQOGNOlKx27bT}^L1sPdSuPM3>&Mo%_BMAjw4Ge~c5Z!h!a z<~3ZkP7Q|*$QEb)4-vSpK0AX#_zxK6GJqEVutTP|0DNRXs6{|(s2qXHTRi)mM5qn) zg|0kZDFpNDob~|67$cSeZ%IZ*mIQ&(U{nYJ<`TiF?+2LAYVbol5Ns}o)yIQR#(m4y zTKH|JKA#sA6H5ms&D-+YoLHifmv0*WN(nLppY2@Y zahfN$Mn^~a?3dmYnGL4vHigW>THpF)z3}B4M7A_g=;8q@Zz!OVaBgS=`v5xx!mq9F>W|;)G zYI}}ZCh~^NB{3hl-EBPjG*W4#LfN|8;zSlNJe-*B)sN}6A9hKRPY|0Oa#~itd-qQm zwiJ((6h^S}d6UVtWg&99V{ac3T>H$4s0d(8F7u%Z4dZaKE_6@$=$yIRP9$W-gqJUW zO-f8Oz-4P9J&g3X-x8qqlg&k-;^Rp|i!y;BNIraSdlf?8zlszBbrZKl)zEP!?!`JV z6oZ|O#j;V)3lp=mX;7(*mIg{A_-xb7N+&}ux@c|=yHz8iaWE55t!=-3edvPkRyAsi zy&af6&4Avs&W{?u-YGi|F9>gtM$V>Tu)kF@^s@MdXA77q9=?N-*Iw(80VZFshJ4~JL+&M}RD-aJ-p!*5Xj4p%v zcIq6*@2zWQW@ePvAHPI8Qoep`I=nK1M0Z3)$Sz!nH0Bxz-uw)cwp_Uxjgadul#SK3 zHAR>Z{Kwy9Neu|qAl&dU5wj31T~OZBAZTZ^iiZ@WrKPh)XRF~$M~@$$k2J4pN20^t z?v63Uy-`QvE0+`nMyG`5z?J3z_=X;&p3UlgWhhkLpj%bK7~y=T0Zebq#yBj}@IL(T zCzbJMg#6MqO7n#FzUefFT@wL`qyx0SB>v@!&Y>v?;*ECsR^ff;Y-1RLKCPGYLzU%7 zFas@5Y-MF-_3Kx;*H>g@I`$HQlkD~_YI%Wc#pSM9n>SlR9la1uC^ zIAU{%QGhzbWi=roxba2DgK0){bb2}kB&<0+P8$bn0S{S&;rHKf!KZsb30ge4N%0Bh z5f9@sgV^0#t8flL4MPaE2wv-CyXB#%gheQTBs!1H!MhQ&jMO$QPHOe`?kb$j-rcIO%3EqKI}UtNuE`y9@R*ks@(aU&pPb3IuP z{9@87emQ>J7#4%$xGxVC>?Qu6Y@m2na@`5lbP!CL&z`_?J9rK@+2+aoVn1q6i<+IDftE;pxf8FL3jH z!|SWv)jt4sx>|nn#$ta8z$V6FDU_N|K^TN=caqDv9eWG{yty zjjSqX0USXc76I)AdJIZ1Fn@(0W@(n$U;t~kL+P@w1jw-Zb);9*0jNsiaaw0NaNhp`BPBy7mIu;^zZWqLYZO}m`r>9jH z=2McBjZokw4pll)>^Q>XPkLlb8aiz(w8Q*$m)o0rczBSNyAhN;yF=w}r2}~ufv+E0 zHzXMV(vOjB1KOW>V2*KqZxAqPl`wQ2Vh2j7%4ul?jVRAbVj-0<{RfJ28x)_=c^9aC zXmU{s1qr69zyATkEBLwY%NUR=3uJSiK$_1vUjr)>iJC}`1c?+CTUf;@RHiDK_vt|X z0<1p+=-A%~m(2?489=G*3u5X<+h(Y*Gf-ZXfMtM+)dlMgB(7wJ;$MN|F}?{;L1{2S z%oj@!;%nWID+t?^!mbs--^$h>{kkmIeatvf;cPXIPm3GI|J&>o>{;z?x*Xj$USnKLM5Lt^1_*|x!h z1OZ7LNOc0^CiKT*>3KP2=RqU;OfpwsbSRO2=bihZqh2Q=R^(x|Me^Hc z(>1*G@@lmF4g~{5HK5};@O8`44@Z&gcaGaA=nN_8V{@QrHxoc%+<0Ts7{mx4g!W+L z3b)N{NA1_mO&;v)*C$CS+&lcyD)EJ~j?gOMsZ-tX_H3YaAf$l00Q3zw9Bya>iUiW? ze+WW78aNOXLO;~hc$2k4vCag+IvtqVh7PDEjv#Q70r(Ph+L$m9wp+OG;NZ}!y$MRS z!p6D^rmxDS9C3Q6_lo+h(aMh=#h?A{w_xZuK@v8E*aNm!>vbMQL5X^FNDSO414;pk zJ$gfE5dut+qv?0|e?ooPP}_zh{wKmpWCt#n^~JoygK z!A*9n^vwD5X%Hh#H8mozXb^@O7}#^B$ps`>xzT5g9<8IZbFnUmUQRUwfMM=9FK{t{ z&q4Fwf@etp-Q~+V1SG;QCJa>J%9!4URC=c|9>?_==N)ND$-HV3m?mX-ZaY>%$MrTC z8WzU#k)A3SC*U<&&?AwDD1G+q87iKG4%1N^n^gRE(g1;AVlcdGLIjgXpv5~W26tL4 zx7<~RPXn7shNj{inr7(8B5Vo~J3pUO-O{}`my+i1Rp=ru~X-#`7!K1Kt(06fXch7-S+QP zQlQu8y(C+%vcr6|C`l?5$h3^(-q!SGUGvXhA)%x}l0}T_;>C*#%W1%F?Un`@Bb!5j z-O9u3Cs7!GJmj7y9tjCgElXu5H!SQNaE|JCxUXw#uj!!|7k6tBgqchLX^8%9=rA%e zZbNxbdHeS5ogCA%fW;8iMw&m|-6~2}LV}?S52K**lykKJG~Dv&u3+FMS`g1UN$ zVw+*}PTHU*8R8;9K$>dCTP@jv0rbE~b31LA?Br%G}m981DT$Vv3zC&7B=F28+iNvLgN$| ziy07Zd3#>GK0rfIW^xgWVtr5qjbdqlno+2G49qeWI(M}tA_S7ZiNWL~LP4Da>eUHj zgAnZ;Vg?V)E0Z9!$mjTg1f~H8NkYw1)RY6pRPNk=?C4R{I;Z6L!(Hgx$dSsgA5N~W zu67{UJmZ=(Ggw{>Xg38=-#qF=gF=ygo>Pwj(4VXzUMVp91Ok&S^_{T1xlQ}HqIj*v zP`6^KWZaL6zfU_n8oKoMJJ&!6wMEML7Bgh-!bi1)sN0FKI-qSs&=Bu|B82-*RzN;A z=g6&Dy=&Q-tEV6|;3xJY$Ho6I#te7BJPf9gwL#@g0&on5iktj^q2-R9_lyGpCLO}w z%6h!i@OEGd2nJY{0Ri7T8g!8VCFA1aT8IHK1swqe0`-vdYZ$oeJ7Go>NV#PbPOD0g zF{=axxzrpveE1C&JTHScq;6;*8@2MwaZG@{B{q?a2Yv7sbP~LLe1f_mQy%^0mw*wt z)7jef#%FZ0aD6|OE`jDpP-d)Hbk(h_@(v$CqW#@xU`>$xWlOBxVi=nH7-qAo_jA=h z2F3lqZ%jcK_%EPanik^N0>CAYA3vTD8lAf0{X*Q&ZY%HpIULYG#}n)LsiFR=B9af1I4_CHJ~JI)!_`p5A?*72D4&SKx&Lt1~u z8O{?5Z#s)jxK+8=uY1+sFvOY&36;un8PRX@FMrP;EMK15m&tjcx}@{zd#~M`5+gVF zauK(2sGWo@f#x@-Ez^>r&eyO4Z{5`VKDE(_78-G zONDn9Vodd$v3}G|-f1ZGEj~<7HigSNi<=1EHbuTJ& z4FY|r`B%+%K65H~5cZmevIOQjSnrv}Jh_vu#8|$#I(fY(tEqbNlD`DE(c@xYzmQxj z-96LgYVCAo=JLgD{Phr4`0JT=h5PsI`dJ@5{=O;&e_bMCG;p(gFbXFH!So7?ZxxyjYlYB>+L&F;fidH)x>=2T?4}z`!ASJ^s9`HTG4Vh?yW|cZu!)I(*GEP{tZ)ix2W1#EY_gD z^Bd6=nl}E`0uz|D-jLRp3q{UikFD=Sf9g{D5x(yZv3OeguB6sq=H*p`R%Tg1K&-pF z`@pGlEpO}}cygBCd!TwQ{7_mAEM3aVG5(nf0vywbUsE= z#v1d!*7$*#@bi;haHost^I@i-A4Ipld^BxHI!5^FBRHypxK@4RN2`9UZ|CQLs}6qt z|64}?w2Uzndz3&vPKWLX(tO`gBjerPEk9^8H|AMAcRBKF3hRox~i61_EKu7`7 zo*|SlKN3>-JQbZdDz^O2uw8UWp1LL5CrMm6!ZRmhDHV1YmxRdJ4Jg5fDyu7@1wD4I{zh2&myU{Ql zk}=m+UrI?!L)KK5lauos2VltOvR$xiyT7*!QW68=tdN%Ns!ohtFt3Pv_wLqCOj}#q zSzowLEX#F%@z*F>-Wbmu23LuV#uxpzM>*e<% ziyBnA+E;<#k_*y4c>N@sy8{4uY-ZZ%cILs!U<3dSnX$mPlCUyfXAGTl#Gd)=7E+<6 zGeGwgx?r}Cy5Q+_FYrBNkA?=+ zsDxT?ifMJK5)NqBz~nM!bgM6XgJ)^Hs6SzF)&Z`@Ajkr=sf9S63v=(D3NT-gJwY5A zS+Ib&JAb!Io@;;y>SKpjq`o_P zEQ`}1WJ_rNWyPZ|0Q&jwu6Qyzw4!QikkYRI0wUWzBLKmLjt@|`M;CsVd_6Jo7|eQ1 zfb9+)I@Cf8wL9qc#0AkB7g%tYvr4v(A!F3R&;P|WivIq;P@EyX{Xd7}A9x}WFsc3v zc$&uF|3`-g=HNf~*#GDF_)o{MC<{D}%18+FxXfiF~c>mFrlrygq$& z6jp+}@g=R#M363&QP}H9G>FMdsLAM>XF67Is7$Hr8GgnDL0WrBZ)PRH; zo_oDE55iH&TtwLMa!$#XSYS#rIoJEw^s=(8*Ixs+1o^~@3*HT<+nAjO7`F$WdokzI zrAyt(G8YiJMU9s8n(&F(fP>7g;mzn#q95a;0=L5^LQ0*TO^HFqMBDWld0$%LAs;sQ zu$;s}I?GO~kL1<>oRR=3Ka?Jtjk0b#{ln{^_ZmY*p#&4uzg_#%SVctzbV`{p>P05u z2km$Tpi~R858+uy?*F)IZO|FZ!E$>XynJ`o10K_X5_#yFgwRvpw76AhjJuI=GR51+ zM+w#;^oI|YK10B2Kmz6fXRmYU-W_;B>&gH`1A6lINQMJ98!M&*8T+6*wEM8VSpt^Z z4TK%4)RlupEcg2)-QPvxANk||wO|tJ6%|kBXaD*NEVu4Df6qU~7?W~3IPDZ-i!yQO zt;tBiV&lGId&onf6vkJh1H8H25Bt|Q5t-Viu4B0xjXJscAU8s&cYpg3D-CTE_( zfm3zRZGX3H+>hUiY9B@x41;0FvAnGjLi4Xj0aHt=@tcP<`8FKe>T%L_2yNHqf29_X&tsEz4KOq~u| znE@=KfBU#ek6iTIUpe50hCe4qPew(>%d;OmP9i%wh^Lo8cNiZ4-=K~Plp+F#Uw%B@ zLrJ=&I$F0bP5VKpr)-SS5&~nEYs;hDfC+f2n}<-bbT_`H>syi%OPGC?M3S?tF4Ma4r{QlRgk&YpsB7}FOB_sSk?9YQl zQ5cpdHUOR913NdkACR#T%!bx)Xu*Pdeh@wwd-|_6Rm(w?P(op8-Q@O1RPCd{ZX;Hh zyo8eeE~pftFTbzR-x90UB3wayKqa;*9gL1{^MSM?K*Hb=FB=>Y&9u) zikc7U#Y#1vr;t5GR9rmL*5P1fJb6;WXEQUhAO{y9%*>qryV^@Lenibs1h+ur<^t^z zy)PKakV(I4Z`+u&%%Tk0)segp0@VQ|z4bKc#a}5V=>=mXHwdHB2Mtf~*i+Sk`6LtN zIZ&z4J3SY5KlC34q}WGlUaPwzFNm9Moxi+&2v(2Oe@hJ>C2ehTtlCuqxD^mU!06NU zFR7-s#>ZP=cfFI6$Lvj!`EWKk1|+da`~VTc0Pxelg%{}B? zgWOM}H7_FD0TvJtzWRG))kGXVTzm)9l^AGFdTJBFY_8BRnGZo0>wEi9BzyeA4U;y& zT+K5uT?8I?5kenPhrtwt!LNlpv&iJjzf>Xuc94G?OIBh9 za6Ka*ww~rs>w+56(^U*K3X{t0m$O0oM}|9WB9i@K9|uRqPs?kbBkA-e~4f z0ni>`&*)~tpdNFwbois6-sKPSjOJw47h{EwjeUx!yh6M6tnDO{uuzqd_c_LS^_7<6 z>}7{1-+B8Bp-&6##n7L|)ct(C-6x}O#wYRh;!XI~%tFVBgh|T1zB{6eKDKrSNq%r0 zz}eC%;?DTS)7^?@v&Gp!Ot~A3@SS=u(42xeZd%&&gJf zs^6b}g7UI#KI;jYB9i)?J|jacc9^^W7v)vO$n9=wQu$eZNjkG{ zUq`pcyxHk7;O#-S3U07(BS#V1iS*N?+_EewFP%*rUCi#)`~LOU((-TxEhY--Qbka8 zm7!Tdk3m8v@GD#Jxwx#=G#r&>S3j27gX(d+D)zR371aC+-_bpcP8dNcO zLuAFEp9OH$jod%b@UdMQP=m+$mnq8jxIiq06|*r*wg0sKmSRH4!Gu7xtQyd|Gq0;s~ZEPBV8T z%Qm6}QohRV#jyEU6<04noFiii^oXRO&x97c>n>hZ{{^I6xg|uFNBFW$I@-#0O_kF} zOof+5my$Pp^JrJIhFjOWJ}}w-Csm9MYcQoMKo(obF$N|3^;KEEi#Aa5ulov|B5=X^S@F$3-tpS5i~BA90QnGd%L`=f`FX zaax_wg(`(N->ba)oX6(FkR{9=c))ae2bKBJO6l!X%G`&W>Q-EJSuay9T@b~vemIp{m z;qBer;Eyu^)2idB2gQM{8TveK@Iv<#HpV_y@9&l0ixx-&O$0eQ9k(V!*DCeE&X1aC zIj>*8mRdrInj&Zq;dKMgJZ|9CJj#gRC6Hp#gZaabG5r9tw+wT?`nOv|QNCa(vGQ>4hgA|^YD}DW zPlGP}IyVR_Nr?C(|131Gp*R|%-*lzDMxJTV!Dhjv9v~2D^(S62vX)OB5*olKJU|?ihtb;uzXs0ErkkI5PhKd#s7IK`=(kgV`xq&q@ zgW1N`OK>+*@Zgz$9k*Vo+1c20raSq8y8orU9k*JThxaI9L9!0P!0hy*x4b4MLRta97Jvd z=vQm{}kgS?UpXlnTNwE~= zeGE!Vi*eZqN1i~a@%_J*e))30J4ag^phZAXR2V9V+POP@6%P3jPC9OaP;D_Cz(mpJ z9<+%=DBqZ5jgkxUb5Gz zaFNv&E7koQwkPpJEi!iso*4V|Ec-K4c$AD?UzDE#$%ETwMh<;R zu-K+T=aH#y1@&Z6!y6*SyWgYfkHs_aWF4Oyc^Vae2&;0WYdG4Dd260@Gdw}FgV{?K za;dnSmC^Xc?TbeK$3*`$9E;MF`dt$D*LaEhQMJP=x28rE4DG`Zqqs)_euA%GEns`` z``$PRK~f2a`X6h+OK0@cf?=8ne-FFDnR{41o>PJJrZ+9rZ$vUWJquBTcL#@Nq4UOXFa3{QJduvMs)>59tkcO`6keT0LisTJ%&u**mWi)4I2XFubPt%lEebJNYeQp!a0U9n$q z^8@rBwO*E|m_NzQQB?_7c=gQR-jPmP-cCnsu}So>5ijn&#Qh* zuG@yQYODAgSrbahK!g9Hrjq_17xGe)_Oe6-9ZD#w1(Z_MMLm?#Vx===9uU`oeN0z5 zu<13}IoZCNQ33^LHu@*0w-8*JRxB`cdqZz%P&Xzk6^u43LQt>Ql!>TU3*Q^8F%GvH z%u5Cp1*Gw?bDs16rUBKfI{bx#2#wpPE?p-|(|k@zn5EKQFmGq}U7wEFAs-s6H~C+7 z(EnqJD%`r|o?ip&LHG1u-PIDI$mX_s9&)B74KJ`A%?@0iyhKSbD!ZZ^9(t~oWMxkbXmMI?g!kl-I!hdmV(h0G{QPa|ETB*f!FK96BZ zu4b5X#pmJP0_)B{FpnIKguI;VR5S0#QD{5M!=~zVv{xV4UIt(aw4EF6B?D(Af&fr* z5iEe6BqZVI(P*z8G?-Rjzln$=D}QtuQzPA%IGV%9bE3V@+upGAeJ7MZ>E6IX7Dg+& zY;agc@R&#Y(F$k7{v0MgK6UV$qkZ%M5tCs%*Bn~C@Z1wiOJ;hX;p+9r(PP)Qj%A4l z2kI&&LhLtzSv*QhE>=; zuoV5>n>e~GHbwmIOc9NYWM)n%?8r#!_n)si#Jb+*nwq-OPEO z!dBl@Bf}&1XRv`bpazLYQ6&{}FPUTO>m|V3kpa@f!LbDds;JXGvV8zTMN<#&R!9}( z+>^;WY3cN+m5GtN^6n0kDZ@vywgi8nbfD8{XZO!v>|@i{Gi>NNhv|5G?{Yq-ru!Mw zR+_6tERjgxlM$O&o2n6ipA^AR16*{jV^SI|fsIqosXFwhuSm-_pZx292>0tI&}}tL ztKsVjjf||NbJ1e_X!?cr>c)xP*M=S?urnQPWkV7n;5SChHlVjc*bklmPaRLLDoUav zmGwny{iDFWo~o*vZBxbSvI@Zg+bfJR;$yF=dU7&2lTP!P4+)?>03h_hw#Ueh&U}h7 zDM`r=;CW_0G4Hn)<7Y6vm%5%Ysao8x7K)}Z>W}rLPfpQ7Jk&U+G8r6RvoPU-;Mm@M zQfxMeb{+miK;^1*)l9by747KE?$=?5QB-lC2%*m!7N=Vx1g5sLxvUB@nKd;D5m6U7 z{C;BIx3-FYU>~KlXT^>;awfm-|TwsGCU#2g60_XqqMBCSfgLInFO2C7sby~4OKH=2mJxMlQYP|4R8>g zvo>>Gj7a@JJFk&c^z)0jMpcF-cRS_r7*X~#taK_|ZU7%vCvC#m{i|$|FV0gqfLRL6 zSm+c1v;!L)ascOg5cLC1asc#Yw!cwE)I z+5oPl<)Mi?y?NXl9D-^TP4)Fq!d`#{@G?3}V0d^qQ>xtOKWZxJO<(w1wJ!Mp+ZMNb zWcfk@GAYDuyI!`OiXxX%Fe*D%wOVQ78Aq#469?S+o_8%#Z8MMb`7`z&aPkDOljaI~ zSVCS%3v*x9)t8RGC)T7NwAImu2!}i)^R;gso2q7-9y>h?j|;I$~L`mxK0rmJV-xp zB5;upHK&Iei18hg|+rc-gsDxZ@SJMhJ+w-7$F}+}6H8Vhe7hB*uY|eWqrw%`qlo=}zvP;e`dk1pesa`Ivb4@-!**<=4))Mq6(6Tc zcGe$)gJ%RmwMB09mT19@iHQj+x5j7xmXrUvK2Ey{)mB}Yed~vhqLSIWNcl@c=b((` zw4#l`N_>8eC877jJ107tS<9n0akk<_H39z+)Bg#(|5?)m{wb{A+QRpCXl_4QVH4#_ zjq~4YAMPF1=oA)G&u)G(hF^dA>tIj9tNa?qg0ZO!AZt>Pk?DTYg}40U;z2+nQ1HQ5 zoW6AG$|<*Q;KMg)y>Q#RmPvW1RW$%70uTR}&sV`!$?Vxg_k^O89v%6!MMh+ORJOlx z(xT#eUgqkmg}t2wvGT;70dOC7$BUjsht>cb!kP3#U5&Q`qUL@F^&VoK)k^3<6nMG_ z1`flV-l2u#2G97o2<;9owJZlm3)pP08=?a`;Czk1+D8r6b>4X; zd%wcPGEk2u_Pd0n49;s<2WmcF*zTBRdM_e6f+k#VvL`41nW;x#=5fKM}Ih)2gube`naA znm-w&`No<{)041^uK@O$P?wfpAWvhoeD2((_@T7ZB%=5Enm{lzDrx< zbGjyT5cwDDEIG$7x@^NsT2EV1%Yva9_N4q=EP4x#Z87u;@9`M{IuU29WAJE_+6mEMFg zU`^Im^nS{ji(F=9vsW;^-n)M1ImLjdZ&<5jDD&GdDFM;OxU<8nCbnS!i7v0+4<4wWAF(_bi z>^VXrAXo7#8W)CxwQE|v=+g~?Qo35wvpyaoE4!Pb9eHNlTMkY$-;->pZ`x|f7^_;s zRLf`H8Caj~yo`ZEZjinahP(tLhYtp~KU-Rgx-Zu?jT$pGJDUCS*ljNW?-w@ef+G*s zFPzcv^cQ4)u02Rw8y~M|b@kNfKhBkKGuDO$K`P~-akVAr@8hi`hy2}uf52ql4wl+H zQrsewf6|iw(b?dL=-CMas^@q94{iL|iu%010)tL@1d)=gUwdYFsAQz7EAIyD78*9i zJ<)$Lej3!cnSbxW{xDKBdfV=d2Zg;!2JSs~MhkXAg~eCM$R_=DzLp#z%Rqo2tF7E! zK?lbYeqKuJpyE3kxpp#@V<45c{w$8cSDlF14$VfWjG|}GCIv9G$tnI`|d8<+=+w; zq?w*N#hoAp6QFSbdv)ttBmEnVIJ@G_l)FiYZR~C)uWYU;HN7?JbEUrxd31Iv+xHE% z!mI1LMsonZvf<#M8ECEZIc;R3_Gt9`YwhI0@(gEqL^NTKGpKLS$&i3AO-E)Bv+atIrY)vmC*} zVsQ;+(>Ln%gI?39u7!F!eQBv$SFYvT#5`faZYXfzUPy)(JOk)hKZG_F;MvMal4LF$ zz4};mL?tN~^CyyGN_$;A`LrF!Ii5&8<|B}yQ#GO73 z7!lf%Pzk&LAt#|icog*mZ_O5eO_!kr*WK#`M&78sb7zW|Kk{mp*r)}6cX>l4-vE6E zdr_F4ZrHTX$&Q-*j}DTu4WIM&Ggo0(l_fLsQ)b#lq1aTKnG{dDU>k;|XE$gBvM%&_ z^71F1h2q}=+m6BfjRd{F8{^;Mlmoq=V3%YubHb=2S56WWS<}?7xfw__6|tl!a256_ zF?Iw$AyOIOD5SfvnVO+fT< zd6>e>9XLdRTfc=04wd-wGj7lV+@J(NGyV9tKA!6g^Xj+^Hgj3~%k(L;UuWsLiP9z@ zhV;RG0w;19eR&&qJ`@m(JLVuXDpA7fh^rD9kYOAy5rD5jb*96pSLc{4MH@BRuOjaW z96F*Dx!#8;Qug5$Rc7#8D?vQcajX zk+Q{p>UH@AW|b1czpQPN%rKm$FIo-8is#8-md3>kIu`{a`1n~;wuiA%+v~XD?qcQC zA*#We-q9~)kk@SUEXBk;(Gu&|?s)@8Ao_)anZx}sB=OM*(VG~r>HtJ5N!vNA*_2T5Ik^MtVO^qg5Tj|Cqh)@*C6wtQpNJdNh=g3NQH~fxw=3p)Aev8+Dd7 z96&G3%!Y{|MtvJ1S0nGc$K>B13& zhd%ox?9qj@8sUVLi3sn*aFx0=@)2Vr{vbA#B1_nQZb*0Ki)LNtq|D@iK1NrZ{9D)l z^BMS^F@}$trjQx?@^rl;ZmK)jjFcc9lim&V^^}P?QyZA;t1`( zv(5dp9uGMMtNF5@Hs$!SB2?lyk`gItXtF*5~GqalRzjG&1cId%I;RE(o@Yc;osp8V2t44+7wEq&*qLEt=Bu(XY;in zzvh|;ScyP$V8?*FMcZ$jt2e-kwxeZx1UwlLFOG_iq#$!~XJ`LRYhGX>&s+ak~(k#u8TmYjt z9VD0E&UwZaPnjw_vWkG>HM3G(SgN14;i=yU<<< zKWL7QPsZKA8yNua2Lagc&Kr8PkqYfmMcN2#o|!mz#US^-#44=6fD&s)$LSZ%*hGj* zrTjLgqmD7PkJ{IG?BxbZNlk@Fb5>%qyVkFo$>DERV~Hp(`y9lL6|{AuBhO?N_^=e3 zpG$mUW^x&0WpCY7_~);CT~GuoPun}SCbtl$+?Qs|f%9fM%K#Um?Mujr1CX$IAC7!{ zgL)wD^Kbi1BEBv1C26!MHI;SS$i{rVQ#ssOqiOE96!(_$5Z~*d^b}$3w1V}_vtHzW zNQHHu2RN70td*m4q9OgvObTvk=?aOxSS8ur>0~-=BItSyg84S)H*_2Ak--RcU%r2T zVnhu4$ei=7s*7lZE@`uqz*tKKo-HR3X0Nn&Ggsc&?5X-~8muqed41WHFF7P@Q#^|m7mdigonbfeF23bUG!WU&^ueq6J^%jCgufAsp;t2g0-fVPVe?Q3 z-!pOKwi&!Uu?nBi(Y51$U^;*?-t$X-BCU4G3=WrZ1U!axYB+050UbiqLUQ58XCE_Y za?x~fW;sGvOjq4>uD2q@)80sK!MKPpBl|?LJ;YH~J5R<2bAh_(U`JN&iS`eH2RXP3 zTsw}lP4M1Cr@VgcY}TaY<4;sbvwnSgw_qz3C|+ktoM{yGy+E}C(0r!Ycwqw0uX|h= zvb0sMD)qlP;M=-99&j5^3MsE_w&PlfZrDcDtm~HJ+u8Xi^l}YWT`Ic@)nq!eeZPkX zn+K)*Xz-Ope`d*`*)k}#`$V7qP~x(S(30ojMFalC914(Fqt1#W zqh@k)pGlGPeo!GIW~zBxaurotg|gW74$~-UZR5w%)fT&1A}+l|BJ8fE>c?fHc<|c{ zYG@VT#C6dY8-id5fC9e}MngL46^E_%kLbz1m}Vm@tLp?#Ey*-*!}Af}n)%Lqa^+cz z;D620b)J^Mh%?K7vI2Sr3Dt;A$0LGqa01%wgA?OhD#W6mAHCcd(_W9*@4p0ytOY^uu(Ov2`^^VMnR z05z-+?N-_>?^GKNzp{38=uxlaPA(tF$vt-d%|W54D-Q~Zb8C6o17IIgchB=94H=d@0s<3e}lIZGZ**6&*@*-HJsYjOh zank{a-clH8G7KzK3l(w=HTDLBFiW}2B1NV$x!r+5t#|ajOQm+a-2kk_fcJ&4`-CzZzgA95E2PM4{Tk!in7Ohm2K76Qw-+3*RyrlB>Tl~fD;Ddas_4f=*Wmtg)_<@ zdSp1tH{K$KS}qG12Hbjmd#ZQ^UO*7ZAeQw_8mc+wJ(!~)nBJ3YxPTqk~S(nuzj zdy0duAr_Q@gRUiwv{Ef|JG`qmQRS7Oi>-?~Ym()|j;=&7G4+hpJz(8t^RGBS6OU^L z$OwN!Xr{A6XJIQ{ZxrW=fz@$VmYFX_?*KIlXWQq5qx+}Xd@)w?vL2NR-PDU5x|WJv zcwapcbSdQFt7?@K_v4K7t`%Ueskb)iNtsOm2sd7fSb3^tqNtD8l9-%qwl&j)=)X#! zfOK1uv-*q7jR-9svNM$uz|OtI`ny9@acw>Gv5@7ezhLsE@r*BRhCKYNS{IP_nL9Aq zCUPs8iG7iK0M;>JM$k=q?Q3a_U`5o8TeEa=Kw2Fi>aM2m>pGeVXN z*#Sk*bm-D{2GydS9!1%2NDswq7hqV}EGc+1>l8 zb=~9lmsB$~lAv;hFxx=?WDg~sMFPnuupvP&9Raq0(r=Ip5?McqA!_Y6%vJ^10D+aU zvBP3g2@t;&u#{4`YsSPNC?)Gw_|&gyrG3#DF`uEIc8{iaHm9OP5^~asLo`&(g&o zkv7q>f-Z#!V+jhIkmkumfQ%AC^an}ObTR)Gq6+||%Om*K{wdU3psUjG`_ws%pTTpP z{E6tJshQcyAASy~;AEd=8M@Yw;XY+!eS(GT1)SoK$+RDh&3-nW1d^thIf8`%&*rf+GKbBiIkA&u8C z4*>6XRKx^8#)2{%w3gTOF>ULi^bXQwajsBN5>O`;*zg1rH;Y6Bs0@SX&22X*Q~uR; zkN_=|hYVq$hYL4(Soikr+mSY43b$-lp6C5w9|6^!*Uu=pak6GcJU^r;U|LE$#TBhZ zAExis#dN>R?qBqGDb08P;PszA0J*~d2Zk^iQkD{qf;dv}Otc_Gp}V)ho>)*Yz9L`v zZDN4G7lXu+OjJKqEtHeu13%N1R>JuKrF;t&O3bi-&7cbiCy&M!G-9Bq6Dd%2AGv^> z7NXPNosEa_Qx}TM&a=yC$&P|FgM=5OLlu5tufl%+GcC?`LzckJO$VQnWi33+$Dd*I zUEnXF(KGKqr0)L==))$eq7FF`rZ1^qr=pCvp$xPIyNw=9a{)(< zhlO~+KkrvwYA9f2WNbD?Gcz$UHEx1-ee@%@(x3f{&`SY=FiEi^;*RMDZ zf1;40HAljpY3(TwnfK&YSzUN3ku^|$KbMu2O-)bRQUX6!)ygX8bNqRXxCMo7PH?yy zU~ep5lm0koz6|prx<@^P@gPk9+-taSz@f5iHG*m6bMZ5H`p27f(NdimUtD$%NANLC zJF;dNIPP$3ceH&{5et(B8j$Jhs=0Q8OHRhx*`==KBdEQpS5&N+yoRYPb^mYf<5b-* za5fRCctwkKgHi}eWMs)4iFc*}PT$V#Hab&R_)a({60P#N1nb^xMu0x1^3O&bi!CXF zuLfkf<_}(${)$$yo>xG8Cvb(#zNtM(WQC+iRm5wh z^ZW9C$?1+#cvOTlXJ0p`2B;*aO@l9C_X ze6m8W{1<4~cXjy!l%z%0AL;4ZzO13rR_g3;fyC_wkij6f^;vT{Q-v+<;f&4h5)a(@ z92hS3gYK6X%U@QbXV`@Nx&b9)= z=qIu$fePt3+Fmyb_#?Z03)Hw9EM>eJ>IfFxw<4GX2G~w^+{(zuRvH$CK@KE4+#U@5d_n41C&u%-Ue0Oz8N%rxSB@simh zvn65@iH^~(Cl663N?qT>rOftYx)ftGgY=$VTU*GuwYtpDPp{RO%h^P}+ehnET4pj> zWf`39&?LCPW>GmA@}5Uk?Cty^(q+T2qyp zjxqy}0E&PL<0`10bWwBV)P>LUN86_r4XV3u&!Z>MbaR5);=%vJL1ux8|ZZSP(c=(n%9E&dmW zCGeE`3g$;AwoD%Kg^10W$J}Y^gM+ttM>sSCOl$g==_L@a4AC|pFKz#me=Mzb`x(0s z_u+5auKcciP3|L*h5=0ifl-}{QZgk^ok+(|nX|t=g46a$r(7|Xqh-weq>$Qwwc>j*qrULuzb8<>4r2 z24G4jVC7u=hn^t{_mQY^cC!8Kn<&&H#=aG)AIZk3CgF}jlC^eyQqu1jYbNSn%aFFk zV}kcQp=3x~&yB+9@IQE|h-K|KYsL6Ul$Y_K;&7KQ>D5bwpjeu(s%YdhqeM9JTLH2k zlg+*xg4+j@Q21RMNov{KW@Q6(i`!do;l&8%2~c9f)_r?(-wA!Rgxy-|p;vR$?3M4B zLrdAcIU9E7l8=iGXLK*qf!vshms{I%q&q>Rzk#`hp^Mm1fTqU}Ix&wjG-X+EYm>K~OGTT=B7m z{vz~Ps_l3bp}GKOx^By;9?ofdDzuy?dw)^``tPrc>OFAeyey0@6VtyHJy>5fQ1@}q z7NEo>fW%KU`sD*RG`1Wj2o@fS^(cDA79rhM5KHY0G*+2xom70_I?NInwmr@mJ8;iW zTp7frqQK_orM<3XLK##`ZvDP)h%RdudQK{}(X#ofG;+>#cYDc97Ys?_ySWcJv ze8t=9f|ajet`Tbds0ymFJ4;mBNVp5Dd=)7coSMD4%JE}%m=O@qxhk%Vk?ZVD4?lPx zVa3Ja=2b`P-57G2igF(&N*}kU?)S?NUoo!`9O+F`_dP63OIVvk&#X@`Ze&lI0x6v9 zwEK&sOpDyf#N&#y7c{*%JGQ3Jlj`3~g`+w`>k;r&FtWdI*uXhwOy^D>G_>i&p!Z5w zPu)~i@n4e~O2%do`PeMhB(+4KZDQxLc;k9@R_bq1T*PL+#VZY5rGv_B!2eB^cl%+j ziP0=7@@4wU==eY&86`ub2m;H>>z?KfnIEy#pB7O1AUzdVhP_fdQ&|n= zcC6;%f5amxE^~YFl+e8wn{ZcobV(qz80pOmH_Gf?+)jn&lx)@Yh372TMkX@b=ovtJ*<@PB6WD0P*m5Rh3e`7Na`P-ce0tGu~QNSnVO4BqznUK@caP+fP&LS)C zywy#N@Y{~d1$O|SUHa|I-Eqq7+#w-&GAJq0RkgMfPeG@4Ke3?MGIW{PFq>Oz#1&{9 zw}K~lRh}xORr(Gk94r&C2(px6^h5b=^kLllQttF`>l`oMt2^#~sGH$BDL+Vo+G+e( zPLDNLrF=SRpYNh}SKuXPOP?J zgC|DshV$gdUIa2n3M(IzEm%>qy;MmzW$)Jtr!&EtimvmfLi67j6ZBvQ_8;d|Gq^}Z zI#PffgdV0c{B!MAf|yi9`<-+rk|#DeWa=sv_sue)`o{866bZ}82a~?%*V=qY$2PtA z$9b_fws0A&Jk;yE1?CzlFnk-(0|cwjucp3L9XZi`+*X z>rU}hmYsWdf8w+CewPobO}?q!{!0NWxNIYiBANvC!+}Rfj;4=?OUe6kD*@dM8%&kQ z_%IJh8`oy!u8l*!@!_=#y#)`<3bds3VqX4$Hjai1$!OF4OPOP~k`k$ld$v&2f#w4R z*fKcqY`}nD&&jT4y&j6|BY^+-i8}1>(f)Y`Ed#f%yaL6dUc>I;?FY*~yFQRJ5Sk|C zoc|zfzO;@a_MmawT4pyFiilIu>*ZRdIXQT46*qmUX;4wkA+{$V;nLojF3f}z zrP;;lU~fjfrd-KWeE-jLO*j`)x5q@7-caz24G&S|T$z_N6}+Rmxtit{QT`&GezCz` z&v|yQ{S}|konPbyuS|C6DE}_~#J6cMtv@)1GZ{1uR;q5IOer&tER9q9cD0N&CzngU zhJA-xp-E>09YWqc+5}D(5@R8E#VbhCsWSY$^k8`Z-9O}S+?}082BkNe(~o}$I64)Z z?Fsp$sPuL{*B-~+%Y7L?)~J3z1q)znV^?nrQ7dA+Vv8ty0g6~{jC`-s`8xpL zPB^j@ccVo|APQcm@$R23uXWU7@V8gJg>;wp?qsNPaNc~i-aIN;9tPC(B;e*eAN^LA z^XqTWa8n3kvm}mw`~cFI$ocm{B$wf7{SCl!cVha@dqq7R~1uFqTw)+;ASiKmQ;UZZ87aG zbxSS)jy~MUu18ZH(Ckp5`Hs23S=6m?XWwjFA3KFNW3~VDjIYEY^HVv?%^GR&O8ydKf{smx z3JklnS(>S+ZktYp(74&xgPZSN6O4;30jZ+hj7Qo+6b2vP@u{^Y1^t2z3#rKjQe`p)>psALV#Y^1py5~U@G#(?;dsaz(D_}*w(gcf_ssx@v# zj)C|XHq+qN3!ZpQ&}7=2ftHl+K+n=RqtoHqrX&>>8vj>y`PbqO%HO!`0 z`~=fG+)uPSUGhFklYHy}F8=6nm1t!oNhmg8t&`uCx#Ofqmr17R7iR{gt{Y3{zGeUO z$f;U|%1^d${D@1@Y8ID)lDIWAC^U_xkE$!G7aO-{?8}35KX(rtol?ZNhn70a3tvAF zhNbFVS-1dLT#h~ThGv=5}5`hBgXxO^> z4P4TM6J8kk*h>Tcf;R3ZY6}?4zGlQB5i&B$ilk+0D}!8(J<~-a&NCV+@fqtuc>Q9x zvOND=(9HRy;gy=Z+4QHSzGuUMjK*zaiXnME7=*@(;s!@WNL+68e%S{1u;tJ2xMdd{ zH0~VjuY3;)3bUo(b$vHkZHAJB;v9|e)b`Y7;{mi6FC3w;xglBbU!%z4OLF9UtPcH1 zg*4K?M|!cZqgnbYPYs^@5GY91b+-2sld-TM;m%f+9*xj0wYVjtzmt#;QeeMY_UMdu z4)R7r5=ku^uM za!)lqv%`^-1f&p_6ooa^+F=2%at8^zd6b~UN;`u{_1Ub`YVh*vWu{kWPn``!zBcTc zWtDO__n+MHeapJC2Dr!BTMmhH?mEZ{Vin>mMmqP-&V}u>yIbLhbLQ>z7_p#d<&L?B zE1YB<4vw5n4!1`43L#fNL=*IWb#LoUp_HDqM?r(1Mjo4(tqRR=XkFZ!24+xyiiQ8H z;GL;(vn@9vikwjV03E^{fq9C0`L6voBL2DacN>!mE{}3AlGaDdc24Z=BDq%-RY;3e zN5Rq;bu%P|f$xbaEAbMuH(6N8p_eENU|5R$a%3ZLIa9GB-eP@FNtkx2sXy|bm=$H8 zua_`Hj?xiTvk~Ti^zGIwK4i|oqMO*7UYq*?po><1+(9hBp~W_sY-1z|Ny7n)E0BNa zjov!RSqp*=phfRO6w09NE?^oGBzU5{sy4iIQqyNlHOd=%zZWXoc1MT2`YEx-fjtTZ zdt)R7shAH9vk=Mx8Kkxxi{5e(59|GrqMdta*!$?jeWhcxjh_p*i%Kvu&8$1( zvclukI^W`_%-OOjgJi$8oEWy9PP#16g9Wp{$=C)-5>ldb_a^&8lsK3kKP$w}J6o=IiXa8@ocR9wg3D}b9%{CI zEB%YxgH;>=x*-8eX@$`>!+@WQAczEQe2H5TH*^m=R-FHnJgaP-`*QC6Ns^#ocN+Rg z2I`SlO?%;g-W@@rb{tzDe4naK5@onQT)O1LAx>?|t#2U=s6 zKhC=BY=m&UbWxCx~|Aq&0?Co_T}(qpt*VwSX-sZvn`q-pPN zX9X#3VBe`%*4g%-V)i>y33|lmt@B#p zLv)ZKz}SFfHC^H9Ximn>Qgbq*`5WO~_Y0=>uW96Qi$xMN43mCv$X5e)Ul4NR*Tc}W z>yi7vsJ_lG(MDy5`}}zHThn~0|L*J%;MGub5Y)(-%&FKI0u2(xd{kx%AH46lh?HX; zzzBx3-IMHS)tRXP^ugQybzEfG0|ll8>0oT}PwuRN2i|0oQ`9}s3-M7B8}U~umXbEK15VNhhVR9WqY3;X4;u|q$4iI}_8vKULWhpw76 zk!9JxRonJ4;By0k4=<-CYL-3h`&p>R`UfwWMfSk^8@wOeAbA2n9TgV*hL{-b`~T@4 zf^N1R)oJWhU>z9wC^2RXx+rvXXl3p^Plryk?!+VKJHI>1)cRXn^Gp}_rjZN0D&#cg zUJfV=@}el?x;$1ZZDdQ!=^G$g-8qc%ht)fgG6ixWcN|K)qR7gua$V2u`aFNIqkNTx z&<}{r?YJHdx|hEVOg=2Q+zS_)xbv=WjsK-njdzh-k1f$`Z)it)q2|VY`_R)+d|lN> z!<+t2abE1&+URpACI$uGu1_!nl4{gd7W_Z{;CZ-LA)Qa24^Uh==3gWF zQ=QvtE`02mX9Ejhl$?!l%eHp6e!J}NtCV3eXud1cXr6tJ_yNPrk#xW#q?%7F#|HCL zEtZC!K_Q;tV|_2^en;Q)izqwv3|kkl(6!Ar6{YcC>5`-4f2g!eOCJnU+sg-H64rg> z)~egvdve(%XvCYKjIX!WW-Is}C-0Ql@hUpV9;zp|CmFvOEqH4K;BvMomrV_42S<` zFjF1xGtf4KAm3|UPS z0KvSodGxj&Z>_0NKOmC$uT@na7Nn*N=FVpw;E6j$dq>5X^a>eebd|cPez25}b zF_c*%BRZXj&o1s+vwr0y4ujJ;?tPY@cP}HNK~qB1?%K~Jii+?dS%khmE@X>T=3SOP zWT{%QWgi5lYeMp>b7<;6!b&22Bwlq@J)4vl$suIj$&;WEtDCPa#~^gnO8HTAsW-k5 zaup?WHG+#tl<#@4S<&Z9s05y%rz^j;T)#2`sh2uuzrDs zZj@Vd3_ZBnJKd%&`xUd+1_99hamwrVrSDY!oy&UV7<&`Lpq{=tfcH^|K2e_?(wp zelg-+#=&_T&%{*x&WxSxM~YJ$Ya3=ok>;Pa**WRuWwc9+*8Qq+v(5b7k2>AWX6&NO zA8fc=FrFyXDP6SIv(@{I3fn%q5KS8->dlKix9chZJqL4l%Wu4#t3Qg`=B;(s?|Lz= z!ol?Xr72aWc&roT<|on_x8M0SH{g-T zUX?=GVJYD0qD;=}7|)?|neZxq$RJZ@O2fN{`wtHJFUYx+p3YPYZmjs~lsjUfZcx^J zQxm__;LwtmW8#5J5ZiQ4?g($WdC}`$Vz|c4OM36AEmKN<7kukfUY^g&0~vvXTU}~R z`0+!M{whBGh3@zjZd3(=z?s%-ey*bgSYeRI+gW4#23`@>M{_RH4+E@M`vK69M zNv@?%isH9LE^moy?6GN8X&V-^u|D=U^4=9u^VGPni!CpO3a!*LRd5?)PUGeYcE8}G zkWIU(P^mW`{{Ff5lhZ86`-%M2>+?dDcLjdeUi9;Qo{V<$3b(t@2~YP}^1-Q*2eTxL>5E&RCrg4WHj;09 zy)dXhBbaNJfA!u(@ANClTwr!(mGAyu64${!!YrGf&J%Z>B9m&SCQ_?!&%O031n+YF zq)JuA&D~vaqSt9|bV$y(zR5t5aO9+aI`DXBsZYJjY;s}eknxPeJu(UtW8tN_pM;m& zJ+~C0a>r&;B8g9#Ul?kH-L6nCd6m6V_C4dpM&49#p5Q9SEZwHUqrP>S2H(eo?|kgU z)jT7X8NdDVq9YX&bj?y9j+8nxAuPPD^%GurK;zCvpt>;cJI>s>Q`S&bvmu^K@<+8z zAIVCb=BfKuWu8tYxng)$mC=oTy?4<~AX-#LOkpb7{&k=IoE5V)Y#;IP8sX%1n{rZK zT(9HNx`5u-_rG2K?w*CSYg>O{Rz!3y_RY0<%ZY)(Wgh!IzViZ68!c^zW-iymlqNt% zzvw`N$GO6j*`I{CS3{}SSYAFs^c9-q%l=uV)rm}gmcpOoUpjvj9k0C3bfmvTB%y1> zZ`OKa43E=$zs7&~l`p?7v5$gHkZt<)O(9+3 zC;fSF2M=2zPm@cF)919C`lVKxS0F(&CPw+;&SSe}{o6LQ+ub9vn5V5*dK;fak^NrU z`Li@5>T0*Znr3Pz$IQCXxOsASd2?*UR%CZ)e-)P$dsqznW|$4$z_9&Fx_qxOO08s- zUdC{QriSgt`)a}Ajw@^X=POEI7|c9-IY(@;+_~*5Th=#mWv%GJs%-VIO6s5|D*Tk` z2dHN%>ItHvXe?!JKBXSxrOUsW-HWtW&G(B=+8U4TD-!z_Ru@}uQ4*o0MoS0us;`|~ z;mrcRv-~^Z)IpvQd;B6PmfU?M#=V&4cafjjVkm!8!Hw=r_{QIoqPL&M`nQ+sbMKPIbx(;LGPS@;ijmgrW9j(MRWRO zpz`WCc{DX?*0}lBbcqfjN@O+D@|mc(0+*t7Zbunf@|Y`Km$IE;jQ zvq|x(>f{>yt-YNj+l^RLjk;S_Q^!C=EzQSmiKX_PbmMEF%^=StU^zowz1`kVF!?|% zU?qt3o}X032W5Wu*PV^OUV3IKoHI*0U#PNwrlLWPW#nB2s!?YTq|{hubI^Gi`O#mJ z%B%YsbgBbd)m;`T6uLWOir`KNy_}hnTT(u@xyW=OwGmvyWAO1C$(@$X+Qa&bV5*S*jc;QpOltvE;B=Mg4-uVY@`G$6Xdn|N5} zDP#I55ownf|5RN=EZKc=#B{qbIo|n(={P?w;hl~XaA~V9T^3@DgC2eVRdt~l_X`yJ zF=9`wS0mRJ++)-pa9@Xmqc3LhW$4xjA&>PbRwyps>ra&L8~G-#5E!3+$r_8`zV78x zS}k_4@kU*9Dn{kL>gspPXY%6iV_-9_R#vzvB`ZGkuvFEEvo8DeL*FM`+vt*`JALSb52yNnG#HCl@hsjd-HXfmlr$nbxQu-#k zYZw1a)p7h@#6;}h{Kn1aG=2G_nL;U@OB;uKG*$u?(}a_rd#D1k{elqQ5S#I!`?gMF zxF4E{9DeLIr+;&*m$u;e(!X7J6X!g;R@Fz#&-qq=T9reUPo3X4{HA92y)kkDOnFU1 zngLsap2d#yxsQ+dyt}_)E`Z04Wp{q7O2SCnX?4X&UxC%}?aiB$BdGGSd9Jn4UiQ2E zY^{VJ8TZ6*Q)GR6Y`(5wL4;UgXPMQpKRVPhYP@cD4;|5gEL)~1=km%E`cvC1dz}5X z<6s;-D^h-yNHbaSNNZV^Zxna-{P%uR#uiy#&7N4*_LH{QZ`^dd_b8FSl-FVDN_H$b zYpc856uA=W#UZ--#iMY%KVu!}ciq%=rbg~)TdT|9gY{e z`i${aQo`ykK7$?~P%pb5F48qsj=RN-!UY zMf6`;J4bCUMlYzaNU`eA`^d6Qd%L?VooeeNvs`8`w_{a$LZ;r``E2`lv1N1uWdjoW zseT#9SL+y!CLwrO8xuOZfN|((-;h`>c(=03q3i~|LW{DB*}ZuWf?M+{cf|I$>q<*% z8TxPg{W|`8N|+qMiK%U`izL1pJ&%DzDa)MRKV?^$B&p-Q>9w0153@hxlj1vNgp+$j zKez&}!Y?W#3>MA9UVh zljllg7$31@pD#}XoTkrj)+~(4 zeJK8!1#gl@B{a1F{{2qT&qF7=yXAyFRwDFNb3AhQv25MOG|J|T)L-G>-~NE_Rnp=l zS{$PKwwc`AYuEu@luFf_8ohS5iepK7#26T3X3TpLoWSub(^VTBh&|w1g7JJ>Gq~)X zus=g`|MK!`fP|Opz4AaG`hc#4LI;5ptgyx?&*xa>XUX?&jC4z{JQESY;PK@wDP(sf z9G3bTV@qLX&p=L+fDc}$o(4;JRQ=V?Ws!z32umm`WyH2-p}W|D)FtEVBb-};TGBDI zMZ!GwC$~m$2qt}>>9?ZddNk&a%gJ2YWWklSmF)+8)8zkJ=IZgxVY|HotEebc^Jimk z_1&-O+FtFKqE|EU56CG<0`T@~4$K^uD5K}6mppx+RN@e>2C(lvU^^vGIVsiF@S7hK z^bGl6+Uj2ZP{;4aO?!G;+6!29Y+ZN0!Fe-A7fKo@8V_=l@M)=Fb{1Ak1aJ5+Pg%^ z@`u`Xez~L<%R#+&wbrV$71ipb5~?uJ>xdPpv5|$LpJOfq3uG3Z3?P5?l7vXP9S4 z(##pGvw!-#to{`9`BM4$rUdlu;a9duc*hk0}@o9lq5(t?1p=39wWiKy=>J3dCvOB)%oTKIOTgTN1l1Zc8{%f%b7i3y6QZg}v|#@mPD^ESHWjy1I=G=?Sk5mrzQzs& z`}z)D#J0X_RaVfIGE9Uf#Vx@!6da?_JwefmVcC1ha7^f4B6HjuUAMYFZJ17@3mN7* z@@<^FU}k}#y20nNfD*!1xP z9~<3^&ONyj*K7K{docp-M*8J^)?TxrxvH{q?~o%^j264k)9(|J4*XMdi8T$sf_eTE zrHqZ*upX`OAOqTuntE$w(W^SUV#FG9T_x|HZYp10Q(pf4JI}i1 z$2*%#B%FJ04bsO)J}nrYy&dnrtvuBc5z(KhC)Y?x6+JLDH4O?6_xbRlL6-Z3?a39Z z^u(*BVwJ=;-!5xYz2?y}Wz^KvOzAac`XWupBcTDQ=bs%bzDk}=JP0KVRdA1a1#r53 zcHcc6D}SrQ|L*7#c8b zbjW++D{C~;mG-;-`<|T=^(CXqi%))P>Yl!fcj?_wNKKzJWpEigcM7X)Re=qND z?CiYDG;fhf$}cSR?rJ8-te=IH%X^sE2CtYe?S*B_EiK!@fq|c0U00#yJtZ~u4Vs(K z+%oWZGih@idUm9laSmOpqldub`#7w80O^pYD0W>I(Z)= zY0?6Rfn zX{~TkKb|Kh_JD|pVXcy&zwf66jf7fok?~^bjX7g$j)rQoxpYKC-!3~ya4RY)U5DX> zK~Yhx_M!F$Acg}YVbccgrCcBz>Bi^Rb;HGrT^ODzjND6poZSDggo=m=?XhCQ))*tE z|KU-PcWb%6-P%k4Gk1HO4h&k_{2IEc=kx#()z9`a9=QfEvlR2DMpT@@(A6CC;RhI= zNl6UQ{B#!tQOcn?NREm8%+h9eN%_y8KNB$VcVWEB!%Y7gcT=-MfSi!3t22E?=PCsB zL18F7fDITW#Y99_gM0YNf5wPWwWR9WY|i?9#PC$+^!Yj1E;b_~BJ!jDNz^4sdkhXs zE#(uqM>}~X-(%Wm`x?u4;t>*xKYxBXEj`_O;^#RLQPFBRLM*CTuWJ)U*c|?uFQQ;4 zQw}Qp7qSTf-xqXNAM|24n=91C@9EWC)T(qHv^s++Z<7lPzQx5n z(56NKqcxv8I`Y7jQH?*J9i_}M zR`5W!-0!Uyk24bm1%;ZL+6&OU_4V^hwbg}1fu14)eqiu3fV2%Xq6C9M0}am`g;LL+ z{RG|Fpr9a6XzA61;Y0(asPxHGr|r2(=vDXwGj6Ov5EAFDCnyuA$y~}vN%;v%$GL7t z_E9|6=V2jgVKVbjp{@WZ^^a#+S?8GBQK*V*0#0HY58DO%6(hFV)}MTT6HKgHGuuXA z#`m1UnI?6SmoYrP3C=q#Rtc~5s?vcmHy9wO)2BpY|##s@(H#ZNcxod@k- zPz1rY7%TU4JK7_o7Eb7#fDx^A(8o`7_3B%Y2_d8QYW+M?bKc_{`Ov}xa0X8;s>69` zX_wRnx>G8CFYZ2TVtuT&q>Kdb9{b7XF-WAB2t6Eb2Y16-`;^`Kb@Rak64-th)z{ZWG8(hXjlm!AX4Zrs2r(X#kcq>xILC$NP{U#efYDN6*;LqtaELXN(D$tb&j*%;$@_vob#f^`N3W?EX4iJJkJ#R94Q zVYcAoRHd5H(TaBEViI;OU(iy`P|H1k@7}$yLLTnJ z#JJNyu91uH*EPB$=bLQHBo^T+@en^A9@)&(C`p{>TdkbH&TXKFa(f`77!d8|#&&`46{+OX+$#zCip*yA%YQBnX@2 zXsIiiF#LKb_PjP8cBP02)g=#uBtvT(n;Mv7l>_4jKhX$L!}J%X1-;=<;TZRP&q)qef&?th zfp2M@__`{rM3^5;Y?dIzw(fZi;_Hv4rTz6b$FZ;DVm`1O`vh&dIBRQbY|KWmxH$Ou z^@$RnuaJ;nLHq!fE9Ye1E3jjowYkZ`*GJehxt8qVv4fva&=RmIXlUSKV`D?B+|RMG z%62zpWo5*%2L=*mWM<+Q&Hs<>yEX97_IXBrZZ-}qfjh~nU3wiv6TQ1B6PNVH@n~t| z_u_IZpAhzU#q`PZk^gpgCg;~^3=2{B3@_wz>m6a^@E1*qO}_*$LZ)lxLeA0m;=F|n z^NJ49UmNHqBmU(}C$5gDC??pV9B4i)|1N(=v1!ukQ%7m!(h0iv>S1?W|>wC>nb(!wXfqyw?UbSA-?Y7-oa z!ZgmkN*HPn7(z+=!O=9RJ~r)w@ywU}#k^oLO+56W>NnnkzZQQq(EZF*4BJWnWP}I| zPNpq#5s-_~`6PyxfsQr=i<$`HJ>(I_Is^Yd#zuB?fdp{kIUqRI2|pmZKI;1 z|109t-w-(FElF4ey#3&Php0t-WHPjknJ%ar0Wzm;L;}o(nDtj>d4eqlgwoaLX(! zIkGNS>tevuis(<)lmA-;`0sO1FSu0y`CR+&> zG}1dn>s&z%$22ED-|IP}+2;;bFId#|GpIY?|`#;bT+r3 zf0-JxSAReM_u|OB&B(~e0o7?Wb#*_g+3#OFdEh58Mtp8G;YK;AAOrye}83Zj3n8uV7YRZUWhY9bbk98W-kwg{@)-a4bfF`S(yO{kHIL3FVDr|_IB^zyomu$Rz^nV#zPCr ztJkhcM+83?UJ~@D$~4bO7UbJ2=+hH-;aV{^j}4~E+~x889JIA%a}gVx4y4*wm*h+_r9v7g8|v7iIB8nol<15{*f zZ0#4&SI1)#d)|#xOQb7`;L>0h9gIs@w%1ydLn}ANSB*F-9T5 z5X^0;hQ?UywGm##haqbQ+I^x;-95{@AlHq!QP)3{KF^*%eWrht#e5*dlWP~)~U_c~ThfU+^X*=IO z33^HkV-@_+{T~SH@Qv#>S}=8=%bsi6K-R@>#U!&aV9$7<^OF}P<*2(*R`jlZi3|{;lhz$6Jrc{3Tfcu0! z91liPp)3e5T_S?nkodt0CrkU;{mvCSR<^d+#@zO`Yt8HH>)(Po+JG_9zCk&g`=Ki< zug`f}fkf$N!^4WX@^vttmoVN%MNxLYJB*%t$$IAw5eClY=H`z}qVdLr$U#C4bZhts zX6_DjY6McX@xV(5ir2}fgI~tLfDw+YHX+`Npi&8QgP1rt#MRWk4p=Ywe)v!WBYW<_ z1i{<{u7$1H7Apq_pX_W7kbZa%BLe)WQUfe253oSdv<_s^FOZUwUcPY`1DW17kV~Bg zxjFR9^Fq`MH=!=T;4Vxlp%iq!9?q_P9^)8hWAZp{(Zf`xn>Km6CTI<~gKCJUnEW#0lGpR_TMCS0Vm z%>9IqghS^OsLl2ayU-I?jdqhb&{+F|S* z267k{7Z?9PyEudT#-pPZ&gWn6o`X12Up&IA7sC+r<$3 ziHM1TZv6$D63Sb*ZaISdTu?{|tv%QMa}YqmEXc=KE`mo8UE$e<$=Ku|R}O#Y!J~tj zYcOv00z}+a*49M)SC+s_=gfEQ&V@I!T6|mFlmUMo*uD}`i-gL zkVtfN5W=ujwK97)7*e;1%tKmH!|)6Zy$&f0Ej|53-1q0<2iBtzrbK?1V~XoutP4;J zOh}+}-dpi&ZG8^cJf(NZIjO>7eJq5Z`vL~!23Kfk0^j42!cmO@|6ox6f%q%0EhFNI zNOc^~!9b9DP-+KL3@M+W71;5SG6zBsG89)(xXMM2@9O3Te-?;DQE~8TUxhf|`zYmr z`g%EBc1oDFY2%`C?s1YrH9UNv;NA^nk(sXJx`O7Kej_bseLx@Iib+FtOrP_LaYJK( zA%tmx5dWDHJ-LztL*`aS%Sd5_o)-u?3H2Kf#{{)XY%opH;C--QFljB!AYUG_2L%L27nhHr3zHz$Gch&w z7Cb!i;$Y^~)Oy@lf?8$)F{5QLje;ynBU4OXo(M^mUo~IPrR$xZp1uG>{lGx#?X*Iai`hXr*1?P@i+tmTcrv7g)Ca_|hSqnpDXW$N__Fld+ zGNNN+!v_&=ZAcI#->yi{ zjSi3|xgBj|0Num#J?cgwFE`BJJmc%$|Rb*!Rd4L}uMVS6YA z@|613x?BsZ#5*E&+mU&VQR}(&S@Y~=%dk?PZx#fhSaul{l|?clQno`^s^U=Pn_7<2f)#s*5sbrAXwk3)7iuPryI2>Vd?1E`VtUa$I%X8 z;kfjx*RH*1E=a`lF+*^UeNyD_7sjWiHsf}HeGZ`4jPmmGcy(EP>@rxh0IYfb1FWUX zeQbj~MxLTznojPMDF2O^Y*T=LJUK$FoF<>4_5b2BE5F1{U#)uC8CnQFYPDLNlhfmx z#CiYmLdW9|FcuMO@fTG?2S9-~nm{JaG-65ow`_5Sg3|-|7o7j_txakAH78$6kf)w^ z``hXDlgp>WA`4^eh$JFgJG(CUo|nR4$pqhXNN|Ca5T@AXADhz-S|s6p()M^fX^P$ef450@MZ@s69~<7yq{ z5@Agz7la}(XSKV#2tPYBRfVbycXp&rmE_M^M%!N`xrLI2*|(`3D8&T$1K-9pq$2jy z1<$A`E9-?p+093N;Iw|fh>Zh^UEj*MUbISOC#NdoZ76aE78QgSD+pow``r$$*|(fn zEEYu}S(_&m`XE`!hMETsny^@u!0pBAGnn$a&&eEUmmfNv$Z3#D8q?Z~VM*>A5MT>K zvaP`KF5cdb6m}DWGdsi+(FVc#C!*J-S|5lXv}&3RoRKV!kk3TDr4uOS^M-Xxq?w@# z>4D>AceTCOzs^WPh4^8i0zqQ_8#b&0UE=Y0Ha{b?D;h%oGFewD&h7BcrJ%ihsndBP z;_~`!Da?^NVF9MewFu%r4YPv;9F?CRj($a)U@&px@Z{D?8k2HVj({MBI3&fJMG_vp@+6+MmPmf+N3CpBFlNZ_F9B6|gSz<^?+p ze=KGSjmZflv8Ah5pb=VOHwz{@hbEikWaLbQz}HXi-Sd%xDTIsNYdY!1tnBPsKC7oR zhAgN#Erum{dXVquNACrP!19JhY=GI@l`KL|ne^R5+(CxyFpE|x2zf!-X>DtJ1K9w7 zsWpnap!?(wPY>4>Gu}UIKqa+mg(UfZx@7Svi`g2-r>c_R2TH~5Oyo933*~= len(p1days): + continue + if p1days[i + 1] == day + 1: + axp1.plot( + (day, p1days[i + 1]), + (part_one_times[i], part_one_times[i + 1]), + "-", + color=colour, + ) + + for i, day in enumerate(p2days): + if i + 1 >= len(p2days): + continue + if p2days[i + 1] == day + 1: + axp2.plot( + (day, p2days[i + 1]), + (part_two_times[i], part_two_times[i + 1]), + "-", + color=colour, + ) + +figure.suptitle(f"Average {YEAR} challenge running time") +axp1.set_title("Part one") +axp2.set_title("Part two") + + +def do_auxillary_parts(axis): + plt.sca(axis) + plt.xticks(list(all_days), [str(y) for y in all_days]) + plt.ylabel("Running time (log seconds)") + plt.yscale("log") + plt.xlabel("Day") + plt.legend( + handles=[patches.Patch(color=COLOURS[label], label=label) for label in COLOURS] + ) + # plt.ylim([0, MAX_Y_VALUE]) + # plt.legend(legends) + + +do_auxillary_parts(axp1) +do_auxillary_parts(axp2) + +plt.tight_layout() +plt.savefig(OUTPUT_FILE)