From 0a92ed52ac1e8451a2f4114620291025ca0e435e Mon Sep 17 00:00:00 2001 From: Justin La Sotten Date: Mon, 1 Feb 2021 15:04:38 -0500 Subject: [PATCH] Theme itself + readme --- README.md | 35 +++++++++++ assets/lookandfeel.png | Bin 0 -> 38100 bytes bedbugs.zsh-theme | 129 +++++++++++++++++++++++++++++++++++++++++ 3 files changed, 164 insertions(+) create mode 100644 README.md create mode 100644 assets/lookandfeel.png create mode 100644 bedbugs.zsh-theme diff --git a/README.md b/README.md new file mode 100644 index 0000000..038fff9 --- /dev/null +++ b/README.md @@ -0,0 +1,35 @@ +# ZSH 'Bedbugs' Theme + +## What does it do? + +* Shows user and hostname (always) +* Shows number of background jobs (when there are some) +* Shows current working directory (always) +* Shows Python Virtualenv (when there is one) +* Shows Git status (when in a repo) + * Working Branch + * Dirty Tree + * Staged/Unstaged + * Number of stashes (when there are some) +* Root/User sigil +* Colored return value of previously run command + +## Who cares? Show it to me! + +![Example](https://raw.githubusercontent.com/justino/zsh-theme-bedbugs/master/assets/lookandfeel.png) + +## Inspriation + +This theme is largely inspired by the [agnoster](https://github.com/agnoster/agnoster-zsh-theme) theme. + +I really liked the look and feel but wanted to make enough changes that would effectively make this a new theme. + +## What's different? + +Multi-line. No longer try to cram a lot of information into one line, instead representing some information on the top line, and other information on the input line. + +No reliance on Powerline fonts, could do without the notched segments. + +I also wasn't a fan of the way jobs, root/user, and return value were represented. + +I wanted some additional Git information displayed, such as count of stashes. diff --git a/assets/lookandfeel.png b/assets/lookandfeel.png new file mode 100644 index 0000000000000000000000000000000000000000..c9c99adb03b532ae38e790d6669a895e16107bd6 GIT binary patch literal 38100 zcmb@u2Uru`x;BiWA}XRHpi~6`rHV*z0wTR9^dcQX?;TW{f`CZxMe5Ld2@s@8mlAsK z1VRsi(Efn$K4-ss@9&)J|E_PmOoqwKnpw|U>t4@u-_M#ait-W!x5#ec;NTEQNxoIa z!MPfWgL7s1=2h$wd)in^?AHwg8Hu+z=NJD{>$4-UNAPVWH5_noZWCSnzk(B=_y~It z&rwQF9B=9B6(SxSk?D$eI5?5|Qg1~-uH(qlBRwLEWOP{e15q4t@w=%s>FMpnrT0Z| z9y2Cv&>XWqNvENqxk{5@SxO{&^C|vQ`>bpa_pGhBWGJ+6KXI_k3GIn#Fx~81IbL5m zKRnqj0PaaXiMp=XzvnJg*v_k*tL+2_t06Q-poKtiMR|E-ax&|6>?1Ya_kCEdoNGi! zN4IkY`?u}0r<^^aEZ999iN`r)*sl-3#c>=kF7`u_^I|s@g8i6Xr=eG#)Jr)Fu4+Ah zr6QG;f+mIK!o*npF3$hZr=X)dNu9-bR;O6c6n=YscRua%Dh>~f!XDg1&`NqyqIZ-G zxPdK7=oWkUJo0RxI*X~Gc4%3+!{@C;fEXP6%ZIX?{!NvYmFDru$;rM(aJ`fUq)E8q zZ_UL0_9Mnuf-j^V+`2YFje<{oynISi!TPRYybdHOZtH~5X09AYRf&v;pG17jB2_W9VYYoAv7Qi9*o48o{|y*(Qf&tF<`#&3X~;?0kOgCcbnx-P4# zSfK*YmyH{*!9E)Iy`;`6eV|1|A(YYt{cBT-BW z#+Tvw?a#(c1PbxH*!Gul;+H5CIUihX1Ewmd%`hq5lR)q%ApG*oRLHYGTMilip+-Js z6F&m|KyM9R@E}?0BgUm-EUG9wx`Gcb>DwKKl!RmE#uG7D{H=93(6zFT?jBy&u6ZU6 ztnXCM+)bRkbU0?h?E`uY@Fbb|0#-nL%@~BXk4mSpLQ}qO7V<%RVHRh7oYFdh=F(x8 zGCSBz6HaT4??$-=Uw02&S`5+};t-^y?TYvBJ^32%0y*7HsJrK~OBArHs1!JxvHbCR z$j?-@K7y*5nzsZ=rg+Ptk6>jjzoTZYFgI4nmF(K9zjsRtq5#?X_7W{ZtmRT6P{1Um z>oHe1SZ87YpCQAj^QG>??kr-nm#h^Gc)K?@yG^`cZtt84B4BgZd$>Fza3;l>HGazE{cGS8ch;0k?*G|G_+z|9$_ z1FuWiSMm8Jvs2c7nGdEo28P2HtqK%e85#!qBK4MHi8GbB{Ax9Pelk7FEV0qdvT}gxmLy^P5#-R|_nN|eWA@5GmS-P6E18O-I3LMKZl>7Cou#MHj*%dV z;e8p}q#k0oFKK52P=J1qvg+%k`w?45nL1_WVVpiPk$Qp)>!c6kRTDkGIJnkBvUZDkVj{XWJFTxB9Ub0~v1oVPk`b*e zWAOYAMcrn3<)h%j8e=%FHC<6Eb=nk6pRETuUWH(Kuo$`gkwU7W)%PG1nA)ecU`)RwXrxm_t;GA_jAu45uC*F zww*k4xzjR)ldnAQ7`Sq;c=%~fe69eq^LtN~t(JL2ZGUPUwV8a)qIthQeO=*_vwSWA zH5WGv_3#4{L67X;--&@l@8j~f^L+sq^CrdH%jw|%Fw^4zmnVH-(}bru*?06cuEe)E zq$m#NuhvE=cu&qhXfXGx{g{s<%ZT-eQncWH=!*SiZ-~8A5+n=88|u!#N}7ofi{-}L zR^hahRzG}loW(E)65OcrzL<-6$be`2x*>A1f_yxD!{k4c>*Ey^c<|ztx@b6)| zL9QawzxO7>JLhX1g{zV>XS#~e>|oaHe?U==A{%Xp!rjIDlN`A^2)aRxpUYx|anJiW zo?qv6Ipsd^>Jlf!ikB8w8kN;&m|ZX1thD8VpZk-9-N9e(FnJTbB=_cbnEQ|gD? z-vNE(!OnOs%`Xqr*UCiR3k+CqF-02Q(ve}^JWjilT*hB8y+r@;EB@f9^gh9e|X zyd@JNKXD(~QGW6p)KjeI=c1kM+~Ha0YV_jHg=0pc58mn)mXq^k*N?y9yM0T_d?P`1 z?Q4SLql0GcOt*M~Q%US2^OA1KZOF1pT{E)24$5^)D!?t9@fwZq_~cUHY9t4HJus#n z9`gv%HxUEirwmb@8kO+6$}7;G(w~wy6#_1ORXW~LhS`aCe(yolwvyEnas{}u3D=~z zolVu{DZT@72f+>{u>!g--R!0TdS(l7kuQW`UTrFUB}MMNDNBtYf0g>A?FKtYat! zub0omfamdD+8#IFRe)C>1Pkd3E-(4%nFwEC@dYrrbUTDpGW7@AO2gm2IcN-ZA6waz zAaGuZqYu@%-gp$!nS^r)0G#u&I=5~AAp2eZVbE`lb8Txkwsovxd^CYIBo?ds(+4dof&kjATLPEP^!l(6ZmGJP)#0 zT&k>}x~1W5SJYW7n7^Spmf<}o9{O^0MtB?GsVL=4*$lF0Wr&%In!35Ww?hy;9J)3g zj-ty*73Z6z3pUOi#!Apa%Dxh<%17i6VP4n%5i^SkhG zRY*_WUok97{2Ch&MF8q7O5Q=;z9q*bpLIM?+2v3TRDub=q6|G?tNO;b3tsKwK(Dt{ zF>$l!-@!&uFd%nuFJvRS${}xkh)Hq!^_c7R&QNy^%bD$<>6$3w)=48DL+P_UPUsa| zMl{h-vnH9ZF7L^cymY;hlsQvxbxHO8jU-Wvmu69eHYw4PCu{d-KkmrY69wn3zw8J zb~h%L%40_U%v6w4p{NKQV=Y39G3Kx?U|E|vxxAsHZij0yrC5dVYuDq0V4laC`}Pox z%vf@(BD2T+7jcj6HPC6ttTtovkU)gn{2|s!_yB~30)nDO`1&FYg09mdb_EWA>2AcM z%nQe!;wji8AbMXRul&XjZ@0SoS+2Ji0Z#Ete0uEHp9uD^AP8~V1XbcZDqKyU2rtB& z=%e-(YZv5MT5Gw5dL3JOR!Qz~3dK)=@832L`Egyub#XoT15qURYcOdL9yiY6E=cY$ z6ZM>bUMLfH%+w*E+)9~MZC8C^<41kV3;j9YjfCXh`VV_$NwM zGSfwb#wq$`H@Ey)n+wNS7s3);63B;BUp|T?Y!wLh0#h@Z&+qc68!NI2 zYk58sUhwMf8cbTqIn&T(XLFQz2QRG3W2-vd*lYKusnr=val1iUhvTV_HESJr!|t znzRbYb6MF#;|4e?gXa`*%)taJbE3XCsltsqjO!FhKCnr{6K6dZ#$$G-Nwx}&JhdJN zlO_%c6sNL3+DFvP9q=!|U{X)CdD}|4Af2SIa~U|StO_*RO4HTlR;3jbu1ARxmNLy) z!*qg~thBPl3T_1BF!R53X{pZJGv85Vo3L%x;@op$FWnvC$Xj2JKMIZHu;gEIG4|16 z3G)Io<)Y)qcr>5VMGO*i7e>o=$HL5$2vGwn&9QrkX99h@gFrGj1Lpp|QEv3o%-s(Y z`92;%rIN6pf@O2?xTAjRh{VS4nskUqdlxNFNx0DF#e^O@UD|#~qYDYB{d;I;m94`b z6G-`_VD(Y5N;tfRZ)7IYeoUJxYbJPVh8D$oUeR$JGYi3Kcmf_=i9o9gYcG?ACwEZ& zR^aSp!z3Ntu6^1UI#&DoKTNUw-;k*iaRclc42}*9YGE#!DI9$t#bJhZvJ{Ixx}b3w zq}<)KBA7#wJSAryJl`@b zG7&|nb|PtLo31A7nnaW};wWcvhiRd&%kWbV(FaA9tnhk7{i%IG$yF|p71VpOPa;Z) z9Q?SPW6CLRzR{5S2eoyXPR(TS(i9Lk2(t+#z`t2dar$0aSdSV}g7uca${;&F3ViaQ zuaK$V|De$KxNoR1wzIh=QahQH$o(ik#i#ht8|Gf}^sDI>dVUry$w@Pk6^o1GX$^J| zmCoKDHg$dncCZGqt=2w}-@t@;NT=kOG8NUtv5gz*^!$#kKQ+S8%+FpP>+~>LtV@L?l22wE~nx|l&#`XjvEI;jjE!= zvoP7O#zsMek@#L#h4$~k{BSBBp|n;nfRNnxV%S?H?EOGja|zeh;~Yv_&-U)(d%$Ry z55!#kGhQFaE(U=KxK%pJVVRtyp&7D{%3;2Az)HSeNeKOz7K@jRam<%O4&`q zRZ=t_ae=4S(*dh<-HoqD#qh#dkE1FCNjYuQ+{gBsYn;}zxzWj2!q(99+i1zd>9s*a zX-=Gm=iss&Ua}bSBkjC0n?UQjUk^o%Q|kH4t?h!wgnTA*l1Hk#+_FBbT(}RTS9IhE zTuN@P?vO{xUvCtX&f4!=qB>Tqa9DD2_DNz3%LC{`C4@)11wY@pm4W}AtJ|D^q3(-L zbEh@Dm%J^BhY*@{E1b0a&hvfu*4YJ*@D;aX5U0X{EWa`5eO|Fs+dk=AS{Ty(_0F{6 z^w>NhXpsre9|yx@2#K&K1=pip?XJs3U$NClcsE5;>Vj(rn5}w&Cq&cz$UGv|m3xR9TXJcrOG0x-`>w#-~T6Mm5am64bT()iqz&e9SvBeu)*LYCdkHJ3(lnQ~iKM>%?AP zXGeYcq**hOD8|UGM^HhzhZ6|^VT2in<9@d|EsmMxxIHz;NtzjbYgl^r@KdgTlcJ$s%?atE9pTIlknD|fN zy-;Va>xMc6 z?cZbHO4rZ+dm+WEWBmTZ?|(C9&j_)EA8xH*lTJ*f66$}n-#Le;L3~Qm(p0kW@{rJaLM6ZbfA4(tE!G+pwj zf7sJMRKY(n$2j0iqWYgH<-gMjmt6DzpNl_w@vMx^3!(Gr&>QSkHj~cL)Uf6r*Ushp z%dn}@Pv}jTn5iws>X{oy^q(kqOxhTt%8o_$75a5 zU&69!iYSH!OJ5IZmg7-7k`Z5HH_WoX{b8=(L?K5l1HZvt;LHFdr#=6yww(Mtd*>6D8o~gY(Ho+IjCEcw8!bw^7N|x-0+uK+desbO%b(W#w%Pbj}^TgHMA&huR`XP{Q`c>Z3`OVVl_ z5FE`<=15fchwt>bcRMp|EF0!ckLp{y+?b-Nty!bBo}srhn1N;st|ZR$32kBtNKAG* zBA>l#mLuc&=iq|P+$GDqr(YC=(7hH_sd;`e)OHP@JXWr+@FWnAE>b1v!@+#fO>#bO zQ<9L@bbcG)_HlJ{bUnlbJi#1xaG9GMJn=KXp09OzA+nV}v_#)B?8IPBj*}M+t{?$_fyN&k3nN{K?iWwFB{({dp43w7&T}iF zHK|s+`n)WQyR^fhv}%%tIsQR+93Q$`R>H2=H!nU-Amtt01u{lYfTe!EFHe3_connq zh~FTZ+}Y5=?oCJ(V71tsfiMIGOdK7m*;j#)THQTnPL5Vah7#%x=xP^TdwKgRlF{Bk zRt3$aXjQ@asaH^nyl^aZ?CR%m18Q>A4JvMv{G66tr>M_2CEBsNBlz6!>Z}JyBypvM zP2)P(7OS0&URv{%4X==Oq&tVMecjY&i+b&!EbUsnsX$!k9zG%vWNBG@q`An$Z=dY3 z_rTEY^Aq`#x{1ueMwkGW>q0O55q~Q4g+g18ZK@|nN zu@9m3o)RU!x$)#{(dH`f7bI9WMZSi6j%{HwXDN%dR^|sK;S`O0N$U@7sl`oBt3|_= zY2Kri7xRaY`I1V>NM>!-j~GZC*e;Vhfs{V7}3xHzeZA4L$xZJt(Qd~|*vePR7_ z&?dBF>j4ADWYZRu4!xP!Nhk;3+}PIGBLuU>hf3o`sa zVL=J(%>?yr26}TX3ecHcJAsW~#^ACqHqfbst+KEb8dqJduGmgP&2vLSCMaEMfUk~M zXZ_wcq{z#dKq}Q}?XH8x;!$tQj>AoTV~@S3OOgGpylcHQbz@b>lV$mVQP;oej3y-J zbR_8;XB+UUHR0RnHSG!Tm$wT(9Z4^;%%cirQ1Z>|J1m}b1 zFB5GSN-H&egONc>@PjaZ930^6OJ2OYB>e=-0VV32EJCZ0Ck83bw$fT_ELW2>r{twK zm*D~WMAX;23Fb_wo;LL&v=8?vUw@S9XT6Izz;$% zD$vHH*m!@=sCT&01IrpHa`G@%>lo=(OKrO{qu*4TeI{r984Sbz0^E?0hL7;>R!x2t zM~KsWm-X;%x;T8vmjAP=`ZwkQaye=KeQv~F^+#0ycU|@aaH-z@p)LN*u796I|4G#K ztiM#}hSAwRVjBxkKO4;y>nBW&U$$!TvIUaV**!-mLBli7W#hGl{6~wQIMF%XcFr9jEqSna%A2V>!W5Wb58T*40Lvj`ewLn0T(K=Iw@SL}M1DCR_b5`4u<_(#87;$?t8j;A zqzkJZGwd%Ko}ygwqH2U<@EZ%t9`;YdW|O6m%4~wOQ2teL1fV+zWbxe=Jr%4Gm|34+ z&&DTNQMPx}m0evb^FI4Ie|(B)4S1QHdra{S-*YSUQ*cOq~4US*X80xH@FvfbfVG;ocIFc08bqj^{H>B?b?;wulQeXCH3>Dx?VZOrlVX|U_F?VdrDTPKjTvHt`q}X za5Jk;1P9jX@MB}>@1$5+7vlANg?S=?8FlLR9V*y4rh4S823Ntn71VO;>6xSs^D5zz z^^V&PT_0lQ^otK_BC5)NBoqQX?iAY`2|--f!D2{)@ns*U000zi%}4rd*EYvh`XDxY z3PAIRoITJPRba770{&R+Me1PJMFDcqOpS6O+1$Ck*ceBXeroDggo@#(d-%;c|JiiG~Vf z2%WY07_Y6y)kbv2P*?uY_`rt`Ji*vEoXxnmH$w?91hq%vx_xb&m+5uBsJTO`fAwIhZ(Fsh%nv9;%REsMrpVU!$#RCn>F z@98OSQIHCg)?O|vuVB7q8u*=cBg>Npoth)1fT$AR-I+B8NXy4;g(QJxd7od{0kvXp zKc+Jl@ z|BlouyPEHQwLv7QYwK{6z23v^c@e{`mwgFfqk)(CMSn-~3)ubx#vp>rlpH-M;KmKm z&k*Z4@(-XIw-fiDHorc~+S@bbn5RnIbu{pIXY3WgjYXc?6LICOkyeqhYpm!~pmE_V zKf{hCEUJbH^}Wv)nm~Pp!@_oa1!~-}ly6Snj<0x+KV^7sV+ODe5xJj8<;HKztSdRU zB%SyP6C8{sKDA1S?1~Z?<~cTd^_Re!?Zi&#(SQugh9EM{g2NU~>%!dJY8@z$BmMDe z6Q~6z*LMFjZ*Aigl-u@#x8#!WGqBJ8#f^JM&PlT%BfT=m1?N-9Z#?&>3OD)$e7Pyl z{Xjj~ap1Wml`+yUgz`C2>61|9oQpY99f_DI8}ZX zTvaeO4f#->Zs;m6PU7HH2z#+qdL$jo;|48uke0J{seX|SdG7(0?MgZ_cS~N%1`FEA z@6)axHL-NnP~ue8=pD#gaUtTizgW2{C9vMv$9&G_QUh6SRl8ne;2J6r+sIBbGaxQhIZlVdjE!p+`eg6H?z4fuxXxAZ>c`OpAaedJpOcX<|GeErva z7?btyq5mlx=2%#&NjTH6RDN~2t%zz%dS?8=9OaRb28TNR-CbceMx-96CJcA-K=7$r zp)zmG_pUtyQMMG+9wEuhmKqzE-;TQ07S+gq&s59ES1c}yX}T+ZYn(cRWX+w2d%Lmk z_uf9oOHoTmOP=}(wgp&sN0HF?%&&kvH(T>rXfqH^?Y`oAS~>!s%3y*kJBFKuFM zE2cKFGyD(d3{A2PAJ*3}Q}Ml5KV9@teZQ$JtHdCcv~n(OOW!uAlI-d>4vu~;*Z9XL zP-HC~^Rtbe=!{OYNvu#iEB<`G7x`hLG*g^%}Fs@w+tEtt#q<{^Tw?O9lS)-cjGb372`F@0UO(?hAF)E z)(h3PMfO=df(POI!%NY~=g`8%$L1P7ObL>DzPRfq|MV@23O?Mu$IGOh^_B`cO zb!K`&^f2RKl_9uihul4Wn_J7FraGVR6w9N_A1A)7P;j5#N03))B@Y57mW0QaE4?u@ zT-H_Vq}iQ?_I)NWI0SF+Y7OaD2vfqf$pX*agJnZ#5)|X1Ke?H$i0bveKmDc1>}iee zdF2GI3V%kVtXq=y%XbHlCe_;|!OnE9P!48>yHar3U-8#1dgSTJwku$h0xWkVn`bjK{4xPdH#Ma6 zWzIi&>+lX~K6HSaqQ^ciEG?|8EL5~#FJyH=wRI*hG!ehnxItxXMdlQ2mU6{*g4=B4 zdLw$6L5$y2U=!OH@UWhWSDG!TUvm(%toy6=q@gl?xyDZOwd@to0Ow7_mcJdeuu|)| z3!7XKhK(-v={|L#`X1s`P2DBbfZst`8uB)K^9r0-PXQ|VLZP!F;llU-5dXvXc@TUG zf8+gC=9U&qp{3*^-a-vO2gcc_jtlgtw*D;7v+2!D*~z?a)XzA5V?PD^ zD(^J$<*l{eCHsxDAVIn?P-o>MMxmbDvYwS@ujA$Q_qRj*RUaRH)OzCywI8%sj|*Aq zO`@0A{=USC7LelfX$E7Z#=kjsFNZno_~w-KWIhTkW{|6lwk+3;Ul{KFI1g*xgwq}d zEyw=!%2~`J!D8X-Z9zh?Q4+-b#a<4{Wb16u$xfFmxfOD_sqz-U?8ad+(PL}qzQqOGH z*l8hDyQ8IJvdq94J6;nEBMm@q{+JrqvgXGT(oUFonK4BEx@?N>YKm8isbv*j0`j*p zcx$W9$N}3a$N0|`7ho|douSP`!jxbYSbchb9OgGIvDDn3M2xu}H*8MDZFBV5;*2{tDpP0L=UZ%onUs*J zGrPDS@sh01s54X6U+tj7?rG$MF$%{=m%>OYf)Y$vs!pnruf;t4G8lzs9%e5Ce3}iW zj7l0fvx$~%>@@OI%G9Trhh;3l=u&kxjeKU3^)2=MD|`;h@N>~~w{YEpfL07O31HGm zeaZTOwQ_3*PfTB0sitYbVOa%rF$s<%ypbf83I4!DHG3MexP)FK-^ZW?qQNW}j0$sPmxaD@p7)VhQI%@HaglV1HGw=BI!JQjQg#)Y zQ=Yu}CSv`(lj7w}CS>==mPWp389-|;sAp0##H_mJ4VE)eZ!(A)q>KE0eKl2BI`fpp zw4|_DU6XJ6?nPV#I<3gXVC_h~cK+SG$y3j5q<-=ICDY^(uYC6TX=vrKE*RQRx%sXP zz+Efa@Aq0izJms;_Dq#gHfE1!GR{TL;v`6;n9n^(@+^*v`|I5DTVU>ikH$^;kc2A;irT%?B1eo1X1Y>X45zM9 z6n^FyU}*t{VsZQjLUa$Z@|Ufw!N-F^1p2C+HD^4h8N=dyIwmD&0hPyD=cm#yI(8ty@8FauXEnlT5H2j&#PYd&7{*&t9nE>+jvSGVZWVepuv z#SU?uG~6{G8DX4vJj$r)lPY!sTj;zb{2De9&1Nn5j{V%D%h(@u>XaA%>{IAdy<$|* z_je>rL1#nl2B*xL>FwP`Z;o6rtSH=IwbW51Y#Hb@$fxN^;Zk*&QAzR>oVynkr!MoY z|B7Y*H)#*E_uie(_4~S>fI?q9@mI2o%quXp99TG0@6Ef^8(1@*M1m=Q8OW8YpGSCm z9J~s4YM%cgfJsU^mxkTkNG9s~p^;DEe$=O)&*P4tkSsR78)dYZolUW1IR8wC@je+X zw*RG614V-zpy^b-tC(-C7~e;YLPqRmBq9o~U}H77>`|<3Hq0K6 z1i05m{nAJ{h<}J{iaD&yty=Lt8N(?hW}A4r&SJyn%PUw&J}P;&i|qOExtA z$+{7N(O96s0lYUY^CJ63I^<6DuVWQ zLMvn1k9q7L{|h<&52EDa%)j9Ke`L1*0RH8|roXuHOU(O!C@^2tl6rDYairKPVAmIY0JQQ?=n7{EvDL5)G?fo1hM%L=f@%AgZNjQ!!88H$% z90?ZzsQJXn;%Y8C!6Tcf=Sr1PR&VbJSIWBTxutenNcg!Ve}>$3-ek2{mWcd;BSp!@uK&{(xw|=@!wJ0$la@`bAl9;Lf6*E>wNqhoMbokJUqqs5oS+ zCg&1lRe0+fMx!5y_&n>%N5tt4+dRUqTIzmpW%4XaN^`yZ1rbM^i&OZ%i+?6AdBXmK zybl~v=iOb=2kfoDbZXoht9%AmkAgXw9@XA@i>1^b5QJSjc?ovEJX<< znM>Q5r7z7N2%|E2Q&8JM44(Kp0$-eP>U5uWGR}1^>fg6JX)#fXvR?TyK>F!$sQ9Kv zEVI}*-Z#1F^J}W~6EAk)!<`cobbDV|h@;mxHe=)yqpYJ8JOf8{g~|;$^zb7#{lwqy z7_L)j7rl&*;H6GL*%mR%>OT1#LKw_QvdpzjyL57xtp$CbJsk^5nx_9OlaWq~-;)lh z_r(;sF~~~a4*s@hXyNymR~4(DhoR^s=T3`PCA9j3k)HDq|Hn1Uo{2oV*s&$CrOO!s zWbX6~-e_I_{?*7$`JHNOb7{V$DOOkBB#1a77tRR;1{d`QhT>f`ozQ|x)vwofHcrYc zmAeNfC2UM0gT}&FbPN$yOEhX-Qn};RHC)OOWW*%lpvmlkJD^UAsk}t0%1ZqZOS#}{PplRoT6uZ(`#IC?{i`AGv=3!LS!GbY z#Rpcdlu3|wKX&$$ZhYv`H%6MGN4tLFTdhkr{w0gv1Y1>VRvgp;?oYrhEDxgPZV@f& zv-hM2abI;SEq-fSH2nxHrz>E5J2NV_Pj@kr+J1y zV71(w0f~C<-yO(&lwN(9CN2~jN(v%q#IBL~l`jv+IEM|cdB7_{^=a-JPcqIU;UNWm z0@B}Fq6v%Ym?QngV-E6}>kE6OB-yMIbY~vrjK%=mLq)gzwXR#Jtx9yJ>!>+_G*X;v z1luV-h80o`^}WuN?g4bUm0N}0;MBQG#zuB95I<6rO15fVS8YY7+`diB&lLH3msW;l zlTItAR{m*cH-3Z>KGQxw5L(fI(h`35`76o8!dQhdWBqV&I-d!)ZEn-3_-AVFC2fpc zRmP2S2SyUy0(Tlp39chr);jnFH|ovN-d5RQyBllS4E*(06Gw_cOW6cgYXU{@(V@_E z2>H=Vcym3YcekOPAej7QNCdNPgerVBlAr_5K1gULmOJ?@s>HeHY*BlC;O$SZLHm&B zoW0U;k3D^5&Zs$OA&c~KSBL*L+)X?AiLcYC$&_yJeoc*UG}ADEU@(k%SI& zQ&|pM#W^gLcW}ynLZeeXCB|s8B(bRB4|U0n*VZ423Tzp&&?cr6-x+Mzu2$2*d}a%o zZzs9^D*5v!o2HNPmUo;lw6$OK(ZNT5Z;(XlFuwN-lSwOn7g zC^1QcYKV0KGvlVp1h@ieKLAYYQjyHOtknbek<&xwtyIapiZJ5Ivrn2k5iB+jELy-_ zswt|Kdzmf;{H9s@#yayskL{L}tD~IEz@}d*LGb(69jh!|Ok-40ITp>G5RL z>JC)iIIti5<)#MGne_vZ6l~bs)*k>Ow)AQ9NrddU*uY`nAUO#z?F?4U?tH0UGgU%j zRKZ3TAf0}Yhxj~Nng$<1|7c3@ItHn*jIp2mDhHm1{7lBmm{K!&!v|3T2?5`i>Oloz zk?lOUK5Vi0fZS573#y(i8|IGd4g_&1A9V;0-!8z03_QveU01fbubS7TO4c(t9ADWE zJo)?}&(Z}c>29xXUo>?}6I}a5`s+$|12H#GL>ShQywQk`j(AF)<^Eoo)3APw@B^&k zrZ%Zk6>jWq+SL(yyadG44nCX)25Q8BbZ=ig7t>K8FV3_fC5}Qdc7g1|bug~2BbYL7 z*GS(BBNfE_iP~f9sHqKauO3leyArZ=BqjBwe{G3!FQC=b#YLM~@4PqFT_>65%hw0* zBz4p{*T!EMtA+DulYvLM%8N_W6E~5RD*Mqv+AItO2tv%*3fIeKJX(H8FN z!6gEBmbeA;QAW1!>a8c$^>pIh_wrw>?&5>2Zpm*VTWbMG=?^YrZ*`{d6pX0$`l^-j zP_t;}NzQ8VXESfd!Y5@u*?0H}Ei!Ec^D6{NHmuo&l}&c;Me1rR(teh@75w>51pVG1 zU(bZ`coC;kY4>omrtHy%44kX8BQdPU{XM8+%H7aYeLeRH>qqZjKr2R{MeAtj>rJA; z!|*Rd5ujX+VJwr>8Ti`Klg8=yf`y-kxChm6(0uy2CAjv*zSW_h$Y%3TChvV<+Ki&VZ1#O#A8ul*y}s)zGWQA# zZQ*Ja&kF1?%`OQEH&8}eN+lTkyp%cJ(1swEL=ML7ccJFl)C5J{u84*PfX zze^&b9LBaxVooa79P!=2{6It#d9rd0)lH#tb|F zpnJd)^X{|#)iYJxOXXKW3l1aaKQ2CM5f+70-#@5H)Yoy@m734tdOmMtUuDg+LO~8= z!Cndh&Jr|c5U%)oG|cAclhf=6i-bQ!I!c)w5GkR+m%q|!3cx)z%3MDzf)}Y?qs4yV zVMCt_VB=`(Alf6e4#>uX`K+S|$#O6em+CYK3Box!-eel^gu$xv%4c9T6j7e_G-A)? z4iB8PY*igy9ea73Zynv=;T9Ajj`OUMr3qbLQN!3UC%`gy$qMS?o)D6Dy!{fVcB36% zdO*drtRN+Xg!s^kz)H(W57H2SpMgX?Ncr|B5>x!W;V-SPlte?eHhe8Q`sWOIVe>WZ zgm)=qACZYgAnMNDd;t2JTW_NCN+3Vu=H6^9H{boH>UgIw*D(MEuQ|(#?3xgC*E)&?30?}Py7h%>A+LX(ytl&I z^%Zc2%*(qkpTno@ZS{U*G(o#$TmBp7bgk{}*}~I-EWZ-kob2_Mw%1!R5!t$v#I0&6 zC&|%EY{`?68QSs5v!{?@hl1noWA-NOYXS;9Y_+1j?F>d2VmR9A^Q^l{`_5#s>wfLt zTAGdhAcASrH>99dzgC|gDuI!0Byvy&q4{e%&k~8b{#7frjs;sOm-TqS3-<%YOiS_h zRYG=yy|Yh0S^p|CWOcw+@jtDgVW5_V-@v}D;lEyXu!P&d?`?{Mvpoi8VLCX)8>r~1 zq772;*(z4^V%X*<$ZX8nRe|X(gf0g&>DoCL96&eo?wfz4R(+vS2;ZTb5HtzAvTd9) zzFJ%v&XRPVbCM;1P~Cc6QUFm}9)mg42%YC0tfx;Aa?9AKYwqvMg+v_bS0`7a$f>SK*lm+sbGXQhj27+o44*L3mxPMkeCF<^r;LR=nL zX}<7A9~i%H<8i9-PO^r}@N9mf9;M}^uYs1;a>TcE--I8sqn&|X`F7G`>erdwlR5ab zNt$BXE}_lI;lvU?d34m#c8T{(NcjlE<7bx~>;{93#b|Y2suOAWEgdaJ0vD@J>}iMF z1>M&~aw&6MGg_&eDm^q=@dj3K6_+*yzZBz`iH_@^aG~!4C+lCN43q%jzY|G5a%b9=CI3Z4UF3PNG4^?&IvX1B&o^MS zT^J$rVNG=3R80m_ObZ)v%ebp{g|1(v&dcii00gd!mRhdYjAn~?Cg0-dYm|+07~^{q zR!N)~`tiE4C=kJH)EP`4k~J3}%_yKGi5jXdz&&Bq5?rmws`Byh^VCr=`^p)}Vh-6_ zCh_NW@L^3ivWSD4jQ0HGUaddb8<->tTK@x|WXj4?`M0vuxE59NO_rlwwy< zNcq_`&X!~1tu>nBa1S=ZQ!&u}1a4tTirRA$&P3jMcQR#b#^ZD=q7Rle6|(zL9oWyqWEUX8XNes01amnwK)5fA`w0?#<*ga2~0 zn|$8y)I(7EW6b?I%T zew9L8c->TUB8Kz>?g=Aq!y&7iAunj$>n9&GM%P;Mb&nv+C$m*5aDlgqWSs*Wp__w! z)n=M8?(EJ3-9kcA*B+j4w%s$4G@dNrOv_I3GElPj6?vF1XrqVR`@;UPZi86;xZLh5 zN4uDO6M1SI4&C|kBQf4S`$=rL5EBvuMbsOC)BPdoCmlj^sObC6kxl1vl=b91H zop+RS%}W8j%&BsT`^2eJ??05K_S(Lx(>Q1-=^Mbl!nTxtO-`Ka*{!oZ=l>p?b~*Q=&f-GN=CnCRci} zz^gtMep+Dhj4<5O!sm7JtroAY^2Mf=O2W(A&=omC{7?y(o0Kxm6@`dGQMZeA_IDT z2%rX0xf&*@O?rwtRIKDL7cPWaJo%x8=@&a(Ady1i&0OoED#vM@$oy9-o=FT2@|G3o z{^;q?^T-|ML3N&Yu(Xrn9w|@pG~4wVz-)+nkhbJh!W6X6E`u#M!(R&Z-kbd3CNA^# zUe-_2kV^krXuW6@7o=RidSLY7%}OH?{;5!8F-YT{1gUdQ;l}W6vUaZp&Ao)=qG|_( zxoM6g)`z0FSMACymP}yJhE6>)oSJ!L_eYZW@Ns_^m!Z}l+d|tF*pw#)2*l(`2!C3d zZL5-gFPp zuo1t=jTsnqHL6Fzh_#7fA z9%@z;fV?R-X`Hn4*d{hDLlTbh#4V%IjU0REa?I}Okg~2paQ3$)Xiy-uJ+{)A0?+d} zXvT8bP2cq=Zqk(}WYEA#HW3;jB2sY3bF`Jhekxf)6@0gh!U*T1oyuyTy7nR)OT zV}(j*++2z8zEOvi2q2kA8YwPR=*Fk}soBbYjH|1D1|PVq-!$b>W;wodXTriU9U2?B zlF)a^X?=a1MuW_sua~*hSAFBtR3?8|+>|8Cn0S?{Q&h8oRM9YaZItiro7z6p!CVhD zdrvC$w&8@CSNix4$z5$d76@-gJ&e#+ zH41bwnzFm!^)f?DsKUfy?lAUV{H6m@+*KH>qK76Y9Mr#kJDHw7`Sz{2?@J21y1?LG z!mM|Etg5?p;~y6&MWM>n*>lQl@)n2+eLd zQ{w(fi}*_V_oQFKmuVdSMhJAUK>VQ_3O-*^T1cNy<(~T8F5Iya(okn@S`IJd8J=|J zCr4Hgo2=)m(I0jE+AQi8EJenR*&z6PQcrvmi(-!4Uu7xhFVq^?zcVH=PSuHvlG-i{ z-iu>6DUQWsZL2Qlkemx8s(tI@H!TZPfT59Yc1<5Tizxt}IAIi4%O(WSI~$&5|3E(R zlFL{2!tw-XF17f=sx_+zy&oYkfPsM&c;2tyf(B~b#>AeiDlogosK=Kspen`lvYoGj zC4dChrRlmpBu9LM$6Te2BL#rm-C&IpEGUbh3UKmq59&>DXwM?%F}m!^Lg#QMxD6P=i$;#=bspMZL?+dj*24Sae@{Kx&!DSkb& zxy!Xelcs-(%D$PrrE$`izFaoeo0rzr!6`}8$%^&{TO1$!V*WM$!u<304=Pq(-G9qa zH9-u~u+XltEXP0*{vK~9Lw4F?lz!u$je^o%`YeHnp4IqN=%?FN+Pbk;Nruqk_aqA6`q09$14AcRLox*3-_#d8<1q5Kpw|sbOkX<=<`_*Z_<7XBLG2PhGW)YYj zoW!X7V!EU4l&(**y<`<&n`VD~f{}ptgG=BECR{uwQIA#f)BbDOp`a?Tr732a+CRGL ziB1L}bDfvfEjRTiS23^cajD%hBvoR3+@P7!jV<|kF@dRj^p`|E^Ev9oH2m_UqLeRv zzn3{uPrXOv?YB_2O`5g&`_&3S3Im^Y=w)tv#NQ9PM|TTB{UvMNzI^gQ5N zI-Ljn!Rb?fcQ<}Fscean=$b;b+=Pt1#v-*r2r$V09hbG$K9LiQM&d=|+ zeiE}&Mcv2M_SS@98{o)m)Z|MRHtcs@4$VkmNd?aK=byBXiE?=yvTgMQZIK16uJMG- zcv_dXXFaQx`y(Pzv@cf9YHE?CQp& z(rSt5h+1qRG<4J_EnJv+|FLy#au%@kviGz9BWhhgwP)5!%Sm20=?VMe&_rz8(&dxd zU(K(7h(cHmffB;*1_0cmZE-M}uXok%A0Nw+0oQgj>x?lMf1A0uJ)#Q|b-Dgj!g~pa zHIvPJ_S(y#lBG|p^4ar4Qt$U`dRtRYw2vys;|9^&Gq?@YE^uDdiSR4iM@P{eOzg;N z2X6AzJ^;lInVv=%ZY=KzY6=rsIB$`gT#0tbcQtYF_5FPNUGv!nAyJ{Kber#Wr8>&f z`L6XL7gn(mn!T0!Qhg)kQ=a9S&|eKMBX0v@HvIVOVw~#i%KkxAI>$A`$;2xUxj$(? z^=-*W(GHp)=ofIJx#j=jF$WBp2{lQpJ{t1a$;{ns+^)j(FBLURoKUiRmkJwEK* zI)ZRx_ejcVCBSXXL`P7ax8%Tij zO@1`Hkg(eem$Cx}59I|zuIqyzuNYSD`(q81x$8LVXuo6U8SfV|4I+8QJiMD^$P;9y zF>xcs_LK}{B(^NH7s0L$9L$D4Op+NqV;+kPL>L5};;%?+#zFXp!$XKR#nbTam$Zq3@#aO(fXcqL10ytWf3 z%%#{L9cWbNsbF*YSb5!-=BnBI zHFYN&+C1@DKaM-`?8Ws(;Tu|&*#DY7SV78<-);@Z)N8*Q4rLtAF70z1(~bH%+AvFp zbmHU;uIW5%i$1_w$G&B-d*wgZob%1Ig%-``^m`A-a0unQ@E& z4-}S`uu13r5z|al#?cWQJ&T2({>fxpu@iZ? z55#2OJ;ZGD;^KC-5&g2Qb-jXncd!HSu*Jd6KOOxVRpEjHp?&n9xJW$EbO}N|@zHfyZiK29OZR5XDzf7~3|8bn^_2D}JMJ4`3fs_l; z^H)QOPaD17=d^#dQZDj@u??|=U5axT-ln2Tmih;W^uO)fePa!{ns6L71XFoKA$1R9 zB#vH6mI8*!UCc)>(=^dV$`(hK+&3ykQ0<(uBd6&Xb_k+dV+>>paWs782s&D~ zf~?{+!5ykgW-~ax7a0;C~!(L?e)tygVnufW*TP(hlD|<&rVuG~mVMv86 zm!8U;Kd0T3yHZxt!J)=f4lI*SM#7ua3-^?_t&hRq%1fY^d+VFsjmH9hbD7)vp2EC6 zUEzhQ90Y{@w+5q9rYl#y@3w9Z22?tyYL|Gm8y=NG;&HP^bW)3@)u{lrFYXVrOPQy3 z!g6mBpt0XO8_eeWG$Sw3qfTJzH>=Mx4OTTW(F~T^pzG%WJhAJwSek&EUcCs5Z2NiO z)XW1-C0tGSZ=3z$S-AgUp8g*(PqTT6D~kF+;sGHYC@ND;&w{p;_!K8z(Xo*+A~xsx z4Cc$MzP9CqVSwpuou!nVB@y+!rlt{KpfKiHs}JbCuQXKFLr-)!&oRpE`wrhx+x<&1`&KPa6VZTk@6D>dJe3OHy?vAX$YFf!#>G* zJ!hc2_H2HPo+#?VXp|7B`Z$0Xxp__Y*gA3{oC7~tNQ`aqz7LsD&~uRCkg93-%pf9h zr(^+F5voI(KSJrRz<12;q^J%fSkz2oR*RVAR4yv4A?l3H)##rFZ5#|$&7HE`1a)|A zAerXK_q|z@MiF>fAOu2FRaf6G-@>_4X-I0$jDLTjA#q#x^p~CQPYm@s_jCte-oXf* z{^C_|eC8~OwffY96PU0ffK?;)eu0XVT;#KLGrWZH=ArroRtH*VAm-3!9q}|i3J_&=YqJa$k8~z59ZRd zw*>Cma4M%?#tNK2-`)a|ci3Yz`IwxxH@)UNK=VhZ^)qu+x$+bClqv7+Y$)S`c~@Wt zGf4C0POngN)^XMgu@-r=D}JC+z+Iilhe36&OCiEZZWdLK*bvNGl|n2j!kn!4*LYpJ zQ7?6_v6eGyZL4Z#{EmU${t&%7ng3GsCj_j6rZp*jrouMlnd0fN>0&q$FG9twl(%+W zUuVG1d-N-u&5J?3ko1)|AzbDvf-xy6NuNgSnK^=c>GW1>M9>{N9GZaokeib+yx6 z>`YW?o@3(znY`DC3YqUgaZvmyoP9#!C z8=~Yol+#0FeP>g{_=7bQvhbs)PF^$%9n)3X-tay;^KE>z3D%@=t1u8z+3q*RwJ6(l zpV{wQ$a&}qUO5xmNRw~ozIwSHb&C54Hu=~wkh;2;<^vy>5lJAF>e74!D)sF@(pXE- zwcPniql?gyDgec4iL@rB3{rfNo}V}bx_?4Z5dmQ;SrTlLlJJ2DS6z*bO zm#>4*-sf;p;=q-8r7@L+tbuG~2+&yxOzPAq{-N+8G<;e`#0sMFFlQb0)$PqlDANq_ zkD{zDK`$X)8VR2=@?*#3AC_ZL`|IbfP=z%B*>gX3^LB@lE%}$bdH7hv{6@1P$6QvQ z@OL3xnn~l6Azrilcd>CrIN;{&)U*%MVQ|dI%YC)1+EY5(Lr8IYmse;jXy<(AEcL$R z0QtJZl%D&usz=N`cMZTLjPNE9nvs2A|aMloDNcH8tPwPjIu}XOr!P^#$_WUjd^wB*Og|nD-^>VNcHeY)`WlqB`{1 zp|fhhfP~379%B$D-(VDZGn&nNzm`jwQ&e0On{4v_;KOcGYI?9@g8>_@EP=pD7K-h~ zsC$HJO)EwOhM0eD>EZOBKXGRXUOqP5FB5X^pfaGcu$D)_xc9^5kXz5-C#6Hm-+3&z zm?qrKXmi_cM1248x-{8%V{-oV>5FU^LNnxCrYZHt5U;z@ocv}|#;Hzh2t}26RP}dW zfdv7?7bm^Z`nROz$bGO|%>8uPnK*`v4tzEGlp?{pP2y0QRxX28#9rwV&FHaj!C|u^ zF?}Tszof-cC3TV^3$)3j!bhs+iV%Mq4Q`K1ySl$oeQ5_jb9>?2)(O0Jd8+l4 z<#af$s~6g4%73D4E97!BGb&j`P}fC2)@R!?(H0WIYWk#`Ic0Z&Z-ZQ4W!ge+4==_g zG>(jK9J5rP>X<0x;b`ld4!WRZy{!e>-|9-A4Xy=+3ro|VwUm&9kG%L(jzRWmZ#UfW zzU=Rt_3>Z3Ey)M|tvmbZ5NZ=~uVuo2h$r}hzeGiK(GXo`ih=!MIN>e!d3S5)q8Hlj zH`Ji&xsM!D#C?IaR}Iy3be1Df)N%tu`2y5tT1b09P$i$=2+11QZm-Jx+dIetYLEUX~uxt8w?V7&DJ^l~`1lXRTxsU^$8B zuERh?xoqT-zobjB+b+uiPJN|r#S1s>M?jtE;)CM;1tDNKRhC7_cHNCiZ;@}jO*!#WNU_s#GJn5YZG~Bmr_fmT_ zCwuiP0}2>e&;mAF&ioEhVhgSNe3+wnD+q<9Oa&i5Ij-swxhn~W5`%`HI=CYH`(w|j zPf&)O?%dk&b4A}*em}C=&Cg^ZWR~^$8@-sJeiEP@UN2eyLM%~fD&O^1q7Nu1=4)NF z5VFjzzuURQ-7l0~B~Wu*pvDK{kt1asgRR1J7ojf076zJGGoa-q3)fG?m1N>l!X9Q% z%juyf^3hC=X>>m`|09PcKhtn!|vN^;DoMuUVOi_t3OwrOk^+jbw=KQjkh!pcD05;65 zj$R}-AJb&=5z2fZubA^m#|rYPUQ%F@f}Y%^9JW`XaF>U2o@%qn(6v8Tz{z*IhnCb?2?Q5WMQ8Z?( zCpx8<^OZZpOSO?JgTHg;EjhAFkjT--5WlA-*-+C=);v67$E|z~CgefdU;?Y(rM3=- z)icKT=cU|x_gByD@93X=Va@VR{!-C4(TnUj>_iTQ>5tVQAaM}ei*NL^eNKGoypk4Y z$UtwEAh`b?HvEoyBoME6Xlvc=y9Vi3@}LP%b~o~UlIYvuwcE1(4m)>!1TZc`WkNYU3->rvVk z%K0v3oKz0}u77LSUoQbwdN*p1xT}4jukfBdXO|<}hFGdkDt$;9h+!!!9AQ$L&2%;_WRoflQ}K;Yb!fc4nGy7 zjk_L=+DL%yfDeQ7RQLXHeDS!&WAHav*U%LBE4bUE!BZmqH;dDNn4k?uY$|qF?0n_% znRh#detk=57o_74Y1ajP@*^#(*)m}4Z4IkT_X_HW22R@CIHPQnwW9z^mmVy9ny-50 z@E@W90zAQ-DS|%I2CLGqL;UMFDAjt%XBYQRe}7%wuc0tHJjJorpdb8bAayy=f2Sze zO4l2>l2pS5TQI^{`qy_V9UeHr?>Rxv14(WEQ&bn@)L<0|L*i(8TJod z6;&ms9xN$b|C?M8=0~=ets37-Uw;GYpP3 zWjne(5}@zA-T4(Abq3o+^^ss`0&rzw#LaCoa#?x@A7Kwy9GL*Uy3#^jc3h(i*kzQa z2lFXi%(?gVHDBjkH;W4_WuoXGg23kbLtotWBVi@|@tJz-R#t0Lc4XgTaD9s^ELHAQ z)j;ymf{#4@bs=uOYkefl;kRQT<>kkHapO8!HY5fd}A51RkyypLu0mP%19(4Yj6 zEDp4cKeUQCyk&`ljEiPH%rj;q(duI-r!~`_h+>Zh%-Q@}H)CMhMZy%t4A$Js{BfYG z618kZELvvrf>Pr5yM-xR{}p1kXHm2TA71Ox+Xq18`VC+UBy!pfyh@YzxKA*~A=*Dp z2|cS30;W`NhYcKKCXtT5&0@n+qT52zub(>i+b=JKmte zWUAK@UzpWprHDDtKWlVmTPb%79F__IXc|z8IO-1O(VBOrY5gn$qiMzCjjkfUtn%^1 z^WX(5mH};IZ_voRo)=+AeXjNv*OGQIQvS0_M{;+kg`0(t-+{Nce>TFbcIVE`t)LjU zLK}6|`YqXOD|i-nNV48oBFqe9Y0&m3L5#^f6~OivJhtn-Tb-Q|rQsgi?Jty1^=~I* zj_Q;yV1mMF{fTVR*xC%g5b>+~w^5!=FAmNClJCeC<3;}#no|tjpRhQ+h~#HT@tOnu z0=}C-P9HvF&lVqBA(Lq&GHlebGv+DG{-6QwX6oQF_3CR6%|m^0o8~>4zopRZ_%u!B zLmkJ?;!L3*@hMJ~!jMc+&Qk>GzlLd%}%|N80BDrWe_5Knj&{bWEM_^AA|qxDyhxiK85 zp;d7nTD~PjN^#G;0_y$T{8Q^Yx3sRT*Zko73Aw=$Uvfj}V*zSV1B%BCGUIj@u3Q| zl-#DyOVkjyg^pq^)h%_jeqv*yZg=}86A9JR>7X^%`Wmi=I;QP5Q&g|-Jj(Ok7Hh+T3Y=p7Wv9oR@6-L!m`-bh?n&-zLmJW!6{I|GQD8* zFYBLuoE1tZS)p^mgEu3tpR{*61izC{&)DQ11_AR)={_=>147`NtCqxT^(G(sIN3aZ z^kw14=_t}3NtGr!5ahxUR*l)C$?w+nwTq{Nd#sXlN470fCnQLB9}q%cR&qPL2?bj1 z6(RnS5%as3%7!4Mw*p)aG=K8wdf-@(e`EbHN)?! z1l#L{`Lo9*oK8=bGIdfWlVp z{-XQo6B^B5xZ5B0-_yJNL)xU#Qbm|K)K>dwrWm)p$U8HHN!30-&B4C>uCA?+m&0T|qdHnQ7N`_K5&vtvm7YSo0|LF13nkjCUb!l;H}`4{xM&8wrzPP? zaGPg_Q-kO#cp6+}%()`G$4h*s7f)Kca$@xseCr%7_13PffgLF1VP&sKORKWuD%eIz zFSl1yZMS2tE)O1i4eAMpg0RyCx?f$}JO+=gL%`9Rw@Kvv@9k#Bud3#ec0$%y-M|36 zO%nr*J! zQ{N>R-A=o27g!Vgo6R;%nN}%= zCN10y3&Bg=eI7A+xZOo9r?u=w)-x8BNKayl_?q!G4E@v)SxvmAolX<}!l=)n>F>k4 zep|Yz@}EcIhnW0Iq@+YaPaYFIta^r}g9oQkT+t53$Qg1b4e``>(4N}gKW#*pt5vy( zDakzH89(|szbCHw7qMhV!)ewPXyUW)vdT2oAZp^W+NenbPGOm~v^XwoNp$n9L9Pp~ z>;V5z$Cbt3H+nHw{w#Aq9ler%;6@5!aF|)rU=Od+-(KXo5@sbjzfHl>fsX?BdH=u8 zCd98$d)FtOq*@<CRF*nv7vIpJzYB)l zU#3nR({4S`02^n|hNL1jUQvUC9cgv&QjpZdG!l$3`U}*vX~M<0H>!&%Y7CP*^2LcA zuZuqlOawh|Y&Cl)1zP?-0byMUP2Tz2VzB(eo2Z4F)DeMP0XsWAiAyq}6eC{_u?EVc z^8AHTCj)VwJ3=(~Ur{sawW=!UonapSjS95fi~YC=bA-UgRDtO-blfql>CbqVj2kcd zvghP_`NuML_@?ZK6~p5Uq?4~xtq-aqvRry!-L5l}Se$U$E|`z{rsO*HQHET8H;-fu z5g1dr5Y+uCd1|NonfPB~@)p}WXo%2TkCGGCS9!OLj!{X0&f+{$$;My0dRC(zaQt)j z^3#d)-*WYUokU00rJqE}Kc+ta{V$%W2b!B$BP7jm9jk{N8t%=am%eF7y#Rx9pP-L2 z!8NJVamVu#)4mEfNJ7$XlZA^uu~qaGgrmDJCZli05WaR1;E)ud>dky9A1RT|-+;?q!IDnqM-^ZLQ<`JXG&5C@1&6M=;5)kmPhQI13{nQXC57ug8wwTNV;AMXf4EqethivpO_7DT z^nb^p4n`<=9*R;9Wxu_bT_Q~zZ5S?q+HJ)j5~U~v6s6x@%i0L02w83wsWEY|o%7tp zaHxH@$*;X-x?5_|wBL2y!bt2^J>jXQQ;CzCF2B@gMNL=)nRGiCp{9KFxt@7bR{+Io zXv!1bLDyU?lpWpQDaKAc%+vGs)ZSi*hDjlDMO_24iyM*jEWQ*>nlXB+-vx#!soXlm zACgg0Wx#U#`%Pi#jNrp4O_wWD3o+HE$_9dW6_w9MT@9A>N^^$+mE)i};b(oh7e#R2 zZg#sO)BVNKn;36WyKph>kiXv1-KUi6j^E+)SY0$fvHRBFxWlfS( zo87oM?7Tv4C^ZsVA{hgFL$w>i(QAL${TRK|7F~-un4l1`6k;4~&(}~wy*?8M0~-xi zMku5>3TYm7xEh$yH8QcxvkX%xq@XBdV+yu-h=z-6p9I-^VeFAc@PiGIW{nS*S@Uc2 zl6mZZA1TD=k@`A@Wd)}EKHQaln|P?fDIYqUi@IuYbu(KHtUF0hizDjo^rB;%ZMFHp3fe1HSi7Hk*C27r-Stpc@ZL+SwM-#? z`PP*VLJ==aFLptZ+yXCY zG4!WD#<#Hu;J?dctbS!(OgThS#yplV}& z)djM@b7A(1KwpaWT+dd?sGeG9aDV#$)#)+BW$;TVu{S?4>^-v?|Yx z%h*GB`Z~{s6w$_Twm|sjnk+x_rGO%kxL3`~KQzVIJ_gNNDv$OCYSMbNMzG)a z8F$gti-@`}A4U`6br;b29b^4nft5=WbQQ5d@}J%_mo)FBZ*8UF+H`OROXlk_fGA(S z2BKkV-kD^C;DXra8C^ZIBxT`Zw#*-X>2~QtGbhh^3zLCt2~LILe5Xs_6ee;;gidj6 zXXB`e`HyF{8pr8Kk!7z&AWV?qTtmBlUfG$<{L@5!CAfMyFcPX+N@J;$5CfdIgdOHe z9fk{$^`)1lQTzQ;6w}(TSvV<*hgn95(e$1>!I-jB451sM#&5((9W2;uN_bTAQMQ00 z=1XiAn{p@HAfGHJ)@vafWNg#p*1mIhLJvCBL%ce#0!11h_?((<>o%PugGG!&d-5>N z*;|<>-*YZ%xa#Vd$K-|SqFu;-9hxTaVQ=<*#G9c<*{L|<%W0GPVw)##MIAghm1(@} z$C1VpR*+t~mxKC5c>)=wqcy?v-nN`K;AuIc3POpwd) zF9yXobIFz0kb&$)U0~NouW|I?r zfbsRi43S$*+LXSMuZgrv0B~|i1zT`@9%BonVrA@h0BvKsv&~X|0H-zu3nP~|-e~b1 zFyEa;9p=`O5cjAK_m|xCGgiuCj431GEP8NsZK}<|ArI^@9CJYCi6wSz&ldSll}g5g z=C}jV#wkg)rM$aU(tpGa(o5WFat!r&Pgh3MqQZjM4Ytxrc&PZ8MR$owdOCWK74*{N z4;oC}`|zCJZYQEke~;EfYj({LVACFTd3J}F$e{g9PVHcemwpWrCpo8(xm()m_mTbc ze#o%#Se@~rra^P~{ol24pz%?CU?nWrwC9-7H}g(Mz_%lMYrMt_?X_tFoK{B<5raW9 znw&O5FZznoGl6T%p>S~pt%<^=OHU&LhItn?4nMF&f{9hmG^2b}4MO1cp0o*{P6{U< zedIjGXvo!b(VC&xD)Er0-$Hsj@_lzJ>^;$WOhrnIcztx;6;9;fLkZb)5S?8;fm%da zUbPCi3aab|WhP!8I^NAcd?6C{@p(a2x>j3A9KDBMv$_jnu__B-v4@j{`T){tv*lrE ziiMemJ)$iXL*779=2=b!8hHysqL4=2Ni7Tx=rVL}%&Pa2;c{Psm5y#)wW*9j%@sQf zCO!0Zv(pflr^lwaCZ@)+AriRplCs3>YSMKNh}_1PI6JgQr+751yiS&#kbc_~?W=l+8QTTnUu#%#eDtuNna`P<8_Bwf<6A;}Lj^-B&uI+je=!RF@)!H;I6~bNv`HHjVN!;3idrLBsx1anR8%ZmDpUX*qQ*I75ieUNpR=gs)JT zH70G+4EdF0j=MF+T}VDmc<@;XJ>qhr!4RM=N5Ng zoW6rU{~ow3GXn$5M6MrQENoyiLK2y3S3l&73$2UTn|mxAuWcPm;LM-EA=qm(gS+ti zL4j5ICw$`Z8HwRz>nAuN6OthOvdf_Pf7_uX{1Ad#Iam`ql`_}*{q^7wXt<#)V_@42 z9b0Oc?>Lsj&3-9uafUTm^;2q2{Ujd?-U1r}-H`y6LhgqlZ5Xt+?RJ~>`iE3|XOePS zQKUl^DQ@NZQ4A92#WTL&Qzh(Zoa0E`z zZajhrO*lUD?Hw+)^gZ2bTOf4`v@G`~8lYi{+IwZLR##e6Q$sA#c&fELSCpHss9)+6 zp1@+vpPuR)PwVp4@!PR=cwC_&KLgk!@Q`$WWUJ(=na8y*drzI^&Y6#%Q`MynwGWAl zx>g0>ziN^{zceu;R8cl_rO3q;LM~WiDE+BBQ)y;9SqUW>B-u2W-?#pSde`d`0Obm)9GXaSAp@aCYm77S~T5RPM{C@$qfpidm^y^1WrgI^9~5SsC+};r`6V ztUVm#gc7YQQn8@3>ab?YGXQ9$2XI5O8Xtu$q%1zk#BFl}Y!iT^*#h6&`!@w8J*7aR zPGTUwsa@<#_)y5R<+h9Kp1*6WTO=Wq3IbCl$9!*!C~uXobo#iTJhz*u`QKASW#BU5 z|8EGXM(r%9oZkFaAYM?28rNC*d6)H8<&(SYn&iRcqRjs@A!Td33lA@UE__g)+G{kK{X%S%6h3 z4hu_EcTzy^D)k>*UEbK1du=rAQgi?Q+**ReouiewDnbd8#;cqf4|~loF0o72FNS@6 zgcgIpHd%w4Hbzf}U#w5LHg@Q=I5pAGsYXa6%$`5LuZpnj&rAJzEE7|r($jMGudY`4R+`If-i>miCF5~l)818!=865iYHF4W#HgI zo)T(7sM0jbj1jv0efCzuU0y=hjIgwvC(fplSU&LiH&kJUZT^}z&+nXye&1ecWiAElg91j zGG5*b4}6|m4tz)K$~M@cabal!eCoB$^?|9bo?Knm>q^3jloI%YjBY$Z=LU_8$ZLLpqT zcWPR0ZYkZNJE-Q9I!?4NPUAeI?S-z-UcmMW;F-~)QDtJ|+Y;3)s+wfW^Cp(1I(9$x zM$`aXRGXn1OoJ`51w)|NwZ8q$Hm~-%cbX=G^wj#ZaNRW4QsD%A6^5(16zMKq2fdox zWWBeL5LTANtFE>bl2TNt1j&^(VlgUV>dje$h|%^+wonNtm=em8$~BClzdOfalfF$P zPQFc?YyiXu(~7$Y6L^aeOb}}G$E=zvv9hES5&rAr%1=ZN|IYF0gHw|7!FbRYz9!z61Fd~f^7VOW=g~T3PA4Ci^k&ODn1G8{xh(Jw* z2l+J>L>AL~_v57~_-!q{nA^oFp?fd^p+gj9W3`xc0&#C3CP=N7_tN0Gn_M(*0WnAz zY=tb2=ZBM6bPCk3b{|KA{aoO5rciS4f#Bna8x;+>=!0us=x#~sQolrQw{Mvkl|9Iv z=O^?5HbGH8l93loX!+1BDwhRAn=8OHaTObW{;-wr(0`;JQ&a*&L8vOXrSopjLXA-) zJeCq8nBA(F6n%XcUGySVHDp|tDp_&EV=UVtGS;fxc-K;C^tI1!(E_Hjas_KdoQ&RC z?+C&!2xTo{>jG6SsJL^l8KbkZ6jtPaKKgi+z~>>|w=)BVmd5wH@^AukcoO%OJHeml z_N?4^Ld9!21oBCiDRIHyPLw?l(&_8Z-xA{1f7vlm>6^sB#63zZ0k>FmH%ucnZ$vp} z=5%7?7~&v4I?Y`j(dx;@ZtT+u&V;3TpS;8oZ66I&wZ0Dp{AOJ~c_h4*93k0S=;w7L z2egTOSIf!P1@P!!mh?Ad cfJC7w$#W{EB~2eOLsW9ll%Ezoe&P4O0C~$;Hvj+t literal 0 HcmV?d00001 diff --git a/bedbugs.zsh-theme b/bedbugs.zsh-theme new file mode 100644 index 0000000..dd6eb5f --- /dev/null +++ b/bedbugs.zsh-theme @@ -0,0 +1,129 @@ +# ZSH 'Bedbugs' Theme + +PLUSMINUS="\u00b1" +BRANCH="\ue0a0" +DETACHED="\u27a6" +SIGIL="\u25b6" +LIGHTNING="\u26a1" + +### Segment drawing +# A few utility functions to make it easy and re-usable to draw segmented prompts + +# Begin a segment +# Takes two arguments, background and foreground. Both can be omitted, +# rendering default background/foreground. +prompt_segment() { + local bg fg + [[ -n $1 ]] && bg="%K{$1}" || bg="%k" + [[ -n $2 ]] && fg="%F{$2}" || fg="%f" + + print -n "%{$bg%}%{$fg%}" + + [[ -n $3 ]] && print -n " $3 " +} + +# End the prompt, indicate status of last run command and root user +prompt_sigil() { + local color='green' + local sigil=$SIGIL + + [[ $RETVAL -ne 0 ]] && color='red' + [[ $UID -eq 0 ]] && sigil=$LIGHTNING + + prompt_segment none $color $sigil + print -n "%{%f%}" +} + +# Context: user@hostname (who am I and where am I) +prompt_whoami() { + prompt_segment black default "%(!.%{%F{yellow}%}.)%n@%m" +} + +# Git: branch/detached head, dirty status +prompt_git() { + local color ref + + stashes=$(git stash list 2> /dev/null | wc -l) + is_dirty() { + test -n "$(git status --porcelain --ignore-submodules)" + } + + ref="$vcs_info_msg_0_" + if [[ -n "$ref" ]]; then + if is_dirty; then + color=yellow + ref="${ref} $PLUSMINUS" + else + color=green + ref="${ref}" + fi + if [[ "${ref/.../}" == "$ref" ]]; then + ref="$BRANCH $ref" + else + ref="$DETACHED ${ref/.../}" + fi + + prompt_segment $color black $ref + [[ $stashes -ne 0 ]] && prompt_segment cyan black "💼: $stashes" + fi +} + +# Pwd: present working directory +prompt_pwd() { + prompt_segment blue black '%~' +} + +# Virtualenv: current working virtualenv +prompt_virtualenv() { + local virtualenv_path="$VIRTUAL_ENV" + if [[ -n $virtualenv_path && -n $VIRTUAL_ENV_DISABLE_PROMPT ]]; then + prompt_segment blue black "VENV: `basename $virtualenv_path`" + fi +} + +# Jobs: current count of running jobs +prompt_jobs() { + local jobs=$(jobs -l | wc -l) + [[ $jobs -gt 0 ]] && prompt_segment magenta white "Jobs: $jobs" +} + +## Main prompt +build_prompt() { + RETVAL=$? + + # Start with a new line, this helps separate command + # output from prompt + print + + prompt_whoami + prompt_jobs + prompt_pwd + + # Start 2nd line + print + + prompt_virtualenv + prompt_git + prompt_sigil +} + +theme_precmd() { + vcs_info + PROMPT='%{%f%b%k%}$(build_prompt)' +} + +theme_setup() { + autoload -Uz add-zsh-hook + autoload -Uz vcs_info + + prompt_opts=(cr subst percent) + + add-zsh-hook precmd theme_precmd + + zstyle ':vcs_info:*' enable git + zstyle ':vcs_info:*' check-for-changes false + zstyle ':vcs_info:git*' formats '%b' + zstyle ':vcs_info:git*' actionformats '%b (%a)' +} + +theme_setup "$@"