From 3ade12b666ce6c1ca288fb3e085ba642741bce74 Mon Sep 17 00:00:00 2001 From: Anton Krotov Date: Sat, 18 Mar 2023 12:35:25 +0000 Subject: [PATCH] CEdit: fixed whole word search git-svn-id: svn://kolibrios.org@9907 a494cfbc-eb01-0410-851d-a64ba20cac60 --- programs/develop/cedit/CEDIT | Bin 33223 -> 33310 bytes programs/develop/cedit/CEDIT.INI | 2 +- programs/develop/cedit/SRC/CEdit.ob07 | 2 +- programs/develop/cedit/SRC/Search.ob07 | 16 +- programs/develop/cedit/SRC/Text.ob07 | 234 +++++++++++++------------ programs/develop/cedit/SRC/Utils.ob07 | 5 + 6 files changed, 141 insertions(+), 118 deletions(-) diff --git a/programs/develop/cedit/CEDIT b/programs/develop/cedit/CEDIT index 90a62713d148813b5dc72fd7824a428a16babd13..6ea1a8e2ca341c8685728043d33e25eaa8cc6102 100644 GIT binary patch literal 33310 zcmV(lK=i*$P(w?$jsXCH00001Mv*2LLXK;4&&M{gp_UL-7*KURu%w66sT#$6t<^~J z^I0?w3w?_FP9~ma0Dd%WHH0Cayy$UV3O05x8$^==E8=O*W?sgSwR1)?4buqUu?i#( z8I6ks3RB*xZ(3&L7nR!^ZSOL*7wF1QSYAj!dlcm$R~R~O1;A|D?j9!pi&!5dK4ort z_HB)WmS0gLAde$1=jqdG)>#=kK$?8BlV~QBUixyALe`)tK9Jqoby+Q>g_N|a=BsB? zMjUe>^wAmw!9gwgd7gR>^8TEf3DoI3P5C%Vvi;ZU2Q!Gpbvdp#G(VA*(PVF zqOw9=Eun||*g5L|oQG92l2Ey~Dktk{t5Ao{LwPzt;vc0@jWIgsg{qg>KC6GW%NxW$?bv})6Wiahj3z^cnxUZvw#f9)8kmzv+6Qz2 zXgIKqUHU7S7hxtXI4W3>i&m)});%yWCNYHH$=AKT-_FA*Ozu9>1DNY>5N{_!N%x+_ zYbHZHAS0Eo$=xl&@AS9B?!F3mJVyro7&?O-*vl=Ic*gvkcb{UH(B(9JF*RjG(WZHg z9wI(p%3ShP;ZuaeQ7FL_z!WME4oj76K=w)M2Hu8fqWiEYlwY<{N3`uC`HMloihuiK zguXI-rynNB;~&L0A+2h)Vgq?_R2{dbOJb*8K`_G<*zvK*F!j8Q2OEQnm4hpaV%yz? zvrG{nsNqx!O)Ddtk_TEqe;pD{n@oBRaW~lnX7!M1rnq4r*kU_Y5J#Fh$lRK?M#hI&;EE)8oku|g{CPUwOWoS}`G7uV z0@^TI)3_!!#+jr9Gnm+CGSLPvz`od*jZ4C(!=z?1DJwbi{Tjdrx5bXzNvjWrVC|4c zNX#ZGUXM`;Fr<{=moL@-&vnp6S{mgTO#Sz6 z$!|v^<*sF#dlXbH6v=t@A=R9neE$JF=rai?))HQKDu-@bh&$@~TUpXlHaBpKiQVXA z>BZaK70;4yGC5RK7yIKvv+*ddqpe+G4578XE^K+I-6-|zA@WO1jrtN1=eN>EDMeTx zO#Vv|)lwW`t3%Gw+p9u9SMH0})Xxx9vSf}UV`hU@zNF`+&c~fh=L3%N2yKCf2;QU9==Ism~5sVNJ=HeNhThXw;^5FD9#FmPjp-PJDBEKA__SbCEL@Hm(927 z=4xXM(`-tSjJB>y0U}}!+8S@Jj1-*7S!o}iB(Ms}Rf}`7CN7y6Q!#px!$YbW!@~?824Y-op1}=Q9N}G8mXJOQ=5__PK$$ ztR&-Nm0XAkSWPr2EWW@PaM8stH&PSUw|brB>~(~7hnxnp~S+v}!1D6wrDkJku<60q+_Qy7aowL1Y2=Z}f57SEqES^IcwTHlRQ-+08 zFhYa#UMQiEyd%{;>=v8J@!ID4w70>wiDvTkBmBg(b|PNrN!Mi;&i^vo_9X;{{&Ii&yka22M;tcGCjgP`%AeWX|W=cL^9hu--bS$q!QsUYSHj$WOwqy8BUEA@vXoMvmoC8 zUU6rsfrh;`Pl-{(aNmixdwl9kb}lE+q$cdd4l9?{l1H zT5xAx6*$!3%aJ&#_b|Bf9jpEndldI$3{C~Fp;YPi4)PVH53E_{?*Frvy&{26~{TVX-AS!AAIeD;1&Z-!4l%+9T+5Q;~F zU+6teut4)glxY(2HhVrf*V&oU$i3{`sQRa=r?A0DlR3>4!(m{te2q}TGTYIZHi*6x z73o8wT3@W=*dSw&vMsN|*xPtf0c1bSmvcc&;wEoTXX2iR5N+?f1|awMwT z@}HZ?=7p%R}5e8xHpQ(KF3Y{MD39y*OTc2Zs(X#}U8n{P+2rfNMe5Ou^p><=DtRPw; z9o}_1yGNmGB{DDeijqp@_qP%p1utBVlArm#Y#>sc3eH7f0werQJr#;5i()Mznq~t$ z=38mMUv9f90pdq^AiY!n$8_O+D+9)sAWkvz3lb@5?j~>LlMT?0aJzhFEM$}MKhjNjN``!fqt5@l=rBi&W>BYfB7$(|&WpBqAV2d(M;1kC)4sK#KZ znd6dWi9|z&aT6g7MFDaWnN;lR8f>Y!x-Pb}zUeXdr{TXFUS^XA14kiBd;@)0{zIpgPf}*!mSZ*d8(!jQ_BNjU)?+8 zqcy(1LY_c{2b$g2MGXu&1~mrvESIjv|0fDQ15bvhJnn@|6Gs}9MfWDZi#CC_wduF{ zuOffmm<-xO*2#>cU}}0w9$&`RA&J*Jn5`b)z@P1D=$M*vT$W^0`a}5FYYuTRCFR5P z8(3nOY$_4g+zm!g$Nl1{{>J$kD4UjK_X6s*C!m2p?%knFyR@?IJyCy_0`Q8kgIRfoSKtS0z(}ht;CgSCZuEZf!jQOv z7rYdJP}c?XT9+!Kz|})}L_ac}+7GeouJkxEN_VXnm}U_(Q`{nkUiVQq#*$zwE$nR` zuZ(9usTTw79Ej;vNgEBM!CFZl?@srUXS;C@o>efn zfY#a$2{d%(SG|r@=(@2QfrSJeis_KJV{zwF-}=wa{*p13c8 zFcz6oKvZ&laYwlTLNH-*w914qH*v37!4Z2k3ssmK5Y z7ZC!Zw%Yx&opxrl@XM#!FdNG1l2IS~vgO1Q4)9>?fV@zE$fC?uPo&4s*S>-=l_1(r zbrVRBy+zuamhY#;&%!4nTrv3zGRj5a9pi%u^%Eg&VS#X*jB(x|ki-Y;9=n2#ad4=* z(_aDTqD2d=na>}(pqY=$>FK?VO8y0&uIlU&nOoOrhV*#n*QTw3jsFKeQ-DtcBQT~r zs@X=+eZR~`Ct;UTkvfGH+Bj&LA!79h`jgrQ%iFvAZ9ju(8d`6yWk6XtWk@_PPd^=| zm#-;AIWY3NLUC8NDdMI1p%;ZA4N@GO&>h*r<8Gm)QcXjOG<9$eYj0+fNw?Chur{Y; zMuZ_W5Z?U3df4;We<_RoNxzpS^E02IN@0+?)hJ-wUty%u$^h?v3An>^0ex zcfr;nW&p7n6eYp92CL<1!9QA2C7JM0xCZadyX40wcMg9AGQ4kb{RbS$XfEJ$}MiJL~Nos1SNn*^XG0x~+f!d|PuMoo9dpG1Y) zVX!|9q^0qJHoknl@s%g2!#pAX$ysdCAEoHFj;pqMSgGHs z!V}SiVrV3l-jVWU1XaA>6*k%1ZU25;klrbrNaYp=%eD+!+vlQv!+IZPS@Ts~3~kvB z=Y|h2TA|T{q0o#%f_~W2;&fTiQ9DLuHu2uP-xUBA^*6q=;%%7Bp&F;hg%5V52$p8a zC9f>Kaoy=9=IfhwVgo-Ajyw(6|8>(wfMm?e)kskRLa?yxk&wnke==C@Z(4l1nmi20 zflpy=QC?F|)>hc(u}l`<{E|MGK5w&wU{SHXfwhas4>MmwQ8bYDX1mTah*&=)&irZ)dhVVxWCEW8jL1Da_^i z(+H%ijK5eA(%K6a_^k1;0z8oazJob*+nUgA!AM3f*wcsD&tomg%9>4zwuFZrXww8j zK1`<3cU3tsTzi8Zcfm-9t%5}C-+jv~mU7?myMQ;R^2f)Z`dZ$m$&JQqpfyu}gbL)2 zG@HXh`j5XQYUfQiRPNyswwnat?Ml5VMn=S!<~Q*VcuA1Tkd>Y4AC_9-<`i!u@X|Tu z#VTH5s8K0{)%^@9=|Q7A6-05&xeFu zU;SUF7wHanzMzh#&_aM36YssODB_hQ73X1rPxv&Tt_^>-z02%XigB^nu)V506Ea3pfqu?@4*&{zV zxg4ZA=uMfp)|`X@VOh&k z{wCOE4i`x$HcthuE2KedI|6MMr#c*Kt@M+mGeb6dRqW*1Kr1F0(w|r z?*}_kYgcCA8h|Az1bbUq3ipC1<_3}>iulckjINl|+99C|7m>1t*WD!18dYCn*>_W6 z*iJo_u9+m%v4zyw!i>w2sdSNcPpy<;a8EDi8IaIHd+bW#V@yHq76V0DH^HbTMG8`6 zo#*ra+Q8K6rPWFLjdW=0HE%d`qly$4os}5#z~FDf=Ka*bygJ1vv%xTPpV)l8I}*_R&`0u^avs4cQ++f9SA6R(3F6 zgt=IjKONifdFc9M?vRr^K)TvXGbs>mK)N4C0J4prG~dpdZ8y}t#`EVo^2b?>*e54~ zX!^F!y|E}Q_@4?%u@kW#o(q0Qg}IY8YA#8A%Hv zCPD^*9@)U(SEK{N!xxOoGz}MZ=mS1(>e-&9ir?kT`=T>vM4xsb#Jx-3Il}JEV(3J0 z1sjR$V<2N`uSlL_lCLTd;_OqP<(zLW+hPy?liHwfSpe~^AwUVu>*;8%5xQyo{H2jT zvj316fs@f9o9i=MVBCA35_6zaKZ|tN`C?qTXP0v-qF^^)LevF!TX~f!UJj5LI9_)?&K%d@R>Gv%V2dZu z8qb5QjI?*Nb0hj^pKyI)@;w-wTO3%!u+>c=5s*xZVUOoP<*jA0Tz|+r;e3KfvZ97D z+r9Eq9y16Dd&OiQ4#lTiwS)o2bv!HXTnvC_Na*WAa}Uwy5_XM8o(964YzHvT@!+W< z(!YTw_N)mGgn`kMBbj|SRqqgV%x58jg}1{v2cih!WC2#~IzWWs0_eko!Qj2}1UHiO zV6=UM_U2(J`3@R?@j^N$pzWmBWmypd&f&H-xmVFerGNV~DilJP7s(Ubjv81xzotkY zE;Bs7C8!mtn*wT(7`ic$G&19FzpKth_K})_0PNO92|^+>TW7Ohs{kxu`u_YSG2w@@ zqV@pIReTB*wG~LaQOtyw;7FhE;4XI}b9eE{vKdW39O1E215_n1Q!@R8S8E`dL>q`T@xIU7h7^o>#l__ zEFb>3jqbk;Gd|83lD#A~04g|d^{bkgv1^=^pyiY7(Z$_OQhL#$zo%jL^LrDky`U{X z`7jBtNz$)mPcjyE`y3D7fFbNh^P(YD9woP%OR)wp$4{1C2XQ@@Oi+zGA&vG(jK_gR z`+4r9$7Anlc0;h`?_}n_+`5eCN+^?clz{sOjNlGpHwm*peB*g4R3znJ#|qiN1+%3i zbgw?jP^GEA1B@MrP$(Fkmgv^(S_K*EXW^nbik^FaZZaZBuiG*U2fiA>$SLOI4;7lD z-{Bl1OWFo4J2wV)76GJ?={iJ$1m3K zmLBP#lq|*9O6gBUZSzD=gvpkDq4`E)EdE2k%M=u`ukPV43ctFb7vf)^@CsvH-wN@) zzmC{i)xuQ3GaWzNzL3Y)%S4k;zd*Zh#K(j*Q73zt{96(`*R0MB%$Vw0+BpCYmEPaE z>GBX<;7GHSr(X?QudYnbG1Q z_(DCtC*<<=qqVO-o+n1;l-~6Bk7obGr*3R5c9YbAu5P9q1(!sjEnTi#RCo= zA2n?xlH<)W@d{Hv`Rg7OXq&V;JUJfZ5e|!}Smi1A01vIu)-r;4tE!sHmDGoO0;P~2 zIgiu+8IHVw2?rmS_Jb%AG0#x!m0a-Cawp98@_c_@fz^eSzg`q`+h5%`-4nx8I-23r z<)B%kFUDe|lnRl7Gn>hsjO5gLKcW(|87_IF$Y{+Bed@hK%x0mFFq?*L}L55YS zAj!oX8VxwKrcF23iUrLPVuG)e=pIa*3fkC-xo_-!TD0Y42cB2ipr`Y zv9_$l@#d7lBxurOQ`A*4d&}4gvDlPbFs1sYJM!097JsKIwj&XloyrQdJG~B~2$fNo zz+K*vj5gJ*_dDETcNIK|ib&m8mD*_tP=Jcq@17-T(~c%=s!y|pR%IfNVDviRjv-NZ z{(eu4r5qhNG`14+Fr**-0#Xl(nQ+}4#HGhRTNfXt3#Vs|ZZbr20U0AP)DR@QS;Gh4 zmpaQ5PZL6)$^By$)5K;W6Jt&b)Vof4*OXJ}pr$>~pgj|Sh`oyblpp@0M4fl5W_5lYdvq`Al<6z5W{F0p4*>FO&hSD8x{BqNE#n1+uqb( zY;_nIE>XWD?JSaDu|Dd3`|W3wow(-ZNTE@~LG#vbsQ-Nk$=ut>eXJ!a(2J_!5Km6Y zkE@a}cri+t-2NcLbE^tPZUpV!*U3_E4Oir?UP- zEltloTv2cwDQjV1@O9lay^ZPKgu|v?@+#a@52?FiE^m2dgJLs}m`FhFl#SHy??YFl zTnRl17EO*djYy4s=XsroV*N+Om2Q__dVJ2(n}`nKMO<2@{TlvZ>;r`+&o@a5IhZsP z9l(g2s4V;zDO!m!Jvy3@xUjymk{7}VD9V?CskNGkbZQ_`@N=CN{n_(pEm#}UrnvkooBN;$aX zrb7K*o*^YUX_qV+^6ji=gdV=ajhXDt!7M#f^EP-d{cpO! zowv4tA3Bo4L5#18nww}9I=XitpbMIhI=gm{?xjJIWSK%h8=}sRGH-zt9iks_JPT1q z3kE}dKKv{$81o`Z{86Kc;Aag)IUTAyVZ zG{##?H(HjbhiC5$K}OmH5x8@0IgG{7PPy1h{#>?%O|TI6JH`~}<^C;cvYmntZS~k( zrtpb)VFq46Y$)_Rnb07Ly8^+GpK?_2n&zeaoV3je#g$X_RoObCF(78HB+P-e{=Afk zRpqzr24MtCKS8zpzcSM%0zW>##g)Y?kg;vHzoKaY%3jKUeAGqnr~M=LQF?k$_*1uO zF-Zarr&&mlm(4_R_Ns>tN7dg80Kahu`bM1)ui>#3{;Q9Z>_*_bh%B__;a})8j0eoHR%Ty#e$=1mYNOS2PVC=z|x*vc?kN z@dD7$ebH-)uN-9C5x#D{JI4i`;T_PSUiZD9AlO8-?uD2=-{`b*kFh!oX);C8TQf@> ze=;(v`9B~)4wO8~98PTp(9*Vxx|G1Z!lsG%{2Aj8{?$PkFyBN51fMQ6!uqq#kUG7| zeU0v%5X@zoi6OUS6m^UOe)+dzSr#m_fo8y%uLL4&^|e#RPD zAKeXg-^-YI^%OV_)Ar9;QL&W9)s3OxMCv#V2iV+6+X}-mKm$sg!Ld=IhXo=UkiF5pzvuZJ<8n0IxkEK zpDF!Hu4-)U3LyUgfYQh))Gm8lb))Vx&uxa-yCjhJWNjD406M8Kf1 zW9oDEM^S&_WPsIzh=G%-9Q)UO`Z(j59wPkTlG1hqH&leMp@(vjncuAL9t#{+4K6?* zrB5g@<(P5JG#V9;)o@4}NU;G6Ixh)0*_8=*qNixc1~2!izFRvu{OO)_f5xMFUiK<2 zObB?Ma)yr&?a_MeKEfpS-FkiliZB}M>cAy3mAH2=+sVBFZIGbm&G3g6i3Ht=|MVhd@2dwRJ09+K(N4M#Tj-Lh3ztoUc3LG^dj0j?*rA?3 z2K`#cu@Xsms=2CZ)@p_RoxvA8JCy`})94o6I2y3du)Smz;{@&?gG22?iwUx0&qHWr zXn0}jQx!ov2d$F$U>Xi2X^@=8B_*p8)ll#EOzO8Xp{%Dj-N|%wvOS#G>Ew(~<}-g29>8^+C_8QNT^7d)A3eMqV30up(j@=pq(+ASI1e6Nzn zY}I+)t0-UFy#~lsr%i$w3X)^^Ph?z0>+i7*Bz@pLd8op8Fz@a`US%##AT&md74~nO?*8fS z9_)Tv%|={dZD+w9Y=o~^K0ZRB{C*{skv+TXdEno7gHl7aCihIkYrO_-g-5^$qTWcL z_}{E*(>MFckwD>%y#g`2byx_Fra&UK32pW}tC}|jF;eE*WemxRWJjKcM1LrzWrDIf z?trm*M!yeIa%Xh&Jz6L|p!Tx-0kTcm0m`aXk%PL3I)d+07`Sj#blt(+2ZN`$pq_1g zpm&|~wPGelRO0ve_=r^LG~Z`9UfJA^+KEoVN)WcsKLc`ix$a}kAH3qBU>$JZsGtyA zOW))rew-r_G(ViX6An-PmPyz;%RP#Qu=4Yt3(DT^)hk(CjnH4Xi$1iv0^X8!h(F>LFK~2%aJvHPJM&8W}Zo# z9rMS6To9orPcy6&1L-ZHP&?pmpAFfc(1#NXNK!X0?8@nr-v-WVv^GHTfu5a(GgEi_ z)9sOQS18;?;W4UH(D>vYGwI88FcdFTTnew!&hF@cUwC$swq`K*_*7U#!5)NSAZ~51 zl?JVg2A%a%%Vc(UVXA_qDoL5)E`_ow3&*(!MO>4q354Qp~ z>A!oEz83*386rsSS$KL{3ZBb*(!>) zWkyb;Hl{sz5($WZFi&o{)E>`q1cTCkR-}TWWiY@4Xx@Vs|NDWyvd>MvvOmPwAgSw) zRYE{8+C+S|*^G=SpqTLVs&h^)`Xd96YFyE~e&d`BWG(zQD*bsE_%ro0vQ{-2TvjdZ*D5e3wL z-zmls8F`XqUQHG481XN8ni|NiK}?p5K38Y zk3i%V7KO=L^yQJVxI9(_fK5Fx3FSfY?lZ3LmC82))4;OFr236i$gQzV*C#7AzQrP5 z2WcqwRQA7{erKM3iN(~n=mtxftF@iHkO4cnlwEawOLyF~9bj(j&ZAXB9z(E?T3n_- z^qPu(uy$u|W5R-+?|!c_|6lzwSDPyW^{fFK|^MhF%2 zp(9aw(ivb-rL@8IreQ+)OPx2HP0B~Kw4By5 z@~T&=Yqu@r7CJQW-+OGaqF?QaDDMt|rCg+`5B0$Dd-XZ_FRVXJib(RrfT*o|dGYo% zDK}@#8g8SDgE;xdd-`T@dg}(zlgJvHnTcI(LHguxPkrt{r1KX@xeJSM> zEmL9R@R@BD3ZYv|kMkk`oOrsg6&@W7S(13s?#fI)wXHgNIVv90a59b$uijf9J7ZHr0*8)V zVXmmF8!4$to(rKK3{R*@ij>+VDSg4)q(HV>JIh`Qe!|q5&LtIBh#5G!7BC{Wg@GPe zZ`bf1k;}2iLFEt0)&|ArpYW{!W)*pW27yYm%H5H8o zJ!Xp~8OunHH7;RIbqp+}y#jt$VV<}`Ju_6a8+nk$!HL)nkts0gwiFF#O``2UslP&8 z?|72D&XjJF_>e7@nIuF`k70(*wSNc0fF}c{i|wR5?c&{@Qa}HP2wTVWNZkcl>7Kub zYe1bXmP^$J5N9N=toC8Ui;D2?@{}6_AW~fs-Nh*~yHI5fg^dT$mla7J(^kyBt za=zOBqPJe_jsfaO$EI!QZ&shjn|XrWy+|k70clZ6*>SVqGHt$}VYuGGw%OAl(bCXT@|A)+gOw#(;#WyDgHihJA(F`)@* z#8|-XG$WrHS*WGt2nCe>Y)dFNwnRQ;_fF-V3)nTd0(5RAL*|nc3CX(5;eN&)N zh$Rs3=w}4!fERc2z_3?1vLKzAHlD^=NXn8AtKTxyPnqho`^LU6Frp#u*IG z1@%6)?p=r9>Lof0t;Dx%QDZ)r0^f=MVL@aQ(<6Id+_{q zt$X7c^iY_W%l~y6NIVG(QSst`1R!sTcaP$5Q%0GO) zI$>ZKwu1`+GUQF)wZx?2z;(YQ>IYkTKe&HOt(Kt0K5ag0_tWPiHm7wPlNU%0kT zxXcn=KeO_DpZE62#j3)`Q}Vbt^cN}ao6fJ!G+|FtUlrfz;gsr>ni5-wlL!|#^>S_( zJ^}j}8EA&=SH=%$LQ!A@UXp45m_AfPrUsakT#Wbd?|+V1?K0^A>+y)qD%5vCeYf{a zhC%WhLmRBuCO$O2TaF0&^Fnaz=eo!EZjF)0XwVJD@tg~?UIjPLKQlY||G`S+>+cUq z3*pS)%W5WtU)*G6=hBnd*m}QldT9=9Vvq>D26PM$|HYDaL0H;`7n^dcg)ofpW%zqkpM|!^Lb?QF2F6bvtm%Z11(cXJLL2)7H zbG3@7H;Tag5hnUbxshn8Hgk+@YeuK!Q{Kr>Q&~bJrOv?_af;-;IWRrV zoY0A{s2dyrDh5{ZQ+-6#s@j06+B-eW62ZA&Z8iK`#{*-EmH`RLkGrbCwXULyIZVhP zF#7TK0#*-~v_$5a+CdF3_*iyPTj4?_tL?TtFMygCn~;xaT&7ig#8&}VQP%j&gF3hz zjb*r6swE5Y(twx0I)F`BXSoAE(|CaUJ(A=>UQk-ViICZvV|s)iOrll- zIGa151Xl(Umt8qtn{vLF=0pmPZ)36{QZu3sTR(oBI1#~*=Kqh@;VanVq*l3_tA?)4 z?9(cixSSUeY_`>ZotKkrKv-yEhgQzlq|(P|G3CD6n*ERk{EeK`VJxLsI#CNey>}#a z?iV)MnWIV+!~RAogZm3+Ji5J2#>oUsO6}Rh&)May6J)5oPcEz$Chp%7`1XTog_&%J z=&tjwse=Qx{t=@)=b3lR5w(U#`=_3wIM2m9E${*q21d`58{aK*Oaez4Zs5Kzlf!_t z)>t*5B)8bPx!=z`pM?wt`ZUuue&E32f0bdl|6hf!zqL-#k+G~|jnJLq?iUUZ#+(=> z_`7z|%0pWTi`m;|A0s*P573s#iT>zgyzli4kGS)Ww-2&jqBCg7q0^nBx_ylm0SAna z7$@JS$>o_Fd`VD{Qcmh)l@ohTMN^hME)Sb6KDLJVzp7}@Z!6kP>`M+#wJe0S?zzq)_eSJ zqyjEEETiszwzE7CYq<=9^nG1=$4UW9X)^z#=Hg?bzINA44>r}eJ|B8>*~Fo+{R+j| z#gF!|*6!#YMxakhOn9#SEktG^-EOb$A{|sQ>vXZKl-~#!Cq!1S#!Q(1UpL%iTw{-$ zvQC?%ljsa~b%{j3Ph4J;9(}rj*mH5eqt1A@70hncmRd^hNe#Y;7X*2~wFo1ezg5Vz zlny7e62;n%c1oxgy6NCuYB_!yEQTMfuZCL4ubiGi-36mquJ(cqFFa$n^aTJb@e>ya z=LFQxq$av3UrSR~YWFW5n~St0UdR5WrWWtW8G`IK;s|Vm=J%I3=rDV|GpfH5v6K@m z{+*6kT+CksZzh@~_1E%l?Oe;j4O?H3=cdN)4shV{>sA}2+KAO%fwu!-=KuMQeSa+N z0KW;-izrACD((roQBwhD;Iw+}s@f}l;|vA#IZ*QJ+|;$s(e+K<&GSH3&E~ZOgJ>7T z2v>02BTG_s2vOuO27f^wCL-xj-1wfMr1YqH;jE@46ITC(U_ZyhBO`sz*h`xLJ8Hc( zV1D>16!X($P+zzXh_UJ7R#O!xxSGOiLPQ@@t#D>8`u@TnaY&##e1^iR*+8N>F1a?j znRwYY;d(p!t>|;@uAaL*&=5eSb#Pt2r{H3UJmixY>U%!8JwJ4zpPeWkBdZ`Dqgzp< z@OYd-Hn3g-{Z@V=0=g;6*h_hc%(}85ckXf7?FzE&9FmcF?(8fR)_62X=LJ*82C`r_(7^U5(h(E7H4q27a-c+|ZQB*k)w2vyHMufUaLt ze5907Lt)YHQ{+rXlTKOAXzzb8u9cmK`7u6xfO+H|7?3AnNYagZszR z!^;odM^wP92Hqw1fN*&ug3z1Xn+@Ps;~hOh70p46zD{;YMe-z(^& ztr9s_gs!EV^MwE_0lGSwU3#%O@T$4H@7*YKlOaaY^=JaLe*1Uh5V8vPJ)wDU0@bGo6%Y#+oP3`G(BLcD0^Q^_@CVws zw-qQCGLD4GOR;-+bzmb<7Pls@HqBRWWAkM+NEG{wZw@N@>LqV~ka%!3U-)i6TFn|K zZ5V}p1yb!p4_IJp50lRg&2`y8lEE&XH^mz>?=*_=vb9f52K8l40rZHSkm6AgPY%PH z8#^4sKSm|z+or=EelLT6i?oeE3yiU!h+!HKqDp9OeSA0cx^PltWh?6&8m*0&l=Z#1>&7-xohH zR9KZUrL~t#swltg2{81o-eD+r8Tpk>BArgqeE7O-um{{A%Z0L|5Jo|#8tt(rOs_&G zaT4Rmh5O(!r?#_N8b^kbd>WG~ZLl0u9ju2joc1HA6!9lnaR zup3v|n8r`zZ>cRrI@XT0=NRP0ReNLx_huvww9DW*R|^Uf75hhIi8#KS*WIKqZh(n1 zg0DMYp)zoKS4%%M{Q_oAJ+Acl9UU)cJqC%@yIo{HWna5bX461AK5)JG()!g@=kBD5_K)vR(hdcwTYDDG=NzZ5>mGOqtH?X~1^XD$faQ>RsxCDRFs?b%Nt7`v=D zn~T{_XWo_`taP>iU(KOw2CANc^bMy}mgn(7AtA%~Ft?5HC-~a=#pIAE(r*ULk#BBa zENK_OS*c$Q)#A;%u9waAT`!$k1fd!{TV%vt+mSJNC9Y883CgJZj=a#C^Yy&!0AX=- z7Srp$KbO%$>^GntESVM@>S6Dhn8;&m!)@-u1$!BLo0nxjUEj^{hB@mH5 z;sUL^vc+=`S^zmodJ?G1%=|{VyY>J#K*+xpEA9Dy9`|!5{a0e35M`rM*IF$Wu;@hd zi}DQ@hPOfJ)_Ea+Bg`1EwN&LS1?-cE08^pF!0L2R?Xvnv)%vo+a0vf|Vm)p>~!sm@8gmZR;?iD z15%T1#C*%~!MW}>w3;d_5W8#NF~am@%v|upW0?FX&@-*tP<|DT1$&^5L z3TseZ_o1h*(CPMjani|NxXRoTS2UB+Pr633G8-K+ogPC#gIcVJS}VTZo8;?I1%Au8 zGu{ZdX#FR)GixOYOct3M`pSHDg5+j-xOZHOkE1Kg1W&XsF3o$TDe0K6)$;$J=a-#^ zg1{3XNh`2N&RPdllTkl#QQjb#ahm`=29)f;$^QdsmtQZP`X@neNL9_B3{Q%feIc2q z^A5+p*R8U3n8ptJqMdcHELUA8-fLfGnacbCJwxgaBjyojVw5%FW>?bY>$Gb&F--en zJi=hQ|6X)rL&Gs;-zW|pvDpQq(lk{i2sPXw&lPP+q|(S$qd8sgF1QlKe0>QuLcU8h zi@|UTYhIQG3NANXbw#JA4*u+6If74n4{=0k*Oi`XCeE;^^*C++WrMO9Z%S%l?2$K||q?(*?g63%~G7R6pK4io4 z0>-2qo}j?zqCmr%j$$j993ce>tGh}9j^80Jq#sGQ0Uuj6ow3phznRz9634%dMI~c4 zQ!;F7gO8C2oQ^?#_`Mq;QvD`lC=GD~PRlp@W&4khX?=khGt%o$v)r zNBwlQ2*>HJP34+y8=J~6)_nGnYn$+wJ;n^|EIxEM8x;Qxo!E2CEcUb7dkqRCp?5@k@?BHZ_&zd$4K5dCzUDm&8%HV2x+-{r}6zd;#zgS`RhSp zlbp?4F-{COOhJwtrVXkE9BDwuw8EhU4zsJ3i~Pw5pNqAuNi(Z3+;ZSoJxEd1-H66; zkKG3*OdPnqP{*y!`XQ(iY@3so${(^F;HL|;;@ZpUSNn%da2f7u4{1^0jpKLf_LhNe z+TOvTwQhZyFoNKKDEmVmr}cYd1mwfW5`=;|D`5>D(K>qA2TyRsMjK8~M>2Gl*}whN zcxAkYnaWT>MSo^*mXur0r|>j)50TQ1Yehb5q3QGon}Vy7xYQw*}n764n8RGtd;g4i-3~ z!Ug!Apx&@KONRRqw(B>NsMCiL3_7vY9N`A=PFgJnQ4UX{)nkOq!{k732o68P<$RO| z(ot6FMXqDFK*U!E{wOF%+Bjk*U5E(DKz?U2WNvgT_EsVb#OdABUw)#a?HmCtdNj-s zM2cbw2;(HdD#NMePa&wA+*O5~+>QB6OcDo6{+fUF0CHmWEy%`y^HFWL-bzm0$(6OdGvOr7CvF zil(R*W$(?O1%-~sHcuz|Gd^XcmFuidYdYK$Qh7~2zZ|2M%kf`1Jo_2rEX~k#Rcxrl zn0H0>wX!t>=0G-prH}`csvdHOQb67t;yrQO_G^Oh>R~Of z&&}0I7&JD(8}Qlv!$Zy~#S3W8JEW9Ho2EbQ)4_tpKd){40V-Tt8GQS$)E#Io!x<W{fZxhL zD)R+ChQFlp8f|U&5q#fo?<&Z^&!N87Uu1>tkIoy8&6!j1N-ki2830#WC4UEs@-O^5 zPWvw*ulnQVpn35EJDiS6(QU=gKVIqXBOjdmr1wWb?>6}pmvu3K0NkYH5P#zukSG{> z6WE8ze@g2GLeaT$NFIb9PQ+R3j>#?wXMw(r7t698yK&vsLe`-!~RjPjt^wEoqF?d+S{7dwIJqFk_6-Qf`9B@TSm1%%(L9(p@a zEeV$DY33@wc~O7VKWv6^m^;LHo%$#v>?OA^&(Ig+42=(}&4hRf6vK{f?C+&f4I2|n zpLm%u`pQou@UXON*K)Y(rg}KDcu6k!5Jfw~N$}PZvqYjD$v^JH^GR^39#?wXPv3lQE!=5-dS_Qc^&E-ulf_w35C^|?gHLoOQ^a~`?q4Ef_iaM*ruKKIKA=X7!0 znw>*IbY}1(61xxY-d$3~7T8Tyy1qyWAvFO1t%cS}YRx%msElG~G0(2btJ}>8eXm!K z_^dI#wjMJi+dx>AM=?t(Gs0+m6m!tW#G7>@K-_+DKn*?KjTfV9@n78%W#o7cBnqkgCLg|A+l?S5#^OVT`Y-CPCJ59_;Qm3J6LykTH5S<1p zW9cpl&yOgPczfd2ZY z0_66ZoP9KT=)Gi~-Q5C@EME0zeu%#Hmc1GP{XNn>Nyo=yCd(AICXJEj{5yLU^IZS< z0eKXd(x6y*QlWH$oS&DB@Jc-e#>e@HK8Ze+?>vGEl)T4>cEpE76le&(KqyK>S_71@ zqnK`9wSea5u|k)eHqz|0I$a;qCc!KZZZK68^$L^}Td51V96VAPOt{vDb0?0t<rZ$8kBz~~(?`s=3>{5dTMvCT3#9^C_Wv{UFG%%AGA zhA4;M5sz|Nt^Rz7qKo`Pp~6TE*RJGQ`Xnv4YL4lkgl&aNf z(`X+0yFXJ#X%-uZh+KA)l3C<`VmJ~5KnP~4ZlHI}RcI=cp;;34t`j6MeyeS2LdKV! zse%U;`O!xPSe6+4*TiQ9=70$^MI{_#vzI8`Qf;BBs7-?l`iXS`i4ktdv#f#h&-vOo zCO%Hnxm4#UZTw$EAkWAWE3~Ka=e@>2ieXC~nhPMbP@pH^TUYK}R;#lmMZBgh!?(XD zBp1`*dUS*^LrU3n4;+ksdDWqqi{GsH2HP+VQN1*5S9tg0Mz!NrHdvc)H=RO2!&VGI z75T*9aS#9UtOdWfB!s+%>#!~^W75vD2WP!CVfD6jqVgk~q~RUzcjq;+K-S^1Px{cR zRDq*+AKF^-(7e*IMOiawA`%V-G%AAy5J4u|+(6elaI27N302!%NtpV zXtdmewsFw8=m&{9*VcNjNs-@;9Mn7({XfEhcbevo`-5C9I>^qE`0alAX6#Jz4fjK; z=LAAQF1mK;E9K#MOVKz@!hw3$q#l^mP&{RhuF>u;j~5s0(`<~Wd2s<$63dD{Dis7p z3Vl^iRyxZf?RNbaeqGUibama!#IhT$@@an;Jc7u4qA4X)61pD;%dX<>jrFNocZV!KcmEU411YM z-Mz~skGoARc^fTjuJDlJPwh6dA!R6-G6xrUc3y?cU35ic%03^Qi4W9LsRvZ>ak{ff z4_6$1KG-~|x4i9OecXx^#Y_J7NBApP4c)N0`aP&aE6dw5w3E5YVj9fE2Hp|Ch+Lye z3If^p{4w?9#`3Wrj}v;?6=N~JK3b>0jQ-l0#Pmg1(*FspISh?rDv*xBkv zNP=kR89dsCY}>grpi@#qLS;(n6#lTTU^pBfORQ;bq5zELpMsrCBZibI{B^s3X1_49 zE30wa0^KsxtO=wc5q@8Wxo^ZC7hXHk2#wl4nF$c$cMo#%lwO1Qlsc0GZdDMSw9Egs zNptn%0b}YW$cAX!E-m6!v7WQb?qD6L{Zm01J2LNND02(Ohk#0XDA8UnNNpdjXp?bo zxRQCHC|1J<>$wA-s(m@dq-REmBbYQF;-2wjUE2txX=ptGNZa|}Dho>TOZmNG*WE7} zYF<$H)T0~XbO}6}nLpi4?1EP<1~tbse~d8QonWA@SY2&2!%URCl-@}cu5I8Uo(?ES zFXhLCNIF%nOTBu?g47D{1i>|%U!u@~@is^zu{-lgQLwV1)m%t8M`o6d+8Uo;@I*zF z+w^WzD^7gjA-s~3QhMYRwns+renEbJ6lC|If$9`Vwn{%p7aQ{9D*DdB{2Lmc`aUPx z;>j?fER5+*7(Vv&Mt7k$K64UB-E2MZ-4@5n{r%+ovwuw{(vQj#VCdjU_XwSK7y%K+ zg-1|1JCP9lbXMRkrYj6gm2WSUcN6JU*S`?^I3^m!UyjS^Dc0qBN8ZjQ!iELi#-P%C zI$QyL4V)+jaADTVoL(nWMDoepZ!(eCz)0!?Gy{=c-|}~2V3S0(Gv!96f;K$QrMecpXI0=ch9T;la8t|l5%WcIx^T1ZDqhpe-1z+qN*0A z42S4h-wU(Q6n^Fzc6RDj9z|ljvEsimo9g)=6VO4_rA4xu9R`Q|R9c@n);JX#eR>)^ zx|1E-0IDPAhNF!WfA-yexXtZ2qkN@I!;Nrk^WP_-xHrx05t`1oY_bs8XKsC7SmmB{ zbaq;oMJ@Y-zvPw!?|a&g9jB3Wv6h|(NAx4U?}esh0GgV)b*^QB>p71?D^R^ zpEwticmwRu8NV`z7vxQ+oYT>^&AWjl(}yue?MW4KD)ay|&j+Yjk0gTGJ(;sZ3(O38 zGVlT!`Rw+<)s833(OGRsoWY%%(R159J%sWyc<+g4HYqB}kX6+e3lJg;LVM?ErOKnv z!|xLNY6h8pGQDam&$xpcNM4IL%>&1GYl%LxW=+;nO{OamNc3V~Gh+E|vi&jw*gz{= zKafEGebhN~Udvcz!zyTRt_O0#p^v2a#Z<(_P2R zx`=q~^?;tXjwDBP_xiVJsd6In^xqhfIq~)bi;MG}D2B!7H!J(w>g+nkh$a90@u&Fn z8!3wgtWUpY<~w;9wVFv|s$j!Zd+<)FGNaHkYtNsb!C8GixH(xGF07jiuly;tL=WrTeA5a?ti6F7-lgc(4$+#Q=MO=PjG53 zo}xV?5D;gl%+Z-a9Mu$VVJ1*TaD^UPciT2#qT6r~qV8y-DG0K4$)kuP2KrE?9D>Qs zl{rw}#8LnqC7J7m;;%BA7<&v(3&Gk0OS4`=03XL*s3_qU0HQPt$NXU$G7~YRxTFNA z$#^PU;NSfc!~~OQ?CX10(G_eAL54w)X;9plNd8~NBlC7XjF1H%gXg$2PDUG$N*V6j ziwFmGj;5XQ`ttgW_+^PbHsB1WSaG|7>Dx|hwP=V#x}wt0PVLFi2vr1xawlAo}!-+^|aNUNQ3n1^d;z6RXJYBQ9~qJ1Y(MEYtxo&6dHGP z{=Q@p7Q9Lkuf|99G@Q1j!wjLi!p;pItz(?gRZsUCVlPSIKY2*TDhT0q<$L)dnR)VZ z`O3cOnD2sOd3LKqee?r*?n95_Us`4tIC0=Em0ri`Wk=8aor;!Qw)_-;642;u$@^4I2}c79`>k_k|c{UE$?ZMP~p z^TFh?=3+em^oOej3PJEnQT&qZv1l32OzDfmSghYi?C6CZ+1;%@{TM_DbmtYe2}0Fm zVz$tvO}Pl4Ge{ow5|E28oE~5WTtWFBCHYRG1FU&2iPJOyh+qfzEPw_JONDpB!6xf< z&8jG`3dt^Msf`QA-J1w@YJ(3RxpbtPa$dF}bLx4-Yn!6_1`x#%*;8~=ao7LhenxqmUD_I$HN=_0C~u_&cHCy?)cQD)wk*Dxiz z5X}3@lT5W-Z=EzLrC|3dbcZ>K@O^BOh02c=8G|+tCk*Qn%O&q>1&Oo5~R6W3zo$M&6hV#FSTf0S`v}{$P5S*qQV-w1k-| zLp`A!D_Bm8ff0}KnbpjzeQsW2qbP?AJ=)qa?xrMfN`!@K8;7HdxQ_GbR zqd&MKJftot7W1M<_O;6yA%k*Oc|@&DvkBS_`4ILFU{r?aPN?#N8R~6uMC-BBdy`*} zAMRSTQd*#zpcO93j!ju>7cYHI)FGpLs$}Oi8ud3)=n}q!OCEorjl$Qr7SlzTzlfd% zE0Z8^807)J?gY@o6 zSo4i9^dtuNWpF{Xe!k#+CR?E%G=I)&n@yg5N7zX90nq&rPlb2ZYj&SOtGO1^mNqLn zK{vHDA)Z@t2}hrCGPJKLb3P5gL%s@!lWUe&H6DFeD1!XhGn_o0{5Jm z*J-qCHK3lrM@lj+F2(xRb$b$tAVMHdz)iOoUJhIFKBy^W%;bnC{xLJfxeI#9LHsj#waiL4+e@`r zi5D{XVS}Mr&O1oA>yLWWRetf>2Iu*AufwTUO-R=f%iG7Djlm=EZXf!w>mT?VQ3T;P z7Kp$Y96rwRoM?0pQ4uy#cT}#oz0PCjKxLfl&P2!g+Y-RxT>_Ms4BGBRjDE!Yp`U;CO$&)6X}%aXnt&gjl(mYuLEv8sD6OKG7loXE&z+jNy(;k6(}J$`%^ z55J0zlbxHw_zi#qxW=p86C4rCNDn#BoxWDe0?koHRm>w^FmY?Z9p}^OU5f!Onzm|6 zL-TJ57?^=dh@lDl1xi|gU5-pF-PwGGynh>i;anoRxdQM5ap-rDRHlUFR$+$y`ygp1 z6llc$7(Y#pX+xkQ16(97UnQRiI^WX1gzXqYpH558wh4LLd~-VDimv*sTlQ8d$bpIf z0j+q1^3*_Lk2dOUuS^h&FUUeguiAO!(bG;~D7 zFU<@r^NK579pJH-{#%rU0&QRW&lfXnmr%<2NArnEXG@ujBxy;1_+8Kvo*NkLhNBKR zU)kA#Ck=0A;$4ZteMY|oC3}08)cT|L{kJ4grD^95x|qxF!xt64v8F zx4x}KZI^Lkz*msgvKtsNY{DU&EDixdiqNc9P+Pv(6dJ%A2n^VvBLse^gg}MJBs9Hp z3I&2r`#NtbDJn_qvuvUjkx3=Jusz~KJEq1c7<`C;_QAn1{-f}UkLo+v>_d!{oelEb z(Y^e@qbu)B&o)sE-MX!F$DY5vWizyH;E$or#~<*eY2_ro^|1UY0H+K$3V^vX2rtP? z=D_m?!gtv6O5c=!El)-sndL#m{=RYQ21nuqDl#Ns(-crW7?t|ZQOT0Op2rl_pqF|? zx;KC=)5v@l_)%}c_TJ?4c8v>SjKV5eOye{Uu(nRJ6j7RsMSh0Tdg$HO;hjQ!3$V@a zb8cof2)18+Ex^fTmA_jSAjg!y?0J1Nm~R6^s~K zueHODuAt&LciV_Z8ik@=Web&GR_EFB?VlBJt2l}B59Z=RW57*M_Ol$|*pbOt3*CjX zs+7Yw_tqu7b4Wm+KjT}wehdd+$)EYtxWRFAZwEh;7by2Pu{MpCzzK9J13LfxzlN-s;z%Mve2Jl#$bxkaFVb*OIt78_M^Soo9mcZkKzo7CJ~S(sjTF>q=tIDD^P!`h!Me7#MGR-C z4YXVWL$lp>4mPGysLm=g!B`JB=9N}iEuE#pwwch9E%HFkoW@QhOcW&Lu8=jNdmYMDtAQe|rUvSrY{B@PnP1Ny{&| zXJvD}V8XO!mPN$AD(tqbCqQrxcjc#YBxwWKs`KVSelh-vUFc6?zd^lZ{l-Z;+nzNk zd(o`B2lls{1(m%T4^gdu&5%7yYc=;VUQUS}EB^=-$+}l2`VpjbaSWDTBoGPV9FAt3 zRQ*ME5ozwzq^%Bi^r?%EFB+RwZ|v>ZvJpspE#uzhj7rFQz~k6%V%Y|^n{DQ~4zAhO znUzeLBx+ALDOk-j3=lxPRm1sV>5?)~duQiB)W(6#B!JemQrC|ZHad01H18p0O&!L} z!lP}W?a%uE zZZJt6jML!Wt45w~O!dnY2?XuEHS|dVi-2la+E0*=Cv>5dR`Zr$4uQ)OfLsGF3z`ZY ztVALEMG}?^HSTKu<>Jgu-O|K_#*T9Tb6BW9qSQY9tk^&v+t9qIxnYvCP(GB~TzPHc z_AV)BFp#73#kyLv@b4Nb$Yp-H?oSZwbZwLW*|c@B80E=I1Q=Qqw<*H!(gTAgnwjH( z*C%ZV)zC$>wOCsmBd0L3rdEW;J`BKLfL76fy=9s$W{}XpGvWg*pNYx~pm_{oEk~ zys_(`wpqa;$OQ&+AkhZ?(Csx9<;j=3GkB2vdWL``ZYsGQM)TGJH$7DcX*@HDA>WS= zowx$T#A$+v&km4N>ya=8OLYvJWYO*we+ji<6m>E=h(a}uC|m4)RkQj1lj=FtU;QKH zd#r`je;`9BEc z6RMOc<^h(Ix+Kno%%TtAGLOeFKfPnD0wJGq*YckJYNSH=A#zEo3E zOW$6gG_#`KfuTb<%BZo)87mv-Vyi$n5mlF<-d6$Pm2>>gDbWL99 zuceGz?h6P=%9cmj7=t5*&N&SdE4D-CdC=u_- z)+TF9IaGE&0Zd;Ead2@#S*7%T@R%~!3julPqK2Gzm8>Zu)YYt4_s+IHKx`ORM1j{d z6~AApx+MYcg_?8u_il;%v%SzDzK<<&ui_T7Ajag4U!wdK`ndlTF zG!SvE1xK{PAHc~tiq`Ybw0sOJEyP0>e1i23-73ghZ( z_$YJWyonXKR6TV}6r&_jT;SH&T+D-TW|(OOo9QanS+2akwAR4SRKMxxXGwmI8MZPI zQUhu5Nmq}>?&9#dC$?Q=Cti8(2+V0z0sCz6=ZicgA(GQw@un5cBLC8<=uz;yr7$A) zhU$1Dqa0daqCA;9OElYt_mOk)L@$SD0Q;39z#Y~@zJ(yJ$eUwQU=BMO({we9_s7WE zzb^V=5H38!n^BIjj|3{a?NxTz?h=q>?_?2hQw zGJT^fPCy-MW~oU4{rcD=X(V$f4KK>lR|Ilw{`o04Zob!B@E@dSfOCuYD~wY>wgEKu zn4CqI`@xTmukJ0S4v@L?6Y-JZd9?oDK{J;T#M-wVd}EiGbs9fC9{%j+ubp#Wku|7kJ3fL<(S$F-DA)&n) z*IIf(us@z5nVVe_Z`6IEp>(oVyZUtwTd}0k6Eo>3I!}~$Y3#=xc#}zna8NC97pRfU zBY-0qOyuuWUQVg4)mAPl%U3)%K7zm`unG99N{M;^CZ}vU=@jz}oSjM={^WFUHTd<9r zM~GR79hZo4%gsoDl*V9%_{1=Om)e4v4<2vQ;zB{nD>ufhsN|w{YW8*-&lQ>w&ecM+i02t;OR_^oxg(~2)|1c_2XRNj-Vicd(*Sx# zr4RLbK~UZ&CdYuNRIBsvniL0d7AJl6dxI4zz+Kb{3JetZOf`|u#YLk@JmE&3A6Rj{ z)WCe1rr%Vwv~IA~d)I|H`XvBNSMK0h3HILurS4bp*yxOW#*3p|>b*QZ3Ki}e5iCYc zZ5X=t)JYkgWQL{-S_V3Q7d~8d)`EaknR0>03zz=^StnKFXCOBx3kD%5eSaCyq8|M@ z*`3&OL4MMz`_H5*6KE@IiD|u6TAY~E4MagKiWI4ytcA~ZJOS>2slgz&zO}pCI-rD1 z1VBLvZS`Lm5HZFjE(ZMghWK#z?TLm|hNRdk0*FuWN=V+RAW?hvaO)Jbuanl4dPVk` zO6+6Of&g!y#?dou&_o{2j%E5aBl7lj*)_GFDEqGmxCecAI!9y#p$sE* zv_*~7w2+xZy2>J&s!E3U(qmfAxFV_a7Wu)J^=-fb^2C{Y|Ai8%?lh}fj#=R&ef^{1 zU!$0EJVF^a2GTc0d_{!6D*DBw-`^M51|GWx6m(l)gt()1YxT(CO7%S5|JbgiDbf4| zNj>9A-%!M!p{KK2?gG7GDvE!NR0qu(#Iop`G$hkJOp?zEzO|*_9Q7Z?I~F4byZ1 zLf{~z<8yzVs~sG14ROs0$DnVQA_1z81!ZAE#TCz@^egN$CzH$ZuY2lw-aLZVn4s@q#1z^y{P~i_dVy z203Z+<&lvNiK|VUThDpg5%#rYMT9y_+U}2C0Coz2%$n{-+BVM`v01viwA{Q?J+R4u zU?wCS&O9W3WXPfvPrMmRPrn+*4yE7#=A(6v#nhMwXzx!adrv6~PJnguRrm@PU5jm} zXwOJvxPp$g>xkMuoGP-}g&Nu7AzWNNR-s#&PY4H=>f#*#eS%q$2|r9pdUaxTS|^GC zXpubJbbkeV5k!VwDXE&KkTF}*NQD#pw89Hu3el|+jezEb{rqf5yp}7{ev$|li#`T^rBK8l)3MNy z35WAQ!63Eq2JT!F-5|Qn9K+w(v_exfg$)S%0ca!#th|Oz?6DP@B;V>l1DlD*4&$Gx zwjl^F1n@{rjonCPr-^Y1ia-Ooj5X;&#!JB_^{(zwmu$Y~y~A(m@sPfXIp81LwV^c` z%m18>Os1iC!m>X4m^2|lVDU2E*C6hxd!ZXXU4|`zyT<)tRPt4>PAK@1@&4OhKGkAO z(`DI@?K<5B<#U4~wyovcgsdYLejczM+4MkLt6zOQGXJw5xY0pqyJ6}YW`TFQ0Xw`b5Q_WUID|rjd9bOk?@ZtkUj3kAHuRUb$&bQoY+2= z*PvQrh~>2a)Ast3($_e}$`#5o!p)cHfDBJ+3b4uJPT%21Jdv2|u&e)ew1hdc!7U@O z(QuA^J!4(aQA@NCPnv}tX3GiG?Eo2)G8G^Q9I@?}v8G6uRQ-{Q&N;LJ7`@))UZ(Cd ztK4zcGPgne%MF|{E?nQYcnch|L*lr_w``YIESS~J2kb4!+oVyidNvFT+c|lPWJX8ords!x8-f#kSY;`0njS6Sx z>E4JD`P1mRB_(sD=bOsd_vl5N@_{U6DcMWocjl@+;HZ0y!taJCEMeCsNiVas%ev(3ab zr}B~m6JU6O3t}G=?!tBwC_SR5A|jYX{#}0GM&em5+f6DsJAlLT!ah6Hu80~PUVMRD z2iUueu~?DUI&tA_$py!K(_ckgzRX?c3l(^Bo+jg*#9b11Es76WY-N!_qd0=|+uzV& zx|E@4>bC2Wu^g0;5Vf(d?#uiDDfHchFfeSMHe?@_nS#?y7B(Xl{^+#OwwSRn9lI|> z;BSW1T)KcH#&#>**{X;R`2#MPE>tU1X9 z8MHTc>e*d$)T}VdEyZ_W4tNI*LNpB1aCp6rPs7HiCLymA&^u;%fgD+>dc62iW;pbTsb1y`& z?I$<;WCwggbl{Me_+1`hj!CkauTJJWW>r&yBNMKN!v92Wi?~`IJci+GS6S|$>sKnd3w)PV;|C1D($A(b@GBv_ zfkYS(58Y;uyF79G-3dFhX1S(6H*1PLR?V(L{N>F9N(q-YsJ(IN^elW|{DP{gJC0&F zpSy}Kx)91HupQZfV!C z!FatIFpR~=o9Z?+q6g8sN%oQ*ft@T{A&C5HZPtC*ED&e)H~30P%WQ)VMHD267hn!F zTL;<3feftZZnJ|+W6gC#saxyR`Mg}(5_fBh`z;MG|2m3v=0H$OgqQ>*>YBbNQf*nt z>W4<$p50Of-87`EYQVHR3IppY=tTHUTsr%AZ9_#V@$K0qOqdW0p<4{W^e)`sjFpYa zsvvm3J!Y_imX3`^h?0g^CydIyK>NT-V80$a!7f!Ul_)|2uew&1epz^qm4_kUE@M#+ z^i~m-ZjP8)lsNt>%HYK_58&g1BtR4x_JD@P294+;-)iU?>1S>S!AzDIh$rOX^$p|SR>ialP zPkrGrn|Xb1G)bH)Ha3iAc1{|ofr0*(4ln4}Ry5I@ncPR0^h<|iZ_?!m*^%~WL>^z( z%i8)pvr0`o>f@itP6HwM`9V;rXhPA6Q->mu zPYOt8BNcc-)VMH3bm=Lp^9>ll<&sZVcW&MuT&Je6F+W98hU%W1sZSOd<)2QT5W0(a zQ&NpQma=*6aq-}#7a+>h1YOs#sr-7T;gfzpoj#P=CSwN_xswo0&puv!g~yc->P^H3C~zhx383H)J`@H&kM>!* zQK2uQMo6zI_NrlUoz3?VUqifY`ljHL4&PJzvBb$$yR$fZ2RgZf1BLqknp|%k*~gA)k8fxFbkXESud&1 zFUuxn0U^sT0$AD|ha-URPhJl`H`INr_VY4%)iDj^e!0-1VF>g)A0;I}Q`KP{yaOUb zbK>Z1s2KupLnjVBH~S+YF(arzP&_iBBboI7Z%p_!tVhE*bhL)$ z${y?;Fo%l5fO6{IT)rVyDyiXHMU^54OSlHpOy4kB zs5{*Re(`65MypW_hE%k6L@qE_1|IsmW?_yhU)^h$U4h@FLGZJ&;lE~v3E=|{sR8ei zJ{uD6e`<$bQ43>b@etfNTpVOpGrN;VZo@))aJfVZ+HWDD!gul zYa_9TI>F;Brw~WTgMibthFGmOoE38c%0VG|{Gymea*#6Uu6LRH=HSwGJRNbXYH{qU zjk9QvKih(#c+@`MrN-0n={ZPOapsC2_i}qlR0pa7I-ke(*04%FO|imXt6`UdC>E0{ z1~s?_PFgFX*7~>(EUOdd35uGkMykz0xomN}XM>7p;!SefdBN!W{kR%TjjU-GqEtW7 zBT9`z;K8{+H{fsWhMhI(t|Tb4+&Q$IQ5H@WxOlM|D|AiLjgJioDe0d931^jHpVVu> zOP(O61Zs3|?gAbt+2u@5u#?rJh#zeBbG}Sl1_Qf znNNZb4Hqt=`8;|ry;I%K+Dwpg)npQ<2&!fF(HV^0|C%e&Np%d`IDs|u{h|-0?wr}w z^a9JO)+q!`B!x^DEWysmoJ||Xq_2cg6RzD$!K3V4gKoZ0^(6b*L+`h;d!#88i&95mQck zmgzek4DFGdbqqYJbx0Gf5YG^mblM{DKQXU#8CvFGp>N!gib~dw&ym{=A2w@zNleb8 z#n|(x|8F!%lsstIFwsNm88OXpK1VTm^g;*UQnlt?#EUDPBT-Kn>MRRV;}s6^rMVR> zC}X_O7Qqm25nfrRkG*y;q1Xp2fqE^0paP?@75;WV@?iP}dR=MyDLx{XMP zI)8F%!VKafFrk!n6dZDy0b?H)^g&uVP@~L+nrL;+cTZ2)ESz$3u(#^D0dc~rEDfJ` z=CgMYv{Juz^j3FDp#`0%rSSpD*;~Kn9Ryy-mGx^}XGO#}t+k(eb2lq;OP?lHgUGxk zsd)}U@T*|FI5W?>Q<%v*Cx^>Cl}`71hy~t?6o3&b{R!rX8hfEJY$7FQ|}lXyN&H?EFCClikJPtxMyvx85WT(pj!5+DMdM+4-dtgtWd`4E)#*^cL1NR_4cDt%sVGBi z_|oC@{CYDve|*t$50fxsb%S0CAzEQZxg=n87;-Ym5uyf5SRzUQwKHk1;B`JRQn|4A zyTX70k)>KQ$?~DVm8)~b{^C>X6$m|uDQfbkVla;0x#9lNQ-_GZ)PQRk#C^54rd zfmw-g*jaLQ!*MpE8=M0~Wx{uMFk$tg`Y^Fx{RD7_xG0y2By&;^rdNuffSa)swVEPH zpSDu+@Hi5dXx5uA_)1$;9;53&W~?vzob==Nf%QTmnVUhzb;()Gkzj4FFb?F;c6Q1_OW1w&te{}h+v^b zNn{8Os~~0OrOQUYU)Ug(*3KHdoEawn;(m=q9_O3*mblh>oqI?iE>R8o<@LkVDOt~e z7%dRSZO{qH7i);wEna8^TE*SK$2;A+8XYqU!~L9>%V#mx#lU>+{T$JH4 zxyo%3-p_S2q#srN^7F_9;=$Z|*IBNZXx?T2%9Zn{CiqDT_9mpc712)|mS^^eYFidG zfA#Tf(Te<}0O{3f4J2u?vc%*ZZn`ZBF=ZB3bB`f_-;)!S48tYp!~~+ZayfvoaDyM9a?jr7LJonTVbPRC{N7`{l8A zlksXXIbo5~hry~w&V|^J?Nm@Iu;SBi*~m^Rp|lc7E4H#~34r+GmLBQ~SXLYaI4ffHA4FJ3%9Q8<@1#nd*nD5t*)3zejhr$8e0VDqJs?JU{8zbW29Bmpr z_}i4%90X_?*P+vB$d5!B+1is+NLU?U*jKAjeC+v~eHLSgr$TMG)cEYMqt-%UJVy?K zRat9wopqv?oHCx;! zl)0+wY>FN%2`qVxBC^(F<}R{SypoHdwm?p;eGKieO$2JExWYT00aG?rxmLMu*>Yt) zk^~(0cmQ=F*wI`2sAWom+@g!Crjf+x``NE+Ju zP{os|wx5=PUJ^@C)v(;(oPf$v5hMjX(YRpcKih#%-1APbCaSQ+xM*8TQb8KzYfb+F y=uRf!v4U7yy_I000L#n0mVa literal 33223 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 P-`_$Au5JaI3;+NJwLDs+ diff --git a/programs/develop/cedit/CEDIT.INI b/programs/develop/cedit/CEDIT.INI index 37277851c4..5368bd4f96 100644 --- a/programs/develop/cedit/CEDIT.INI +++ b/programs/develop/cedit/CEDIT.INI @@ -99,7 +99,7 @@ delim = = [lang_Fasm] KW1 = -KW2 = +KW2 = byte,word,dword,db,dw,dd KW3 = delim = {}[]<>=:,()&*/|+-\# diff --git a/programs/develop/cedit/SRC/CEdit.ob07 b/programs/develop/cedit/SRC/CEdit.ob07 index 6500e6af86..270b96804c 100644 --- a/programs/develop/cedit/SRC/CEdit.ob07 +++ b/programs/develop/cedit/SRC/CEdit.ob07 @@ -28,7 +28,7 @@ IMPORT RW, Ini, EB := EditBox, Tabs, Toolbar, SB := StatusBar; CONST - HEADER = "CEdit (06-mar-2023)"; + HEADER = "CEdit (18-mar-2023)"; ShellFilter = ""; EditFilter = "sh|inc|txt|asm|ob07|c|cpp|h|pas|pp|lua|ini|json"; diff --git a/programs/develop/cedit/SRC/Search.ob07 b/programs/develop/cedit/SRC/Search.ob07 index b9215b0a6f..ffcf5e69d4 100644 --- a/programs/develop/cedit/SRC/Search.ob07 +++ b/programs/develop/cedit/SRC/Search.ob07 @@ -26,7 +26,7 @@ CONST itemSize = 64; TYPE - tBuffer* = CB.tBuffer; + tBuffer = CB.tBuffer; tIdxTable = ARRAY 65536, 2 OF INTEGER; @@ -115,15 +115,20 @@ BEGIN END next; -PROCEDURE find* (text: tBuffer; s: ARRAY OF WCHAR; whole: BOOLEAN; list: List.tList); +PROCEDURE find* (text: tBuffer; s: ARRAY OF WCHAR; whole: BOOLEAN; list: List.tList; offset: INTEGER); VAR - k, pos, n, x, prev_item_pos: INTEGER; + k, pos, n, i, x, prev_item_pos: INTEGER; item: tPos; c1, c2: WCHAR; flag: BOOLEAN; BEGIN ASSERT(table # NIL); n := LENGTH(s); + i := 0; + WHILE (i < n) & whole DO + whole := Utils.isWordChar(s[i]); + INC(i) + END; k := table.data[ORD(s[0]), 1]; pos := table.data[ORD(s[0]), 0]; prev_item_pos := 0; @@ -138,8 +143,7 @@ BEGIN c1 := 0X END; SYSTEM.GET(text.dataPtr + (x + n)*SYSTEM.SIZE(WCHAR), c2); - flag := Utils.isLetter(c1) OR Utils.isLetter(c2) OR Utils.isDigit(c1) OR Utils.isDigit(c2) OR - (c1 = "_") OR (c2 = "_") + flag := Utils.isWordChar(c1) OR Utils.isWordChar(c2) END; IF ~flag & (x >= prev_item_pos) THEN prev_item_pos := x + n; @@ -149,7 +153,7 @@ BEGIN item.cnt := 0; List.append(list, item) END; - item.pos[item.cnt] := x; + item.pos[item.cnt] := x + offset; INC(item.cnt) END END; diff --git a/programs/develop/cedit/SRC/Text.ob07 b/programs/develop/cedit/SRC/Text.ob07 index 172bade508..f1d744dc76 100644 --- a/programs/develop/cedit/SRC/Text.ob07 +++ b/programs/develop/cedit/SRC/Text.ob07 @@ -858,42 +858,81 @@ BEGIN END parse; -PROCEDURE plain (text: tText): CB.tBuffer; +PROCEDURE plain (text: tText; textStart, textEnd: tPoint; _copy: BOOLEAN): CB.tBuffer; VAR - buf: CB.tBuffer; - size: INTEGER; - line: tLine; + first, line: tLine; + cnt, n: INTEGER; + buffer: CB.tBuffer; + + + PROCEDURE append (buffer: CB.tBuffer; line: tLine; first, last: INTEGER; _copy: BOOLEAN); + BEGIN + IF first <= last THEN + CB.append(buffer, line, first, last) + ELSE + IF (U.OS = "KOS") & _copy THEN + CB.appends(buffer, SPACE, 0, 0) + END + END + END append; + + BEGIN - size := 0; - line := text.first(tLine); - WHILE line # NIL DO - line.pos := size; - INC(size, line.length); - NextLine(line); - IF line # NIL THEN - INC(size, CB.lenEOL) - END - END; - buf := CB.create(size + 2); - line := text.first(tLine); - WHILE line # NIL DO - CB.append(buf, line, 0, line.length - 1); - NextLine(line); - IF line # NIL THEN - CB.eol(buf) - END - END; - CB.appends(buf, 0X, 0, 0); - CB.appends(buf, 0X, 0, 0) - RETURN buf + IF ~_copy THEN + cnt := -lenEOL; + line := text.first(tLine); + WHILE line # NIL DO + INC(cnt, lenEOL); + line.pos := cnt; + INC(cnt, line.length); + NextLine(line) + END + END; + + first := getLine2(text, textStart.Y); + line := first; + + n := textEnd.Y - textStart.Y; + cnt := 0; + WHILE n >= 0 DO + INC(cnt, line.length + lenEOL); + IF (U.OS = "KOS") & _copy & (line.length = 0) THEN + INC(cnt) + END; + NextLine(line); + DEC(n) + END; + + buffer := CB.create(cnt + 2); (* +2 wchars EOT *) + + n := textEnd.Y - textStart.Y; + line := first; + IF n = 0 THEN + append(buffer, line, textStart.X, textEnd.X - 1, _copy) + ELSE + append(buffer, line, textStart.X, line.length - 1, _copy); + REPEAT + DEC(n); + CB.eol(buffer); + NextLine(line); + IF n > 0 THEN + append(buffer, line, 0, line.length - 1, _copy) + END + UNTIL n = 0; + append(buffer, line, 0, textEnd.X - 1, _copy) + END + + RETURN buffer END plain; -PROCEDURE search* (text: tText; s: ARRAY OF WCHAR; cs, whole: BOOLEAN): BOOLEAN; +PROCEDURE _search (text: tText; s: ARRAY OF WCHAR; cs, whole: BOOLEAN; textStart, textEnd: tPoint): BOOLEAN; VAR pos: List.tItem; res: BOOLEAN; - plainText, idxData: Search.tBuffer; + plainText, idxData: CB.tBuffer; + first: tLine; + BEGIN res := TRUE; plainText := NIL; @@ -909,9 +948,12 @@ BEGIN U.lowcase(text.searchText) END; IF text.searchText # "" THEN - plainText := plain(text); + first := getLine2(text, textStart.Y); + plainText := plain(text, textStart, textEnd, FALSE); + CB.appends(plainText, 0X, 0, 0); + CB.appends(plainText, 0X, 0, 0); idxData := Search.index(plainText, cs); - Search.find(plainText, text.searchText, whole, text.foundList); + Search.find(plainText, text.searchText, whole, text.foundList, first.pos + textStart.X); res := text.foundList.count > 0 ELSE Search.close @@ -921,16 +963,38 @@ BEGIN text.search := FALSE; text.foundSel := 0 RETURN res +END _search; + + +PROCEDURE search* (text: tText; s: ARRAY OF WCHAR; cs, whole: BOOLEAN): BOOLEAN; +VAR + textStart, textEnd: tPoint; +(* + PROCEDURE _getSelect (text: tText; VAR selBeg, selEnd: tPoint); + BEGIN + selBeg := text.cursor^; + selEnd := text.select^; + IF (selBeg.Y > selEnd.Y) OR (selBeg.Y = selEnd.Y) & (selBeg.X > selEnd.X) THEN + selBeg := text.select^; + selEnd := text.cursor^ + END + END _getSelect;*) + +BEGIN + textStart.Y := 0; textStart.X := 0; + textEnd.Y := text.count - 1; textEnd.X := text.last(tLine).length; + //_getSelect(text, textStart, textEnd) + RETURN _search(text, s, cs, whole, textStart, textEnd) END search; PROCEDURE modify (text: tText); BEGIN - text.modified := TRUE; - text.comments := TRUE; - text.search := TRUE; - text.guard := TRUE; - text.wordSel := TRUE + text.modified := TRUE; + text.comments := TRUE; + text.search := TRUE; + text.guard := TRUE; + text.wordSel := TRUE END modify; @@ -966,24 +1030,24 @@ END getEol; PROCEDURE DelLine (text: tText; line: tLine); BEGIN - List._delete(text, line); - Lines.destroy(line); - modify(text) + List._delete(text, line); + Lines.destroy(line); + modify(text) END DelLine; PROCEDURE setSelect (text: tText); BEGIN - IF text.select = text.cursor THEN - text.select2^ := text.cursor^; - text.select := text.select2 - END + IF text.select = text.cursor THEN + text.select2^ := text.cursor^; + text.select := text.select2 + END END setSelect; PROCEDURE resetSelect* (text: tText); BEGIN - text.select := text.cursor + text.select := text.cursor END resetSelect; @@ -1572,62 +1636,17 @@ BEGIN END getSelCnt; -PROCEDURE copy (text: tText); +PROCEDURE Copy (text: tText); VAR - selBeg, selEnd: tPoint; - first, line: tLine; - cnt, n: INTEGER; - buffer: CB.tBuffer; - - - PROCEDURE append (buffer: CB.tBuffer; line: tLine; first, last: INTEGER); - BEGIN - IF first <= last THEN - CB.append(buffer, line, first, last) - ELSE - IF U.OS = "KOS" THEN - CB.appends(buffer, SPACE, 0, 0) - END - END - END append; - - + selStart, selEnd: tPoint; + buffer: CB.tBuffer; BEGIN - getSelect(text, selBeg, selEnd); - - first := getLine2(text, selBeg.Y); - line := first; - - n := selEnd.Y - selBeg.Y; - cnt := 0; - WHILE n >= 0 DO - INC(cnt, line.length + (lenEOL + ORD(U.OS = "KOS"))); - NextLine(line); - DEC(n) - END; - - buffer := CB.create(cnt + 2); (* +2 wchars EOT *) - - n := selEnd.Y - selBeg.Y; - line := first; - IF n = 0 THEN - append(buffer, line, selBeg.X, selEnd.X - 1) - ELSE - append(buffer, line, selBeg.X, line.length - 1); - REPEAT - DEC(n); - CB.eol(buffer); - NextLine(line); - IF n > 0 THEN - append(buffer, line, 0, line.length - 1) - END - UNTIL n = 0; - append(buffer, line, 0, selEnd.X - 1) - END; + getSelect(text, selStart, selEnd); + buffer := plain(text, selStart, selEnd, TRUE); CB.eot(buffer); CB.put(buffer); CB.destroy(buffer) -END copy; +END Copy; PROCEDURE paste (text: tText); @@ -1969,11 +1988,6 @@ BEGIN END MoveLines; -PROCEDURE isWordChar (c: WCHAR): BOOLEAN; - RETURN U.isLetter(c) OR U.isDigit(c) OR (c = "_") -END isWordChar; - - PROCEDURE getSelectedText* (text: tText; VAR s: ARRAY OF WCHAR); VAR n: INTEGER; @@ -2006,12 +2020,12 @@ BEGIN END; IF str # "" THEN i := 0; - WHILE (i < n) & isWordChar(str[i]) DO + WHILE (i < n) & U.isWordChar(str[i]) DO INC(i) END; IF (i # n) OR - ((x1 > 0) & isWordChar(Lines.getChar(curLine, x1 - 1))) OR - ((x2 < curLine.length) & isWordChar(Lines.getChar(curLine, x2))) THEN + ((x1 > 0) & U.isWordChar(Lines.getChar(curLine, x1 - 1))) OR + ((x2 < curLine.length) & U.isWordChar(Lines.getChar(curLine, x2))) THEN str := "" END END; @@ -2029,8 +2043,8 @@ VAR c: WCHAR; BEGIN c := Lines.getChar(line, pos); - IF isWordChar(c) THEN - WHILE (pos < line.length) & isWordChar(Lines.getChar(line, pos)) DO + IF U.isWordChar(c) THEN + WHILE (pos < line.length) & U.isWordChar(Lines.getChar(line, pos)) DO INC(pos) END ELSIF Lines.isSpace(c) THEN @@ -2038,7 +2052,7 @@ BEGIN INC(pos) END ELSE - WHILE (pos < line.length) & ~Lines.isSpace(Lines.getChar(line, pos)) & ~isWordChar(Lines.getChar(line, pos)) DO + WHILE (pos < line.length) & ~Lines.isSpace(Lines.getChar(line, pos)) & ~U.isWordChar(Lines.getChar(line, pos)) DO INC(pos) END END @@ -2151,7 +2165,7 @@ BEGIN |ORD("C"), ORD("X"): IF ctrl THEN IF selected(text) THEN - copy(text); + Copy(text); IF code = ORD("X") THEN delSelect(text) END @@ -2208,18 +2222,18 @@ BEGIN cursorX := text.cursor.X; line := text.curLine; x1 := cursorX - 1; - IF (cursorX < line.length) & isWordChar(Lines.getChar(line, cursorX)) THEN + IF (cursorX < line.length) & U.isWordChar(Lines.getChar(line, cursorX)) THEN x2 := cursorX; - WHILE (x2 < line.length) & isWordChar(Lines.getChar(line, x2)) DO + WHILE (x2 < line.length) & U.isWordChar(Lines.getChar(line, x2)) DO INC(x2) END ELSE - WHILE (x1 >= 0) & ~isWordChar(Lines.getChar(line, x1)) DO + WHILE (x1 >= 0) & ~U.isWordChar(Lines.getChar(line, x1)) DO DEC(x1) END; x2 := x1 + 1 END; - WHILE (x1 >= 0) & isWordChar(Lines.getChar(line, x1)) DO + WHILE (x1 >= 0) & U.isWordChar(Lines.getChar(line, x1)) DO DEC(x1) END; INC(x1); diff --git a/programs/develop/cedit/SRC/Utils.ob07 b/programs/develop/cedit/SRC/Utils.ob07 index 5ee776dfd4..73a4ff135e 100644 --- a/programs/develop/cedit/SRC/Utils.ob07 +++ b/programs/develop/cedit/SRC/Utils.ob07 @@ -325,4 +325,9 @@ BEGIN END inString; +PROCEDURE isWordChar* (c: WCHAR): BOOLEAN; + RETURN isLetter(c) OR isDigit(c) OR (c = "_") +END isWordChar; + + END Utils. \ No newline at end of file