From 22deb5b5cbc650384d8ac16905dd32f0a2dcec97 Mon Sep 17 00:00:00 2001 From: Anton Krotov Date: Sat, 11 Dec 2021 18:27:02 +0000 Subject: [PATCH] CEdit: highlighting of escape sequences; ctrl+up/down moves multiline text git-svn-id: svn://kolibrios.org@9413 a494cfbc-eb01-0410-851d-a64ba20cac60 --- programs/develop/cedit/CEDIT | Bin 30123 -> 30649 bytes programs/develop/cedit/CEDIT.INI | 2 + programs/develop/cedit/SHORTCUT.TXT | 4 +- programs/develop/cedit/SRC/CEdit.ob07 | 6 +- programs/develop/cedit/SRC/Ini.ob07 | 5 +- programs/develop/cedit/SRC/Languages.ob07 | 102 ++++++++++++++++++--- programs/develop/cedit/SRC/Text.ob07 | 104 +++++++++++++++++----- programs/develop/cedit/SRC/Utils.ob07 | 18 ++++ 8 files changed, 204 insertions(+), 37 deletions(-) diff --git a/programs/develop/cedit/CEDIT b/programs/develop/cedit/CEDIT index 67137b35d58ea561fa204a7fd850c41b08c00bf4..c16bba475b18bd1777b0f1bba7ecf8cb899cc4ec 100644 GIT binary patch literal 30649 zcmV(jK=!{&P(w@HY5@R&00001Mv*2LLXK;4&&M{gp_YHePAhM~=*+~eiz)!SZvEN8 zz_#%q3jnsi(7cADNg)|Im@2Ph2Q^1ALIL6Y35_*rp>T4|&42}dGIZTcc-mHbB_EFF zECi4!2;Ci_U=Dah+G8TiV|r{arH(k&0wo)y+Zq(XFP5%4gK{tiXEzk_;jhHV5$_ZX z@JfR8Ynzq2IYkLSJlaEoQN~7M6nv`TQ9Lfzbp3HIz>xt^Osyf34R8Eag548&vPz}1 z7#8&{MC&XRjkxu2M%>kt#VG)bi?6NG#>I4FSgGj*`6@Re_m@|sS`3V5!Wjw2UV2z^DEECkY<&;iJ z*}s}jBw!)nD%FtC)7FLeVn#T!vI5o0DT!CF0Xxf1Bo$N57qOpJSvFs$YQ=@5xgWU1 z?>IGb9^mcUxdl#$FmIUUm|(qTysB%NSwL=mtQD-l&upTa^S3Flbes73r+IP(+Z8h6 z7XEk^MiHus@q+$X#&otIR1GxvaUha%$lMDaXuuXn>$ZjzR5q@fR0Iq}dj?ih2;@CY zCJ;E(RKfAS=_1Mwgh?aIf%DJBReBk1mVR<6Q|G`TQ4Tg$lMOhNOWdB0)?h$7b^N|_ z0w_)VtBg$~JLhOR2r^V3yv#o`*yR9%tE!Rsfk6=?dSA*9;H` zAeDYdqe_Bh;(!ndElxuR5JQ`2Cf@dI480@}*j?=98!+k}1!w4TISboUu*2CW&GOhuMck!OVBW77TRN zxe^%YlPcWn>vPvIq>s{|)?txw2~V|RaQRPM(h@y`TAr(vE~tcYjR`OK^YvIQJb)q; z1Z|g;a+1d@?YU3ofr?VDZF#N)&VxB5A}sN7K+Mh5cqB!;eot`YSoX6=Ms-rU3XKju z&i8Ih&m`Xnx6<%jl)t_D=Pm_7isiOzuUTp`zQ}X^5>4t(uuxnO{=#F78>uAnKGB*I zgI#ENy9)!8wpaOC*0LImN}jKKh$31cOV+!E&~*g_E_lM9|J1++&*aSw`j{x>$0!W7 zuiUSxly6VodGT7EsnDN})%EqX@WjrzvoXhLI=|zI@A_c`67H%Mgjhxhn;!G%HkJZi z9^=8XhmSam6=Q581+9v1MwF%~|GIyqBS6v1xvU6YDD#yfRbPMJST1w_d-A=?r0#JH%gV;3r;iAy z{OtyO{p0q>P0H@Q#9tvxnr@Gr2pzVqx^1Eu$C#MqO>bLC7F=2;n3>Dmn!jX3^E>^o zcFAG_mbe0HqiuQA18Z`2Y6dgIDeInwv-hYfu6XXqs2|?wL5Cn5jPs{<);1IBz`Dmc z_+zXnQ~Y7HcMJIZNfwDU<`aML%@M;aLd;Zlo6P zXp|zwEq6=TXxgwi4C~Xs*CX2_LVW+UunxRvI=FR4$RK$;(`Ynf1N3|a1N4~S@3i>d zT-i`cS6RPp@*i|9uC?L$PI;o!8oV7N6jASsDw-CEK~JwUU5H| zHdO5hU(gCTB%+h_NU1hG|MxME(;)uUUg^X0WVbq&e2W7k(qjxrh_Qi><8`>7X>AFQ z<;V;723e_BR~Y(3G_n;t1~L>y+k~oN zft94Map&%=mDe9PsN2_(2ywjuoe?*k9YJM=n4+Cn)<^AYhrnhAd;<22aLib?M4gSAx^VT?=oYMa6w7n<^UMKY3Q~#=q#XX}rR>cBw7hq(06*s}S7O zW&!g{Mx<|2TIjWcCiRpzr}6@=2v#Ag-c~+g_it9zfH)AwH_*=R64g(6NNz=uP}8*6 z((1>+dK7+u)fb)a4gEk|C8^A+B!l0>p~-WJ=mT%4l+tLuOpf$4amAp;>TcRpBpdoJ zi0C;_{DR9daLilMJykIXOqeg{>Is=0Q;?{uXBuG~tr^DUor{XiBYDT7#xL7S>ko8O zPzwnILNZCV;q^u44-{TCFe)$~>G3n|w0m)PWAO~MiQ|lB_8CPN`+t^8;l)}(eizRK zN6FiG^OvzBjV17d&oHOW#7142DGX9gdE|?Dt@?-M$sJz7>Oa)(rVG zyHj~tjc7G3Mr$kdR>2h~_@LajoL)}esaa3;V>VVQQ;w7^=aeGZ1Z4nCY~$S?HtRi- zQ`2ay7qu&BY^o810{#vrJ!y=7kfLK%Ck7II6ufGqBUV?_7BNjT^O2Yp=X${h`EYX` z^hn8~FjN*;=}lKX)q8&e$sM4I^Khk={D<`O*q)9N@bhAiPUBB&89rWS+jVTjG;UrO0K-1D*AR=k!F02lPP%`lFU#!GYR zC7oklm#Tp>Nd{2<<2Su6Ga;C&&2FaA`1)-TfR-Z7xkdcNIuRIzxWUt@v z#hA-idg6+hpnz#MRNXPPmkpmxQtvu5Q<{ohd6oYsSvSx;)e*b(7!{ndFIs&qS8|Kw zS3MEADxm~8(gI1d zJTTzn36QR*Vq}jKIZjWN`y{w*)fUs;6@P3;yKZ5QD|iIBjFOUtF)j9-H%1vAG1L+Y zAXXq^j8AaP?!jvC3bEafXhRN6ae!uljv_J64drf3QxNVW>Mz;BQhQKgR}t0*K2ZusiGk^o<2358Uw4e4;D9+m+LsmfI#@yS%=&IKIEEWre102>z<9D%Kz zF*lRTy#ve5&U~x$tB4}%!o<0;@1Od-RBnJ@UYk@N6jl#>thUr;p zG6Dr8;Bet_lTWeuUQYC#T|zQN@UcRaSWVgSlvkIPy9h;+gq1x?xt779)rMyCE6NYi0^5rHlw6y#Is&U*#&TeRKEL z+!Lf*B}BTFxoGjvT>eeF-ESXr-yhrjIaRnlp#IGTkCyX$Q53}cjzFubeGi2he zMpffdNa-sC`incwnB)+{I9YleibFj41fw{$2DKxDJl*ZC}eqhWclrs3DW5%_b# z#MF@r!hp#NpW&&Y%PAl_7(`&#toNwAxCr>gt@VcG)(vbf z$H_$XmC|TlOT~}DvVtT`5^Y^}ydz!9)`K~;Z>R;yhUKIq{;GPIs2A! zu@rTb_za^b>&F>eNQeF}moj*+FbP7HPgx`4&Zm*YY%F2(^cjz7+Dn2H(R{D(;JFHb&J@#eY#1&z|hf&vxoHoRrB zUE(C_FPq5Kq-6L<>WGv6I-ctLW9zqEA7u^VE;6pQS_2dli)H_uRVL0}&tObJ7o#NT z)M)FU!s%5lQ{1FEbU5%$vtyYW-@sz%Vd^-fCk(FX&11F(29Qjsr)eG$ScliHA#E!} zg#tOxv=kQ4$}lP;htmH`w_ci+z-0)P#-5RWODkNT%uboG%jhL@=Gjq}*&J?v=P1ha zo@lh`&Ic;BVM5y)R(XZQHS`t*Dqe=m_qv50gW~-2GWF8nfN{;z(2%>LYvnmi$mh`g zarBW@eg4RjlZn=r$x6{i8L6oo;$8@})4UVC-!I`3o8@j9>mNj$vm8{PSVDJO#+Ik8 z?^kU)7TV4%f>FIru5teUqP;S!4-1?=mN>r_6Qo}(#Gm)6Q2y5 za`dDVAG&RLZ*iG+dOGjCXL(SjI zU_|lhDdiiD3TdDmy3nd{nv7MAeEof2tuv^n_&h5vT7Ds&VPYUQ(KnKClITo*u#x~v zl@K_dg_r4&bdssJb0ogi&+Ou$D@rmP4lxNR$>&-fTPAn$4vk`Z)(6~KEc}^7%baC) zli^$P)hU9R_RfXM3GTTfAkD7-${mLLm*~q-ogT^89gby?w!5u zr+6CupBABDMwqF$dMm2>TcZ1(z4m`c2Nr#vW9$?W6n8znV5ZRhf{CX{F`J-oJAC`> z@Ul+e$gF~6gg<_p(g_N&5IAy&`AmD*PM%WSX0U(4$;FW~vOUolkLP0{mfs1q_sY)h@jl=yd+YV*_p0i{=%L`sP!&sfWATXlpcGnOgJg1ey zulug0_}a;z_Bz;4Y1`*vOTSCJ+!WVf0tMP0MD|opHQeOD9gK8cU>%9@OF0r1i;ZX$D2HxVq2@% z8NWQijV>E=-s2_ae7fJ#v||NcRfU9D2*qw6+sNj@;`f6lue4VbnffW&5nSEHqY<>wKJBJ!j-l6OMj!B|q@y zksG+xk%PfcJ`GD@4_S*TPG(&@;8D31d=cv&7x%bYP#txYb12qT8fAR_1Q{Z`%?0 zt8l`Y36V$_S86*YDhlNeA)a*3WAiSd(_dSUS*!Da{vQzjBdt ze~$W%_1s`&3%!fHFSQK3X0%DI5J(kS5*$om5Jh`^r)O2@tfQT1_W| zm9Q?ap18h#9<;My$u7o!A`GO)?N%*8$5> zVVV=$*xg;G%q5%sH#FbE*z6k-)?mk$dm#vniN-#7Z-ikewrEPSPG&U_qU(H{>^<~H zN!L<%2z9cPAk$Ys4VdpIA^CuC!`v6fJr_RTY(VJYo(oY|^RiawLyOk2RVa%XP8R5y zX>>f$n{-KSCwoqZoL+V5@2%ewrnY3tmhk4?Xn zp~O(inhb64)?zg^RskW2-f{*9hYYW%bX!Ai$4xZE$;1kH`Hrl82wm& zzOW(r>=hQ?e1_U}7=kihFc~nKPx>0x1y4)%uev|(nnNP0vA*I{mZby066{n+Nu0n?Jzs_J?Xo6JH_6RrCF+$;EPlV%K>Zd;UjC#6RvOueu7<6M1vn<^i($iqGZ5E!z+ zaWyo#$R%7J^N7O%#SZmrSh1#wo58Q@ib$8i6W_R0uJzw^!(2vv#{q(dMZ7S2N0d< z1135Ya$HrkL}=U^GAGyj-gm0=4L3E=QmD}e60zKFf^tZ`boYf1r6HTf;%ETHKfPVJ@ z;*HInp_K&aWOGNPX-5$glh0{$ooX>g|BpP9wEJ3$gYn zJ5F??J>1QB`uG#87%hcq;U=epKTjl73V`K^e`y^)F#6uZ0=hDNF7oB-9l1kXH1(*Ki^O)3%?3%lE75*BB2x`=EPps4Ni3 zHA^uXwi?@8#l=@1oq+Xu31mlYcUBd_erSkG6r`mI$ko@Y{{!3yIaY=uqYTjj9P$$x znLl!Dr3m@sIaNl(vGI3;p7eF5j0(;dPr%yBW`BE3KCgOFCeP9GIl1XVnkz#m_f(OI zukTZQhxbYyCq5vR&TMojXROr4D{o|F{k+pcXE(3ad4ULsBE@o0 zuE%i=?pr>FZ*G*b@;I``NA^ue+cP@mA}Hgzz~mPpmWFBQ;l;6k+-ZbVql9;FYmzIL zc-PcNLHnvp;jIqRn8>iLs}XEb2&vpRkQ&Frd)p`sb0q1Lr2d%Rw{GbQ5tf0))XC_f zR0i!icdd?&D(|;Wz#mtR)(|2&2^drr7;48pLMIi(7{32g5?D_vvfFnYE1zL zm;^sTscX zHbNs+nt}e*u0vGqxt>M()0rRBiOz3G?6Nq@T__}tDe6oMMk+p zQ;f60Gp<5e>ewXf5)FzBlSC_iqMmI%iTWbk+y!*f2HKD@@yr!dKHr{b$71dXC{%MCSM0B^7Z-z zc!h(bZ>W-=N(DLBI@}M|iMD8zWlco_q%CM~+_xeqe@!nbJ#R=lH;?xA5!Zh3N* z(>fFxZXXEh+Sy5sE0mQjIflNKJ`t1&s4l3e@(py^LF{H)+!3LNHoW>!5V!S4omk*a zLe1lAfN^%aSqm?>_ASQg!RAdW^|+Sr7tcAIkH#BLUl2OL$istLCBvV(c6?dob=dx2 zw_64rr@U6`(MF*NKs%W`w^C5A+*WwlL#6$-Q3!_|B_Vi$34^4Jm3>r^DL?bCFEy^H zrmm}xPODhWBZDyhO+GGqyt_cj?qL`rroG_45v9;1M4?PEi%db`X*(U#KvXeL&=u%r zJ;(rCXJTWA0)FtLv#YSXjW%q z9n#;A!Ht3YPFM`Sa9_qC_JVpU{u=PkAFiOMSC-eU31IJ&P`Ljo80kIX_3-#+Imx6w zHDV#!1Mqsd!wjp56mTO_;*7SO)a}>ZKROrEEF@f#(=)UJu%MdLgGd1hMv!htmPZ{o zmw4XU7r@D}xGMm(dSQKeeT;X8O*K$t7haUJ^SC8vOdzeW(?e?-;M7*jWA#2BYO7s@ z)S?^q`d3*6)bkbP8w*8BCPKK(<&WDsYodsS-LIdN+R>w(AX`hY^BzXubNr$WC6k63 z9}V@R&)CTKb5xQ!H%q`+EgtJ|)~n37f~K18mSk|tn(|S>9J_UsFawMIH?S!Plqkrk ztn=Z+IwHSU;jECD@v@j9OK7;Y5b_)<>dS<8HtoDrVZ>>Jb)qhKF6>1uZ(qfqJC5R) z@QV0JxnS#Jao&Z&EN62pjFn@33;K;XiLt|P0c)JhfAiU$vvrz|ssgBun3m1lf2x_A z_jtINXe=6ns25i$zo!;ivy_@xTvsNN$kK$Or7k~Ku);k;_Xfd~ZmM%Ab-Jw5i%wX~45ILs^ zBf(s71L@yuM!$OCh2G!_){9v7T|>$z081>|ELhN=5D^}v>h=I=a!zdbT!1+fo&})V ze*+9*eRm~|)<+I(9~`3Vg_Rl3_wZ+1-S*d@2$ne$0~F~&%-|TiJA!r}jO69Lebkfs zE}Yr)^PA)2E$Icw;X zW;TgIV!0z__vpx};LrB_ViIW4d-#L&ufb4ew1g-CGgUR#?@3(ta2Ecx;L3jz-@Ch2 zo6EJlJz;mZeq`tR&ID zk}FRJK=@3w8OcEst|gHHn5X$rFiqpT&~iE34LABIS>tKuQ;3s1K^ZYI>(6@tLS6sm ztI^dMWF9+{*7l*qMZ_pu4C|t6Z`_a9IN|fEL-4Gm4dkLTD|-HUo9gnEo#!yqoIt9h zHZOLVSOy?05rxRr`PCV^Zo46*OuKvy9H4lC@b88=#M&@xps#9H66= zSuyT|p5#ZK9ztE(WPg~oqy3kNHkQ3t%mznRZTP59j1PPBg--kSvz$oMHOH`9n!5d7 zUeVE}_0Sokaq3~^&od3>NTj+2@`1m>6gY^0$Y=-ru1H4=z4K5uPwspJve|xLS%VV- zKrN|!e!wWMwx5>Uw}roFxXEzm{-(<=PM?`>R*qV{O8?>+VZ&7X$*2En!_A_I885EP zk&{Z$tH9#E;`Sa(I&wzYe~?VAGiDzp1}_u8@j~L8hNXfk;G>V(mD#5_Fr=^FWy2BJ zk5n=hEvQ7F@63&m?d#RR(Y=+46(+g)Zozo<58dp!cJkUxG3U=RzPvv! z<<+}bGR9<{@f9qiPO^u6mJ=HZj?qEc&}CN;C-{2#c)q$;HM0lril#79(~Z5V`>SjX z&yxN5Uurp_P5)!x7bIzyM>lpGE~0xYOSwEB+aMTL*={5pA7hgb<6&nrtZS(oHb`q; zP+lyn>;?|(Eddz|m1Nc$ia{Tuyu~ExB?FOSsp9qgivZE~ zISmp3ynGFxu|sE`uUss2T0ZC65sTUzkIm5i9SVm2H()CW-Z zI+Z*OnG)|x+r511KgQeD?ZOF==y9?eBleT^{06U%CnKp=BzGdDkIFlPQ zpr$XZOen-U@|WYB+`ooocY80ijyQ%^w#ZyS{@1BRX(vNa3;r@2OB@}^p+haM4u~U& zFk@s(N-B-q@r@xSgy!yN&kh5EC_cb)ZKnn;Y8hh2Y@1?C55ClU)T`pFJ2v^r9>$>q z1Jphd!`OVojir5#3-Dg8{Xu{#&pC^sNq{So+2RT+P^W~8q|FBeQFp#khMc!-JQuH9 zR}yxCZqy zMbpEM^o5aKE1O9NQN78*8}?kt*&)Z-8Tv~BqWAcd0LEE=l-l6&cPV|CdUv?12Ac`M zfvN}2MFoxi{|Yv6HCx+zC<_f6%_u0;$lDs-EYb}X88^HdI+t%$Rr&&@&1xGH{-#D1 zfy0}8FG1%cPMandT^W%QOvQs$M*Q7aB6x-b|Jc?-p2NLy{@@;)rLC)%-7J%1wid2; zm7^GvEt;z&p#X4hp3`-=kVa1{z7n6kNCgm;<i5xG;I`X6A|D=3f6`Bh3gSP zh$H#FPaV(gm8Oo4H5!a1foL}m5zFSzGl6en>t&j%l!3$-Y^bmV>oHNUH_6%Mc1vdJ z*Gx5|+)*7d77-`ht{Ytrwi+;m`%+E^1>Gf^S4QJm6&rK#lRizAbHgDo!rR=UUt&rF zr9CfH{gKDeB~PF&p|BUk0z>D9rdVOQI`)N}8&2eB1RD?Ezj0HTUA-Aogv4sN)YnAp ziQ4P<+lOrFJBVp$Y;jCz*&;0{8uA!Jmh;H%vw3EjXn%+^K8D+8TXd{yV3?4WwHw?y zuT@I?j)x%xorRw26FhAzPIR6G8Ds^N*(^$+8YGel!5rfaOl(O1ly@)#@o7va-WSASVef%FCnEaxn=jBc*aoU0Q$U~+&Iu_7H-!M)fPk;z4FV$@85rb1vjc?JQ{;|*|E~zbd%7>@ zcYL==@L(M~-uzYV-llL&g)=!yGtM+`XY|$ztr5E;Xs#v`Wo=nZ+b6(dXw*k}B@6T{ zGv}<+{T>;!;eK;k_ch*}5%$&Zc`8X+p zfmfDWb%1q}Zn1hZ=kp1*#?X<3ysM#L_3qMW7PWq0jNr}h-Oi4M=DWs~G4_SvtcpQ@ zwSoX1ok%>{dxuZqw4tvg!E?njrK!=oV%C58Sk0Nu?28>C(}ImyGG63;!nq61 zV4tR6r5jnZ`1n|E7`rz@`*<9Zl--WWI%!{Z^CT>SDP$>F%`!#chTLk4yW{snDUP^o z3B4>G^pYMZ#HsGzwQ0W8$Gx~$drzR%viB#-L6u_&P=uxWb)1DhSd$006447O+WHWaIpWcrKua3%6u z{1D@Uw;W#)$PfSVr_hsy+V1IeT;rATGt)8M!@!(k_DzSSc`1;bO!V1PMdDVV6Z+jAhT#l0e>;F0<%v)H>;+RoF1V3M*E(i8 zlBo*L-qy?KA_Mb#AK})be(u&Vsj_WNEzDAI()_h*_&h7~q80-EcjU%?5MbTJo6@tm za(h)KP>@%{D?2Cj2cFNHreA%9bz+7E8s!29!OY6m2^RdNR~Tjn6cDDk7#4C z#R=CWInAzv7}c2Do#Fiu8-MGek9dltL-lE|!Rvw$4wy_z$Eh?MWO#S%jQwy7jYIw_ zsrZUY%;0v`eopYF^NC z;U%lgES#Y%tWgfhe2e^75ln$N=;Jq5iALR*u+gSsZ^e$;kc3A4Uqa$vX!B@myJoplc#sH_ATQN(C&GSMgF| zi}vuR7i_NE>nvV)e+m84sMz?GXrzDwL+Xu3JL%r?W>WwUVOt9M$dI+2l+}^^a9sXM z^N_dlQjiJhEX2=i*N1qCAMqm&XZu|9nI3&1w7ob}FvQ>+&V0;pw_J)6VbhKJ$)%J< z&`W#u;3mU(IYa%vef}}qkF*%`Uc_f`@hoDaiA3&l2WG1K8!#dpE0e-xSibZ|OY+!vi!$=5zxz zly7|`F4$d*CV+xuHc@;{lm&3?jk_NBqQ|-nZs;*@G-||djG}O>-L)32V)-qnpG@qh zTjs0DWY#fhucm3uP!93VT{U&BK^Gh0fRy^6M*E{O2TP)Y7 zuKjzZ^BiVjP;6bKQX!X25(}}p#q|X|^gi2cwRB)-Z2?=0KOjgACnx^5< zV_up~<|qRnKH;J@Edq1WhER>ULX5y?QeuZ*VURPsER&0}fKf4y3LrX6eaOJ4;k&?? zV|r&_`t+-r6)M0q5l0ahuvW8i ztZib=y~)6q(G?@Lo@}BX=sjJ3tm9m^ZQ# zZS4^8#?ME=Mefp%2I3lQfb!~vLiRgX_u?hNvBTNT4YGad22I(qSMzP=i3NAGi58&E z3vFvTXCqM9~OHu;zfoBSav?j;-_)ndc>`sWGOqj%aIR_N2t~|OBaT~+1Ek+xdixUAT`h^NM*o-V z_vyjs2PO_XG^PbhByNxNNh!kFT6d5mWhuZ*ObEOjQ}ASKC-=vLoT?oVWB*rVl$Uaf z0|tNqF5o1%xqCa=r%aa-P)=nHG}zbTH-u~^#`9r*zcWoqltBTg5k(XPPC$t*vo^lW z@(~jb4V|YVtd{3o@bvkks&^%T`qyNoB`UeN+bY;Q>3blf|MLNdkZ=TCP|E_3!al3N zYzMU84U-bWgk)-T{w&;(2_*=cFZr1<&2(9L%nqt?ViN< zCI99JO0rR5NDIuT5`;;K8Lb6QXSgMeOsM>@wOo?~mDOm!3E6-K+eY)NjWTE@6hIpj zoul&6w+ZbQdu z#aS`rK>bXAL}G>91I~shFa_Lp=EgxfZgj?@wxSVU5dNt@m+?_EBjRg7u1G?}b#+kS zG&r<39u*~7mdI&T52g1Gl!-Y=Yw?8ia_mQ=Ux77rZ$WCOfghn#AB+a$-Rvj%%qmuC z_Zw!cB}NHj2sZpG)vv-416<>u7ffxdqs43QjETr5*y#MAPmUaqb#D-BVK>B~O?ZU; zSlvTnnX9S07wBV2+jzXQWj4yCWjGldu}ip~B~F7>)S$_4rD(}tpB(K3=3&-`biqt` zSY=(;efG6r|%uJCp%W^c_- zOHDkRKT){$fKQdq`ka=Vdy!{F)?lQ4@#q)}5fn0uDPlE{xu1mK3!cfDuG*Rdt@6~( zdFc+ZLX;df0X>PY%`%Oy~ldSRS(Cbe_kF0Du_J=|qnAa|^q z&)A5Fvgu$9DvAK7PZAH~Rt#sIRqx|1m>(0JU%>IeL$1pZSnw+21|KIp_zAvwd91gRfg z`i#y#52wy9OB-2A_l>otfAwQ8-4QG}a(a>}ocW|pV*9OJ*@N+3-7>YN2>}A3EYR7H zp*`1>zu}~El3p}DBATh|MjszODpm4rpw;khBKgro7urD=`Vw=cME&YJ$m~Z0aJh3# z|BtS?p-8=e)1yAQ!smVp-}*l~iR1Y?cm@tuif}WON@ahnb;d)f%J1^%epk)(qgH&r zIQ^{mIyc_Z7sOGJL7+cY>KN3?9bzq{t27%fs@xw!6^Yb{09Qq4L`itjbZr1_`qMh6 z$M=(jTCdnYH?c|1x(VN2U>iN}yhxS(p>R2pOqzQ8u5n%2*6aqf49@~IA3c!^yH2-= zly7MXFm9<;EN+!|SGm*bVwk@uf4P6mZUg^f9oWZ8U6XBv+!8dQy549L$+aEH*tGWj ziIb(^7w!4*YmL*v)iiKYYiB1{@BIJz(F_U{FHypLFiLW*!{iTNlLIGvL5`lX^ z7jI(rQ!VUOz*q4ER|g2Oek*){Ijai_y%2X%n9_qv7@_30!3-Sk7BJGi7`w0nUdGo@l4OGy1_$k$>XW_F0ZH@)kp4;BOaY|&_qj` zt$pn_aLGOrQ;vD8B!+we;CXfB0n6&?TU(mZym_5r z2kJx1;)I*DO8xQ+vQ{@VGOqUs9ibykMkm0xd#maHZ4^|i#R+5t@#=Wdo;@bhIRJnD zOWDD1*I?E9s{w0f4pGk8r&8f9R{P#F`c`2M+R2iSDQHYq1K*gU4z0ZKMibBCkty zpdl!qeXn8lb?UI*W4e9q%Fqmj_-lbTWQq%x((kI#a&Uaiv;rj_aTBn6%CA_m4*MlY z47hBZ>+j3p@Rha_PTFAF>+8cN8TN;dcTMKG?EI3o2f!JP2I9!};_{c`x%>X4Cgc21 z-f7WzhQ;te2HOcG{FUtSY?AxVcE-yw@4wco)TK(kUw)i$1aum9H}nbXr>Wsjwj&+quZf|j zA^wdTVb1jcOdLEwqlv-v(<}4I?!e)L|RWG&#rSL zI|qK~{<_`64~y1=2yVp!bL^9#Sc?&6`jCb9n!cx2ewYR2wRWiE6Y5B?`y3l zeXLszQFAEjS`s8JL!0gEQW+zHX7BbP1Qr9UVKEYfh>9J%WM%1u9)>u7qkG_DOn&-+ z7mP+x0eDWK%C;*9qJs9~2#3zR<4&u~-)A{lX~Q;h0+)?L3qVdS^3qD_}5rEk$-U{+l+(Sd}@nRYpN2|d$%$Hbo`Eo zne1aN^MXkeKe@6$Xs#=sM3arqS;eV?S`ix9-Y>xhXxV6Z9jsx=Ze%kz*OU|P-ecCv z*BD*&rDo40!W4*#`mlTK8L5zD=;oMI;wISG3Ea-w-}ROl20+$(Yu` z9i@vN1wS6@sx^do14_-~T5Ixi2-L_>_o+p)FY0?B#MgBAuKjOOT}3Zbw=hnu4O5l# zKJlD1Qog^rp0C)6q0H#J)WZZMwQ{EoN|0WEmtsPy&mOG)_u@pb=I1<5m zrt^N?e+%ceuz~K;(2*~+@>tZoHTnn3?N)Q>5VX?DG~6S330MDPi3MCBxRSo|J_RI4 zJ6*OB-7*$0)haxaZ{>g*M<yR^8Rl>8T7Y`Pz} zxVK+7JqAJF8C$^#Ni|rkDVHZp$4Lx%R16(-e=j9ino_SSVR`gNtZK*VP9R1w0!|bg z%sSj|T)b)Jg+=P=yrQzA)QEy~!<4l8-tC1S@pZAQ)#I>S>DekDUiyy_0^2-{TJx4u z=!?DG8&;gri6ngb~(b2?va&MO5)2i(u?^j@P~rC3OB|$qc&b|I+O25PZ4-PGwRjbb@MpX zAIHC0qe*H?5&==ktc;GE=eI2#C^j%1Fw4}5V%iEq?`x$#g;wF2<*Q~fm+BW0IRE+j zh>pAk1^OQ6E2{;aLI@0}@Q@FK#3UWD`5|CGXjIox$(_QH%@VSRKVJ9oKt;19jRzE% zIlLuCPQ_bTe<{-J;sT@0O|Ts?tnO=93lGc0YHVo#L(2qdn6zD6XI9vO>}|(Ukw0m@ zwOJH-co6O8ONaGNG|<)(jD%xBQ2l*o`{p-oK^Vw1J$TfVmbsV}B+c?HDs1!pc%9p> z0x*X0N7rpXByy*^E1l4AC^w`S3%)UmXV9)ef*U$ z%!19#UaR|_nJ0!RegwueMhl%7HU&6q6~kJTN8({Q;P8mOs`yb17EXvly;QLj_$`ah z3-RjA!Gp3H5CyI@&BMZ6mm@;30kAhu$S%%jCS0R{lQWa-EYVU5HR3makFC1s!l*}I zQeiG&B`e6##$7EG4g(FsBn08H z(h+idpFnvCJ_4-yyT|6;Bx2lz^*|g3dRE*rs#yJEp@ZJ2pIV4_DX%oPk>*8Vpr;~( z*gHOE!^}QWJCZDyr5{##U}^XE)T%wM8}mT{PaprPiO2KNF-fsnRL0qFkhh{Zp^F^r zpfkrheI8k#?M4T=NapMU&Kauf$mCe8gOnm?o{1%r+Rq+$%Xtn=9b}etnq(!&*&KcR z<|{IM*lFy}A+%0iWCSu>9Tn9*qR)Xy6@9LEAhnw`-o%64P%O-r^JlqP)=+hw-eoLd zh8Hg$|I4Kf=C1z%%ur8sUR=Xo%r_Mn-t362402vldTI=X&9Zc{&d5gKbmuhUUdm$m zc#~<^LK+&9ju9-DECiBJ(Y0D)5ihHRm%;H0NgYoUeD7wE)M&`RDhD{;&vQ}TW*e$9L=<40huvs(py>6u`|u4PV0@FHJIhg=j? zxvhoJqBZYCHWiqhGXYg+>>F|;44;T--l zrtN~zMOIJhBP;B-=4K*{3j592jEcO-iJ|=Hg zEe$-Ru_*um8=Y^~nh!Y2B?{QZru;nWCMX%<^gf+cM+UV8rrYZx;Y2ntVl8nyd$r|j zXJY@ZKjmfUe`k^UxRJ|wUHex0f3DI%b(~QkTP~a|$7llbdn1ttTbxSHu<@EKFnhCA zsd5v?`6G{E1c3iUP~$BtDP~QOJr5B5*-fm|}%2?t>+RTe-8>CSUe(aop(O^LK;BYC+EX8=nZ6F`eLaUv$eSAB($?+H+pW z=m`6cZ|DON0(8$7>_%L;@pW}~MUzA@02HsK$+Rp`boT2!k`UVWI*U^gS|Y~zu4cE| zl>C3l&dpqsvU(=#x2E~n8*DxV%pPS_3n zGJ%qeZ~O%NwuH|!x*@$A{QkTn)$Q<{W)L#p8;xdYQNVy7_qS6a@^&0vK!N3(41Qz1 z^Q$MBWG_iGrQuQled*rs!yZy4YaE$V!g| z3`zPG3YB)=niJ`yRiDd)p4@}pHsfRqkJ_cB7mlu#*m3FHI`_wr4dd_~dqrn|E}wKx z8orJ3>a==unvUOIS*AQB#kjt<{6|SNWs+dAvWNEm;BFAPm;6wLSMryUVyLLZK-z;8 zX|4+~lB_4Nky=#nlC-}2mF5<{)?d!6B)!svY+a6Qt}py=7Y5)>!DqTq?pz|0*8`%q zhbf5)_GJ8;Pi03QZ=1OzQB_7~!5eWtmh=svY~r9=rxN5RABS_J!B&GVd$Md?pLAYF ziIMx2e%Ne0f*}G<CxOnv0~{cu|W{&KNQlkN)y3*F|`QF~=*gVB;VHH)SEd<>$GRHEQJ5MG%6rL_(yeB~D}X zGaIj6odmfv;K`)X=>0;|iTp{TUIifHeHs2?A(@Sv#yF@gpwSOg%hMj9F7K*^>Ct`> zQ!ZzfVbl&`77w9nufD8h#lR7-+uCJLfhljT59(4h52a2>Bwvi- zToOt9?~0FGVcE&-LPpCZdX106(eK{GuEoxpO_fu8P~6si6o>P|^(z4= zia+HCmWcGfHbzDfR`7X$GS~vt(z>=(+@A^!EM%W zT9*?n{mbG&Z0AV&ERye>>|Y{qaT${T#EC+z9w+=#FZt(%f-r4sr*@70YVdEW7c#D{ zLaDS}%sAfeQE5wzV^;F>sfJCmg29}kCigeUH>3H!X3IcPLp4R(3j-u7hlv!K zF4(xgPchEv1UfCb7_Ow>5S7!olu$NPAsjDjydJK3Nd;^IJ7UQbpRYNG^N(TFOS~u@ zg8bBZZwQZ-|DiF9NP8JkzJGW*{93?S%fr}`wYxx>B7iCsxZo|6mw_VaAFbpJSF^=A zanA(uy_L;JFl6$zLHuh(@yMeA))R=F!KXXmj?Sx?7bq*CX4Z|y?2d-l{T6R^7UiF% zy9r=XGh~xTNG@qi0lW+l@CaL*#<(neQ-MA0C>9|4J6GiH<%*cBL)6B_#L-XZhj)aZ z2{ZC2F!j(`VLNvbbS`y74eUkmM65nvs>2Xpwa`XO$?Gq!wxqw0J(|8qe=xl_Gj`A< z5R-*v<}Sv?)_YTgd$~W#zd$pob$-(H=<4S(XuO7xH`6nvpVv(h@aKQB4=hL?lYRpK zsZmN6$T|or=Q9eu_g%34?~;v$N^_u{@~ExX)>9WXG{o{#5# z4E;qOo;b@)UK^aEN9_&o!^E(fph#L1dOo7_lkmfGt_(gVLE%e&_UHWJ`dT>RtP=E3G)eg=4uXu;GRIUS7bHY>VtTA(4qzc zhe%Vu?(<^9I&~fRFDJb!0rT7jwY16pOzKrof5&j6=`8pDN<-x5cj?fTX{*aLnu@dm zfKxZ}5RP*cggY(3EQj$(HOWpt!zhJIcI0_x)>uSSdIS4-B66-F?476r&W}({0+qXd z%ECk*Gs13zb{ISKyOepI<|y}^#b#79a*v;JG1w7R7&hTXMYY&Od{6B#R6kr;yFMZL zI=O;nh?SCpA@Vz2;)kOe4880Tz2TcOV^xA(3duyq_kQ&X07e7#h!JGoefHvfw&r+- z0XT=iTBQjU4)ua++#U`~?TTPb@pSs%Zqf2`>@U6Kxg~neN%zlJRDhW(I)BhQ3f2?J zm#or~NVT!+@tIw@7v=&?-UU__xYIx=SK8S;c>?}y=922~niq)+CD8^!i-#xh9i1qg zxFSxCJsn?=sLbJ;=rLjRAkaB}IQ@6` zQO7Lpl~xDHTgjhf3h;%u%F)Rd+Geu@%Q zKq@4?2HJ6tKeL6LtM4a-*Nj*5RN=a!t50n z6Q1t2%Cnci)9Of33v~KD7tw$CL6dUQIN%o z=%0SK9-+MAUZ(vTh34oTNf+NxSoANHIZFTAbvm4yX8Wx5DHL^);Mq0)MEJ6=q=Yry zc{C`q9-NQ*88Vt{!Zp7+r{Ei!9wx=#grbNdP|!X})7VM-Bve&vdn56_*V!@7ri$6h z04@J01x1+Tw^h4?R!?)_>R?`kXsa#uZv;`_tmpIaY~9@~@-_BY@6m6k&cA4co-;#2q<}~Exw0QJ!7*#QNW#MAr#<^$v)lG7pda5JMtj07#)ww6WJwXL7 zchsNPT;$%nas0z3N&z`f7tEZ4uP#v7iU;5djy8~~FY%j}w6l2P)YJ_hu z@7n(X5o5jqid4<02zj;#`?8(I-4kRokPXwCLih*n)^DMfHizE&6GUQwe16j= zQMC-veT0=ApBEu;#3OO#6;gk;`QO`{riJF@sxJuJt1O+ zfF9P0Pj1_=$YCbpi36`_)&k|4=9Ej`88pA~__cl?K?RR@}a3;x zvi;q;9d4jW$x+~ZQ(5==$jEouNNsB_7TAU?79r=IVTdi4l8?2QaNlz;Krjc zcRK3QzM1xo@72H7d3{UC8Ea77TjToVG=bLf)~So+?(cVaSFUo!A*B1z5)EHpmI$Hq z-a2n%w_RKkTbwS;?5a3-%*7bpB~qEF+-ncTBf$pHm+3qk0p>5tB$i4A&Zfpe zvWt?#GpV5Yw>>}#M;yUP3kM*N^-WS7E>Y=J*m8`-ht4C$h)?FyZwu#ElHc=|FFM<+ zzPt20jcObu`p>Fd#FuPRgz@Y5vgUO7q*gE*_!UyuHQ0ecPf~+Iw!zMCR05t%qoGHP zW!NF3Z)L(*Wr{J$RJsK@4&5cZqM!Y)?W1Li^0T_fj3n&?uRn>fs9SH`( z|CuB$4=;H#J$(eR7?)V;H38T=1(Cst?;A4dP^nb%^fY=K?>DH$_W;bO7{&FMY~tjQ z+}di&NIt-{(W<*>=JGJcGLsSgJ#MG`y8${dK6k4F?1&v@WZA<|b6^b$#cjDGN&5vZ z&vjwC0{(3CQCNX7t~RM>0l)7;1gd&eFxDyrnFu&(_lTb>6d_|139I~Vc0D8>g%!1- za@onk1{@gAH-3^U{h|~C&U{S$hs&jLH0!T46HpdxU8U8t;>>GgSTX8@MDda!cL*~= z`^mS|Z&AiP)%e0n;%&9ZLU z^Gs$%Fo;&K%LWuWoSUxuMidkL(3mLh?Q2-KgX(7;JAzdAuP*>Ms?SJu7d8Ev@S0-3 z^D^+;Ccp9zfzOpMK8JCBNcY+fk6@H`;t-qhbwh&>R*UGki2XYM%-w-|_<2LGl5w zTm4L{s8H9Et#%Lw$N(3R|GOo(lG3D+{TpuLhpNZfbblN0pq&`-(!&^06;~r(95UPl zM0%?IGr#JktaoVfZYb;&V@&UduK#;25hAQkOUFqNm!*at>k^L-^qxe}@g-KY>~8bY zRaDwIu7(WcS@r60`}P+Y3DX?8-g&0{x_DwAZsKt7Pb;9MrBe50bTm1Bun8hp`n`K* z%ntzLJaHN^Ns&woU0I|EfibnFtqy&0SlWj)Cwv3gfsLGQ@wOqCU_|#r`^LRQVp-5& z*$#y@Jd(O@ILq|U6ySQcWGGsVpPR#-&|CSAQNO>xz#nYY5tRt622UUW4m>;sfp0dgYGXU3N-u-YW!G@A<==;JJz3Qq zYz;p0Aj*>v*HA~fLZV?z3Le&NJMDr5QFH8F?c>525_jH)-(CMgS`Iy-K_T;N#DE&F zgOo4}(okZ{BZtLW{nw(!J~EtbmJGi>yL?soV3XprwPk>MFauit(3ZnTX}Zl!p|9PW(G(J9{$fDPPy_ zxePBnMtWUN`VH`{sSIE9($V#qN?t99S71Yr7n9Y<+2l;=5T6U=0x^D+c#$3*u~?h! z7aqVQ(jD>1cs|Tc3#V$7)vo}5X2qN9F}ub#qIGAN5&s`irYtEp`ZL{*A=fTYFo7l* zvdMvp$A0HDS71!CY;h@&&n%4_7LRo&UA=kI zONu{XusEjYlDR}$^WFPQ7`pob#VMC}_<*!jld6;(&5^30-i z^i-dI8>^@WeYM0@i0vfRo2gxniUwUPC-h_BymFd{b>w?tSBZuy^4*RFjb2k}MbG;U z!+4mbg`gW|3#N|Z`+h)>!yi=+-q&pvgJIJf=U&z5 zB-OvQksqfT^pWc~+~%*Fl8>Ra*xFlqX1kiJieU+>r%FmL_99ik-}^fXgqmf;hMT_X z_cVtQJ$>+99(9Cx4JBzm5D;c;23ShLjL3Q_C?P%ft1DL1aUNKBZY2%zD17?J>BfHT z36ums%wDJ45@uKzbjZ&UZoXEpl(zJtUwpH^rK~L|^q@jmDGHqOBFZ&xrl`iqPdgI& zcaKzA@r_SgAQ!a3+JlbXWc#pi<}_RU1wo{ph+2y>qfmEZZ&A}QTbCNwYueWam#D>N=9!RbUB5C#X; zYY{F+RjMrS7zgD$p!W3j1G391Ysx#?7q>jLb~n3l4**q$9dD<(+7%ByGFyRnoD3V| z=G**guKnB^uQWhDXC#T!=!_A7rE}Y~oAHX63e&qZqWEjRdJWpl4Qx~)c?G)Fj~cXJ zi@{|0PP#Ri(?IiZ4;77hRodT#t-rfBtU!>dYaX}ADc-Hv41=I(#I~tA%%hAx+6IWo z*ok^Q1%L(P4DIr<-6B7-uB2va&ox{5@nc6MW9scats?ah3~e+0md#xD^R(g1Yd2#D^8 z7#udm`@x8VXDTx6w))l8Aj@e5pe~~?#nDr4P=w~@UAwosk8)kkfyQ=Ns;+1)x;7WE zG~OZ`&Z3b;gKQ4zt;n{8adTk>+KXNQ4cfyMNXyfKJk=dpW*X(ku?LcR^PsI&;>WC7 z3E(jv)~oC-9tHF6_ z=usGS@Hh|LqCJK??s-PZA#4y1nay363eQ2^Xd9p~WYOy(S}b(NaxH+vY>xO5*Ya7t zA!9pJ%^YUtHLOif;O!~)67Cur+Xt@nh?nA`-*+W9l{qhe-H#edjLiukvj@7-pJ}I)NPMv6N1>41_MVib>+#8^=MysU{;!=?!a#b{xxt$ zl%dVrU8(vmUYDNj>XcJGRBQfP4OJ84mEa%VZ*73OPxQi5!vFWMxStO3hdN{5)^|Gm zX9rGXiSD{Bbw5=DT>{?jWw$K*hL0UB29H#W+xxrSwElzj@xVi% z2zm9ok^DZb|EJ>;``%4R?`eY}_csPpD_FKtTH-zhlxmZuXvE(Gk3AA6%--(p?Cq@O zBJ0v?a`lGe4eS6^qQ117G$Fh-2^P=7(i`LQ^jfI40$Uhp+ZjYZM1+nafaGn8ER{C5 z`~rbr8?V>{W7F^Rujt1xflpK1Akjw@0`MIdV=C0o6f$AI6FkPeb9K!T`ql3wmgH+c zl1D6a+-8Ai$nR*nHd(l3Hxsn_7ADq*7u%7$Cy5WZ8Il{4pT+v8w?tBVQ1und&Z%W) zu{EpF3{uTyEGP;3CAJDnepsg%yf%Dv>MvN8Tqt>o=WW{uv5eFl;ok-bh4^3Sf*we2 zpubNk9vwO=eGoD@W&;bzdsPh;?d^#KqBb_evsVFM7JzDAUIQXR}270D@~R>Uh; zihXt=5sTFp&o1pv1imk(o&EMO^1UVAXH{zJ;SAV^x(gRmvQ$Fp^OYF-XGh=+&gOnQ zn|K*bHd%;ys%!6s#eBMtY}YsP*-2y<*IT?y@OOgccH+_^6Jq+U6{sYjO@;UOvntH+ zw{yo{+jp(cTy&iV*n)&=37q7GJDF3&sBC{&HN_@FzE*FkvEjFXM9=82%Xq{ew^SJC z-Bh_*M0U2a$O>2DA-|7|G?~zHt-NZ@W(QIpULGD6tHxEz;MpMPj9RG5G5B^qR{{z7&TdLX=u+n`dPi9 zc3f;dPfY7Vd(L&Ewd*LmX@Od}8ByDPKQiPErX~&aG|OSo>~~|=O%?ASYml!xJpprT z%3KA#cg6Tjqt#H1KC}cGx_?*e>d9U9RP$lP8|Ks(7#>sQp};3d%C6GSNhLflbtaKP zkw2F@NHJtRNe*?+QKz(H^(1envj`KZ?@G6(YMohQE%I|BVD_^goMz>B!@!5bb}|b6 zus!*Q@$TYtn!)1p&Q{fE;`-aa)-lEv%v-k=C$gNZ;2{*QGu@9C@Vz8v(m-U@rYl`5 zc@lWdu+f#1LRj(VXFIQ?3=tl|oeG&66~4p^u*Ay6kd4%y6)G`3OTpRz;;w`K<-* zc-A;xiYL4iD5_{lU|CAhCou%ujEh+|B0d99l1!H90w=q;g$Qax?V1aO!btE7Csy`k z+RNo@0n&lKqA1zK6(X5c#QP6KDxBs|zuuYeL7qjmQDU2XuME!5pXO$W`_i7kD$Z8h zk~$e#jTGcLM&S=#=ZkUry#>}QRHswsnceGHKkV{oMbG*vwe%Kk$B%b7ZU9N@Enp08 zNUR(P^m5&ov*!GWUs)ff1WN!Z1J9Mg29yDc+B+Qf4!-emozj%qXFJ*((g%KG&iby0 z>RwMBIBn#U;_i8%2|+Ct9S$hg6@b}&M^_lANpO10L|t(Da(4D1Eg|HflFU|VsL)Vd z-w}z+YuILVS7CWH8duR>;zpK)44yvdP}rOyDU9^W3Nn6nw&Qxqq#LsJTN&$cqoi@p z9c_tMHnuG9HKrg$ip_o_4rPJXq627=?4l5W7@uTWHoR333rR}OwK?e4>w|Ime3je3 zx^xpe>sN+tH-kfqha*=i&hp7Z?2634IcN3+SMagX?H*ySd&8e~ zlshH3GUbH-JHbpI&~n9K5?m@lD>-|tqeuu0xzT-r& zbRFuo8@0=2WYw6sPOdgzQ;A29tpxrJ-KzY7aHWbz;q3gyMSMdUC}h3nfDt@%diXxG zdx_>}6klyL*4$=TW&uA`O#UV;VYaKY1a8sBMo?4vXg^!ZM6bldu*&;wS&k<~+G=QG z7r?P@PyR4Wq7HA0C*x2^YuQu>7$mb8K!ON!=}jc8k84^)zofAsbJ-6k1WqV-VV30h zlb|^z?wmOSLwD}y+|y77}CBH02- zvRdKl1ku1>kRVNx0Wf4w?%7dy#$1Ww^U?|0L^5A38_tb^a{~*nu(I4t?p507Lxd|r zs1dil1m!Ln2q(pkpKT9jQn`r;F|<(XV2Pc_7dqt&w`U<b#1_CL{Hn!=dF{mtyFY-zqde4m#V%rK?&YLMSBuu< z@wD_(?JYg)i-N+vU-l8!-Geq-HfEjF2d^Z@frW`CPgGMyL%VMI8Y*{*!?M0M7kaXh=D@fEg4i@5 zq);a9sD@KmL*Oo;K@fMGigxAT=TdpGsz5(t*9_(hEtQisWgIsx%0}A>h=DY*Fjga) z;r{M*!XcrPTWC&$U(K|j(EBjbrNXc z$e#U_m1UX{wnw*LuXEu87kg40qH;#gWPCRcs`}sXS*;3Hnwi#<^jv{K@nN#0g~+Ch{>svxR^8j|EjX}ifL~)Xpd*}Yb{b;Cf=M7kCo|CbsO~t%LZ^5>Q;KBUCsG}3* zGLOejvR(58w^=_-t461YFXTskVM>?nr(XGDy%~?!Uf89a1+B*mgB+_bROoBP=X6E7t`_I-2j{1u(M17~K!Sqy5tms@N}@ECnJRQ# ztQCD$Yr^8gA|)hm6livOZRdKK0Wz8w|#GpjUz7x-X~&o`)D< zkU^2N{xf=2yiSrBLAqn|%oZC29kolEAl!&j7C+#V^9=rrLbhp64?Rjc+3D{ba|~9c z_8l)lLiup@wl@rYCx{m=q2ZcRHArOjmIi?^fFQ|-jCQ9m72Z0OvjZ+)a2gOT zl1x;W8q3m6>K66`9PiJeL795Rp53}BA)#m9h>Jy#@Gl{Zo!2m4XdwJPzkY|v;au#h z=XKBKZir(5 zhlY_j^tZFNZAIehXP3m~!G@%(T6NPQ!}tB+c*BJvLsACt^XrzSdDTVJoOjGuFH#R{ zQi_4;3@IWINZd(j{nZzxj07Fs?;j)Eck0Q1z4Ib6_xyC+r|&JE9AmGlWTPO9&rK_YXr!2HV3r5x>g?e;xhzc-CI$aa=He~y_hgJ97J zei}mHDnCwNtMCy~`2*-=vI)&6z}EaPAh^kwiyiWbjFNLg_93u2F?+zN`q)ZEmURey zKsag+Nd%PCKg}F4iJ(LATDT(F}pSUk@RKw9zv<SRESZQ+n2G&@ptKrk zMCd64WvYT%bV}8r5ns?bBccn=zb4U`YYeq9c`#K;tLd(_LgQucvzCXfq`bvEZlnma zve=rU_~W2`$hm*#4~os2w6o@Xst-*v*?BrbJAf8tXo;KJS2-&I$~g2lFtH7yzc4Ie z!<;>g=UwrwnJngvrhoK<)VdeN*Z&aoHqd+scSOOe=!*rE2PT@zM@4#&D}JD99kxhW zLG<;bj7yF8s@`33Po~tXPi%x%H#k-ncBikt&VMe z$B!reWWW2VRCGW_0w<=(af$M{gcwfaui@6IF>=5pN9x*|?nyrai}~bAU;TkR`mhwZ zdsydc(_LNQ#B4~rA1+(-&z57s=Xmr>=k70{`)h@?J%RM>*kN{^ned3RtTF)Q?~;Nl zHN$o^+PZGgaO~L z0~>%+l_MlP#n%g}bp~2hI3UC#z4I~dB>>8Jt+~T;$@)bv;igw~Gxd_3R%83qLT$?h zQ?|ecP3w-O6?W40H`Oz0;8mIkVNwU!b@F-GCC*vEo7~*Tb-FmQkxWJGh$|N!^Is7EBhjRnD&^MaiJR-*Amvo~5eSlCUen3Q?QU z4qum2i${HbSeMD8EVbgqmEtjf(TkUDe+`T>q8?@Hs_pHi(mhafhFQ5ysuCkZ(*8uL z@V0z_dOT56lyX;vty?Mma7I9m0!WZzYrihRW`7|<&V|@pJbt3qEg!`3L_e&>4mth_F zPNw3~m2V8&=q4cSgDJ1QrDLY!bb`Mxn|yA@c9u3cVWu|MKuIQFLy39Y8{_Y4+ii!j zqr^~NO$%BtNZlz}TjKPD46mx@$4bWq)-ZUg%i+;sP`meyI{0q}0mMA59;OecqWQj% zF{9lsaC=TJpl)lO{%`sY#2R!+2A0YITrb5)peM9%vm*1X$}&xyN5y+XHPZhV$IEu^ z&_3p$9;lj*kXTBslE`-x{gsgl3qvc*{QIfLSdv9CTQ$EFpRd#EA7-oG_DH%&nlyJ2c3R z+->lC=o-Pnih2GCXI5awyhEy~=3EsuuWK0|T1kOS0P(36wKx~iWMlfh0k^V z)_LKC;out8tE9O>u?o|1%#I?bGoa?L1*kwHZDm|U>y@vO{B~&2u+XQp?}yEw=3#Nf z{2d$Z9_9z%i2doSY+*$hCz3~V`I%54fOvf|F(>T_l=J;m<06l}=h}LRsWb=h05+_= zFfg!B-%3<7y4+as_YVokbXBT&o(gbu_IO?&8+uaGXO*|OH4KVOb;1_10!1$dZ2Fb-U%$XhRAUf=zC_9#B~zlRrqoT7OH;+CGO&%mYRJfxrogj~CRIL9 zg$`DjK~_5tYC8VQ#c7r^T1KmiUBZ_SRFW)0rxxSd_fd89<*Qj@E%w#$zEj(iO+_(v z!z<#Ov&SiWiR7c`0@=-`kR~|c{y3Of03H`bC5|%q;wWK-kjc5|ep*2{bUoXzwKkeQ zp7!R!Hm-&{u`|D==s_sz)Rqt%AgpdY%?D!@iu?NhF;~fXa8m2DN7a0i&A|>?x@4&_ zybF!ua6jIfM2(`g0WcIFelAIWV`^*bhqjxA{QYyJS->C>>Kww)y$*(!h(jwZv~8tP zcTZeJwqmBZi7-L6tpSe+?J#Q*dt00of#2(k z@Ah^n)_vA_Omn{px(hRVMvr+z^B_V4_e*{&^vauq%=YjEpr;=I-oo*%)aqdz$ZO%( zk<~vT`ERinHY{MVLf}@+wM6f2iP`Y7Gq3e%ml4M-S9SNoHfXK~M}yj(cEDW0zFSyT z&j8bb7DryE`eDUV#F|Zl#Id8}u-sE4TMK8lNYcl%ZnD67<;x18+Vg=60Wv87q4Y2K(1Ycg# zp7tQL?~{i3_DA$3C%*MGusKFsDNr|VdQd8Jv^T1f;_dC^Lq%!NbY+G$8%y(Aq%T%v zn<=&SmAj)S78s3^i-x!sBRNB!CX$0xi4gGIqbH87tq*}I_lo!XBuE^XKkQe)B_$t) z0yWtj{0zBNR$9wx7H@{gl-StnJxfeey$DB=6WMpR-YLDQ0hkFLl4B-Ry9Vu6!Jvo_ z#F^%K5tQ;;M*$XplGCL*Wvfdsa%NIcgFS!#_`mlvj@Ln<%$#t*S!Y40t1o}%{UOXq zAa3c541_O3rW-hh-A@QG&Qm=)`8I94 z^Nv|O9)vUl3{_cq2Q-bmJGtR1M~YPp9n!%HA`9ek)$s5GW}GZ^uef0+to5lJ{x>O72UL|jn@Ev` zH-Sn@%fH|+)nli}nJBZm6N^9;JdfJMDk+iMFXLt2i7Li^mJ@srRx^SQM0TTY9iZMH zTKT_h4#xAOgd`9un{KQOXLPrx!`z_EVmY`-Qm!C9r-c;H~G-v!FK{pjBRyU!Z2 zfL$Grd|>7GBn9)XGp2IB_w?%K2o%%6Jx@?(oHaGa;!4E`u~2NE5Ax)vXE<)m5FuRc&LH-3DbP*enMZJ+rFg0T54&_SOrst#_@~zwGvqo#p47ZEEx=XP@-}U$%FWs829L6~vCza3mR@|e zd|XwG5ML3=c70$V>Q1wUF1;ri$b*@t&bvCc7tM}g3>@VuNQ&+fLqy10w+y$g40rR+ zM2Tn+Gsz^z*_@BX2g$5~B`PHE9MPRizqixp##Crz9gN`Fbn;G=quIYdb)LD82R|@{ z!}A;%)c9YTczAafS{&G9Up*L|EtXp9t#TM}i%*MBa$!w@xU={h%t3uEAJ!ukVYRLI z<~T5lO8giDQ6#=%$XImcnDb{Xw+T3Hc_?8{Mw>TMvUjO5lL@w)q}TM7_k~Q6Bn6jI z?4=)Tavg)_qK;wfkwAT`_GtoI3qm;7-E;F*5{!yc1N(-jcbo$7r!#&jFT5mRez>$UOx23l85N+c{E%VX4;*4^z1-r-7HPaCYo4C?xomnH9gFx* z>-$yycD%HI2X7ah6-vfLba4UX1X9RWF$X;-hOg^uy15ktEDQcJ0gplgNp zSn6=r$C#b)^YOy=ku4gFrFxCYZjA}sYAINvvvI9GNla5P5`#I3kB+Y-4rny;*Y>qg zc`!g$O4Yw%Vi>cz2}GI*cn17z4om2cdo@6|q7m#;A8U&=-eo$950KN4uuU#>Va&S{ zd>hmWej8Hw5>(e}$fM;q-z1nBSw6rJo!yp_*_DB~chP9;;ZrW#;;u7uVvaFt?vDtM zMalG|7;|-Sw#XMJgqJ!f`9LRHTLsw0Igq~z?u;?jqCTKw99b%54F~w|_W-q2a-j-N znh9tK+k!O2V&-$qSXNFGhzkw})!d1f%u;gebQXSi-ny@Bg*?Eoh(4oegVAGXEU~$G k8%?7)!2d{C<*r+`R;CCh{=p-PB=4loDThX4j|%_*2Z7esH2?qr literal 30123 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

