From f483e2a850e363b848fd09d4521266fdc608e41a Mon Sep 17 00:00:00 2001 From: vicanso Date: Wed, 29 Jun 2022 20:15:58 +0800 Subject: [PATCH] feat: support text align for table cell --- assets/go-table.png | Bin 37028 -> 30679 bytes examples/table/main.go | 98 ++++++++++++++++++++++++++++++----------- painter.go | 14 +++++- table.go | 24 +++++++--- 4 files changed, 101 insertions(+), 35 deletions(-) diff --git a/assets/go-table.png b/assets/go-table.png index b05a3d02eac00825c3125810803aab41e4d70a4e..88ec49c43ae25b60269ad5800bc06154d491c194 100644 GIT binary patch literal 30679 zcmZ^~WmFtN_wEY>2ni5^2LizfKDY!4t|7R~1PJcIZE$yYcemg&xVu|$*TDxE;LiKr z|2p@cb=K(*GgH;wHEUJZ-o5v4KNYI@QwsAv@p}XW1WXxeab*OAHw*{}h-zp^@SbSl zh)M(mmn<1^5mi^j(}h}i9|BSh%v@|J&oW>0JwjJ32od3s5Wxrjl>^JuET8%*!CrRb(Q856eI)bwc$=2p04!-{^%PjDclJ}yKX6b>Th%K zHvUcQVdr|9e4;Q@C(AOuh5;%(NEk`FKC-N?|IR`a{WI!mt{Q{Lpxw8!M=QOq8$jiP zUA&!LEtqsQn;jh^`7)oi66EYQHpJ=dD7r8^l+a&@Z~g%T5u8=H{NOl6&$f9$A^+AZDed+&Kdc`=t)EUZE$e1V;m}&t}rnYv`Lt? zQ@!yNK6=8R-JzwWH~W&h92k^THM#M)RQHG~88&kKtrdtK*PExVJ-@WH(($+b*b=?6 z%yJx1wT1sG&l)*Bv_vfsDLd4YAaCsXXMoU~v*~-VzgX`MXImCHu%4KWT#Bw)T~YZ> zc$15Bbyq^|nM0>|nbcsh=houO3*wBvruuz{ON)zMZ zResM5*tW&m;~TMj{pua85_7X^%hQyUv|D0rJ)HwRnncX@lfy&aP5RG7uy1^P#--|W zoK&kJ<<%c4GZGT#Z!`Z1_Cfd3qitYFMYT#30DbQ++Lfub!l0_H*mtgvCy~W4@jJ_J z2m8r~p0{`LF9d;iTeJ69$0j$QZ7iupf;&Ag4h)=~|5A=r<`qfkTjSwD6H_%_RwIj- zY6rg-d2JYX3CmG#?vrNl{tdjM5JAnIQTq!RH`0>)2V zdfnpQ5QvJ!6Apj=?)k!!exGdXb-LjuG0)k(I8gbk_!hAk)OlxSX&LM^+WL6yoH9G& zhtU=Cmf{_g>Qtj4_Ga>*hjXLm1)ipw1Qku0c>mb);<1H(rkJw}FEKLk&8D|YPc_d) zXGjJZ^yFstTQ|vv5SB;Y^$BaAFexf3x?e?6eI6~z>uKvG(gT~EyY>P6dLyrnNYF4| zdA3wQlIE!vWcEiD1+7jKdM#{)VZ4|4mem+OZFw`Fby~5aqm~q3+i`@f?HC`Pd?Lj`v!XWY(L>;(X8NY1~FM;ovmMSxC-6ea6256z@i z83dWnCg&?C-@3n$Ju}twKt>Y-?|n+c#*iE+=!AlqjR~v`gkEq`;6r1rt1kCo5Z9xx9FvkoHmkI|U)Qd%L^hX)S?j0t@@o$CfAQS^o9``jvhK zEqI{R0aUE%-cgOKb0~XIqkACxbZ<-A7`gO-%}pNhRpwp=>|lOAlVc474Cl9BBUQTET`7Y z3ce5w#l!%0+g6m$**9#S*b_LD8fnHzW5guXq;RTp1%{<0heG##r)%ji(NyjOfto$8 zSGrZPqFXcca+-{Y;Rhx{I3Wy9)OWT$0Lsjxhi8+J#jmoHEJ`QZUMj_?OS$ja9L*zM z!xzbV1%nK<%m_{_@IJwMPUOFrphE+zBu~{8Wu9_=x(BarC7YjaO}~=~#y|iW$mD{q zMG~$bdSyaxsMIy&xHUmHg@I{eDOW z3XQRwDH^_hlpN0JwQ)CqjBX}hh2}xRg{_V&EXL;v_d7uMdWr?0c_cik@~)v5U~D03Z(L)XHU?*&7W7B0z*0QJNWB zEhZhTM_D2hS>N#34dDcDWC9B|llrUr@}EWCD#WG_v@GNR^R4RF|UM=WEr$? zzqEn2v*Wq}p+M>=si+ZM1iUZlRelT}+?yDyp}c+dSEHDq7FDlM1Obl+eNeyF1U*(0 znZzs!QKkUTU3dk(!ntbt?xej$6g7nsSQ=^!L8t5+dtILA=zd7-P@r8I_Vb1!$H4s7YhW&tJKd>Z>Zd{hLJ&0xc)kp8!274vJsV~ZY}uJ z#d$s?GEoXd80zgSpsel@sKt&`2eEYl5pa3f5AvI7&jmxN@bw7Uorn^DI7}}YlCweg zly3tKmF}?RB9XdH3+b!=Y$51yBT95aEKO`gwq>N@3TEUF zgfeMof1R9Dq-bwyswO7*gDFqGq1+_3=Y)0+HcjGVM_bj&0O| z9E)tu;cXeR2W=sLi+W2($H^W28y8;GoKSX$(IG-HZ+aMxT%|b6Ann234JLN_9vR4< z!Pv>Cb{7Ol_!m4W_)VOh%GT8Q+5Pz)gF>}%f*HoIR1&vKOy7&Ccsmy+0)a;ztC(yK0elgUJEpel*Zu?_tg9+a~Aj=YyxH z4=4!aU<8C1c+7r$OE?P{1vimQ!($Y}%K zjddl~k-y)0B@OYxp{7&=pcI6l#Ym%t=3!FC;Q0ts=HZbCNUMHCcJbyra}_kcIA8U+ z?>GP@o@cmCq^71i?DLy~+IKE5m7cyVt*jV!;^N|_g>UWd2KZuPV3@H)1P8wz7k6}W zs-@M?&`4tw=6I~lBYK0*$jDd$nVE?*Vb#~y&&tkjaIvznF?4iyU&#ZKeIg@kTDD3| zOicTLhll6t=H}$$V)>JbimLYx-Q3)Ke0+R#bo7-qN|RSWz{=WMURqjOR@TDSwzzb8 zYkNDdqJoKqg@u8ktfqppt5Q;VgmtEOi$ z82svR(bMC1^QZoB_Vp7sbEJ*h^puRrC_vG9A`}^p~$UQOZ@+YLhq)=XJ z&7-3uG=6^mNLE>2*(8lPC$&yWAIj6i!yI$EXT!G-#=m}%d#->G@(jGaH-_JdHs+8A z1_m0Ud5VDl{P_bFk&_#J%>&}(gnZ3#CVz8xeO+Evb*K8MrmEWa<6wWE>2dFz>mnos zjjxuCjqT4@R1}oV%*<37u=L#gr}g!968GV+g-w6|s(yc_jMBOp#Xlm%2goesqM!2M zGT2qaWfmH8J4vTu`)_w@I|LPOhR=NA;bm3~AixU!fAGzB#a zTUeB}A75#F;J`P&K1xQ|aB*erj=q@%v@C~8cxv9r0iG$_qaq_~dGPV^y}Z0sKYX7B z#DSvF+nU?j%H4~LibC4ozI|&)|3O|%?9F6{`(d(=GGbg`pSV+SF6OznqhsG{iR}6P z-JPqb$oxK<~GS$^JV3LB_S zM`~?t4NDxL_H(H)^!5fvmo}W8p5_$%gB~JM5{r!uMw4OYPFlId*gHO&^-dif(MQ(k zAPg1+che@xXxY#wMII6I++b8^BdwGP&?%C>jQ z!A+S24i#%EJ>ol}@ctNW?pNM_lvX^Q#iy*?At5DwpjI5%vGZ*&d$!prNMZ-K@1wdoGq$l!q8IRyd5=9^9{R& zdy=ZTrn9e~QT37*+x14Q9UL6aiaFd$<;}-a7;knw z<3M_PdV$Oh%YwLO@w7^q3VoDetm!Nir+H7s5@5ldOT3Ub&!nFX(Y%L+8av#si*#ip z9Q$bnVhFdPA)t3wQ5#@yU?+PKaB2#OuK@e?1I*qlupFchW4wG3dd7izxi*p%Fk-;_ zJv+HHakki|;hqh-xG^vgWi}-iq|^}(A7Jw6?vDHVkP~JtjVdI9+OPXIK>ab%uE#$v zuPZT|W0iA&an8I42+vncmLVPWC=hzms;cr6Cc$&o`WVF;UHoq_X~y}LP9 zf_U9tup}HAiW^{iO+hVC1hgVYcIOqh>&y_I4Ab@c<>uy=0=|K<{-*wg&t?|C!{ZDq z4Qfm2jVAk^wO+=1gwh?OkS(;_!I5CPff?hjl{&Z)Z3f!hW3T#aT8LY;7 zS__ldUb1QEhey}X0K$7>fQJc#ml7W4w?|{k>(TTEZrEc5+kfZ;xX^$#+neovtLc8 z-ggT-wr0WyfA*|*?Ywc?OYy@)--^9P0KYB>%hCKoh?0!O9`WfEJ{grqbnh=DwAcS8 zd?7t}E8-_!<8NoElp`hW%6_qJh%sg%w7>$BO`{Xiem0%&qZzyz6%OJk$(0wr;=SqV%ZdbrR$z1Cn7C_-N?QadKJF#q zCmWU1S7UIsH8<0->d*#aCUD5l0!TqmcjFSF@zkOLWLI;EkY8nNK@`t3B$`LQ%@oh? z2cKaN94La`wFV$K&U@B9u#^kGJJ2Z;c)c`?gdgq|%oh zRDTo~qB94#jJ{akI;3Hw&J}^S`-=w0SSwvF)@xf=5@jBpqPmjz#dKTPgQF?CXy(Jy9)$!aiB3UwbEbD8xEzhz=H@6jfjWzOnwpTjOA^*&Qbj_qr=i0lvOWx`i=@x60z`u))fH+ehdbs|V@sH!^OwH#ctosSCj7mnGi? zZ{Kl%68VCp+5*m&YJWqEj5K*W7_#*JsLJIdknGjsX(U)TQ zE`urtoiWQLOr%Pi2LO%|YSHwZvRmLdb`cn4R93l!#$T<(t6cciALtzk1BnLfaZdS2SNE7UNO%$Y(H4(bLUL2kSmJ4oFTNfA@ZYURZ8wbSdpxI|Ku{ zM*8+LWb<8n!4A@Wp-k`YTWUpxyLHzWw+M0RULC6pYhL^-C21qDGmZr6rXk@NgrVo< z=rCec8R{{}@`ePx)Dk63X+nd5j8uBIn=aW_ekoP3NVe1kEEXB~wh+0|SZ!*6%oMg# zLMcXVp`<50Ob*R|wy;b>!vLd>^j6DT;a!n6wmvBmA4LE~H$=wl`!YKjJpaj}-VeUFw?!m&PGR&=2qRThGF`2}9qZgH1ns`!{$$&0gC{WMZ9Q;I0);f>`Y*I! zyXxMp{9u8h;l591Qd&r8h4!KB+B0Y_;Y6FdXN}0hmkpci$LV7~E+cqM<@dbCtiVq4 z?nJHlq3_RE zjM-fp+#SCKpJR#0EVxCxB(B_YPEpSNCJehxS{3BHDTVg$sp{>YSsfFB_xT$l`aar) ziRhLZGNWK--&1#wylx#NEPt?EwJ0Y(y=+SEtG-k;`a+p%P@@hqt~Q-} zzmHRIbk|gM7rmA2Y0Z+2DIYcd$x&cb2au6OE^>~pF>~)zoc^FTX8AoL>}oz%oXA%SB6nMMk~H)? zAqyAGD{$pwZ|RthKmVZ_q88fae4tA&7d6`x*V(a zQF;)1F~Hc#j$6tO^*uQfTNeB*VRZ z#b*PG6%(g5c(gYt9M?OFq4X6!?P*w2Bjb@8mdDNgV}SixS9UW37@5^~W3-qTVE$5@ zlk|(vnJ>#ms{iq6bFuC`&w1O1OwNn>#QemPDdzXfhJnw8Mo%@$NWHk_D?=eNAx?Da zul)+}SYY%P-r)BjAWXbOWM2>mi%DI@l@NR-`GKum=9CM>#}MqLDwtfpW`yJjmi-%Q z{CKUI`MPn5uB&{!6T{yf%j{=Iv}YB>?kNQ$rZ)C-Ki4zbPFaEtTYr8=gl+p8^3zDq zrYy7dx?EabbGl9c!`)uIymTO2QP%;JI_?m`vVzu|I=_7{>>SmqZEToPHoD$Q;ozz& zv8S1qbqt5J#jx*9D|)2;w$*US31#jf0x|m%-llPr@}%yO2cr*js~;v)x8L|~br|l& z%spDWgOU9v)jdzy<`=YX+ttow3^xAj1gxXic>Ongv9>j?HW)H5E#cKIhyKUoyN}OU zpnu-&qOQb6Qwq6VNE>?xsp$o}I2q`zOG5e|f^?h;|vtS6YLDe+*c~1{^j2a9q7m|Cxt4#?Sy|r`g^?oPweDoRx zJcuROS*-Z}y2ZyURP-T>1GLpc62x~=YC13inzvayvHR`=H11n9K;xZWK437>Obfy1z3cK<(;A`GrP3}(`H=}qw zTJ;YGna_&zf9??_85a#*ZXjq62PXXMThZ;+zkP_r`t`dPy8z!AM-plSOeGLzfT3nFuDTCuF<`BqpdW{9@|Y-(R-tW7>J#e}_R+jp9F@?47dHAmuK`()eqy`2RQiV;k%cdE4CQGExq+UWb;Z6NSXhqUZxdLii6+90L58GybRfpG*FyNe(VTKsb&4pU(du zX8fOFgh7?%t7k7RcvBbm7y6jNy&HqdYH9+!larHDPkorE{`7NdZU3UQrp!2t__^H; z7BkZNmVN17j#w6;tBux{)~k&!|M{pqcq&gXJFPf7DwZ+bo*0&KF)^i)R##J-Hj|YN zlLZq{v$0*iJU+sRCRm%G#DuL@b>5)$K+lNWmt zC4T?v`=oVr(pB$nZeZ|RkLSw|CbQwxiHV6RBR!peuGi7d?pK6?fkE59DF_6z@j4m> zR2>^1C-RGo9LIT{%>F)ITwHviD)!4zQgR>}0JN~Q)Oh;J&7CA!8#%77ucFes`{~ms ztNM7Pw1RfmOG-LAw6=dQJ&{pSUpP+cYAP?mf20Mx4Wr~d3t$uDAtkP+}`%L>bCrm*fo3?>|S7H zCAoEa>gjs42xkrwIx&deamz(LQw$v4%@t1CnNq$z+6 zH?=*et2ZFsms;S|hnH6E5#>()=g)KAXG5&8M_&nf`EfB3Ff}LJYV!<0zdZ!!YqwG! zu&l&y^~n!Mw7Atj{r0a?(WtNnh#mdUdqgkJ~Z%~jTA|u(pTZs`__5Wi1 z!t#X#g1p_GLz6tQzOMfRJKku9wPx=o+*L3KmEm%~G(TVL*q7B}zg9v;1(#MHQ=ld1 zsNpF2(-84Z_!EZ5TdJ?hsR;>vMN8zwb%;keuf1K3GGNywk+HN7kb?ZGDjTjxiF_d; zp&x!%GH-Gf-lwIc)KD538GZJpb#sW3l^I2wWvzwR@1+F?e&m;ymVVS)h{6Z{1pE2> zKLno)`ZibuNn*h<{$4s_+zj8yk_`K+>;)}xOg!Wx2RU0jwYwVu&c??s#yDeRW9nC< zgAcrw&{p0kaGMk$=LJzIHjYwRAyE;HTpSw_1q~57L>O84ut9(f1he9J<&gh(z2?w5 z-os_OpW$G7r*Bz#q3vx>IU#n^%0K z@^7=@2WPz@F#dh*@GX5*)YBt9h-P?8e?J*#Asl%7hIJZj@|53XuMvP))l-cLCUG6k z<$r-a)EnVXSLtJG8?HRYeOd?+3EfIvex4847#lc06XXY zt#x?t9C&!s%leE=DAg2gkJc);m08c7N!qW=`KSn9fXg z!b#!5GJ3e?06-?K8iz}=+R!cFAIiTlpr?`YJ;N6d+nR~g4WQ>5B>XUwumiya$#{|uOE*SK3XTDrxy1v$8B#}N1rWdRItVq<;@vL-zJQ{-s%m$ z*Z{-hP;VH++gxN?2;6&y0AaEn-E782vXYwj12IM1(*C}TGUG+_FR4Htt2yIJIg@xU3K0X9sgZ;Q{*dsjt=G~F~D-Y_cmdz%v zpT8qPU!^R!XkvRiScV<-V8Qk8xMo|5;5`Yh|Mx0YWIrCh5IR{Jv7K^YyKC(G$2G8$ z$z35V6+faH2qplBtRNfh7MX?olHXFf%0bm%S*F6*`0U_B1a9XzQMIt*n^fxi%sRiV z@mxmNOLPSyDfOn#UWQnHhdSLJ&v&K{x(t+wa1CfK5~^M;w{D`vY-3ZxBreNetK2l} zJ352Ow!~dmIV*(A)mLzr297l}oJ&GDmh&&0LQ#?Ys{=#Mn0E-}xc%41HYXWCM95TK zZTRjbipzOW8qp?2;5gvfkzOi+0hGu(K$=`ipkp1uUmh0qt=gv62be;Ojs4*#B%C6o z4uQp8U&jLq*)rdTCuCYvvyVW&94LODh)HujS-ahqs1H5BT#q5PO&7NrIbU2F&1}Kw zllOhsyBjKvDqVa0C44Z3-rF*0VXoiA=K;qik`{4XCZ3b=Om%*ZEWCD+`sASVn&_5L*|=LF^B;}rHS`cYj(5&Y^gVxrJi>rRd2ymbi6OyQ zskaR6Is<^T-hYuaobHKPa*Y4_s~>$E5zNo*ZqHVmK7-EQg3|_ZN49?GU=nP%YK6A` z&1AGh#>O_okZ|&2jvIY4aOy+K;|R%e-sex`aTpc}Gwmq@9Pu=nDS6*Cg}PoWGq12H z#Q&B~;Vjr+8HIZaVl!H5ieq87?jNd*paw;4AGD#O?eLd_%KKxsoBA63t;LaNC(|fP zLm5UwNcqCs`nkw3pi^65WrCnU$e_|39~X@B3y~v(e@h2O&RALgLDEn`UH@lZv5M~t zT@u6>j^>LKgJCop9|>A5Rw<#Zh7310ZwwZ_P{0}4F5-QJdpulGK-U^x;cftpj>CAD zApc^pjS6KUj+gUH$$xCK;^7aH>Potr;-Q**M`fI4w54*#a5u`Y=`l0*wh*l1Yx;N8^q2~v3Om1n2+r`z-A(`Lf39RmzNES3z^XUYri7wq@ZTr6V0GBBEZci~-QjQiDMDN@ z*-DAk;8l)&9-Fn4O^qL1YDubt>3#9uChXvcW?D8Mb6m#6Yf{u4itu#WMQb_`oNL4# zYveo(p?op6s>JwB+9d{$qHy!S+-Ce!z{PGEtW!s7#Hj}4W?a4Z7mj5Ql1lWk?#Z?z zX4VX9Z@CPe?*lOJB&&Yid$@%bKIKIQ^$7Y~w2JB+Pq`bx5Dblc+!wiF+K)71L8eqQ zecne;%K%V6cycE|BG?!<@~r5WMZ}>;5kIPknhyL2DW{x%nEYTq%W^OZ{k-@t25&gBC0phzSh3gHeTOZhj%HkkDo!7aNxu7&vyFvEW3;EGnYmE$O7%0nM zilYg*PW1Wwfsx=hh;%gJElaL4x&xcUu0u zl~rD8W`-NgVy<{bsm$tVs<9ygSSf1Eh8;G&E8ei33{C#yB|xR{+c;S7FqoGD#5EPS zP1xdiq|8q)D928qR$B{vdJO{}{X-4Jqc6|qv0Y~ZIo*g#6Y2cSsk|p*p(1MB^i*vG zy#XWGkgE2meUXi8i2&NHo{|qaPm;9!cIA(t*WHU~IkYK8Ft%FTxFLUkrbm4|xs+Bn zA)({R&6lwG$*BT$J7gneNT~j?X|sW+Sm|_cG&wYG6l#3SsyEI3o0>52$`Vp8&m`VH zl)A0q81Y5)@7xPt*Y0=sQEu4dy*R_{7~k|Mf$U)r%u++t?;nA>KrUz^5`VYdT@D`|D9~7}sk2WIA~nvX5Czn&6dJ+?wSmPv1hby2khaX{?!U3``MUm!fX27De<2|#dO`c zRZdC4I0CR50}y~Z%-HaXzX}~{+&E^_nR?&!hpo}<(ACF&nu4qtQzoAWrX3Bejc?(7 zE#6twt((AkQV1xDL{j@}g9*aEd`AZ*M`>JME!@_qLyE!6bd*uTB+4KGKkg~VZflH< zc>I~PdH1|@#2#dE(Zpc`fN~MyA6B^feO27!##=vi8bLbrypaubNj}ZBYvE6(Y zkj(Rn3M%Z7L14XlX&7nMkzM>p3_Hf+@rf(AkYX$<4U8ecK4^QpTY^+ir;m0$bjQ1Ryq01jiq1u6HbTL_2T|NXz+h9g#S&+1POzMu^|7K zJNz#e@xRHPgh7HjpMu!n`-uIo&IElqnNnOF z`(3H{o!&w#xZUYTzHOR^>4V9+ph982)4t%rzpRV)y~VFz$jCC64>mV_)*dO#p#Rl^Y*q}TwFijhb}Ow z(=jk8A3yQK(|$@#8=IMH33n{PI@wlq|bjo!?q{cKDii@2DWf9zybR8-iT zyZd|ZY&}iQ7%g^my(i)5Ex6J-Hy19#7$JiT6}X-sMO|EYlH+1yx3u}}%r6VGvvVkh zCMIad+tNYikT9yn&;L;+g;2ti?}Y5&fB@D{A3uI1B>c))i<~WVb#h`UE*_9U!_B=g zIT+HrC$WUN8#mBq#DEE7{H$cdpI@`j{Plc$ARPXA=PC0^uUA znL^5iwKXQ9!=odaSpe=)a-Zg(fFdAm5CCfyP*YoLpu*~l_w6SbAyLYV22&nPQV9H* z9~%13QAJ4!(KIeu%rYl&U_eq+A%Xnhu75wt8bQ;^-3hU%AV!PDPF_EG(357j<-W)^MC8k7&Pso!txkVNN2? zMoD;*A0vi|g;kDy93gOJZ&6!VRmFm_b91B04Brpby~NrASN2JO`#zXMJ}89Nz-e-O zJ4v)6>O;C0|7OTtXdc4L^LuO>a!MS$D+WqwavY?O$Y=owXo$X)ILe_y1FwTynr*Lo zSO7pes%3WSvYW|y$NgA~i^*ptCDXbhD)IY^2>>T{m;{OuvqLD}Y^-)RlXVLyU=^-90=w)CxiJjXel0xPtJ~{M(so zyn}tC#Ep#&JJ{*z*z{OQ2z*U<;F&+cV4O0uYN@^KgA3-0T(> zCx}q5YrZuJ4QN~MVkBb5gVTB5)dtN1?%-N3yqiy?8@x65Fjxl58U^DVC%7t+@{q;T z@Gq-0g0Z&&mXB8)NGWgm(b^@OGTr5Y!h-{}2nTD1HgNM`iGd4pE*G-j0*7Ocgv+YJ z?FN{@8RzqYDM>JMdRIol%+=PpLdsLE9dzAxI8!7KpP#=6auP7M4h1F_V z+t`GK4jvM6J#8zU7wbRk^azAV95*NX;;rix8X0 zAE7TELxl}DjGhvhJGR+V$ur9&M^VN#ki}1SS7-0(RNt@_PXmPaaVJB*(H;@@Sxu#O z$Ip@Izhr@Gvt5ma#)JJ8W&mqu*4E=x$Jy#r*zGp8I#|WPtv1xmgNEGUT$tJm3W-=*CBWn<3&KthTI%OC24yBQ9v$SyoK~- zFns>Dr0LPx0)#~tJOgkhDR8zFrvtaO>1YLu1pl%BDx%p)kUe`y_&i+7P-h$=hKV2% zL3^a(jCRBZ)9c%L%$1_hldNY9aPa^L2a|u4@9No9(b@V}-s#_QtOqA2 za_oTVKZhD`KpX*je9XQOJ-Kh-&dxN42>B)(9j#K_&qY`8=Vw3dZf8f{Oa1T5KP~g4 zA?){0lUmgea zwg+&+!&2sn6D~>qKBZ(?vo~Rb<%0=2U2nBhNN>rSZMG-1^-qS*7N#U~iS~qc`lL&@ zQ`Zl_ASa{A04>u$R!^1@iB@KiI%Be|_WVf0OuUz>w}WH%glloK*_kV}@-D`4;7F&TD;&w8%u_ zNM_3%@~r8gypV&X2|csj<51T&>?8xgZN7RvH%HIp!(2W7tZnSl74T$ZjG=;I{W_-UzJpX&;#2lTGnI>yaP5}E`!Y#P|{X2B8H>XRta%t!4A(s!& z=`*b75$}v*oKTN3TKdIQX*(-5OpDxKjD&o^B6j&S&}9(X|EW$dUNl|cZ@~|SQ}mtE z@R7&*oI`jm2LO9Cg5hw8XkZAjZ7*>NpK+*sLb^tbY;q4OaZJ(}=#P=cJ?E|KBCUaE zkLx2xzjJdn62ZEPFtz7(L@z z`dbbSbTzzLy$tVs8Uv`FT2SncS*fm(!P3x;+CHwr6=1hj9gvelnsU1lyh(x)KFl)1 zZ>POY73hC}8D{X4oHutwm_i_GZwD2v(_?0V01Q7k&NnSZ_ky zZDC|lM1O({(TH{wQj`aotP#YJUJy49Ca!M)VPuSN&+G!Y<(Qi;5286tx5(J+uz`%l z;veiq=i`#nh`p2KJ;`8Y0j+DcADkeJLYvUl2}%VoRvypoe%#TLK~KLXf_ny#v7fFc z-U&s}Q{1stUBw%sqMrKxj^JW7KePj!p9imsr*(EoR!h$$Ami3Vk)n@{7|dqQS~tFW zeuRGtrR3VBc>YB}o)Ex~#ONjrcRaCG(A$uG^vHRXzl2lO+k_AX9&dh-6CL4B0h1=P z%uyRK5U7@P`Ij+cBA}uh9US%J6K-{GU4}}v`z#Wl+7_`ky_;z2&IrN{&s(dm$_l9=Q?eCRnhU_8w5H%Qo@rJWOn+=z}$(>uag)aF37KP5~CM>EI`RsJv3*~rZV z11R9UZzcx7v{UPr$->gPY4#!NsXBtZgVXDc<=-Y>VX`Wee977aa%ytt0iWQO1`RR) zl!HWRty{Of=$}@-o6Y|CNABXTx4{TzxGfv8qxob}Tu6s;Gu>zF7C3glpRe3Ve9zV#loH>JO!FD3k~#;FWK6g% zC6D&_N%hf_e|=QaqrWsJz2pbU>qVbUoo9}1gaG56q#=^>f0xJaSC@L@c(ygZ^xrc5 z9HQziMUB_Csjw@7BwT3^vUhuj0x!+p^ZO^d1mZ1gWoTGhFDi~(c2}P|k+$)L>NjQ( zmR<~QGXLDvpzUAgyZA;)oV(5j8h1(?Yx8K6-P_++^j+2d7}r;{aNC#SIu!MHO8!M) zjwFqB&Z~Z8#}6of@e-8q@%wmP^WRb{OgHJp3JDK-J+*pmCwg*o5e+?`2R6USc{UIx!jf6Z$%g0X)i9yWkHZAC&8RTGGoFD+A= zUujAQGm2ZT1A!+YX%C;mlG!L9D}euLehA?;^Yh1ChV*KPn>^yS{8x;p$!@Z7xLU|#imRpg_#=Z#e%Fsfy9Uy*+a z7gOu70^jYK#o}|O4GT*9DV>jT6{SG62?Lu>ym=8`96n-esoa(NvMoiT>1el4gl9%x zq6jW!L^?h(dxK1AUn~B8;JxPcXiQIQ&l{`a^{O-BQ1tbV@Nt2hudqT*LHRY!>79x% z$4;;r{;5DS;o+N8u-$2X~e(_wPbymw*b0Bhj;&z;m3i54}4uAFXPznbgsz{r>(AC zEM!3J2;p;{?@*ZY7A47U8f^Zd_`_Jfheq~n8%;kkQJ8*Z=Gf{gbo4%lQ|d@LTG)GD z1$)OK?*+db(tmH+{I8{(U%-;TfBRY%UEI$KfhKj=oZbZ6Z{0uRoqvYq={fZd=f%g6 zWlCCtOah$y_gWW#FN=4n7W4j}4xvS=3)ksGnYa&MD`k6LP5v;gE?zpY@gUROZ!W%& zmhR^cCXm6QlcG!j14A&ue-1JT)!QHbGbjb%-hTI=15PjK_J{urbSS33_V}-X5f)6a z>f9G-JCMfKh#g80$UBc9%@VNgs>4mZ(MIfs)gwWsEe)0@Vujb8u+q;r{Zbg^Ap|mh z0s}uCW-9ERCa;(0KNY7zs@Pi$e~)v-~{v7yB!2&Lec(V^I*IQ$<ufaWOGL16m(1nKefS!Rw}>8Lf#&_tL;7zvA^yUv578wPt~d zx={`CAeh+AIdyhwoM;Is$No{YwQ#uUWZhix=?A5V-0@8^nV2CmPdFiq^Ts-Bp%qD>#tG$xJv4}@k zI?PrsK=ezs;tZil@?Cq>OB$J@$l?#~+7z<3i!w|Vk4`A7Q-$2{tC_MIPX;~>E}XX8 z8X}IL@p$bZ^wch!TPVZb^K`;D# z;{!hdE<@KVW~~%XV^Q~xRGH5Hnd?8*PvOmP##Y?iao)b(iJWj0bHB1pnXlsn_GVn? zwbRi%#>&T`Qz5n{?!M#HEGqc`|EZ|cMEVJG6ZCcrjuc1%8`tau-657q(<(D!D56-e zk=q3hKQ2e}84W&Zg_k`?j;yhq(MbGMIXIqiYtnz{>v1?URZ%`LvOz=es#IJ30yu-} zlE7=Q44JJERcOWK@eS7H;uW@Lwp0~|ExS!Q2a6(JG^LeF?U;j{-0S|DtQfoq$jR)Z z-BmHyz2KrM!qqk8y!89WbUytRV^!w3!Q-Fl7$Ww_QOT*PUgte758dMPe$ve1o3@1C z+%WYWX)RHbd4Bf399ro4#(Ft@g^m9dR4!L>1&8Arlr8;wg({$J(LQNt2^ij~n9619 zAJq7K&;#()*1wy#$b zNMD(ctVfVP+~!Fi&bh3jwL;IHWW2dPMuO@V6>#VnVSKMW8eNc2vN-fhsu5AUMhbDlH6>JBdE?MEy97eWWGvMN_-2*;= zFZt13mV@iSac>-bGldxrHpEmsGAK3co@;UQ)oZpp zp;chf!5g8at#b5mj`sF`MaFHWAklgeW1O2nc2MEs;PB(^#?+v3?O-6!G9zr@hF5p= z6-XvVUZTq7gQc~)XacqK{0XVfw62;(j+on!PvOvcYhT$D$3SFgNLb!z zG_;9PviTw)D+PhqsL{UZ#}cs&ul|YXf8wEEGVy-1^_k zow+{sLlpT&%6C(>LLw+f3h6J5>MVNCEcld)s?AJQF}?Pn$DA(s6Pi!H`{ZeDFp)Kf zu>t!ASv>z9B`r z&cqdA_|#I7gZP+xT$!B3?B)H<+s=MC7aamor zlPc{db~d!i<9Q>p6oTk)!bu{Yi_7ZwC`N%4RtGs@~yao?bHCo{FT!<6SL&8|k89 zACvj#I$p_d!Py;D4`G)9V!nNE==)jGh#v4mRy0V$Jzgig_?sq_v!0n2G_CDt*(5VLH z(;4KKbuz`2&W;Wv6y~Fh>P=D|?q5^M=FhgyR~A~_&cu5_tR}hW>!2{)_Zjr%>c%zs zD{X+{V1&&h$?^)a-J%C>s0QY23Y$OZd^m>f+e zC|pg`>EN`}@d5oMjVd>XY+d7-Yv06%+ZsIJ{#!qVKgPtCI!c^-D(u|8{LtU$Ryf@X zGv0q~{O1t74!!;DKf@<9(d~EtIsCtBxwa1`43W5W*Ia*TLg4lP-aR1f{(kX)Hh|;* z>)>u>;s0#>CI0~R`1hOpX9L*N-{SF~joV%Rr7?kB<}fCJF<=x@c74&S*6bEHCxm~A zN=8^fs`$<5Msa9RSS(uPaBH(feDr3d&U<%gcdE>|diP^iC<(~8x2b5ja{UWiFu_h{ z<)Yx}p5*e`{LM%ni~W={g7a0|F&U>>Y|#J{l8hVTT|6Kv*$6qTcI@VshHcqTI_}Mv z0Hss2SPY-Dr|y3S>OX&8&g<5ANXf_N{3Rg)OfQK%2^}%;cWzkk*8>-#rxOytgS}is z;&VW|_TrKX&}`pzsPVNF9j^roP3C^JPr1j7Zl>nbB{2l!@ywnqUZmPL^o#YW*eu_d z(q(4NKJZn{(E3To>CAUsTON5=<2F1P zR4@jb&w-Vh!7gmZUahfcfOC@vJ;!OK;3B3y|XZ73g$cUv5YdLND+F z1?}l!^?AiJl1K^Y1uMTQ{b#o)!s^0jtoEKFhkB&kOVj>6+J}1OQ0n{Z2kqC@O)x@?SVZyqS4s&X9`?GGCP=;F6Po%H@uuMJXwRNa z7lEiigGas-^)Z_5e(FC5SdLmZIU1$H(R@i|CjCt>ksAW9dv_)(?BkgF_3@tymMRrR zo~lY&UpSt74cZI8vAKLCxGP9!A!d8e^uf!j3ZsuJ7_T9pTyH zfg|~~){R4IJ0-K86_VJGX{`Nn0)ootJa=OKSH~%KpNUy=N?xAQB%q0M2vjx8R@}tB z5BEsANYFK_$nf`{wqGVC=AkK@9r@J1CfnuyBA31M&``ncsG!12)z4s|2c-RpeC+gw z{0UGBzkH9t^SeTC%Wb6E%*8Iek{Gf2IBk;GrT&%XLx>}&D;3Tkn5rr?7Ryo+VdIn6 zJg<=>=}bdJKtN7Gy1@#=dPtd)l=K?=9Svi=%iYL9X61Sm3J=P|`u@BYVLwotSnfRE z;MjJ#IosqB_H0;uwf+YOJ$jRgJRi%=$FKck1}dj@3|%kw70b@MpJ;RoDz{_ppl;l4q5%$@E)a2+CGw=V8r)t zs^<8BG#KF3@jm)J0svGDr8qA;`^Dp4P-#}x2yN8-}>cm^_75sH>7Pa)g z%0xJTlh=pQqD#~%weO0SmkF?Rznf_S*A+W$M8KtPj$uYystr<{SWoni8_}F{K+KY0 z%x0JB-2QSWi-Fi;`928zk{2Sqy^`eb_CWKSJ9;s#Dvq0o@p2gvrOxZV*s>OsB^t(J zUqIC2;_@6hEvY$ALTO=BEnzgvboKTCn z-;ap6-*NpLhwi>d?SM>J95qO*rqXyZR~P(yosYke!67C$hm;fYpj@bC#gBPEdPZ`Q zI_SN)|0Weis@>S|kRn~5Mo~Mre3VW&$KkZ=7v7ci2e>LD?zs6zo)`z+OkLiZ#WywR z?_yQFgFWZp?(Qn`B{V1Ef{1p~0?et+Sa7nLT9m%?7E_#JL%{+&uVwjaaNlb!M|_;| zT>f3XD{N_L>8Sp#f7BNuGPcfKsFBkQxnedey@lo0ZGLF}+4!Y#1*Sf^R)M)&R&ZHn zQxOy_goE9!nVDOtdE>n2-i7;mS_TIWrz^0ok!(KS_fcMvfIK(mcT78BS0Gf7g`0%@OXV>GEciJ~Go;Q4JwMUlurc{zPEn^0L#9tZ zw3!RGe6&EkxrqZJih40ZH!W%Kh|dh~OWE@FZ_zNaCmF9oQYkK(w5-gm`U6-|9+yL= z-6sTWqJVHmm6|nvhz||{6rhbNzKr7vNY!>Q&31$Ai!;N5(ouZ^SmKBh0`PE2tOJBj=FDfFD(9}%Vw#CO&(M7}A5@_FedtZ}H%sTW zzN%fen~%S~(NepvUZ=^k7^LzZaMl=;h(Yf7div&hgpu@59<%<)s$Ci^X*i|M zX2TNKP0z1K(3(!hj#1Q$b%T-7MTI(dl!0ctlXuk1Qff-d6ecK{`f_;-$vT<%13PVs zw+yziBV`M|XI7rOBi;FE%l14jlrVvLt($sc%6{~BRX3F2bt9Wba-jp7+vt0)cR%p& zi|6I%*GaUpbt-G)t*A(<`ikbK%aXcr-45pkrjZ)Ss>G>Mhus=U-S?^NW<%~*!5YnE zxx?vnFj7U-8Fi^r#?|=aoJ$kbYAZfT*{DmJDP2nTp;}Veg1rsn1iz)Ir_Y_7#hx{2)*3a z4wrxc%Y=@+z1qF^D`r5-GlnA(dZP*fl4oaII23uob==^3eG$Vu6eB@Ujn^}Mg1Z>^ zf(FQ$@A1D6q8kvRVz0eUV-mi6V8`caQsL$0;j;}roN#7-TOa456! zd7^qa$#TXN^1N54(V{ygk3M_aBqE*}f#<~Rj2{^jwZ^6fN#?u*_;PR;bAAz9cxpsc zenDC=S6ZcSDp%w-e|oI$H*F3vv2@2Z^dy1$DNk2dS6T->3+KfpwmEWFR!N{q@9kt^ z&43r+ckL;~G{lTmp^4gpi_X(%%Xo(-48F0NWU{V|-}qL8e~l2~uwB$otJsNgjn6W` z23~-(t@?ty6&&g-qk;}WQuTdtB>8%X5tH!pJ5SUYx-~xAjJc?-Z90kufArC;QE=P) z^T*>U)#E{WWrY3$891?EdF~ttAHpq-)SYHZuXAlmrIi|Y_ z0OD}%c|MvSENvsitl&Ev8#4Z3rhR+dxd0UKy{CJtC98pB>RY#v+XKj8umTY=uWe3< z29&Jym=hK(0y!k1(S5LD%FL8##>^#FA#sA()#@R3I$y{(JlU$bstr>)HWdeCo|LfY z)sbHnW|j^JHhL#GUKHNS6wW9lA(qVcYHs5^iQ$Nff92~vb?LGX&&EaP@urcz)3xDQ z%mjbV_@pH{f(dBI65sj>E9ul_=8QFbq`&F|(Wy!5|EYlKC;6y+Z7n*>VP?F~HeqX* zD(GpZ;fJp|B<-p~QTjOgZ$JDx01;K4B^ojT-->1xsj`;>jPk$8Ctorqy_OEE#__VW z1tY8+1-~%?`0am3tXrJ=FU0!WasS^D>)%=HFQfzh31k1-_}B1{(f=2c{mbb84a|=} zky?Ml=HGt@z}jCM|9-#Wk2=YJpYE&u%o9NzBfFG>V9lme{#R(S3D9-iB#NN{7L zJ-af23&s3zv|T-<{|5zwLSxS5e`T z&!L-#VriROA4H^7+;9dH zN!38eeqtq%Z$kwY`fxe>#|OCq-kejW(GOUV3Fu5YDSd&|46f~s zTIaI5VZ))5yJ9XeYw_zfAt9lnA|MZM)oa#Z5I5gC@IPi`W?nq0cW(N|yX(PLA|u;A zphUf4SRR}QwL<~IvTk6aRHyd#GI}FW=D!-nC{^4#LWir2OD^@{F(QU*%k|w(ub>t2 z8hJZdmjr7Hm~Z#)xKHfXmI8uc_5b4FEk@FFC&Zs(3S=$qBm#m3l`2}u(zRp){C_(N zxaQKrnbp!S3{xa-dNO@mbD0DTN*2tULR69zGv(zJe4enrs4|X|@+t#xXP?MsLEO_H zz~at_)&D9kRGMb&U^MmsxlQ+GAkLvF?yzbe&u0gYF)gYQsQ5TOX z)BCFkxG}(&Y-6@tT)LyD!46V*D!$f`jgtn8d@lM zQZJ7vy;Ab~4M^GazSt}<9}Czoe8@Q7xfw(x+k3rTJp!Dn=F3N`74j;24l_0U{L6bZ zfrwK5DP_T1wk*sEOoP4S{owDjh)oyVv!=&L$IB}vMQ4BDR}l8|4pQ61Br~n9D>g^Y z4LP~rbs48tuk`FU(zo;Jwons?L7Cf*{HK*>fKm*@kHMEr!E@h;?l%Wq{?aV9_EB)o zP;;9}t9E`oBw2aBwjNH_t1`AGTJRG$bRu(M{`gbJS7imFxro+`u2pupsRsiLC)+}8 z?#Aks!~OI;i_!in9~Tkhrk*J=h;PpsLcbQijnPNen zzdyzQ2)jI{>8MPTcWp=p%Zy)q!OWTdo%(K0$J>X&=i9C;8%#z0``y@jB`n1*#rimI zYab`nE(NYrVRufR<`hh$3I8b>D!6IFwo-|7JcBaJO}CfHiR$|ux;5_(z<#=&O{ zXNaSgtUyGW4+C8E2EoOY8cZU~h>3*-uNHOz3CygqXd=nD5}698K8C20E93NO1xWgD z&QDdd?l4~UX9+^XM7-ypg$Z&BZ_OQ%bXz#^EiMB;EQppozb_v`a-!qe&yc^A9Vv1E*Ypc7TiU>bs^!;8yqh>->b5HzZxx=19(( zU4IV1aMC;(oOosexEKUoJAvAES!%|;X{3>ae9Xp!au269{yMCeKK)if98mTL4-^6p zi=(QwpDmg5oKfEfRwf+pO;@u>NiBL6bqpGR)Aa#9%8{~!l?p%xC_I>(&yoJw zbaUOEr7wZGUTaPMkEH)aG%jJh3i1kYBdeC1T=&Js%Jw<6D?ciWr0=d5@xu&Ww%)hy z;)#OnFJ{n3p0A(SMhRsd`H*r(I3h4O85Co)2uMiO5;1LWGvlNz?XX<#s2Sh7jXrLv z{7a{2r6MH(X@~aD>im;zR-@$3w3u{SjED7t$SH`P89Avu8%wm+jR0JnE~c&QduZbCUDKdSNUtZiQU^?Dgo?et3HI6nMUG zA>3nz`l%IOEWWkk>xu}yuEX@2t<4wXsZ-OHG-anzdW3_vEdj+-j<3t(rSt=|Bze51 z-{ei#QA-8@No9#NJB-_;DYFTM0#9qCN=n%dWqa;PcwBI1-CQ7wb^Aam{>St6zK8zn z2Kcr23NE-*OPlIOpU?$=UKV6y!%fqJxu_QMQ>q92()Yw<0%0nv|91ZvK{5q&5gax5 zu?F|(CnW=UH+du7fxBbd|;?4vUy`1wz_u_)~eaml~jM=*)Prau07u|TvSXt z0o}J^#>2`$L4ZjfPPh>>b(g&Y0U?F4!TN^i6y zI`@82t%w*BXbfkw1Oi!|E%~S{!L|Q7)StUsmouKntS|!A%rArULCLb10m$Ajxiw11 zYy&gAFOHwCyFVl+ea0Q=5m~YSe2zJK;B2u)o)Om z=EhpNF{HScbz(?e)&|L?>#{Lx2Lh=#qY+sj(UzLIp4DOsy{3&WiPVVihiotrPmIf{ zjbag;_RORgiDd7uhJfiq8RP!%erTE0O>S*se*x|3p7?u58zmiVo86ZSNYcR#tsXn4 z!lVA+zHdAg-9Kl&qnlN16rM@_F;1uYop_xXCnI>C6|fK7j2txF-SyH&di-_Stf1$m zlq_rfHj5*j0$DxMrT4UWh4}fRndj)#nJDN7V!tH%pw*$C0I9->eA}s;{rQT9bBT-n z9-`!1#{ge^fQ}akCj`Wu9I}{O-^TiygXyaGO!LWf}|<0?p1*j~bWo}6Eo^DD>g$iXM> z8p&uC*>6`WD_)o%UvIvTI13W-<_00>UYF7~WT)G@{J2^b)R}o7Uqhh8&vG6}6-+>1 z==;K^XDKSD{>Sr;m)o4Bx!0k4PAK3k9xFOqO{Cr6XI7J(qzOSYNK>U3O% zl+1jKS@&+sUbp!77u%@_3pkI(Gw>)xQ^#F-zWDzIQJn!+xy?HN;@$6f{~dPM4S=wa%_}U1QW!`p@5%R@7piSJNm3XBeWg7Z z2sql?aMYm0N4?fz&gJkr=+md)s?f5b)Dx>o6YmnwW#RVQ>RJ0dYML8<;(L8@vI}&1 zED9eExAhQOb!FJ}4P?PSk?}8QSlk-FQ#OD{GvKAMj^JDuVGi^C05Ar%D1=^67!AZm zuXZa}B|SDXfw1IeDu>q=NQt1Frl^4_XW)hBe=`KS^n&2HEzGexq(IUawgs&Y6PG z)rwBu%rxgq?-d&_%l4M7cRj$zZ(VKx{9&Nyx5EnC9JrhjxO_zA3Q#sh zRUrB|0&p3x9%l3T3)K+FpsR85@B*(UtzVA;Z9S){qPd!9jYLF5+poI{_^p9*-xEqo z8>fWS)NKG;J=C+{K|3(OPcku~>H<0@jIfTvd+hA1LwZOGsm1)1eqM178&#ag7QdoW zzkLhy99-^SYpKMzr?JPMrS;ee7H~quaNdTyHmfCMC8K2idnRv+`B5a^k#D6($d2^% zkMXpYl2Nq)IO#@4bc0c?g`45wAE0W8&ED6&B?StR`|>PB&{N7j?#AiCBG3;}3CPC< z^f6l)%b2OIu6v4!Su79Bn&aem46{<(VLu%PnAdVvqmPSF>&sPB<;BBm2o~PE;{WRrHX#ZVd+c@vRf)+P}NmmaUTS@YVcalV3ofuMd5Q@@^a4BDs~g3+#DYIar= zrR>|aSFe^_6IPVk3N+P{fw|)D{ls{Ea%XQX4JL3`xBSJtQshI;7XhYOB1ek}hKh4~ zyo3As*JC$$9Us0aJ4t`wauR*RP9DO;wW1+K3+Ek`fXsN4#O*FnFh=1UO;P zG85$ZPF1W9)^7d!gU}41mt#xc=(CTdz6z-W=9jFo5=EN4;`9FGPpNelWBSYuo}a*+ zDipFSQ!5PJY375EYMqwkFWOwl)57T5yQu(ngetmTwA*x1)Lhf!G4e|% zkE9Tux1GD@1x=~h`z%USb(uy$uD)D-4?q2^lN!x|>vZqIBeP~dI6Zf0B=4Bp54XWW z@yQMe|9751{#cEaT&Q8ch=0sm4xI5b3y2J1!^y_blFA(6z<8!c`JbEsch2G0J!5DWS+l-OzM4NsB5;q0zJe(YE`y5cLmY}soK5FFjdoSfIg_VUQ`Na z`xBXPcl_iNV5WCosuzFL)8ot%Fq|#NEU>D5NDE_~6C}P|$?FE1B+cd{3Fqq$vHtT5lilxJoLlY%dti6&Q`Fp%WOP&V#R7FYPLLb3uVfb8Q1j+iG zRh^^XCut1sxSfp)W=YCKd-0h(Eu#ZJ#?7SEq>ic@hpCz4a-&>35F##6Hz3VOYC}4P<7+LkzyKRaYWQh3gYt|U>>a#K}4N@x??`|CH@h4 z!B$(j)5D{M<_|+|V9#F~S!fv}Z@%lvOc#qO5Krnt?3`-grieMz^R(Q4%SF=Y25+#I zZdHChYI~|wMYK$VYB|u0C9q=b^J!F7itDg!~Rc*}i z+^jK8v7wTkwDzHFVVaS#>-RzJ{lQ*7XnY5GQ(ju@9`ly)7|17k1taSRV*cS8*9WW_ zy&D+L!x`a2d8hq1+Xo%tFWt!lF=F@q15qK=v%PM_aLAsVM{^bW?NYw@>CnRE-t`tB zA&V~dW}Bxjd&<;AB`mGhlw4+4LxJ9r#p?h!0vG}PLf$Nh-LNRBRx-1`k7Vk*DHI^h z0Y7qLVyi7#ey+rMC8^hqy}t>qjDGIF?ylWA7hMEy4ZvN&odfpi#c^E|{ehXA%TdQ! zkh9uTjeY1ou2f)j>oIHw50!SfsD2!5CTgYHk|{F%lY~BQoCUYf0Ayy8_Irs@xuR%3 z5RB@aB(IW=x6%c~9)A|#87aL8fD_9KoB?ep?SQMw*P^HMs3@u_3zKY2l~*W_<==!= zg$e2W8lS%$@z>g}oW+C7t+uGssc`Mn*O=7`lqIErkN&HhNY-wx9c0jFj8m(IkC*|w zg8qv(15Bik1*%AAHHZ4t2C5*dwMoX6hwLl#AG}Cpp5%jN!vKdC}3uQ$7hikikyc)J7*Zuc?Jdl&hrdJs?g`c?f$W{DOW0JCXWa7btf+@5KZkru=H1OT2vRJc-u%EYcAnI6T!ADa{fq}HWgGbB&* z?N%Pa5MpoP=h-R*-Z8WL{@*u+Hy^y6=_v)U^+$snj#Y zm9T}no;%mBp#kZ=AY+i;=Qk9-V&Fa=P~8ScdfWSXvk;vY*@8XlOur8R-@yA)7chWz z8&aaFACRPMgGa{vG4Prw3~+a&9+mg0X0X8#p@{SOoX_t?J^u>X$|W)AhuV^zY+Q-7zy RhT9cA%JLd=r84Fp{|_XcF>?R_ literal 37028 zcmaI7bx<5Z*YJzG6WoF)xVr@nZoy@7ch@BlT!Onh!QEkTcY?cH2oQW>;oIlA@B7uQ z`^W8?+M4d|nQA$G`kY^%iBeOM!$c!RgMop;l>aKN0Rsci1Oo%hf&vFEDR!JIfq_Y| zmzVzX%?I|+GAAqy3Xon008r!+yAEo z$7@Eit)m!qa78~no@8JOnw~QTp}#)p@0zOb^NG2#HCp_xJayXh1M>U#e`b1xU9hm@ z&$EoxXJ%(@{fas+DT+6QyWV)&fApIO2nn^a@A=Kw{W~v97)!|+P-uG#Ng@S{2VRyr zwR7t3tV&m>OxHMOH9&d(H4#qZ!#bZB&T8V zZ9lf7h@Jcf(&t~Isl3zwGWvPEe3aHF=R!-5v~01k-oJqGG;V7T=;DA|{-muzE3cVmHn@+sy8_vb?+ffdsAhv>#8#= z0d)1esKTzYzgQO+Zqr?yTb|#VO4Qr)BO1 zM0_6zv3(r`t z6_OIkhS;N`_WkNmGb2PuK)|Bqgi!1L4igvW__s|UJZ*sBD`aa+v^P1i;j>UbbVvaz zUO+)7NdF$^*|%$0CcCUEI|GLDlg;quW&S4sVkz%y-N6BVUAY4X*wfE%M4RO&-`LPDC)@J&|M}gKIoWH6V0k`ZTyroA>*F42Ys`OqUuWb1r)FurPUfbsHZU?+ zi=3sC^MN)4%WVr|Ui{AO63%@nARuseqgoV*jlndmx zWM@On1Q~b{H1pn{XV8I-D`nQlJsEZVrz-;s6EzY2Dn`?6bLw{-%xYl0h{E|_-vqWG zPT;bJ4z_*c5`f~j0EQBU*Ho-w0{Su>Q#U)*7?m+M;jnV+6H6XuP!8pCxDC_iSG|0t zg;Syx*ASs!2%+>YD(&;^bl?F`tU&OBr<>clxB$(<{1?hi?)( zVN5u~`{^uXXP!2~+uB?F#9P}~Q2D7vesaY&aPAkCv*^b5w&hM^9S}ry*xXo;gfo=< zotTfw!Jq@>PO6{{9j93yb7(M(ji|MS4yQgn;|f z`4JwH0?ZsC%nFlm6^c`x36(CLE14mQOZxJchZAt)y?K^?eoK^iO7FmS&9@||0D6j- zvGioFy3if4K?-AhwyTr{?P_e^FI69v03ylHgr?)a;Eu<7Jz`aU6jbrx`N)!(7k<2A zr=5r{8YCA)BvcoJad}PmalPb76D2cJdBRJdf6d=XLu$@XR0CXEoTc9qNgRpImZpEr&InAmkcb7t&p1hT{x(BBnuLN`-Se4l!rV^d$@8>(i+uh@aOfP209-i z8t&28+$+OsdpS9|eKix5tc&3kOj(ewO3LD*rmfX++Kq0qVpW~9LkHUkHQ0_oJ1c*I zeR1`g+ONGyKAD+j0vYpwi6=dnmh8-_=Bd(P&IuP%h@};cHB_3-GWlcyiE>Ojrxro1;5TK2cQ7vXW`-o>O?HE7|n%nrsI zOZ&-z68M+Doww^>-wU9Z|3saV!-1!x|3njIq+CdIY)RAWYvK@~FEa33^o%HtBd=S{ zu0##mGy3Y(@5AWaRH)LaLd*}&3+yzxXV3Re-#2tpa*PX>Th2SRG3%uW%uW}G-=V4x zsS9JUah_#)X_o>raG@+-jSdd0wOYH7q`&+jbVl)}0#Y)Mk5yI>Dj~Wu3>HJt0B5}RO$a=#8HNY9bVb#&f;p8c3thmOui zM%i~tzszEBC=dEABBimdoYhEdrnjAUr|9^S5&F∓=KP*rXQ_7C$MY4kkTJ>x@hK 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%0A4C`wRf5K}TaGSwU<#E097z}`w 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 0 { + style.FillColor = charts.Color{ + R: 179, + G: 53, + B: 20, + A: 255, + } + } else if value < 0 { + style.FillColor = charts.Color{ + R: 33, + G: 124, + B: 50, + A: 255, } } - if row == 3 && column == 4 { - return &charts.Style{ - FillColor: drawing.ColorRed.WithAlpha(100), - } - } - return nil + return &style }, }) if err != nil { diff --git a/painter.go b/painter.go index 06973b6..62a4378 100644 --- a/painter.go +++ b/painter.go @@ -545,7 +545,7 @@ func (p *Painter) Text(body string, x, y int) *Painter { return p } -func (p *Painter) TextFit(body string, x, y, width int) chart.Box { +func (p *Painter) TextFit(body string, x, y, width int, textAligns ...string) chart.Box { style := p.style textWarp := style.TextWrap style.TextWrap = chart.TextWrapWord @@ -554,14 +554,24 @@ func (p *Painter) TextFit(body string, x, y, width int) chart.Box { p.SetTextStyle(style) var output chart.Box + textAlign := "" + if len(textAligns) != 0 { + textAlign = textAligns[0] + } for index, line := range lines { if line == "" { continue } x0 := x y0 := y + output.Height() - p.Text(line, x0, y0) lineBox := r.MeasureText(line) + switch textAlign { + case AlignRight: + x0 += width - lineBox.Width() + case AlignCenter: + x0 += (width - lineBox.Width()) >> 1 + } + p.Text(line, x0, y0) output.Right = chart.MaxInt(lineBox.Right, output.Right) output.Bottom += lineBox.Height() if index < len(lines)-1 { diff --git a/table.go b/table.go index d1af5f9..86ef569 100644 --- a/table.go +++ b/table.go @@ -70,8 +70,10 @@ type TableChartOption struct { Header []string // The data of table Data [][]string - // The span of table column + // The span list of table column Spans []int + // The text align list of table cell + TextAligns []string // The font size of table FontSize float64 // The font family, which should be installed first @@ -271,6 +273,13 @@ func (t *tableChart) render() (*renderInfo, error) { return nil } } + // textAligns := opt.TextAligns + getTextAlign := func(index int) string { + if len(opt.TextAligns) <= index { + return "" + } + return opt.TextAligns[index] + } // 表格单元的处理 renderTableCells := func( @@ -299,7 +308,7 @@ func (t *tableChart) render() (*renderInfo, error) { width := values[index+1] - x x += cellPadding.Left width -= paddingWidth - box := p.TextFit(text, x, y+int(fontSize), width) + box := p.TextFit(text, x, y+int(fontSize), width, getTextAlign(index)) // 计算最高的高度 if box.Height()+paddingHeight > cellMaxHeight { cellMaxHeight = box.Height() + paddingHeight @@ -342,7 +351,7 @@ func (t *tableChart) renderWithInfo(info *renderInfo) (Box, error) { p.SetBackground(info.Width, info.HeaderHeight, headerBGColor, true) currentHeight := info.HeaderHeight rowColors := opt.RowBackgroundColors - if len(rowColors) == 0 { + if rowColors == nil { rowColors = tableDefaultSetting.RowColors } for index, h := range info.RowHeights { @@ -375,12 +384,13 @@ func (t *tableChart) renderWithInfo(info *renderInfo) (Box, error) { Column: j, }) if style != nil && !style.FillColor.IsZero() { + padding := style.Padding child := p.Child(PainterPaddingOption(Box{ - Top: top, - Left: left, + Top: top + padding.Top, + Left: left + padding.Left, })) - w := info.ColumnWidths[j] - h := heights[i] + w := info.ColumnWidths[j] - padding.Left - padding.Top + h := heights[i] - padding.Top - padding.Bottom child.SetBackground(w, h, style.FillColor, true) } left += info.ColumnWidths[j]