From 57d8354ffcdc670202f63f5e0286d5c8614b158c Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=D0=9F=D0=B0=D0=B2=D0=B5=D0=BB=20=D0=A0=D0=BE=D0=B4=D0=B8?= =?UTF-8?q?=D0=BE=D0=BD=D0=BE=D0=B2?= Date: Fri, 5 Dec 2025 14:35:13 +0700 Subject: [PATCH] Fixed lab10 new file: .gitignore modified: proglabs/lab10/func.c deleted: proglabs/lab10/func.c~ modified: proglabs/lab10/main.c new file: proglabs/lab10/prog new file: proglabs/lab10/test/output.1_3 new file: proglabs/lab10/test/output.2_8 new file: proglabs/lab10/test/output.3_4 modified: proglabs/lab10/test/test.sh --- .gitignore | 2 + proglabs/lab10/func.c | 4 +- proglabs/lab10/func.c~ | 558 --------------------------------- proglabs/lab10/main.c | 68 ++-- proglabs/lab10/prog | Bin 0 -> 34672 bytes proglabs/lab10/test/output.1_3 | 11 + proglabs/lab10/test/output.2_8 | 10 + proglabs/lab10/test/output.3_4 | 18 ++ proglabs/lab10/test/test.sh | 0 9 files changed, 81 insertions(+), 590 deletions(-) create mode 100644 .gitignore delete mode 100644 proglabs/lab10/func.c~ create mode 100755 proglabs/lab10/prog create mode 100644 proglabs/lab10/test/output.1_3 create mode 100644 proglabs/lab10/test/output.2_8 create mode 100644 proglabs/lab10/test/output.3_4 mode change 100644 => 100755 proglabs/lab10/test/test.sh diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..b03c889 --- /dev/null +++ b/.gitignore @@ -0,0 +1,2 @@ +*/prog +*\~ diff --git a/proglabs/lab10/func.c b/proglabs/lab10/func.c index c98c48d..32ab3ce 100644 --- a/proglabs/lab10/func.c +++ b/proglabs/lab10/func.c @@ -1,4 +1,6 @@ -#include "head.i" int queryinput(int *x, int *inquery, int *query){ +#include "head.h" + +int queryinput(int *x, int *inquery, int *query){ setlocale(LC_ALL, ""); //INPUT------------------------------------------------- diff --git a/proglabs/lab10/func.c~ b/proglabs/lab10/func.c~ deleted file mode 100644 index 782b168..0000000 --- a/proglabs/lab10/func.c~ +++ /dev/null @@ -1,558 +0,0 @@ -#include "head.h" - - -int queryinput(int *x, int *inquery, int *query){ - setlocale(LC_ALL, ""); - - //INPUT------------------------------------------------- - wint_t ch; - *inquery = 0; - while((ch=getwchar())!=L'\n'&&ch!=L'\t'&&ch!=L' '&&*inquery= L'а' && sym <= L'я') || - (sym >= L'А' && sym <= L'Я')) - { - x[0]++; - c++; - continue; - } - if (sym >= L'0' && sym <= L'9') - { - x[1]++; - c++; - continue; - } - if (sym > 32 && sym <= 47) { - x[sym - 28]++; - c++; - continue; - } - if (sym > 58 && sym <= 64) { - x[sym - 38]++; - c++; - continue; - } - x[33]++; - c++; - } - //________________________________________________________ - - - return 0; -} - -void func1 (char **f, int *x,int inquery, int *query){ - switch(funcReturn(f[2])){ - case 1://Определяет среднюю длину слова в тексте - { - if(x[32]){ - x[30]/=x[31]; - printf("\n\tСредняя длинна слова - %d",x[30]); - } - else{ - x[30]+=inquery; - x[31]++; - } - break; - } - - case 2://Подсчитывает количество слов, длина которых не превышает 5 символов. - { - if(x[32]){ - printf("\n\tВсего слов <5 букв - %d",x[30]); - } - else if(inquery<5)x[30]++; - break; - } - - case 3://Определяет количество букв после первого и до последнего слова. - { - if(x[31]); - else {x[30]-=x[0];x[31]=1;} - if(x[32]){x[30]+=x[0];printf("\n\tКолл-во букв после 1 и до последнего слова - %d",x[30]);} - break; - } - case 4://Удаляет первую букву каждого слова и выводит результат. - { - if(x[32]); - else - put(x,1,inquery,query); - break; - } - - case 5://определяет, сколько в заданном тексте слов, начинающихся с буквы,заданной пользователем. - { - if(x[32]) - printf("\n\t Слов начинающихся на %c - %d",f[4][0],x[30]); - else - if(query[0]==f[3][0])x[30]++; - break; - } - case 6://находит сумму всех цифр в введенном предложении. (если в тексте нетцифр, добавить) предусмотреть обработку шаблонов (12word, wo12rd,word12) - { - if(x[32]) - printf("\n\t Найти сумму всех цифр - %d",x[31]); - else - for(int i=0;i=L'0'&&query[i]<=L'9'){ - x[30]=(x[30]*100)+(query[i]-L'0'); - } - } - x[31]+=x[30]; - x[30]=0; - break; - } - - case 7:// вставляет восклицательный знак в конце каждой строки текста. - { - if(x[32]); - else{ - if(query[inquery-1]==L'\n'){ - if(query[inquery-2]==L'!'||query[inquery-2]==L'?'||query[inquery-2]==L'.'||query[inquery-2]==L',') - query[inquery-2]=L'!'; - else {query[inquery-1]=L'!';query[inquery]=L'\n';} - x[L'!'-28]++;inquery++;} - put(x,0,inquery,query); - } - break; - } - - case 8://проверяет заканчивается ли каждая строка точкой и добавляет ее при необходимости, считает сколько точек было добавлено - { - if(x[32]); - else{ - if(query[inquery-1]==L'\n'){ - if(query[inquery-2]==L'!'||query[inquery-2]==L'?'||query[inquery-2]==L'.'||query[inquery-2]==L',') - query[inquery-2]=L'.'; - else {query[inquery-1]=L'.';query[inquery]=L'\n';} - x[L'!'-28]++;inquery++;} - put(x,0,inquery,query); - } - break; - } - - case 9://определяет сколько раз в введенной строке встречается слово,заданное пользователем. - { - if(x[32]) - printf("\n\t Слово %s встречается - %d раз",f[4],x[30]); - else{ - if(last(inquery,query))inquery--; - x[30]+=strquery(f[3],query);} - break; - } - - case 10://подсчитывает количество букв в каждом втором слове. - { - x[34] = x[0] - x[33]; - if(x[32]){ - x[31]=x[33]-x[31]; - printf("\n\t Сумма букв в четных словах - %d",x[31]); - } - else{ - if(x[30]%2==0) - x[31]+=x[34]; - x[33]+=x[33]; - x[30]++; - } - break; - } - } -} - -void func2 (char **f, int *x,int inquery, int *query,int *ch){ - switch(funcReturn(f[2])){ - case 1: //Подсчитывает, сколько слов начинается с последней буквы первого слова. - { - if(x[32]){ - printf("\n\t Количество букв начинающихся с %c - %d",x[32],x[34]); - } - else if(!(x[31])){x[31]=0;x[33]=query[inquery-1];} - else{if (query[0]==x[33]){x[34]++;}} - break; - } - case 2: //Подсчитывает, сколько слов имеют указанную пользователем длину. - { - if(x[32])printf("\n\t Слов имеющих указанную длинну - %d",x[30]); - else{ - if(last(inquery,query))inquery--; - if(strquery(f[3],query))x[30]++; - } - break; - } - case 3: //Печатает самое длинное слово в тексте. - { - if(x[32]){printf("\n\t");} - else{ - if(x[31]1){ - x[30]=x[2]; - x[31]=x[3]; - x[33]=x[4]; - put(x,0,inquery,query); - break; - } - } - } - break; - } - case 7: //Вычисляет количество слов между первой и последней запятой во введенном тексте - { - if(x[32]){printf("\n\tКолличество слов между первой и последней запятой - %d",x[34]);} - else{ - if(x[L','-28]>0){ - x[31]+=inquery; - if(x[L','-28]>x[33]){ - x[34]+=x[31]; - x[33]=x[31]; - x[31]=0; - } - } - } - break; - } - case 8: //Находит два соседних слова, начинающихся с большой буквы - { - if(x[28]); - else{ - if(*query>=L'А'&&*query<=L'Я'){ - x[35]++; - if(x[35]==2){ - x[30]=x[2]; - x[31]=x[3]; - x[33]=x[4]; - x[35]=0; - printf("\n\t"); - put(x,0,x[34],ch); - printf(" - "); - put(x,0,inquery,query); - printf(" | Находятся друг за другом"); - } - for(int i = 0;iтевирП - { - put(x,inquery-1,0,query); - break; - } - case 2: //Делит слово на два и меняет начало с концом. Пример: жук -> кжу,солнце -> нцесол - { - put(x,0,inquery/2,query); - put(x,inquery/2,inquery,query); - break; - } - case 3: //После каждой гласной буквы вставляется буква L'c' и гласная повторяется. Пример: кот ->косот. - { - int alph[20] = {L'а',L'и',L'е',L'ё',L'о',L'у',L'ы',L'э',L'ю',L'я', - L'А',L'И',L'Е',L'Ё',L'О',L'У',L'Ы',L'Э',L'Ю',L'Я'}; - for(int i = 0;i121620, обработать только буквы. - { - x[25]=-1; - for(int i = 0;i= L'а' && query[i] <= L'я'){ - x[25] = (query[i] - L'а') + 1; - if(query[i]>=alphabet[8])x[25]++;} - else if (query[i] == L'ё') - x[25] = 7; - else if (query[i] >= L'А' && query[i] <= L'Я'){ - x[25] = (query[i] - L'А') + 1; - if(query[i]>=alphabet[41])x[25]++;} - else if (query[i] == L'Ё') - x[25] = 7; - if(x[25]!=-1){printf("%d",x[25]);x[25]=-1;} - } - put(x,40,40,query); - break; - } - case 5: //Заменяет буквы верхнего регистра на буквы нижнего и наоборот. Пример: Привет -> пРИВЕТ. - { - for(int i = 0;i32){ - query[i]=alphabet[i-33]; - - } - } - } - put(x,0,inquery,query); - break; - } - /*case 6: //Заменяет буквы на их двоичное представление из таблицы ASCII.Пример: кот ->101010101010111011100010 - { - break; - }*/ - case 7: /*Заменяет букву на заданное смещение в пределах алфавита (шифр - Цезаря), смещение задаётся параметром и может быть положительным или - отрицательным. Пример: кот 3 -> нсх, кот -3 -> злп*/ - { - while(f[3][x[35]]>=L'0'&&f[3][x[35]]<=L'9'){ - x[34] = (x[34]*10)+(f[3][x[35]]-L'0'); - x[35]++; - } - for(int i = 0;i33)x[34]-=33; - if(j+x[34]>=33)x[34]-=33; - query[i]=alphabet[j+x[34]]; - } - - else if(query[i]==alphabet[j]&&j>32){ - while(x[34]>33)x[34]-=33; - if(j+x[34]>=66)x[34]-=33; - query[i]=alphabet[j+33+x[34]]; - } - } - } - put(x,0,inquery,query); - break; - } - case 8: //Делит слово на два и оставляет большую часть. Пример: жук -> к, солнце -> сол - { - if(inquery%2!=0)x[34]=1; - else x[34]=0; - for (int i = 0; i<(inquery/2)+x[34];i++) - x[35] +=query[i]; - for (int i = (inquery/2)+x[34]; ix[36]) - put(x,0,(inquery/2)+x[34],query); - else - put(x,(inquery/2)+x[34],inquery,query); - break; - } - case 9: //Делит слово на два и оставляет меньшую часть. Пример: жук -> жу, солнце -> нце - { - if(inquery%2!=0)x[34]=1; - else x[34]=0; - for (int i = 0; i<(inquery/2)+x[34];i++) - x[35] +=query[i]; - for (int i = (inquery/2)+x[34]; ikot, жук -> zhuk - { - int translit[43]={ - L'a',L'b',L'v',L'g',L'd',L'e' , L'y',/**/L'o' , L'z',/**/L'h' , L'z',L'i',L'y',L'k',L'l',L'm',L'n',L'o', - L'p',L'r',L's',L't',L'u',L'f',L'h',L'c' , L'c',/**/L'h' , L's',/**/L'h' , L's',/**/L'h',/**/L'c',/**/L'h', - L'\'',L'y',L'\'',L'e',L'e' , L'y',/**/L'u' , L'y',/**/L'a'}; - - for(int i =0;i>inquery;i++){ - if( - (query[i] >= alphabet[0] && query[i] <= alphabet[5]) || - (query[i] >= alphabet[8] && query[i] <= alphabet[23]) || - (query[i] >= alphabet[27] && query[i] <= alphabet[30]) || - (query[i] >= alphabet[0+33] && query[i] <= alphabet[5+33]) || - (query[i] >= alphabet[8+33] && query[i] <= alphabet[23+33]) || - (query[i] >= alphabet[27+33] && query[i] <= alphabet[30+33])) - { - query[i]=translit[i]; - } - else if (query[i] != alphabet[26] || query[i] != alphabet[26+33]) - { - for(int z = 0;zinquery) - for(;i>inquery;i--) - printf("%lc",query[i]); - - if(x[30]!=x[2]){putwchar(L'\n');} - if(x[31]!=x[3]){putwchar(L'\t');} - if(x[33]!=x[4]){putwchar(L' ');} - x[30]=x[2]; - x[31]=x[3]; - x[33]=x[4]; -} - - -void printcount(int *x){ - int sum = 0; - printf("\nStatistic"); - printf("\n\t \"Symb\" - [ammount]\n"); - printf("\n\t \"Letters\" - [%d]",x[0]); - printf("\n\t \"Digits\" - [%d]",x[1]); - printf("\n\t \"\\n\" - [%d]",x[2]); - printf("\n\t \"\\t\" - [%d]",x[3]); - printf("\n\t \"space\" - [%d]",x[4]); - - for (int i = 33; i <= 47; i++) { - if (x[i-28] > 10) - printf("\n\t \"%c\" - [%d]", i, x[i-28]); - else - sum+=x[i-28]; - } - - for (int i = 58; i <= 64; i++) { - if(x[i-38]>10) - printf("\n\t \"%c\" = [%d]", i, x[i-32]); - else - sum+=x[i-38]; - } - - printf("\n\t other - [%d]",sum+x[33]); -} - - -int str(char *a, char *b) { - int i = 0; - while(a[i] != L'\0' && b[i] != L'\0') { - if(a[i] != b[i]) return 0; - i++; - } - return a[i] == b[i]; -} - - -int strquery(char *a, int *b){ - - return 0; -} - - -int funcReturn(char *f){ - int swt=0; - if(str(f,"1"))swt=1; - if(str(f,"2"))swt=2; - if(str(f,"3"))swt=3; - if(str(f,"4"))swt=4; - if(str(f,"5"))swt=5; - if(str(f,"6"))swt=6; - if(str(f,"7"))swt=7; - if(str(f,"8"))swt=8; - if(str(f,"9"))swt=9; - if(str(f,"10"))swt=10; - return swt; -} diff --git a/proglabs/lab10/main.c b/proglabs/lab10/main.c index ee19380..f221dd4 100644 --- a/proglabs/lab10/main.c +++ b/proglabs/lab10/main.c @@ -10,15 +10,6 @@ int main(int argc, char *argv[]){ for (int i = 0;i='1' && ((int)*argv[1])<='3'){ + swt = ((int)*argv[1]) - '0'; + } + else{ + printf("Wrong [arg1]\n"); + return 1; + } + + if(((int)*argv[2])>='0' && ((int)*argv[2])<='9'){ + switch(swt){ + case 1: + while(queryinput(x,&inquery,query)!=-1) + func1(argv,x,inquery,query); + x[32]=1; + func1(argv,x,inquery,query); + break; + case 2: + while(queryinput(x,&inquery,query)!=-1) + func2(argv,x,inquery,query,assist); + x[32]=1; + func2(argv,x,inquery,query,assist); + break; + case 3: + while(queryinput(x,&inquery,query)!=-1) + func3(argv,x,inquery,query); + break; + } + printcount(x); + } + else{ + printf("Wrong [arg2]\n"); + return 1; + } return 0; } diff --git a/proglabs/lab10/prog b/proglabs/lab10/prog new file mode 100755 index 0000000000000000000000000000000000000000..69422ccbd7e5ffbb851af3ad65ce22c82ae48069 GIT binary patch literal 34672 zcmeHw4R}=5ng6*nlVnK3OdtV4PzD7RbtVa45+ss91_v8HghXw{jv<*OQxgt%&udU+E*Yj6_T)jiv$o=uth8n z_siL3EE{PH#|e6ch(Hxrvne^YO1v2{$$d-GQ{(B9PsPeYib*ch^(`_8mx`Gz2gzj- zL8epV51mA0OvQ?>=U2hWRCsa8cu*Ed#YQ-DCslBObblU%8*+JOrYPa_s;la1;;te%VTKrmGZ$ ziD`)U0Ov@9CwtTJPtAb8G6Q~P2K<+ScOax*xj>}Lm&%2&va%ATCKoQo1b? zzN@~uuAPN^;g(>1U5k%UA?Edl!gcj`cq)3R>}{>{2NuqWc2BbExU`@*?T7(I0!^GQ$x@$fgAK+5`UG>lH69m3j_Gg8!kodhRc$Gft6>`)jRa+&@aRc7i4+jnS93jf@Ck=RN z1L`_$z*GBI*S92|bWqz+*M0+@`j5H}81QP0AX=XR&&OXW@PYxad_knR0S||szs`H$ zya&#E;JgRUd*HkW&U@gz2R>mBc%mn)p6;wy*D&Vk>I<7j;-2X9*5~wGMi#V#G%`Dk zyM0ClAWAnAedzcIuGycXG))nQ;yk^P(lk{a>f`CpP@1NSL;HDp9i?fCIJA$aZ=f_y z4TpMl`Nm$P`BnO-m9c@(dSY*QqHmsDTT|VWwb%($d&d9zYKqDagKK2cWav0$pHan8 zrAT;svaY14>~we%iud+vz$o6hk>mCm+ez_rGKLC`^Dp=-@yz+VCw9_v`0b^h!>7$2 z?WdlBzlV#U;QvVl){*0lJRc>$z5F0ZEK*$SiI#tpKu_#H!ue3UxSFv+CyF%KjN4DM z9s*IjP06Wv=pGPjA>-L`q5xit9X#{l$cQKQ)Ja4Qo^H$RE4WVg>C!$=&w?9Wj2)u+ z{@@S(J~GnZWx*XOHhf_>hdq1ycXq9XN`$- zh}Q+;dpaU65I@urhXmqj9q~ONxVE9&;HxP2m1)~#sQqW~31UNdU^_Y^c2;y$^n&f1G<=} z=OIDt5v;r=cw)b#N?S(SPme?n^t`*=U{gV|RR zjLx&y(^J$%7^IJSv?JZ_(=n5v^{mwhh!qU(`|HR^%zZk#<#cZN0^G-iC*bY~=LyE> z>C3n72Vx|WdjNGmGE|Ft?026cwImb4K;<5!?%G`tJ)*@5h8$Gq(4$lG6(w6x9QLj= z!YGm}P}D)-y4|Nzt&VrInET9*EoX``d~Y2GU=0Bi0oVzcDM{O=kRjbnlx#3o5Otr@ zh92N%o+;isExP4Q*)|Nz+*pgulz4{QL2_)p9QWdFGrQeqV8P+zCQr}WUe2w>jm&Pa zE#7)1?iJf+8JK%%yiLO|a?ILEg%b{`YI_UpPWCi38n&*WWRK-a8t<$Ld%aEn60s}Ou25;>#?dLJr z$CI6^LO;OsRp4aqm*@gQ`JeEV5z0SB%AW>*bjvY|eb4uGNhp`i>Z=J{CzT~~rLK+V z+^w54$6!l8-$yc9Vc%Jk(9|KMx|Qu6hH@wu1a&JPe;-y()}=+M>|Hq=vnmcZP)5(9 zmGg>vd-jC9{Jtv`pbI;zl@9wZ|Qeahh)PoqCqD{jX0W6H(Fcq)>WBEW!unz zWIJGY#2X}Eeivy31u9-Zuk^$f7r8j=|r<%Z|lyM6^bjO5b>^33p!nMg~+3p0^i;c1yjS4XC&BlWYH6=Y)Vsmn+rk{~G6DewooZ zMElszxe#ykhG@NDbWYeMU5haWkm`ya-bKo0tFh_(@1hqvxomBmEQ$RNqww-+G#w3F zqODXNddI}58V3W7({6PC*bzMoy>(NY9(t8(4Xs!g3;_rAqLpchJcLx+N@nT*LUOMq{Og=bNVM8S~_@_Od?KtI>J5pm%tD z?{IGKa8B>ArFU5C?bRP=YcXv(ifKzcR{IhjXMNQ%_W{^)6hj%@&fBi@V);mW3qxtr zBkh~02K7jL7_fSzVZkUJLzNi!B#f67UWrAz3*P!~RN^LR=iE_p5?ruQrNr3M?S3g~ z5a~m1yh3*z*-5RC#Y{tUg^oV%DC8>$G!joy+NCXGHe^y*WiPoMHtJ8<1DC35T0u7c z)n@J{>3BMaz~hJ!56DTwrF70-opecnul_a-x*PigyzwGJBe~5Ts%mI(~b8=AB zeF7uU<9i-B9OIs48(>zF=_ZqhFm-AtoiLq0+|b+`d=oY(3v zFHs&VBJ;nU(9%Y=YVUd&n11(3ZvEzN_sP-LWAJlEJ`>&YlD4%*TG>HycZHSDkmH#B zbqYkjLiFzBB_*Z;!maA-MuUdXv)l#f@lRgBSntquK)*i~yjg<8; zi)SmEig+l`(2G_6XGk0sLpiwtEyx9=$y2y_*Cn=cCipg3H&FcR(iaffOk@BWET$_?YgDjItdRi;fw>+LDenW-cW zbBWP)dvp?Kd_z~g7mRWpL|r6#-6FcksZ3qu6dK1VLl^0#IuO0&P2~tfk%njrBdSfb z9(z|GF#Yb+xU=C-HGOMJouhFx3b5>>9-z<2fW?fg>_}vuq$Kt1eug~-)?Irh*?0)a z{w-&2FLiz~>OPHvoaU{(gD-zZ`)wc291KtD9WLz6{EXOf!a>a_cJMT9y@*|?*h43H zqUSiGQCm`7C;7g>q+jD1`!wo~o+20x-}O9>%?Yk0@ojU8%pT3eX}Bc>pcoP&J?%IkXngbsVYzw46h? z0QwY%HUL`1q1yqi=1>D5T1@wMH3KT(Pz#_b9BKnJi9=yP8izUnUCg0QK$mi8JD{sL zv=fk%L-zx6acCDH8VLHkXm^M_ICLFGgv2J|&@?2wIn_8$cX8j-+FR{0cJJh_phxZN zP-ECvTqo)wI;dU6cN5d<;U2~_`KpI#r!lE>r@AZa3(Yk5nx z@8Wx8-J{!)-twm7xW~{vI7Fh_a;3D3DGAdx@)ITDV z4U+vVhZ^FWXDf>xg7)39v$0Vbwl$7b21DLE-Xg7MDYE;)vLl@ygOn^QR*;!J#mcFZ zMkW}XJXLP8%mUCi-t#TRt@hLe0WS9C9$`_o~0Wt zf*!TO&kVQzt^(E4{t8-uSCLA-!re>MO!ZH!p1tV*CjsEOwK#f^P>yY--CRwNXC@j+ zdId*3^@pWo%rxATk&h2FsTnPj8Eq{Vay_2cGAc;QD9Y_Z-zAO9?7OF<1xLAwa3NW$ zTzHDC9;@%(J{}G{l%Ht$a&-}lV~Tjlf zH%$zp+-K+<|VD(5qKNMT-sK;ldOoe1|6JKxPCD zV_)3Z53Jpsl)gD8u~Hw3a%R|0Pw&KJ5Q|uY9khBa=K1Q`ZL^@7kKTND?>fmRwrrF3L56ZKNL)CzqIJ6c}1BYq= z`8ae7pv@fG04T_z+X3Cpp$0(B9BS5aEr9$S*9J()h5_BdaUFnKIMfNKl|$PB1vs=5 zkjUeHKy4hi3s5_UdI5zv^dO)xhxP)BaOi7*8acENkg)0-fa*E!TRQYzow^^8(D$T{ zJD}s9(Q$o%gqG)Z+zWs%=bB#vBuW|AalZj1{C8A`j_G{I0STMm)NzA=L>-j?f?_sg z#{9Coi<0RZD+WB!Fm=6hY%YtK(C^;NpZsI#6I1`Q>8qCd=A2dE2F`glee^CD3y$5t zN1?|qNm%H+d`vF){iKYKxMMkwPx>z%TT>iE^op@rj>G@!$7VTEc4S*gMwTOrB3Inl zyEXI0;aC-Q3wK21ERHw^N9;Tful9G%myK$8jU44^^-jpqO^eSg=&6*60Y@7&Y&~;v zIbdJKJzd68osXyzjas&kE~{Ye@j#C(Z@T5aoXSHa#mgV%yv;&I$ULiv&d^Itg%op|QAykO#Zksw~L6JG-nTjw+3f#F8-?Wp5E zv|YT_m6k-C={&P>y1qToH#{{hH`CmwXp2$+mk^Y znTtwlVSU$Xbq^vnX{gkA>lAvNbq-2XF_2~o^GhIb3l+>>#sF(~Z>ibyl zkj+~XRN9}EHvdsly$LEXih4*=D-%@YrKpcd>ZJ)PjUVv+&z@^^*=OuT0)unq&DA~S zf1bfu*3;uW4)pr!IUmxQ?ZM?QqhlTZ&>Wst`bYZ=Rvmk% zI`(!|?7u2UieB?XpVK^LuSVXYv)s4dR=J__w#v^|dU58MJ%>#AneU`i-aPN~xBr74 zp#N)S&Sqar8}2OE17MXe5MjCF+S-Fnj$7;6n@Vrv(OePDyA3pnb~={fUwrRy1REWV zkwCp9fYIq#fwUtKX_dHnI?f-!zXP+?!LY*@2u7Nk9mpZl>I;NJF2@zzkU8w;_FzEe zZAi?$Epr9sj*CA!us!}%{K@#ifjt9z8~}b2KM+5Nzx|GZ9Y{PIe*&P>F`JgL;Qt3; zpNjt={;W=RELq@)|LZ_B{^R%)k`a6lL-Hr_pEx1@Y=Rs=6n~bheacblh##Q*K-H0C zM~e1D<~)B#{83?)gG?OwJU4d#!0v%q{J=ohzz!+{**?2o*-WL+9p{KY65k(xdf;AU z3a)7UnfNmUQAhj?;O}Jq=;YU1N&x&IN!j%0e* zhb!`VR49iHx>Mj6h(QQm?xxIi$08wJ%l7;cFD~&&{1U>O2rZZ(d=mzalaoK zx$F-kBTpcZeZs*9xZ)j9o$TjK&KcNYbd8~$s15k!DdkBAuTPWlFv9F(BO`>{g7}hG@ee5ol)n8n(5N$vanbAUQiQn(^AP4EEI^daP>w*az?ULaAkZ7xWeCd=su0`=D-f;{3W@;CXz$*2v1B#sT?q-3bAuHKh~nO#3BS?;)1W)KWF``XD8N|&;^Y#y7>7O;iv z8vLqD87nP;U#FR`y&r9&03rY9BO|{-+=-Ybce@aO1M!_Nj*JvxIydcCBO~-O*gP;Y zQiJ$q^zSg@zo3mhNHI>*J&E`p_~|!@_u~lXDa1S9gFGHR7ybqE^aw&+gShj3$Rj?6 z_!-1Fv%)X!?sZJ-DA1zg7>_rF`eoxPj`j-49;HRxaW-C}>n{tCa z?=I_hw)DblubemQ5<-)F6+#F2Xl|!2%4-8cEz18Lnu=E13hpy4AD?Z0+zgYrEuBEW z_6zhclrKU5cTLg12J}C{U%#RWr!N2VY(;+t=$kN3&Pt-s(CNoO{|x#tH&U1XTcMIa z1Nvf|!|Ot<>o;vDGPiF!?D{(B3zF0iqAlh2@lshP1$XB+Z;U>x9y5u zSyi@@`?5W@MbVt=Z55xhEvmGYRNAgsW^*jFO#%Nho0Yd&3);;T=pl9Iuk#)_?}76k z_}}gU_4`1nzXznoF#7Ewy0A+rE_yiQ!kH9)ohldcRGC)4KZO5{;Fo%q;cOAV)b9{Y zmuW@Eh6}x8V^(^`;i8=ry4G4mOphkIN+g~3FzD*z_r&jIO_AwIGFFikW4&I1!BEYw zUKy+BH|@I6g%hLvnj$k+_*kdrK&DkWl-^G&R=@L>s&ApJ?-eq>Nyd#b-X!DuWSlBLR{Hwo%NIMYz^|gs zag>(0=DA88b4%uymRwUZ&v8X%b&X@aKeV~6ITDgoXI)Ep?i}V^>2SG<{ek+HNP~}3 z#gR~Zaj3n%c-`7n#mj0}R#z1_(QkG+=ep+2C7}hbHqu|bG2+MXxZxMvybI@xpK~j& z4@Ewv3TaPhbEv`B7AlSe{2j$eY{C!6;rHT-MQ+6l=bsbb*_n(5ha1MoHboZF`t)>F}a7X(%bEwqVHLk%G%qrxM@T7AbCxw1oY2?e)#+MZq$fP@EQvwt5zAqcx>q z{63%Wng#QV8(V^P;nKN_GLTyuHnup+7G`K+N{Qskpo3Jv;LNQ^sS%7Bv^2Jao%80V z5YMVJg}=!c@U>$Z%o~fOVOa17In11^sy^<>QCzpt?+gUPJ{KD4suiD{x}d88jd|5t zgqlxKD|1#k*4I=n|CD#_x-~WKsYetKAqV#>ch%zheUW2>*d$%hAIi?co$fRnHn zPQ2JBYVZe|oUL_X_*!~T`YqT_4#6%tiG%KhnE{lkvCU8U1cD&r*EW@#sRWJTmXH&b z=W8kFrq;DMeH}j3%c_sx0ZHK})cLq7+3`MprxV(k^OJ2wO6w=!IbTa7n#U*RJzZUJ zy%@Vbz6%X1X>j2q(dsp;*Ly10xvR=cnNCMj`efa#YYwhQ^QFN}OxpPr7ZdpFD`#o* z>PlH$&Uw4!Z>iG6K9%Rc<@!j)YCe250I>!UD~WwlmvK)~@ls6dB@?6ngjXvM!X_?3 zAHixVJ$(sSO>8Mv6Ou0TQ@_2d)^T#Vl~61pVQ-x--z&>iH;PjrM1Ft8>Ph4`QRXL? zGwigKSLswWR{|mZ!#7}F=>k+i=zkt~mzCCHxvLTkg8S5k>Z$L0<)*y74 zOgTTN$dW_B zxLIaT+>a|WVOoxhlqLHzM z{$m_TciX=Z@}CKLfFtQ{J3`1>LjHmy>27<4kRK584UVL{?F1peK*;wwlI}JQg|$0z z%g@Jcyp`^@$sDAbw9Vw;BLrT}!6yj3hJ*bCF5}=a0#|X6oNT*=gXA1rJqPJm^KAhR z9wd;u+j#5C1n%VEe-XHcgJ%e&|HmJ1oq)TITC4fb$RX!q-sW>F0b6orSgG3b9w)*~ zJGDQskqtTbO#BAm2?aTS$l`C~D2JS5xg5Td*k8?~H*6DI3IA_-rGS~0IvZhmo3t}4 zsUQkZ=P)Z(AXS^}AGuFMQ9;g8E47fkVGwg(8~5+r2rCT=Es8YPM}OLK}fqGZ!yy2%&Yt1}<=e%`zW1If`b9tkob>z{iv97BEnN zx2-hLjr%-qxz%*z5ZyrP;r9n{$6!pYH18A@&uOm%D(^l#Ahco*=hHh??RM>CIS9DG z$}jC}lIji#+& zDpESgKsMUg6Bml@-G7`y1pIe5MaB8r|pHvY6(lZl6Lu2@>FgXcSK&Yb>xzK7h5`2)!5}zDf5acUtR{v zc$b!zLi%i323MFa_|Y;n0yIaZXJw(p7386%Ow1vX2_Rcl!;s{Ov3oTzz|&v27e}d7gMK+lW!p$ZPnts7`_h-<}x9f^G;v@q@PAbNPo{~u$ zhO{v#_h=Ox?I9K;@V!LF7u(oMfYn%8W6p>5QaAtv`lLie5*TCw5(cgi4yM&LG_*@b zq?$NX2rOli%;v@!~TRz@$})B`7qO} zBjv>=6O^!VCN=3d|C(tg3vlo8OsM)sWx{vavCD$pJ!~V$eQnxZmpkdDCHlspacKrs za2B>HPsbY*GgK$xI+bjU%_5@Ng|`_{rN ztClqxV%gdaS$0^AR_NTL~Jl3)tJnqk$DbtgAd_xxIz~DohwwQ0p(ux{gxUz3F z=W4uF(G%k%c{h;ou3FldFV{ZBm7#=cd1Jmx;tb7CZWF6!f6lKj=v@U~mN+WcJMd;> z0X{&Z+M3rN3K|lDy7o4Fd4yW$yt&>m3;6>Jz1aM{%O7Yo@I?ZWsdOPRH3!?n4u}{O zwRH&DP<^n?=k+&G3LjBv^|x$h?v}=d^Sw7?TZsjl8}Qi`%A^fCpp?J}@yz z6&G$B*maHKlQ1y*ZeM$l1-v94x;tSNOa->V7pf<$$U^u_6qCbb4XJOa3)e|U=@}$> ztf7T@mj#0@=(t=J87{{IuMb;}RDH`!OFzQvE{EEHOWnS7ByV3LY1qDWIGY^UWOQIR zPVNapk8w{B$uxU{z^2&~Bwpj5AkrzDd~#2a#PvNvB(Nul`{+GEAT#U<2D~)tCVbX0 zcL8s6db<)08r~%gc~{kWLZ*&dplm{TiC`FQb@U=|0PhXgH6`Tmr619zSM%m9t1UsV zBV(wc;440B@I@ay61wwjOU6%T>CVNNaXLtyBTD9Wc7aLP^&`$zPFzuLfQ-)EC)J7he;lX+PUQBmLV` z^mGHSvC-|2HkQ(r>t8eA4`je+^22jH--+x^4}g>_UA_aHr*KricmsHijc)(Ll3$(k zQ(63-1Ec#X?Imbw`b!zcO%r|jGG*Mj9Q+gE&(ux6Ya~8*mdsHe*emCFWkn)hC;2as z2l@EfcaU!Z-jQI_p|?1GbpH)=Jvy5Xyvgx4wr7z*@w4p!yMQmiDZteJUP}C?(c>QN z|4r1jCV+p+fd4Va+gPs5w@Zo~%D_*rRmh*klLRCG9|3?AlbxyK)qB7@q)uZ*XWJ*3 zMvs#dfG7Pf+OfukJtBTxNc>c}6(WuO4}Q&&{QoJ3EdD7z;7Lzvy{zH_CZNj>V_F8|*PP(LT}&zA{S z{yz%{(O)bHVbuHe8aIhT<-$)0m54N_o_`<#hS4nyfzBrNV z8T{vD`)1bIj`g&+A=28q86t+1ap@yi>07F>hyGy`5%$Z(`2(7%uULoEL|*smDla~f znk?DCyj7pZVI#bRPonVM6QHo7_PRY%gQsd8^Il)QW?5ymcg>0w>)kcpn#yH3tpr9o zAmr5-SY*XK{Tr|q>cg(|IaeZ;j`>kn`mSt}h}Xw=22wvYtMkm4ADz_^ln;(0(Mpxu z#Y@A#Hk-t9XT;aOS^VQFY7CnXauu2SRatLCDCljj3pCI!NVuJgrLIz`SaVf=`l<-r zz-{ux~U-Q0TmCo=t8yGcx5FTQ*$E0Ho==L<*LvBgAR$4&dm+vE@L zCh1}>9OVkvZA2Vy7jd(Ku;Jpv{+5d$yu+S`OC0OP?vy}PE?eoOg}sYt%{cSLTn(E8 z&?jOPm{T_4AK>T|m@(l6t=-pBM*a;C5lRsU84rFu712%!STK|DDWSI3>*!s9qO8&c!X}g?812 zaXM^cB#bWYYVd80G(mk`ped2$JAR6^abvr0lVTLAgb=j?$%Ox_R-n|BZqWJYIGWL7 z$i_2YTxva~;^`8vBH}e(G^5NxQ1WWsrD8QLP%`RyqtZ0rGs>&^rivYkQO2qARlwt4 z1%oPowT@G<%AelF(Irm32$=4)_Qh;Rw_p7qgNhxp!1RKWKqZeSG{0`b-Hf2}SN|8G z;y%umxTX53wNfNMWm<01!hk$~&Z- zirb9LfK$}72UFzLdRfKFUZqB*Rs2Yb{63k1if>fgHd2AgU+H@+MP9AHRjmGhMe$Qz z8Lw|6LFHHV$0{UM#)Z0L1>PaaDx&p`QNCz}ps0A4Vw7=e{)bZJ)w*BB9^EjZK>1Cn z{TTqP0(l=IoLax!zlu_c_99Y=w9@li5bOxl2kBD#2)*Yh|2kx-{7PQ!H|#x&Jmp2# z+X&=hC9n1+_DT7Zq#T#324%Nu2YW#?=CAfIde?9<)+QqTuH;qxeu_N1U9zqfacX@@ zb0iaE9|9s>%6>Hux16IqUaWEZOLUC_Q1Uds8!wf=it{qaFP8a-bB)p>FTyDKivZB` zLtSbgX20B6^(cajQ~fbd=AXjG*sTKNP#H;vf)vJO8RQ)s1mkq0aX_W0V|36j6-Saw z>V-V5JB(K