G<14q9T!8 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 n) OR (Lines.getChar(line, pos) = quot) + cur := quot; + prev := 0X; + INC(pos); + WHILE pos <= n DO + IF lang IN escLang THEN + prev := cur + END; + cur := Lines.getChar(line, pos); + IF (cur = "\") & (prev = "\") THEN + cur := 0X + ELSIF (cur = quot) & (prev # "\") THEN + n := 0; (* exit *) + DEC(pos) + END; + INC(pos) + END END SkipString; +PROCEDURE SkipEsc* (line: tLine; VAR pos: INTEGER; n: INTEGER; lang: INTEGER); +VAR + c, c1: WCHAR; + k: INTEGER; +BEGIN + IF pos < n THEN + c := Lines.getChar(line, pos + 1); + CASE lang OF + |langC: + IF Utils.inString(c, "abfnrtv\'?" + '"') THEN + INC(pos) + ELSIF Utils.isOct(c) THEN + k := 0; + REPEAT + INC(pos); + IF Utils.isOct(Lines.getChar(line, pos)) THEN + INC(k) + ELSE + k := 0 + END + UNTIL (k = 0) OR (k = 4); + DEC(pos) + ELSIF (c = "x") OR (c = "u") OR (c = "U") THEN + c1 := c; + k := 0; + INC(pos); + REPEAT + INC(pos); + c := Lines.getChar(line, pos); + IF Utils.cap(c) THEN END; + IF Utils.isHex(c) THEN + INC(k) + ELSE + k := 0 + END; + IF (c1 = "u") & (k = 5) OR (c1 = "U") & (k = 9) THEN + k := 0 + END + UNTIL k = 0; + DEC(pos) + END + |langLua: + IF Utils.inString(c, "abfnrtv\'[]" + '"') THEN + INC(pos) + END + |langJSON: + IF Utils.inString(c, 'bfnrt\/"') THEN + INC(pos) + ELSIF c = "u" THEN + k := 0; + INC(pos); + REPEAT + INC(pos); + c := Lines.getChar(line, pos); + IF Utils.cap(c) THEN END; + IF Utils.isHex(c) THEN + INC(k) + ELSE + k := 0 + END + UNTIL (k = 0) OR (k = 5); + DEC(pos) + END + END + END +END SkipEsc; + + PROCEDURE C (line: tLine; VAR depth, cond, pos: INTEGER; n: INTEGER); VAR c: WCHAR; @@ -115,7 +197,7 @@ BEGIN depth := 1; cond := 0 ELSIF (c = "'") OR (c = '"') THEN - SkipString(line, pos, n); + SkipString(line, pos, n, langC); cond := 0 ELSE cond := 0 @@ -193,7 +275,7 @@ BEGIN depth := (k + 1)*2 END ELSIF (c = "'") OR (c = '"') THEN - SkipString(line, pos, n); + SkipString(line, pos, n, langLua); cond := 0 ELSE cond := 0 @@ -232,7 +314,7 @@ BEGIN depth := 2; cond := 0 ELSIF c = "'" THEN - SkipString(line, pos, n); + SkipString(line, pos, n, langPascal); cond := 0 ELSIF c = "{" THEN IF Lines.getChar(line, pos + 1) = "$" THEN @@ -274,7 +356,7 @@ BEGIN cond := 3 END ELSIF (depth = 0) & ((c = "'") OR (c = '"')) THEN - SkipString(line, pos, n); + SkipString(line, pos, n, langOberon); cond := 0 ELSIF c = "(" THEN cond := 1 @@ -308,7 +390,7 @@ BEGIN IF c = ";" THEN pos := n ELSIF c = '"' THEN - SkipString(line, pos, n) + SkipString(line, pos, n, langIni) ELSIF c = "[" THEN depth := 1 END diff --git a/programs/develop/cedit/SRC/Text.ob07 b/programs/develop/cedit/SRC/Text.ob07 index 4305a14a49..09ef615b88 100644 --- a/programs/develop/cedit/SRC/Text.ob07 +++ b/programs/develop/cedit/SRC/Text.ob07 @@ -93,7 +93,7 @@ VAR colors*: RECORD text, back, seltext, selback, modified, saved, curline, numtext, numback: INTEGER; - comment, string, num, delim, key1, key2, key3: INTEGER + comment, string, escape, num, delim, key1, key2, key3: INTEGER END; canvas: G.tCanvas; drawCursor: BOOLEAN; @@ -351,11 +351,26 @@ VAR PROCEDURE String (text: tText; line: tLine; VAR i: INTEGER; y: INTEGER; backColor: INTEGER); VAR - k: INTEGER; + k, j, Start, End: INTEGER; + c: WCHAR; BEGIN k := i; - Lang.SkipString(line, i, line.length - 1); - PrintLex(text, line, k, i, y, colors.string, backColor) + Lang.SkipString(line, i, line.length - 1, text.lang); + PrintLex(text, line, k, i, y, colors.string, backColor); + IF text.lang IN Lang.escLang THEN + Start := k + 1; + End := i - 1; + k := Start; + WHILE k <= End DO + c := getChar(line, k); + IF c = "\" THEN + j := k; + Lang.SkipEsc(line, k, line.length - 1, text.lang); + PrintLex(text, line, j, k, y, colors.escape, backColor) + END; + INC(k) + END + END END String; @@ -1762,26 +1777,72 @@ BEGIN END exchange; -PROCEDURE upLine* (text: tText); +PROCEDURE upLine (text: tText); BEGIN - resetSelect(text); - IF text.cursor.Y > 0 THEN - DEC(text.cursor.Y); - exchange(text, text.curLine.prev(tLine), text.curLine) - END + DEC(text.cursor.Y); + exchange(text, text.curLine.prev(tLine), text.curLine) END upLine; -PROCEDURE downLine* (text: tText); +PROCEDURE downLine (text: tText); BEGIN - resetSelect(text); - IF text.cursor.Y < text.count - 1 THEN - INC(text.cursor.Y); - exchange(text, text.curLine, text.curLine.next(tLine)) - END + INC(text.cursor.Y); + exchange(text, text.curLine, text.curLine.next(tLine)) END downLine; +PROCEDURE MoveLines* (text: tText; down: BOOLEAN); +VAR + last: tLine; + selBeg, selEnd, temp: tPoint; + n, step: INTEGER; + frw: BOOLEAN; + moveLine: PROCEDURE (text: tText); +BEGIN + getSelect(text, selBeg, selEnd); + IF (selBeg.Y > 0) & ~down OR (selEnd.Y < text.count - 1) & down THEN + IF down THEN + step := -2; + moveLine := downLine + ELSE + step := 2; + moveLine := upLine + END; + frw := (text.cursor.X = selEnd.X) & (text.cursor.Y = selEnd.Y); + IF selEnd.Y # selBeg.Y THEN + IF down # frw THEN + temp := text.cursor^; + SetPos(text, 0, text.select.Y); + setSelect(text); + text.select^ := temp + END; + last := getLine(text, selEnd.Y); + selBeg.X := 0; + selEnd.X := last.length; + n := selEnd.Y - selBeg.Y + 1; + WHILE n > 0 DO + moveLine(text); + SetPos(text, 0, text.cursor.Y + step); + DEC(n) + END + ELSE + moveLine(text) + END; + + IF frw THEN + temp := selBeg; + selBeg := selEnd; + selEnd := temp + END; + step := step DIV 2; + SetPos(text, selBeg.X, selBeg.Y - step); + setSelect(text); + text.select.X := selEnd.X; + text.select.Y := selEnd.Y - step + END +END MoveLines; + + PROCEDURE isWordChar (c: WCHAR): BOOLEAN; RETURN U.isLetter(c) OR U.isDigit(c) OR (c = "_") END isWordChar; @@ -1861,7 +1922,9 @@ BEGIN setSelect(text) ELSE IF (33 <= code) & (code <= 40) THEN - resetSelect(text) + IF ~(((code = 38) OR (code = 40)) & ctrl) THEN + resetSelect(text) + END END END; @@ -1914,7 +1977,7 @@ BEGIN END |38: IF ctrl THEN - upLine(text) + MoveLines(text, FALSE) ELSE UpDown(text, -1) END @@ -1930,7 +1993,7 @@ BEGIN END |40: IF ctrl THEN - downLine(text) + MoveLines(text, TRUE) ELSE UpDown(text, 1) END @@ -2294,7 +2357,7 @@ END create; PROCEDURE setColors* (text, back, seltext, selback, modified, saved, curline, numtext, numback, - comment, string, num, delim, key1, key2, key3: INTEGER); + comment, string, escape, num, delim, key1, key2, key3: INTEGER); BEGIN colors.text := text; colors.back := back; @@ -2307,6 +2370,7 @@ BEGIN colors.numback := numback; colors.comment := comment; colors.string := string; + colors.escape := escape; colors.num := num; colors.delim := delim; colors.key1 := key1; diff --git a/programs/develop/cedit/SRC/Utils.ob07 b/programs/develop/cedit/SRC/Utils.ob07 index 72ea393f31..765e83d196 100644 --- a/programs/develop/cedit/SRC/Utils.ob07 +++ b/programs/develop/cedit/SRC/Utils.ob07 @@ -144,6 +144,11 @@ PROCEDURE isDigit* (ch: WCHAR): BOOLEAN; END isDigit; +PROCEDURE isOct* (ch: WCHAR): BOOLEAN; + RETURN ("0" <= ch) & (ch <= "7") +END isOct; + + PROCEDURE isHex* (ch: WCHAR): BOOLEAN; RETURN ("0" <= ch) & (ch <= "9") OR ("A" <= ch) & (ch <= "F") END isHex; @@ -367,4 +372,17 @@ PROCEDURE between* (a, b, c: INTEGER): BOOLEAN; END between; +PROCEDURE inString* (c: WCHAR; s: ARRAY OF WCHAR): BOOLEAN; +VAR + i, L: INTEGER; +BEGIN + L := LENGTH(s); + i := 0; + WHILE (i < L) & (c # s[i]) DO + INC(i) + END + RETURN i < L +END inString; + + END Utils. \ No newline at end of file