From 81b4cb2f161606e512c6e325367d6d314ca39573 Mon Sep 17 00:00:00 2001 From: Felix Roos Date: Sun, 19 Feb 2023 22:18:12 +0100 Subject: [PATCH] more themes + fonts --- packages/react/src/themes/blackscreen.js | 42 +- packages/react/src/themes/bluescreen.js | 1 + packages/react/src/themes/terminal.js | 38 ++ packages/react/src/themes/whitescreen.js | 1 + website/public/fonts/3270/3270-Regular.ttf | Bin 0 -> 255248 bytes website/public/fonts/3270/LICENSE.txt | 51 +++ .../BigBlueTerminal/BigBlue_TerminalPlus.TTF | Bin 0 -> 69964 bytes .../public/fonts/BigBlueTerminal/LICENSE.txt | 428 ++++++++++++++++++ website/src/repl/themes.mjs | 3 + website/src/styles/index.css | 8 + 10 files changed, 552 insertions(+), 20 deletions(-) create mode 100644 packages/react/src/themes/terminal.js create mode 100644 website/public/fonts/3270/3270-Regular.ttf create mode 100644 website/public/fonts/3270/LICENSE.txt create mode 100644 website/public/fonts/BigBlueTerminal/BigBlue_TerminalPlus.TTF create mode 100644 website/public/fonts/BigBlueTerminal/LICENSE.txt diff --git a/packages/react/src/themes/blackscreen.js b/packages/react/src/themes/blackscreen.js index 8356942f..81e88016 100644 --- a/packages/react/src/themes/blackscreen.js +++ b/packages/react/src/themes/blackscreen.js @@ -2,35 +2,37 @@ import { tags as t } from '@lezer/highlight'; import { createTheme } from '@uiw/codemirror-themes'; export const settings = { background: 'black', - foreground: 'white', // whats that? - caret: 'white', + foreground: '#dddddd', // whats that? + caret: '#dddddd', selection: '#ffffff20', selectionMatch: '#036dd626', lineHighlight: '#ffffff10', gutterBackground: 'transparent', gutterForeground: '#8a919966', + fontFamily: 'BigBlueTerminal, monospace', + //fontFamily: 'x3270, monospace', }; export default createTheme({ theme: 'dark', settings, styles: [ - { tag: t.keyword, color: 'white' }, - { tag: t.operator, color: 'white' }, - { tag: t.special(t.variableName), color: 'white' }, - { tag: t.typeName, color: 'white' }, - { tag: t.atom, color: 'white' }, - { tag: t.number, color: 'white' }, - { tag: t.definition(t.variableName), color: 'white' }, - { tag: t.string, color: 'white' }, - { tag: t.special(t.string), color: 'white' }, - { tag: t.comment, color: 'white' }, - { tag: t.variableName, color: 'white' }, - { tag: t.tagName, color: 'white' }, - { tag: t.bracket, color: 'white' }, - { tag: t.meta, color: 'white' }, - { tag: t.attributeName, color: 'white' }, - { tag: t.propertyName, color: 'white' }, - { tag: t.className, color: 'white' }, - { tag: t.invalid, color: 'white' }, + { tag: t.keyword, color: '#dddddd' }, + { tag: t.operator, color: '#dddddd' }, + { tag: t.special(t.variableName), color: '#dddddd' }, + { tag: t.typeName, color: '#dddddd' }, + { tag: t.atom, color: '#dddddd' }, + { tag: t.number, color: '#dddddd' }, + { tag: t.definition(t.variableName), color: '#dddddd' }, + { tag: t.string, color: '#dddddd' }, + { tag: t.special(t.string), color: '#dddddd' }, + { tag: t.comment, color: '#dddddd' }, + { tag: t.variableName, color: '#dddddd' }, + { tag: t.tagName, color: '#dddddd' }, + { tag: t.bracket, color: '#dddddd' }, + { tag: t.meta, color: '#dddddd' }, + { tag: t.attributeName, color: '#dddddd' }, + { tag: t.propertyName, color: '#dddddd' }, + { tag: t.className, color: '#dddddd' }, + { tag: t.invalid, color: '#dddddd' }, ], }); diff --git a/packages/react/src/themes/bluescreen.js b/packages/react/src/themes/bluescreen.js index c4512039..c57bd120 100644 --- a/packages/react/src/themes/bluescreen.js +++ b/packages/react/src/themes/bluescreen.js @@ -11,6 +11,7 @@ export const settings = { gutterBackground: 'transparent', // gutterForeground: '#8a919966', gutterForeground: '#8a919966', + fontFamily: 'BigBlueTerminal, monospace', }; export default createTheme({ diff --git a/packages/react/src/themes/terminal.js b/packages/react/src/themes/terminal.js new file mode 100644 index 00000000..e7c3cc65 --- /dev/null +++ b/packages/react/src/themes/terminal.js @@ -0,0 +1,38 @@ +import { tags as t } from '@lezer/highlight'; +import { createTheme } from '@uiw/codemirror-themes'; +export const settings = { + background: 'black', + foreground: '#41FF00', // whats that? + caret: '#41FF00', + selection: '#ffffff20', + selectionMatch: '#036dd626', + lineHighlight: '#ffffff10', + gutterBackground: 'transparent', + gutterForeground: '#8a919966', + //fontFamily: 'BigBlueTerminal, monospace', + fontFamily: 'x3270, monospace', +}; +export default createTheme({ + theme: 'dark', + settings, + styles: [ + { tag: t.keyword, color: '#41FF00' }, + { tag: t.operator, color: '#41FF00' }, + { tag: t.special(t.variableName), color: '#41FF00' }, + { tag: t.typeName, color: '#41FF00' }, + { tag: t.atom, color: '#41FF00' }, + { tag: t.number, color: '#41FF00' }, + { tag: t.definition(t.variableName), color: '#41FF00' }, + { tag: t.string, color: '#41FF00' }, + { tag: t.special(t.string), color: '#41FF00' }, + { tag: t.comment, color: '#41FF00' }, + { tag: t.variableName, color: '#41FF00' }, + { tag: t.tagName, color: '#41FF00' }, + { tag: t.bracket, color: '#41FF00' }, + { tag: t.meta, color: '#41FF00' }, + { tag: t.attributeName, color: '#41FF00' }, + { tag: t.propertyName, color: '#41FF00' }, + { tag: t.className, color: '#41FF00' }, + { tag: t.invalid, color: '#41FF00' }, + ], +}); diff --git a/packages/react/src/themes/whitescreen.js b/packages/react/src/themes/whitescreen.js index 22abad9e..9206b837 100644 --- a/packages/react/src/themes/whitescreen.js +++ b/packages/react/src/themes/whitescreen.js @@ -11,6 +11,7 @@ export const settings = { gutterBackground: 'transparent', gutterForeground: 'black', light: true, + fontFamily: 'BigBlueTerminal, monospace', }; export default createTheme({ theme: 'light', diff --git a/website/public/fonts/3270/3270-Regular.ttf b/website/public/fonts/3270/3270-Regular.ttf new file mode 100644 index 0000000000000000000000000000000000000000..d6b55a6ab21806582f4aee3c22dbbaca1f0c9490 GIT binary patch literal 255248 zcmeFa4S1DDnfQIrJm(~Vrs3ppk{m(^`A!N*QxYI;QyMWM(ufg{F=DJKO%Z8IBgS~l zMv6!&Z6l_YBGQzNEmowlB1ViXVz#mvF^jRX6uVIXRF}+V20_ z>wT~Hy{9g20C!@t*v5v0jSCHR%Jz?_VHs;uGs% z2h8(_KYH`5_@_7iLPTxkx$@oz?y1pTo4Z9O21H`F+*?|dv0vpg*^j((z+hFCs;G?`__-~UqSekRrfq_-yV6PQ>>M>ByZO| z`1#tI$$Phn^&rnn?yp0B)Cc1~Oa5|<{5s^PKjEw5xdeGHi75+GF_$e?(ivQXZp3J26OJB%;W!kv3Ps<)PvA5p5&xCQ|6fWn7~6 zSnK7dj)Ug6azYi!OvlCLDo{=07IFLBK|K8-)9R3WwcG91;vN?g)gtTux+Ll!m$ek- z8kf9Tb91FbZoGWi(Lo}Xs-{Yje?IklGPA@*⋘Yt3aGQV2Xhhj>~IOEA(tvBHtmgNq5AFl<1}<;N`O)qnJHDgBjZ@-w7KI5tIY6YE+n2q&GU3p}d7$E~rwCsZ{3${9JSdZe2?)zFJ{^Lx2kL4R>Z)yk0csdzam zf6-e0BEz(YqiU52K`c`m^-ic>^$S8CHF8vf)Zy2!o>#eijyuv~RFB@F_p5ppV?MN> zuc(u1r^-?@RW9}B4B=v^RVS(Ue~~}SSCG7vPpP_z-;Gk}#LSjKRiqkm>EzRk^eJjH z@q(&aebIS4_sa{aly-ZUdL9jmWJtXr|E#{NgK9RRKA|#Irt=01F*m5st2OE}d=BXk z@p%wA&Faf4RP(B--F=i-xaQT7=U!Uhj*+qqQj#?)i??A){YqUYROl@PX#+vte&}tj zLQXv{H7bR8CcJ6K#uoaRdW#LW)v}Cm)y}hVt%F)Z*5Otob<}$k%RH~9jjS5^R7)2A zCgnOlLF^&Tjdn(s>06xsg%IXLKcmucGg3_LG4&!8Kb#vA%g6}IV-S)PGQ)W>t^8^q zW$IQ)wv#)aLh)Ako1P<7 zZebZ=T}*C`JuGFk1XF^cw-}BUGL7CwCqu|3$T-tL-ENRVJ|P+AP15e19FF|DY==Kr zUBfPy?NM$+Vn)QUF2*#U@N>9_3_pi@o~!;wE8};b^h+s)Rz7{IRW8zYUz5GESAEQA zN$DJwJ~<}`)ZK)%h+*1*-we-ND+7PZ0A>B+}zZ(hW zGtyp=Uxz$X8_~yUGiHPu9cG!dNemcsm-BfUJAH-x3HltL8)cI$qrVyt%g|oH%#s#K z2INSxlZHvDUMigW71juoUU4O#TFSz_{|0hbKba>2HD_*D3T8KoQjeb=d+faiqz7te$qg!Sx9CMqoWM;Swr}X zQ!iJN^WVw5D<31@{DfUJ+Rl@ka5d#`T&o@5Yo9`TR#0B^2^&{Ii6o)s%FOIw;fRkn=er=5t66@-|FawK>0^m*;T_ ze-2TLjxeKZcT5w?gfk)Pu`w5>6r35cF~dJ;}`Ksg24bzYf_j%`7AQo<^cF%7kmiW_k!y zb3#355+f)d*-Ys+N)x{~%N_~HD|{*_ixTSLa#C4>`y$H!J=pW*NyOGT{oVq3gwG6> zqNX|XI@%)T*e0!frt;~OW5jB4+;Wsl+Et+{l*^7<)yQ1!gxJZL-eY{pk@+z`Z}+p& z(fSG!`r#&%_O;FR9zUg&?aBACOw9raNea+~v}jORn?#8twmY%g-X}<082Wu70kw7DJ~N2x%DB`+DIvJ8f=kOQj88ZO3m{ znZxcTjJsx~#7HCUmLJ=wy22RKYh3v8vMB1)Quy3^f}gAz0BEq`K-~klniflc%|3sXH_T8 zTF3+P0@=?PW5D`KDx28lO!|1#qLm&v)3aN8gVtdOfxXYJMJ#`0MdduMv}sf ztkgECC)KyrZuNI{S$}{s_^tkH4&L!Z;P*oNOiE zkUTZ{mgM&)zd!jC$@e7RpZsw0&yxR^5|@&kl9rN{lADs3QkZgQN^#0vDT`A+l2V(} zkn&K`G}(IguKXIx#gNH7zweb!O^asg@)Nv%!&QtCsgkEcGJ`t8(R zsXs{lUFx4w|DG0?HZ^T}+Pt)dX&*{kmUds-{b^rKdn9dJ+B0e2No!9#ly*4nNZR>y zoqj{QCp|GeH9b3hdU}2O3!*TMp{Njrex~O=uA(hFVmlyl$nt^BQrm< zFtaA}i<#ffY|VTzvn_LP=Dy4WnFliuW&S$zH<^FPd@b|!%%LoI*3DUkS@W|#lXZXA zBUw*meIq+2J2Cr~?85Al?2l$YnBAQHeD;a#KWG2#rnxuWb<>8M-kdgNdgS!-=~dIe zI{oFDH{EjM3-|Xt+w-Fy`}FGnmN)g~`!1hnC1J+=8zsdl`4;s9O8yN>{$KP<`WUst zl)PAV)<045>nZt7)^pbDuE!|(waGepd~z}+e`j)Wav-@fd1dn2b{Bt8E|DUODN)G7IDr{o(_A5Cpa-JZIWlJ8FKq2whkAuW5P z-^`G=E&0;S z+RU|?yD0fRPRZ|gO8zh}TyK>?ZqbcB8$~e#G8jKWsl>zweDD{YPJY@YT=0`tes6 zyn5@ab6>sb)$~^E};Bd%EfL!>8Au z{>tfPr%O-Yb@~IRi%#Ep`i|4Loz6X-ae8vk>plO~^P8TZ_3ZEYms35bPMvz?)bCDp zpZfPxhfn?D)c#XHKK0_Mr%!D?)pTm(sYgz&KlRm9Yfn9Ns{YiMPSu_I{Hgm--FvF+ z)RI$+PNkiibSnPjKTf`W^2EvCoqYLZ`N_b^c_;HvW}cjS(*4Ij{PDMcZ2sdDe|-GJ zT_hZkeGmgjp;TOMOb@cJ2H)p(=aX#a_8Mpgh9RFg(4|e!P36!PvFed3HV_M7}lPSyOpJD$R z<^}j0cFHP+yrslpr+iWp06nbDm?@Bk9lcYsLRkNdnH$1t!JGwog!wk+tx$-avPofQ zAqBmy?_#2}!TKKNT_LPpn2SSLFJOKogw={!8^ZcNWZY{Nbm^O+E?_hCK@-@&~Yli9t&Wzs(ghp>MTvl9+u zFTp$#!u4TH%EjQ~oun(!*r{LXQE&tHk79a4xIT{QheX`VF_Rz_`zJBUe>!F1x(Abd z8eHTpeGb%PUyeyW(jUkE0_Ia8T)Q#%0rkc8Lrio_{|)vZWA=q`{RHz(uyH4EBqbSX z*r{(BJQ!TO_e|Ukt{zPCVQ`(sj1J*CgGpWtuCtiF5UyTK@?~(nib=inS{uZ3@8H|g(!R_yc#nJ^PE6i&=C83AVN#X`_k7G_ zKpS#XXEIG$kU#hPF$dvw?29mmLbw-;WVu7QsV7-8;by{+zbtghBG2w6n52<~Yq_ ze6veJxIc$U9W}UDW3B?ix<8NE9K!tt%!fZpvf&%OTvfiJ3V-|KZ*ua?6b&+*?InpgdnN<@qgqB zZN!b=X~LeSJly2@za@nGMPYsp8uuTFvmtuozi0PP%;lsGk!2CFn&xo0r_X2s0$i-X%pT#~4vqjV^lu1NBW(_=ty;;=nkHKZ^ z-J<@s*+C*MiMq5K&@18}qR5td^Dy=|F$druEU6DkgdR`EgbeX-%#RXs==@k?+~4{T zis=%!L`Wp}KE|iUNv3ehGF4I}m4P9h z4k=TzB%2+Yn>Y`c&K|&fWG1_kx!ib}C3);W%w|V#t`x|v>|x$6g>nbG7I#XKyqEpd z_ert5Ulzy*WFfl^W{0puJ|v6f!%`|AVej>$5|EEcnS7ib*iUeZ{7LpwKE>J6r=?Qv z;RNVj_A|dHFUa@h$DAv4$iK0xa!5Mmm+~w2<^Nr}ICJ=o{8qZ>B}D&KNNy5e0v z{eD*t`(WGkOgStk%iNKF!xBP@1C3C`c zKz=SiQ*rF4Y?N=P_3B}@L7LU0>JdfD4c$$0UN7~KavDnm&pUv6t(ur`<}$w1&syE| z(-{y1>~4a%X@BlwsD!Q5Is796&`zDhFOsm4o!s~-gj(jT9#{`M;h4zy0wC`A4v`xO ze*K-+F6PxqBlBy*ClD^75q85R5kGSMRY15&8PEhh zB8j*s5^i!dl)w(?<2F?>?1X-iDSjZ$DWsV!K)CHvwYCXeXwFU zCX&BaWVQ(QPw>62}o&pC&3XxHWj60BV2jS)s z{>~`aEK-EdMdi=}_`TOZ0%^}Dt@%A{eAkK;lc!?B6dx6Ne<>huK?R)P{$Gi62T&Fw zYhg8Xi+qqYKSQ_y z`Dg|Z_oICx0iFZ0xbB99aR@itKYTF z0P?@)2V{SZ_+KOb*E&TuRRHO3GIrvAoix7Q0>o+Z0AZW3KamgBuo=2Vo{WZKXo6NC z{x^{I4PPb0tZE&o&iTOW z?-^uoC;WE8Z{G^&y}g$Ur6sTyi2Kj|A}yrRLY$T%k#A=}EwsT2k!M|ijAx1SEN;(X ze~z%v^)bXojX>HvDmXUd`8$Px?C*4nJYNh!XofzK?^Z)A^os0Ef&w7zo#bujF&Gm0 zUIifkdnZJ86~R`({z48A|AnI>t?1B-z4f5T_x(UR->2-pkDTv!L%+z2Nl*e!(8F;Z zW%YvwK=$q^XoQ_2KXgGQ;J&96_KW-o*+1$OX-fg(x9tXW_;EBK^T){f@g*iHIZz87 zB0ot2{C=_?1~^9Z0dm{70{%Z0!0)GhBKsCXm&m^m=3i<=_7itMY5Xh~f+7bz&?NG6 z+<#sH10o#(I4bh5GhhcG^Q9;#g`F@Y@{3lHgMJ{+!A_BX%ZFwl-k}_5he45FqUSH$ zpiiVT0R1Ars^)eyIvy?;`E{d67jn94;gZO|uK>avsS){23LvxF18V{I-xBt>K`v@W z18Kj!TjY26|E?O)^XLp{gdq{u2=X7DBCp{83i4mU|M&R+z72Xsj$uEBtYd`z17ZKr zE^<5{1J2-Ab# zX=I&V3mqb72zO>D91}U40;NFMvnND)NvD@^y~ucV1$2qLmJ1ys|CIv^p+%(61vPL~ zL=D7;k4Lu@%E&;;)nYjJ<_0IsF`v*n-f1F1;F!p;{BCy ze+|Nb$Up%4Sl?9vx?J$X3c&4e(NF}$8;k;E4|a)_Kw^N^KRT3t9dqhR#0`3v49U}=7 zSqtr=qKcqH)Hq~}!*6^P42imd_|e3V-Y@D#KM?oEZc#BQPzfzSmtGKxXPfXn`S7X@p6i0gZs{3_lb@o2bkTAnnYfqOt-&zOoAe z`PsOJMK6R^)j*O?vAC+cQDAphpA z&?_o83JRbGb_06ek`L=)K-4VU^P++D@|pm*{7NA1>|8+S+1;Y%AaiaCECk%v$^?bXmPs*rGnEu!v70>a;c4)X{OlcE+GB_(pj(>c0(8RiTZ#Gi1UGRSPQMtFKVF& zibZ{p_#X^FyQoFDEvn*LcQh;nW5@lj0Z}D{Eom0@A=3I#BeaQHOt{5_TTDJa+$yS+ ze3h<;W1>Dn_>YkOl8u1>M{7j|GN2le_c5M7)-CGe0l+M867`7&QA<;Rc%LMV3j97r zoKNw5_fAotCQKz^?!jEf^Szs)UsM(8R;_?8;Q781XogE1P2sn^5)Q(ksLvF@Mi}6z zs!!Bs3H#ao&?9PP6y!oVG(ra;?|wg!pZjZ|6>zIY&+1ZG4{d<#2MU4b2axvw@>gX5 zvQ{B$)lpFoBIm&hXaSyUNUvrgY=llxpNobP*uk-w3y`%M*`H4W;(WdfE^$m&1(;tT z?icW{D~2X$g>Jx)IkWmAvcA{|q!o+?;suctJSgf*Jb$TKR6Y5q$L*hrpc2sKpLWBb zsD=XAEb7ZXAnY2R*E9hB4-x;NwLrMFJ4Jn^0+92SUQz1^w~lnzwZREdU-bYwezh8q z$J|=24*+^RoB}}@5Ve8)Y^Z^)&;iJLBo``ybRTIKwb2EH+lc&)J)#~(_M@ctD9?|! zLKpONWEc%IL_LoG`$5v#0YX$6peo@v60EGD-I()AkdPVJ80hlk~{=#~|-iqv2()d2_Q9sOqYS<}iPZTVKAyGftDyog=Hst)cSkzwL!%v9+6LfFK?Wd&w)1#vHq2Ini zQU8Lx{pi7*RQ-(S11+L{PMDt)rlS<_|JNkI?Oy{BgsspH_`T!;(s&8Km+*TDeO~H@ zOQL>}0m%3T>HcCj5dNSC3Sk8_Lnn~#zvVzVkk5Z3{vpciP(C2@P%9Akmq~!UU#^9N zqB^6X1a`tPQNQB(R|T*FNb^_ZsopXvl$LsDuXC3T;4|hxVRHRJpwaeA=CmgnWL(n zPC&QQ#66AwY5Y%DK_igX>4QN0Gk(DR%x35kbv6YGp&XERmhfkB@0|h2?i~>IYAIC1 z4pFc9fUvI(iTbZ*QGJB_6Xu^Tag{s(ZKD2+e}6mli~382sPkJz{k0fKcc26|0^$D~ zzyEF#bpe?d_OrK-?tdf9-;nXQK2d`OPy@*MdlFQNx)=ouVYjH)N&9tlVs5G~5%v;c zFCph2$oU6y{(=1sKWyeqAR37G=6dLWAyGpaPzuN&-Uz*-n42oQ0d~NksLMsL7J5WW zA@qw@9;k*!=oQTzRqJD-ty5bmZRw2PkRfdK3lJ>3W8 zupW>*gEZeGK)m<#iJpo3%!7da=I9Y}FgJ?M&46O41oJ!~`j*Y3Agx;{i&-up&Md;t zY80JE`2744YA}g6n|O1`#~gH>gWhx7L>J`3G10f8->p5OZ!3VEqHm7^+-@h$+X+|b z17sK0LWk%((DRNNfd3usqUU7*>CEdFeP;mBsR*5lN?=$3%aE`0NAgrL}NW^e3yJS9C=#bc_BJ{+}Z4yLrC5 zS@fqfpi^{ZG2nhrArNj^HS~+Vm+<$tie|p7s~UhXRYRih%Ylv14y3<4AIQV<7Qp{A zGhi!__KHd%jn9?>`hK=U^vY;h0m!=_`~4-b8;Dz71Whm~`T^uJH`c2J&~;Tc>;&@q zAmJV)jT#rAXASP3Bi!fKLWk(peyD(U(aeYS=PRL6bnQ{mU#JpYhu;?o8>|)mC3LB8 z7X42Jq8re84RP1(0Kz_m+e65H=#uEQ3t>MDiv9{Zt|RSr$XrL9uOer?4>pQ^nD`Hq zpAFGKyhli9BleAj&?1^SsD2cE9wp3U8GtU25$^G7(TxJ-fc(Z*=mg|{4R_|C`fJ5d z1#1DlzIG7$L~la=rhGuwrXXyF{ea)s(d+BEfZVU+_w^Py3PYlsW3N;Qy!QB_&rqvjexwT@P7&&oO`I{T<@to@3%Fls zgn|D(e=8ULH{=eI=Rxu}*e&|+*#F)n`l1i;zlcs32mg1xo-6uw^7nczp!=n2An*Su zgi2@w^7ck4v_h}wH#d&38}ld(h#vAo5mZ1BHUs`cUC<|b*aazo++orfZUM@2n7B6X zb^s`Mn>6fh=ofuCX@pA57O^A%O>j&s<%e?E4ZUJ%zN1AigdpsMgU|y*Vp)W>a)I#H zTEO4xf4DE19tZ@Zmjo%EU zJDxD(N%scA-GF~IVWX>IBkTmiL=)yl59}5zCJHK{5sry9AqR?q=LtM}h!-0TYhh5V ziRG{!h|4_I^3^~mkY*gR;|qW=@j+;XKCu#fKpF`1HuGOA2{}m(upcgoHN^)!PdO@9@(frH zgqunlQ@4&l*r`2Yr4TlSG*a+OX$0b@5+)VDG!GO&CE%CVE}DBmOl-InXi22Z{GpPY z3-?62T`ql|lAY-(&~YHaF!?X`2&CVRDe z_8Y&RZ*Etzo;fbdbeTKLkt>;bap|#nvFYk~LqmQ2iF((;A=;$8X0_`h;V=`8KfKn^ zpjOq_yR+;k)hhc*WbxP1-PSx;E3&4FsPwozl^2&c8{)7-`fP{Ud9%}J=jqb(=k0C5 z^L0Uf>dpu2__5kAs&n=A4Z(}J)z{Y#)}x~(^_S0CUG5BSRK17WQ*5@U#^ueLs^X_8 z-vkvgT_HG?PkP$TD(eoFf2W#ryCT`h^vJk`yoq^pXJ@BdU3ODjqPM~033?OTgLbp3 z+UxfQz5Mg<4F;Rb%9?{Mf%0Zoe()lp64xdYa9|)fWCE-)A$ce(3D}K+#Y;up61@DH zb=aN4%`m^DaK{V1=4Q{HtLElSRdJCjGTr5i&zm)8c79fRT15VwS@FJzGA_JFHp^ph#G2l>_J`i^+G$+d|x%buySvu5YdxkEXnGMBF`$-X0Mp1M=dnLAJC z&5FNW%}PjC3CY$}g%KZTeo?^a9T%e_W7Gs4moPUWG9fZMG9ofYr>A92S7{OHX-4o& zi;_2%*-jFcNoG#gohp-(H}62zj#m*%sfBZv9G+(vt0=`|#HuKl9`CYrq~0(dn^rFE z;x7_0`RE9Zjeij}2VP!s^hoKE(ksC)=?D`dDikB=av9-P1c8fG+TyasGaFRzc*k2s z=#s^+1m>wj$a6(RL|lxDh%%8Q>YUh4VoGbxx51FAMhn;YOT{`$oJsA=c~dJLmO!<0nmc!)vvk_xim4c<&i| zVc&$w2@|~DH@rU8mqL1@Wf~#oh2N=SjbW0Y#l*$>^pUs7RLjCLRr^($wm(H&d>=%> zYIoXnBz1iv+L9B~M`W71FwV-Jo2`!1RO{9HvO|Z<>@)Tzm1v&{96qEE+D%ru-P9ZC z><*|5m1OtYCj#A_WS{fCpc;={AGa%w#MHP{q|%7hiJ+>oo1F&g^4V=`><(45hVTQI zi}YbtFA;>NePz#`tq*6|7k2im`d0$>z|QkKLUPaRa%;Y(Cl{HB)blzp+^Rb{>7;y? zOO+0&`Nof)DP1i;e_qW$8H(2+C#+v_JO9RO+ws^II<^fWDJaXVc6Sc(;^>_?=rWCl zvNs*koXpsSyt%R2>F&AoNF(L%^jIVBSNr`L8U9J>>Gof{_Z~UgYIk0mF!{LOd(rD1 z@cMg`Vg|idFvEY*gyPro;jZp3UGQ=f{ud`q9^RT1GvM_Odi`d}Nf~vT{LxRck)-CB z8bz5#X0zXx6O|n72)I2ySM-cG8?1qYi=B6{S}Gmgr%+burmD=zOC9M~BNc_0mX$wO z&CX7ZJYVO%;PtBtzqj7&9p0vcLuljG2g>Z1yRG&jKRV#!AM$&L8-p3SUftPM#zC>s ziEprS(nuqX*{M`+6@R7YPEVyA<|d??4my<9d41SxU%X))^3Hkv_7=Z)ePFekcc^8T3W?%+N@0W1ReH~0x-{0{|QCQVg7&5S`ondPJx%MD%UEt`7fyp6eLSg>e@an}60 zy5R6RBeEwZ>BV4@U8u`z>_uvChQG(}Rej#!TwQL@*)&T31f((Ugv*Dwm`-&?^VC?Y zeVFeQ@bk*N7h;lz2i3(RUAA`TFp>Zb0MYfIVpM-GTyM zf0Lgu-ociNmtUzmGV%_>byPCbO^Rl?G_OLPsPn4M;R373YtLDx3zA|~XGXAX@&tR1 z8AC#KI}1&n@r`~eREwvm38BGZq%Lbycd|{5pE#nlHDW5Mjh%cx(NpX7E$ob;c>DuN zG3UI#gNuFoP{)xY?d4_rOPB0-ZCdYRyp4Y&r}!0b{3f6Gd`!&woJ|uFUM?oOcX;jH zN4hJHt2G^q7k9D46Dr5W&U<#sah#b2m^Kv}{X?~wzHS2jM69X6sAJ8y--t=-_j^}U zI5A0T>EsDi=9WNHx&2D_;{8^Y{f5`OIwr}UJb~KRKyBXX$GcG8%JE?yuDTlhm&_ElYH^Us?OD@{%C80 z6D-za7lg{mj6&A)A)QT+Xg)!!XsE;C`I?hX-#DVjPmCT6J&YG~XPHrn8`czUR(4i) zzHwD*{1rXaYj)BVJyfTwB&>)XUt{}FxotL_?k;ArXR>czB4zxwzpvlH`3Qk zbjmd7UBf#nOZ2Sq`t04bfk1_Qd?|B9YhSzH+Yp1hzuxb&JKA4P^s1tTOUs8gFj+M1 ze>v%xk!vcXT`_qKuX#9ti`2vAh1ZU z8D5#_UFA$0)rmxJt;e(4>6kJ+^)bn{{tVp_EK4g@3rhn-uapD{nP^p*xg#MH?G1^9 z&hXbI5;(;_Qg3OCu3gN_;%NVLPGs9DXs5T%Or1SW(c7wJ6DB2j)pAd8c(*RKU$Kv? zKD%D;i1(_MUa!5`lQ>+-S?-f+hW(0Z4_^>mC3=gPF_C*!7Z{NPX_TX`AX`SZ{k3Y%#(jjkrB2x^$m%(n@ zuV%LGx0@)~P~Sj$roKdG)2XUFW{0L3W;@N$>1}5vSnYw8FWK#C(Sa4^_1?sRc%S{G z*P|$=3rR7qw7_z^{jlA>DzKJ0%nI6EqDNJGVx0FFDknF8XCaxX<`qt--?}=8lAAof z{Vn>)5qmI5WJ3}8H z>TtEz+gs}G#;f6X@fRRh!>7}3hUb_WMV)I`(B4vGGtxS;sdJPC<0!+X8E-<TK|2~1=%*_6;ZS%-pS(EAiqw~@s=7M6 zxz1=mw6ngRje-&VtE~Bir=)3pX39e4As?aDm6MrZUHQHM--s6U)Oi#8O$Aro&n_vW z-UWyHsNP<>cq;hSdcjQ5)b6}kvl8<~@*N6ORQhanam^aNsLpFIQMvd(;JO=h+yV&cWm!)=v^$OPkC*Sm2bD(b_ZZ%|WZ-s_b2+ z7oQuOr<^iZvEd@GaxEC%u9s2dGxUlf_IYRzp?4H%`nQR^ZKu;=+C8Sqj#P}n#cF3+ znZ2}qwI@j(PmT$C%=F35Nu+eG6T_vYWqRjQe*?o14LvIO^d6kSHG0Fp9!@gz7W12d57rqx2}wYR9z5Tx;~4 znfGhjP@Yqj@|?C9(sy>SwoJ7y33_UMemlkQt@F5c4Q&XNS;3(izo*`ZLt-esx{-Qf zEV2Rc-P)2&(O|{3~OnGvc~JZVckPz z==Apyp*n(Yw2ja&(^s(K)V>4WTnfK#-iyKA^Mc;`cyzR2w4m2Ms0zJ7 zJr{n#k9N1p&AKg#`vq6Vy9vZ+K4xZ7&Wwebw6)heT%tRNI=s4V_%>^vHOM-sAgi8< zitfy!ry`14e)%Dlb6G>+N%agFR2VVJ$6>&Ry%J<{LX&F9a%v)<@va4mAe@z;HOt#bDaXWgA0nt3ow zj#T5PDKF!_M|r1B>+7?6%%jIXZyt>PQq6wXOZ;^qYv;M-z1k`p+O>?H(&Vj%eU2XT zX3Cac*X%QxC9vs7*uwB6B{G#raelkwJ)TRR#H18l5^40B?_H|0Ub5Qh%g9LPY%^6) zrEE;(@MNCmKQi#^ZhKW(Ku6aPSNgrRUQ^R)3HA!Ln`YoWHdMZ7DJ|0LcN*UFfjTOp z>ErlrC#wYgCYb)x)Y!N7FRS^!V`q7FkrhC<@*nN8dses(*iB|dMR#%`W_9p=V&`dS*yfedE}^SvdigT%_=_L+FM7=TF;0aucHq#!un*6$!lz$6>Fp- z=ZXYX5DeO9jvQTnMTV+*vrR8I3h`s|XLM?3{5C6j3h;UpU8a`weSKv*X85?@)8O&d z$H%LczW6%t@U!Y%nSHQa9ofFL#uKDWdwsq&@$n7bc)PoyxqPX4|9qdXqqEroiZr{q zG$M9!N9OTydRFO$!MaPA%s8d;T`w-#Q9qoaPt@->LmKBKvifo@->J0USxX|}?bd5% zE*{zwVBO~I9a_Lc$~EVLGajG8$V{x~zW5!tx;R!rzeSU0CAvuQhEjxMZ4J%#WKFbkq=Di%x6MY&%8B|r6N zby;U17?rVXjX%b!&2^@lM%v;46UXf?UrwFZ$TjU?C35%C$C87$nS)JN;o14QGF4o< z*xt9VJ|CN<(r#oN_v(JTI1o_#%j4I?_||yh?Rat*6I084?L4zE(y|9h zYk#OunK)*W7n?qjRo3k6)vDba73u`+&R|d_A9=~zAJxxnhymh)mzT9@xVig8dr0@o zntrg2zc4pDO=ia+w2T<(1l>+oV=b&7w2#D_ou-R4(`okkqeqnAYJ2l=1M5P1nDYqs z)OH^*9fPSmp>j5xgS^lD>@1d0Z1qpMQtD<-&f=}4&Kox=V_EXj$9(ZmPM%;Yf2CeM zd_gxS#Chu%&&X=@F|kQ3%rFzGkvd5|$>D)M#dP=1epsl}W(AQtmo0-aOZ;?wq}=Yh zP0x(?vU0b#vWE8t%T+<)@X?8uXiWi+O({z^_og!ng&}f;re~?V({X{kvguI)th4~S`~Xz^p|GLq5fsEPd-v1 zuFSL|9huqs9QDuMY${;g5>@Eb!20CqouLY-cMR7qDc2i@mr((08Tp)YsYLExGY*cO zZ!woS$AQbNU=*w0Vz0d=Drm(pan;Z6iM?@nYjUz)c4Mrm2c~Q*9No-3%b8t;CRR7o zWsWpo=3AVemA_aV^sb$l;P<}N>6_tWYC3Oky?TC6kzPN%%*;={hq`<|#zOtr)At=D-^hN)d6wVq3VPH6d!Hw$@>M?btbK}kwQ9GIWEHVOpRbBJe#)_5Rx@)7 z6TS8Udp|EGE2RHru@;dA^Q263hQR{R^s`KvvehB`08(b{4YG$EXhx)8wc6G8k-ge8 ze2h8Mwot!C87yz7vE-*LI&gL zz$q@X>bqJkOlLAT*4feb zs$*F>bNzBN=O-EFIL9yh*jsNg^B*;D8oQEl0L^U z3^BcJNipH1z5ceaLhkvda@#x0996K>IN1GKQc5!~D<_RcdgguX?VDYr?2)cGZ!UWa zp^-E_axe2?|GK1@<4Y>1O=BN(o!@(W$#Pc>&feq331hj*%l~Zrs^&bzw6RIfde$69 zIlCDw=1tcG%+s0gPjtrU+Nkj>$4B?p5Asvr6BYT__JYDT{r;$N>el$^FO0u9SWn9v z9E?<_3ojHoIymd)1I`#ahnm9qF#UCS2Z^~~dRl02*-Qf22u(0^jS&@?UpgBqd2wpa zf`X1Eohz46%?A@b`4c=5R&jK40|zRTg2hZmfv2MSF@N?_=J8GWmMRQ87C-je$7{fcZc5jmHKN|Ahbv` z;F>uL-;R1>IAdVANOzcV?Sadmvx;~xZoXecGFcU~T%N+WpGHRTLO2FC=ZaaOqYrcB z%ho?!y&r@?bOs1Te^WUkAbxvpx8THMIn?`9)#yC5Uh}2tW*`>4i?=qs4%T*KQ zvc@az(vgaVTT-b#gM(HMe@BjZmpMnp{Jl;T=e9SvRDpeFi8>m^Nh=4sI%+8Quxgoc zc=*Cf4+p+cu6iPKx~zhMO4Z>U7#qPuuJPt*mneai>`7ZXn!xpu7N^ejj{m-r?_DZ#z2I3jcFv~u5*e+jGQR~MqXjT%>27>tc zhkDICe~z?SdtA%dH#I8-cH$zPGt6V!}k)MNoBej*(BjWbef6PqK3oQt7gSu+CSs!G$ z=OiHfo)YNG^7+OcnfNYmCGzU^5_1W{%#q^KC&rocxD9QdcvVA*^Mc|M?54z+t1l>- z*HYy5&Y2exT$mpWR{8x_@5no9P7J*xzh3U0G4hVqcnZCV^@-m6I`8;~RU5ea(vY+u zk-T)fTCKaCy65DjTW=a(O`RhzoG+QvZTuq52rJIDlB|3-Swh`V{lUi`JNVe@g;fg| zR=Kk_b#B_!IkS4vqUsVSZnYezZ!zluvx_nM)SVKeFK{MEq0Yp-XLGfu-fmJg^~2lE zo~SC&F_xeB3wVf2y+hON=a>Uxs(tz$njRp3t{Ek0{`z)3D?ZO$Az?Eh&u1={un!bJ zMf*$_;^U(%Hm_*Lsyt9yUTrQ%#9H4fpFWx1h5b2jr9xi zWAqKm6~Uh`2Ff#Ti{NXYG(CZ7`RrGLxf$X_#NsA?)LPRIIAQF4l!HTg;Q4Rj7I4=0wBk)7Wx)aq?7e(}YMSS9LK7h;H|L=9SK5tyAHe zG{NgR%mG4%&!r1J{>^SeCAe8;1!I+`pnO_jQCW;PDUQF%U@yqp=kzV+4LYLPG#Qyg ztH&~!-TM>G??h`~2Im(SycsNIFNEeHQp38#%;6HL#n;SO%^cC0%*LkItS(dY!!y== zGmqWmM`8gvdNdO zmR-1@4_-tK>i*v^Kd3*h?soR4Lc5;M1WKI>dTU}Q?S1A$>TdgIiJls7@IxlNx=qJ8 z_t#kCa@b2jhW7l`rodiym~QmeyJ7;gRl3PEy?CTgETK;{YeYu(cU>i#gQ8vvla=EB zef4zCb&1~aN^z63QtTN{u}+3pi&TwkSBpbOOurbUU%cS-i@ZoSG|i!I_BfTP;zJf) zsGeuTZE2Zmu-DtKshvEO2h4+OnZ0CULZZhm3#hef{SteLC)YRfV9Lzptn+Ml4QCaT z_?EFeO2XXxFoh8x=jQ5}Ny`k|Ok&(46Spi{Z|Hc+>E9Tkx7T|D%piR^YL7QR!!t~! zNzCwA4TZtIQ>J+L#wHX^o?0KY3e^e^8*3>^N2!*RCJtvf# zTN_w%n*T3nIbWq_{%62!zV}Qr&6X)s1p15c4Ax8uCMf1rqjemmy-VyTJ-zXzIpw#- zB(t?M$K&aoF-kp^6xRA=kW{^?14t;dpx_%uMad+H}(e^4jOi%2pIOSJ?dObeM zesO_XTIAYOKh*jPJ*hXMI!>wB<#7|3Fg5%9>bADy%*=dI_MzqTi`q%OmicNs-}GnB zvsnR}GrzZsq&y;J=5=iSz^vCYPzr6xFYV7`eIQ`q4^f~8xoA(fIcVkwL z*VUxty35IT&}iGW3r$z(%!F^EH1B1Svp0R++7X^zUssQm(3JZf65hjr6YdAuzl@mY z%#Bh^O}KV`WU+J|T|4JG_bpWGs9Dn>moHX0moHX%f?VI%ciTtoqY?8)&86O4dPogj zy@_E*9jb3px%SJXr}_V?Sidp8SZ0J~mnBujvP9xG1g9p>x|y{zw+~`pr(~#% zTc)ZOvvjtfkLPR6bZ-#oSn^2S5=<+dYxf?55Hkv_7593y#KsBT{o=`J)?S@ZwI zaDO9Q#;nRry>U+T-qMe%D_1(kbe>o4cc_7}1#IrHRay%i*=C1vl-Zr{y z!#77Zk11L$XOO!zq9|0ZqvhVLMx8QVk-2nip@yZtbZwdP_b-)}%e^&RrlTdBQxvl* zzgh^3M+!77PAwnl8?>_)Hf!}bXFrSeqcb3l9IKntQbthc&W73BdaYjPICpC=aG&US zJ%5X!61ive+Qo}57He1U6{-4aJIP!&vKz150f{JJ9+u*qE`@K6u!9u3IXR}=4c{eM zaNVBvnj0qWlxw?Jr@nE2f^R=EcTRGtZ|`#JfwvL&0VDy^h z=ymhE>y>d$&3h-c)ac6ij%pnkQ$gvQ!+I4tdO2g{JKxgbX1iHWaM?9G@||>YI)bZ5 z=kIiXr~lgeJyKS;IXZD;@m=5Hb*s`lX*c`2)$1LLPOZ7NvYD}*cgk39>RP(FEA+0K zjN%8 zhK08zcyeq58fnw+9i*4w%owhh;z&(=OKO|L!^O49xHerGH$v|%mpLqb`de-eUE6hy zxk+S~j4HhAT`O8Uru4K^H_aI3oB=Z{9(_%Pkvg;|v#QqIb{Py^t1GRoRa?4`xOTO1 z?wiz*$X&a=R-)~Dd6BuR@&I$u1MY0rx-!x1%dO~S8`uqp6Ix1-P`l8Gqe?>KLlE6yV<)os@?EUQHJ02HZ(b%GD z%pY$Nkl0bd(yG!!YN?a3YkZ6*z^cV%2ZzjAp4qdYe_+00?jtd#zT1tYx7>Gn=POFX zdq%h6>t9&X>&CX@uuj_@ofuEwO{Z&H^*gI%?-*4}udk7sF{Yx9DyJq#C&tou(}`~S z%2@i&`V8+H(+9kbM)R)i2SV>{o1+io=)3E4y(!tdXtw&gL+RUS*z?vgG^AsWqoXs1 zzN?laJ=eSF^;oDMyS^eiZKN*??GwHf5$~j*%}(LFmeRHB=Xch_t{AnBzP>V+XVf~{ zsYm9#lanp}Ugj45M+A1V%n_RNM?20G{pzKo)bPEwYwnIEYqsW$mo2DQ};K@7YB4n_u@dgdNQLdXzm1r5BC!R>)k)TA$6ZGVaTK6}lm#-iTbQe;_XP76Zk`_6vb$eCaG4&W9xiWAwf z-geDZK>O#R{cDxuxpFCRq)nN7fm@w>d^72@!#N%~eGgwH58dQ@%Y5OTuJ*-@?snex zo}b<^w&w};heoIEj!vAHyt7W%_B`*Tl5);CMov23RwcD~OxNS=DWgx5qt8w6rjIqM z*Lf#hV#ahiZ?8<{=w8RPCsQ^VjxMRr&f`12vG98Joiy=>n)2JKpo^T=tmOiKKfKJ{ z%!uWqMzVf=>)yce`uby|-@Db$nclQ9uUM;BXn#eH9CKca9Pc%&G4;xtH5sFZ2qVQh zGUlzAeW4!Yl)FpNhf^&_pHXFR?iqBCDPu><_R+=3_gf?)Bf_1Aj7T%bH&ViTgGR#c zh6cN7%^DNc)!`Ha>6$+EMfWy#+Ze5{+-v*4$a@>;sIu!!w9dIzB_Y&B>8ez!E`(Y_ zLXy?AS`9+NbhV%{#zbLg8Ow^I$M9rXtsw-oO$#K|z31%n zx6l6h_TCfGgsFA#lo-QJDcO7)Ca$)x zX-1qPN8H*|8`@f(XQGYtxRMMug9L5KM>->EY^80ZWF(D+96QLGvt5!dcr+%TGu!sc zNYh%!zROHhwS7Zst`%6vKI|=;E1;Anr786u%SfF&9sBW>#yFUm*^05oKMC#=Z<=+!-mvs+N+fprxg<1*N?fm)Twkp+(*yL%p=jt&E} zp}B^D%RdFYF6rWgPa!R09>evYZ{DnMV!>6IzdzE+^=h+jzzD9&gYvCWxK zpc4iB)UeQ)gVm-6iFy!H;XIEP9S1;1bw)ap&tV#Lsu;DMz|>S|XB|f`J{P+{13Y*c z5U~y+KFu`TbR4%d6pT2}nOqCR@r6+;2zdfBQD6zgX?lO8wruKd-Su*>QY->6s^EdM zNSaGVsU}af6Sd0fZS$KF!s`CeIlY))1DFlUv197>j_?y;nUr2{46-@|tIA+pF@oee z;Zb1s#ZH2C126srQNM_k+&^}aV)`{#7se35oROyio{Z#CSO*-KT^r`MO-)Zqx;<^` zN=4h`!#alfQGPpc6Q|b<$%GK4tl@Oug0pNwr1AoSD`oW8N&0bbp91})XXETostKVt zej!uzPiz2g^Fk5e2=r1vyye z0pL*t*qa_DPay?IvmV`u9a4@$PqbWLyH>BLMd&7;36BGq$q_oJ!nP3waRZSZ74R00 zVxE;gNSK?KC|Z58Ik3^I0Qb_zKZ#BjvJC-5h{g91&q>X-0vbJzn z7xauR*tgP-YiXbMiAeU{X^qKIXeVqPCr6|WIvJK4`#JA&jD3Qa**W%kHX$tIxW#hE zwUBn`(k++>JH$HB*!M!;llJ6PW4HSkCysliqu=C_@3h}TYTU;>S1@jpMjYOC=eWzw zgkG7)d~f-><;&Nl9qVrTbUE!c8e^kpCB{fTS<|{;U*8I=zX|IamVG3T>yg>CxsNY< z>nC5!{6ZPP3*dHPL&kCSA?%1EMOAQU+TpQYdd`d|RlJ18dD62d{aOO>4&+j$qG7^V z*)vDa$%AI6oE@6?7{*RHBnA0>do{iIp z@gzIhPwl@3GSlh5Hlo5W{nz^lchH0NIU+Hjh$EdR<4`^JZAj4vz#&is2yPujq}tUC1lDL?nY|6_0TPdi)#caUo^oG5;)FfB*;c&!UAY zvVo!-Xa`fm9QlW&Btn?bpO28K&YSBg48a;#He+U4L4hwA$ex+yHF93a%bz{xrP9jU z@XKX$UM_uUuCHK5?ts>cV9vWD#BaiIbE8NP24@t8vS(!FwrG zX3xpfb91w^3iYD7VYDK!uDb^x8&bv~8`XMO4N%*wCyan{|25R7r9SfvtMOz9^7H*g z1%)qG7v#?krX7qo!%}$G)7X50{FyVdyt%nE=T@W}*!ZrrA zRj$>f_F#K|nbwQXb#$M0;rM`)9JvR(wPTQ-<^Wghl4vE{gv<14GI))$0okq7Y$R=F zAeo9G4lhZYCrFbKtY$FOng?9 zXB7JuvajTLnfEQ?eq`KHhCN#)8D9Fmy3%BL)*f9c_b5d!Oktv|J!;Xxr?x-eRZMvD zJP}&6#g5_kqj@_X_cfTNh+TgLI%t*{X~3hL!NdLA>+YWpS4nZIZpQJLuLc6^4Zmafj;b&#e}UzZV^H* z<4v@LcPG$VwgD}{D}4`SK2n)RE{quv%y;Y<5EHVE(Aj(!?VbUybS6o?@@!go;FM^< z1RnPNl-`8|I(V(qlc4(QM4b6fa5>6MjCG`_DtT`?z^mks6E{;fFa2|dvt{lY#TeFm z4l3E-F$T<0g5teW@Q>qnDGLg{+iAu_W|=h6J4C?~dR%rWLp|{<;gIXS9Q`awnk%R5 zK8fU;plGX<+NUVxCZ=|Dsv@nVxl^l$-lb8L6wSFdJz6mnPp3nrny@JoNcRKl76