From d124049c957f4ed88dbcf34c961a2bdba44d0f77 Mon Sep 17 00:00:00 2001 From: shobayoeniolasi99076 Date: Mon, 15 Jun 2026 12:44:45 +0200 Subject: [PATCH] duplicate removed --- doble | Bin 33080 -> 33160 bytes highscores.txt | 1 + numbers.c | 29 +++++++++-------------------- numbers.o | Bin 8368 -> 7912 bytes runTest_numbers | Bin 71648 -> 71176 bytes 5 files changed, 10 insertions(+), 20 deletions(-) diff --git a/doble b/doble index d07f80e86e2308ed248b800249c591d14b4fe82f..3827d3a040be476f4ffb0b6d88d9df626128840b 100755 GIT binary patch delta 1831 zcmZWpZ)jUp6uj&3QPWQzP1pgsea2WhjLFg#r;<v z5$0E`>vbg(gdyn;oHF>EziR*Yy>G(*oWBxw^iJ)(8GU&rcNtm?PnT{QZb;N#3YeDb z)-0Vac*oGHva!PW&DkE^eW5=1$cCFlT*pBKO6=emm8~*yzw|gei(Qr*7?tT$5FZUu zJKP!dQ8PTm)();QpVdzMK|M>HFq!IE=`mJu`H0TG&xh{k?9!NzHoeCBU+b_v-=oLeY)mD*rC$!6t9$>?{dm>DJSo|NRd zUr2hcS(Q=gQhliT#i^4wxaN1%ScnbM>RHs>QrVb)pl<_Tn)#u$Y;C~vtINeP{Q$R@ z&Fbo&<~C~VWPtxad|>h?ufC0}nas55@i4B3+4p<|hsM|yn;!j|vpdLIaK8e3?9FDK z{fM)Na2l+7L1XK>riE~}54E$j9+Ytwd1ajKSL=cOx~FHAmd0z1@cC4`DWPU!6B=wy zEn3xdCg$xsGuV-d#EEyWr$wS;kvOQA?%D~#A7O_Sm$YZq>j}lI%j(70ezy8ZzyX3tW7xoU z1$MDrg`Qc3-hv#qw_#&ef%RDn)aE-6|A4vs_wBLA8is0`pq#a|Jvg8W@+V!O20vvT z^l#|NE3^W+ydu?8_%h#4O|X@h>4&h3L^JfvDR@kC*g9ZiPBFT1Q506CCa@IT#_nn_ pSa8F7!3xEK%Q#ex-YdB2Yp`2T=mqGRkJF>DJby{bQg}6czB=r8Dw-1!oZg#!&;N3`Qz%E zc4<>ou*FFi&qEc5T?XQGAY~Ekp8BL)KvZx@*c3KV#J#kA*?iG@PVT+2D<1gnIrsd2 z=bm$N@5$U-+RB^S1;6pv1Zzr!h1ugQ!uGMJ%a(V4T@#4XJ0#JDx&^;3GPde+*=k#F z6VCOv^6gihp;oaAL6pDa3d?||hI`!SeNB3|>p>C91|gvt{~POpE83M^!F2L;|G{AT zmELqR^G2b!5bp2oKiGFB+jjt7v>ofb?K)BZ?xjEXu6+Az;pbxuXKsD*)7ua_)J!gJ9HnO^DfK6?6Q!!Ll{!AI@AtlUAj|vWv46*(Sade zhYtrl{BrgBz%YmBBOcHr`>LlSgMpS7cHRb`C!aNSw!TxIELAsZjp?wKG!Ttqf z%b6QIDZ_k<`A;E%HU7JNGitNa3dAuIy}VH4ZhK!>1L6WB1&DQ!9~XGC}phd z5$H$q=s}4tjRtuqe2=REo5<{7a|a|vs%d0$)&;>do%5Nj{9TDIA-WU$ilrC032SMp z$}?u5eQ1pA5nNrcI2Oa$Uv`V2w2b`{A0fp)kui|z%LI{gXRiQ1mYm;^qcan-nd8X$ zDnn=ffwl?3EZMQFVd7665_EdHBp2~|>Ewk5XB9ba_JaI<1cR~rGW!~$Iy>hT{y6qS za!a1z$q{U3l{ zUHKg7Kcx#lHJD_RRG>Cx@r&R*XYo%Vit94W<9Z!xxUPb;Xz{NhTD0J1QHKwTA$|vH z==&Y!r!Bq#wP{QHn?c*mGaSpGG5A%8&RE<5^SHJ{4ObU9OP1Y@g>cx=Iv`&1+XKzr oCEPvN+}$nt;bzGM@2rmxL3GyQFT?!o2=9T7*$FMh;eKJyziCGyY5)KL diff --git a/highscores.txt b/highscores.txt index c5beca9..e7cfb32 100644 --- a/highscores.txt +++ b/highscores.txt @@ -1,6 +1,7 @@ elena;24999 player_name;14999 player_name;6999 +player_name;6999 elena;4999 player1;3999 elena;2999 diff --git a/numbers.c b/numbers.c index 6fcd80c..dbdf078 100644 --- a/numbers.c +++ b/numbers.c @@ -11,23 +11,22 @@ * Duplizieren eines zufälligen Eintrags im Array. * in `getDuplicate()`: Sortieren des Arrays und Erkennen der doppelten Zahl durch Vergleich benachbarter Elemente. */ -// Comparison function for unsigned integers used in the binary search tree +// Comparison function for unsigned integers used in BST and sorting operations. // Returns: <0 if a < b, 0 if a == b, >0 if a > b -// This function is passed to addToTree to determine ordering -int compareUnsignedInts(const void *a, const void *b) +// This is an internal function (static) since it's not part of the public API. +static int compareUnsignedInts(const void *a, const void *b) { unsigned int valA = *(const unsigned int *)a; unsigned int valB = *(const unsigned int *)b; - // Simple subtraction works for unsigned integers in this case - // (Note: in general subtraction can overflow, but our range is small) + // Safe comparison without overflow concerns for our range if (valA < valB) return -1; if (valA > valB) return 1; return 0; } // Returns len random numbers between 1 and 2x len in random order which are all different, except for two entries. -// Returns NULL on errors. Use your implementation of the binary search tree to check for possible duplicates while +// Returns NULL on errors. Use the implementation of the binary search tree to check for possible duplicates while // creating random numbers. // // Algorithm: @@ -66,7 +65,7 @@ unsigned int *createNumbers(unsigned int len) int isDuplicate = 0; usedNumbers = addToTree(usedNumbers, &randomNumber, sizeof(unsigned int), compareUnsignedInts, &isDuplicate); - if (usedNumbers == NULL) + if (usedNumbers == NULL) // checks if addTOTree failed { free(numbers); return NULL; @@ -103,17 +102,7 @@ unsigned int *createNumbers(unsigned int len) return numbers; } -// Comparison function for qsort to sort unsigned integers in ascending order -// Returns: <0 if a < b, 0 if a == b, >0 if a > b -static int compareUnsigned(const void *a, const void *b) -{ - unsigned int valA = *(const unsigned int *)a; - unsigned int valB = *(const unsigned int *)b; - - if (valA < valB) return -1; - if (valA > valB) return 1; - return 0; -} + // Returns only the only number in numbers which is present twice. Returns zero on errors. // @@ -140,8 +129,8 @@ unsigned int getDuplicate(const unsigned int *numbers, unsigned int len) // Step 3: Copy the array memcpy(sorted, numbers, len * sizeof(unsigned int)); - // Step 4: Sort the copy - qsort(sorted, len, sizeof(unsigned int), compareUnsigned); + // Step 4: Sort the copy using the shared comparison function + qsort(sorted, len, sizeof(unsigned int), compareUnsignedInts); // Step 5: Compare adjacent elements to find the duplicate for (unsigned int i = 0; i < len - 1; i++) diff --git a/numbers.o b/numbers.o index b6079d09fe308b438109cde67b595cb005e91125..22155d6dbc42c52bde5e63b02cf61a39612aca61 100644 GIT binary patch delta 1775 zcmZ8hUuYaf7@yg@Yi{rMa<_ZQZTJ3U6R7qmNiVk2Gl-|L)ixrSv{6F?Y5XH**V4-h5)QtTh~O!=32B>gsCSJ)T^eJWHx)a0V1~^;(_{ioBFETU@O7-nkHb%~QtM>iSN0B8oy2)#QU-(eM4E{*Sxw!Theumzy(M&V)!a3*8(A?RTLsO(2%zg6}-WWQ7N&MR2mVw|Pq zHW}-tmwrfk=0p#RX8uDX1{clOcmjqj8wM={8kXT07Pa3H6 zAvFmXFvkhY80(^SowL5k#%UDwy6_o+QB<$fy7wsR7C4ORG_eO2^#+{jvBzGb^~e*4jv(_r%6VLg z3U>X0!hZ|A*LMD*s7s2v9Ueh7Pqlti)b+5px58fp4?V-=NmHg^Jq}z(^-$@5NfEjUf1&W-Q-SXk-X(lR;e+4*SA`#>Jby|ak3z80uSob$ z30Nk64V~KHO`IaWm-ryh33@}D75`E4*TQ~y(@i=}#d(dKb8y+V+kdQW@OC{v%y|L4 zLRG(+@#V*$Q>bdw@*;x%VmX-Bi)DS9G9Cl3Sk?P2KOzGiL^sy>=rb@&RqbdTo-5U~ zVH*}oHN8!@=L&RCtJ{$1tLblx9b=n;iN31#w*d=%HSPBlT*ZNRi+d3I-7=5EnERw& o?)J@Zfag~A@wGm}3l7nzr2PnHe^qbLKIUNp(MRN50ki1-57pohlK=n! delta 2141 zcmZuyU1%It6ux)1Yj*ZGyPI`(_D}i{O;^Yo6^2%`o3ybyP&Bn$x}Xi)*qDTDHnDvu zis`mWTT>J>IVz#}VukvmQrY?-1e+ESVnNWiS}Qdm^`Ql0QG5{Vxie?taPh$0JLmhp zbM85F@67z#e|~VGM|mh~71uX0wDx`6;Ff7ZO&M2q+=WZZ8GaR>_ubD&+pqi1aXtq{ z|K|K$X^+B~V%7YOu_l{)ViH3YtBM$7Ct<>$Yk>pR0|FA(<4nxfEM*+}AcC7_#UOlL zNO&W>Q_N&f(#+q#fRX+KtkLrYLSpGr)-as=VLNFv;Ut|vFTvOhxeXQ)IlAFXzt)=f zVG>bucTtFa*2gV7wl`VBS+VN2XT<8gbQKBK+tCF|N_V$wJR8S+Ynh`4sTW}^e zh3jI#1Y?zZorRa3g||mUw~95uHlEZF#e^r>b52K3F_sk|kNf}s+2C`DcmMZX;*YkM z@A;4yd$}*VE%aDuYv=*pOvZVlV<7#C&XbH~LR`4wHrvZ9Iy3?$J_>^wjo*R`fpPv0 zV$=^)taH#9i&E?{TXPC_ zclIrYQgEts8p82#_ouY9IN4#m{=VzjHNwRXst}25dc?y_dUa8L>_eKJUTBX>==D_TYGAH}D@kIBwAfZs0KzX4i%@=1JH+?eh|lN<6~< z0W)!gAB9T^Osr&iQNgClbSw7XhUMxVRuq9U!+1?5*sA^ z4GDji@V6!WEBFl8`hzN2k=T9kGqOdBy(+N=#Jfs-3nBn^OtT0Ow`tm=9fZ5JU89U6 z60TF9lTw}t`Ad@ix}$Hga}u#ei9VO`6NFzR+%437HGh%x;?)&)N5Ttkyxkxk1-G;B z9X*Rt=Pq8NfV_lPN&ldPKTh~o!rekYA^d5tUL3_X5&OLaVjmISkP^K~TX0&^1L@zD z^aQgNNiVh_CCG0jVy(SJo8j?efunU(gw#5@2YMrW&?Z})QrK;;&-@$ XiQYooQN9K91tVA|i8IFvXQnzLeh(~f4AhL*UzqUBgt zR$7`3W~P?&l}a1T%u0W1QD$OVQfd6Z&su9A=)9kI-|K#!^~`InXN_mmg*R+Vx7${x zhA;JDn)T#qIhvoAr#077s&W&v0u0HpphL+K*@k~x72gG`s&YNIDXDE$U$^mGFhHs- z;DM}-=k`!p+Rpp3Cj*O>whQu$tc7!-qPoLmsj69!{L@2_{>4;K>HiB?O0s4_OK(qT2cUA?f-@ z$-FkCEvfv`56oqXxrV2Q_9p5kqCTsrx%{!v-a()i67>y5t?kLrg*GGM=0tu=k#}>y zuo$BL*%#Ee74-?;C9E5nSWDD{ikjmxF^9-U6xrbW!(vFdFHw&w>X{z=m$3e1`RhWE zzf|OTyfFMjwuyU1WV45O_lSE*VtyY;*pP12Ix+mkh$E~!e<(7WdGSq=eaLjn-jK*v z693EP^^v)x_)7uET@)Fnqq-5blBoR@HJz`C%GSS+<0qp^Gr+vo3(RSXxuQFKE?!Wt zRfK@`8L_4-)=WMy`e|~VP1I);_4980dUQ+@$XP_@iu__X*r_b2-*2jF9^w<>AoF5L{~6WF`_x0p2j ztPhWkO=OdJZftwzU}+MmA?o1}jm%|DLqOfBTu1J;i!>#y*L zxLB%^2T}j0sE>3}RSHoyHt=C_2`r1xjmstz6Y?Sal@d1jzPJvI@tbi)Y$DH#?@JO- z=0W17l4!x7jZdcLoIuoiMg6T4KNa7Vt>?Z8!sw}7Fg-BDC=sUfl7wV3^g2;}6txR~ zBB7gpC4wJG=uS*uV#X-u4jz)2={(n2(+(hNt=6v&t$M8XtLqI7g)4j=5QWB@zcn=M z%@i7+ke}Z>5!p9La%+g2)yVxya$_X-2jaGCS=Is8gS!+A* z(=tQP`;k|)%!q>Q(t=2);MUcI#RYY& zvf%RKTGpwcZsuAkeXRDkD-8{MD9?Ff$6$V6dJ;R#7p8}K?*RS4Ov?Wk_?Gmrq~%ne zO6A9ZUClT!itsr^olDr{EBw2RFn&G#zxsj8d{KI6k8PJN3mbu59Y7xa-_g2yRfI|9 zCrLnP|Ryfz;` z{E-akEHO)Xo3=6R7B6a>qTAc^S#5iT9B)T%WQ^w#Bdav$@sn-uxpxv6|M5i=i~&+% zTRi1367(P|I9zFZgVL$s@OH>7>kY3T9! zUX=yMZ=YROP;=F%()^lF%l>6h?fHg=#Zykf-l@X1{_pfMFUYPtMf3%yH0LR@<^T9T zwC#Zj)NStw&T(y?|AAIiehKB<_Z>&Crc<$+?`XGN_d3tJw2!p;gNNY~&Zo5xWQX{o z_MuTbzM%nV{yIXAy#bgk4`2n+YFG1}?IWFgiC#Gr4}zJM zCl1~8kNazA;j$~Rc$_qsP-aw`+X-KMkQFX7w*b9b2-;@JuV`6V89JNrN^<}K=_ph> za(;(8k>lroN1_HnW(3JdQv(S-W)13yT(+PdMt&a- zal|$Zby=l66UITG8d+0hVc z*NS^}%$(w>yzF!_lMb|?AnU#+KQsXztL0!y>N!xa`a}IlhIBud^j4T3tKvjyrcRr! z%)BDa)RCDYUe+;+f7mfGYK#(hxV*NI_6zx)j!{vqEH4pC?j%-WcuC0MnK|Jpcg|u4 z9{LNStCO8_4s5A^5iAj34WFD-!d~M0bK0>gelw@A`O;ycZ7Y1x&W}r6%nl2IyS8NG z_?S-3*a5zzQzF~OU+&Z@^6I^shJ6vOZnuECB){U=*pUE=hbzw|;CkKh-U*a8h&W`NlQn*`_?tP>iz{!wPA-VjKWt@q+V?3W{?U z&+ncdHF%IK!cjn75$1l*>jp&fP2E$Q-zjN~vR>jM%3Hu)^62>P5$)oXqbt9NVX~7N zXeu^k80?!Mt$JZwQ^iW&DYsqJphoV&#`meCN3Yoc#Cv z|FFw^dXG4Egg?_G-uvxjOZk2NUXMqd&kSg6n@Wj`ws{h`%kQL5sM#-T6}=Jh9%_?5 z*qWmYb|uRC%&is8b&yz$2K6zsEexpU>eAF!9BfgfwG`lM$Q z?z)|PxHuWxG+%G=hEGQ74=9y zu}{kunIKs~XGmO_PHigc{Xf39&v+a<;|mLs(dC87>?^*aFe2)^XxVH9*dfy1*)^AZ z%MTPbk35Gf2j%(_P?zhY{GY;hNi*mGy$lrw#bF16=4^N ziwHY5wHS4rzt*>(_taP`t!A(4*TpB*Rcsy0`}8aH{sP8j+MVOi_G_a@Me~#WlGzYm z*DsV+b9?`IJuQ;A=%11`tH2fde4wt-M<2yvj|{0FUzl!7NySPs+pPWh2s-LUr#Svx zfA8k85Vzuul(>jDw5geTUeiCtNp~SvW3cb3qZy$v?W4j@L+kxl9rS+(Bg%XWTr6%o z2rN11|9CYmTa^W8X|O%{lSs_d5g?(s=X;U1^_4@vkn_sN*j=LqZ-h(!TJXVxwpwC$ z5Z_o~p69cQ(xVdLLiJNipsvdL9^t=sN))yF9#I&eC-F5f8 z#Pn8qd~I=z?w`lsDNe&odZ9Shag>gqmF59%mfV-PB^U+xT#DTv+Vyzl&;Z%=8)&DC zdpf?jBoTLTFP6k(ARZ}6kNgz(U@D-qKwTc+=bnQGwJ4`sGPU&>FL6=jvZkUv5AeqZ zb=HmUeE*;xJ_m4PB@9-Y*gg#I5VgP}tT3Md>hdsgKUVEz?10TYkS#A=B`&<=G!>8D z&tDzfnSH~r4DRp$OjqgTDnr_vOL*>(PEman4b?0L>hhEQ0bezwZ}VEZ)lyZtEOFuF z0&th?AQKti(kP z)&O^j&f7~?Yn!Z&_kJh3{-7_kX^?&)QsW@u0W?C7nRKJ1D%!89tyaQTjk4uK8eY=a zY`$|?ROIhDF1>$%x?;GudfcQfQs0mQ~bcAqBT|fRM_r z4H6f9vktf`+WGHN)0^!(@Zu36&SRdk1)ex9Is^e8tEDq4IwTKTszdrVHIM-Vu2W`{ z2w*f&Iu)z2uf#<3LNcljDS2M?<4e>xekCHpld7?Kg$pkEj|tA zDQ5JYcWufZ>8pX3{}+|SfJO(UmUDOiX}p+>9MMqpRJdo`Y-p9|6if|5mOEm0R)vwpFzm*Nvff$u$H591Y z$&_>}%;QS#805fRq_}p;eN%B?k=%zAx0X6Ld%5KeTPsV>JE%AN8#ebjzhbv9E;!UtLPfYOOD;9S5D0M`N*ZpWP|;QN4Q0gnRK1D*zquxXm- zj)sODz*8)Z$k@f)Y13U|O7qA|1BZf@`TBQd@cMf0za;y~aE5NycPrnC!yHnGC0KZQPECuCHF7iML^9KdDBzf!>QpFtn69To}aS|BzoUV8u+ zehCABch0~7U=;Q{5tvJgvCYW=Ou{l%3dpd)%>}#wxE8PiSH61y>u@wU3)mVr;q`zI z`~ZEdNIP(}$^rcBD)a#z*PstL@_IwRhP6O0+<*bV;W!4K1)L9959o8Vp&yE`7X!~l$# z@DAd;@P3@1#(Olsf%h67I4z!i#Ix}JiI?F046m9NZBE8GS-^JzTMo>Fp9Z!aSPOn* zT69Vcuxl6$AO9=1!>-tV0smQ^H9gw&!EpJKmrRdN$pCf(1BHGiZ>-NtE}bIq7xF6T zOa}Hn-vw+ruxx%B*mhw3`3+z-z@FrRGosC3fW5-Afcaoh#qbhf8NgQa8NiBwMe-_O zlYza)cL7@tERCO@5uLIf*kz2OQ~!$Qm@AqZ@K^I2GvZknNnb8Fq!0w!E zXoy4myXs+t8l+17QUv~A7;hbD#kTs*XvHl4Wbgy{F4$ZS>?3{}*mhux_zhq+!18$D zEYuFz+dK=H4@PVNF9DVTtTmqjtO!_dUIlD2uqk{Ou;svJ^3%Y!16#^(0ILD^J`bD? zd%zNS7BC+S;CZ|RSO&29e8%i>dm*s8EBxu%Vdi+CPW}qmj{~dWCxC4QR>*$>b{JR> z?pYCSUIw;_r&UDr zdUPOL$uB+{&nE3=&RE9#FC2ig>AHn&*bIJRVVjU^ftZwp($6gf(4q~#OAm|6KuOnT zg<5PgU9!vD3if8qQKrU(YQ#cB7i;thGc+7r_>_f_PP@ZnD2R548HN=!(q>MaI$QJ3 zhY34#coRqW7=Sw1Z5|^~@*XKTc3;6UA4JKgH|nNuj>54;i*neRJ%r>Ilbp?V0l8;) z*sfB^VFtp5J;3$@X>9?=IO$Bl+OPS{#mlHkAQL{f;LSJ{^%`*RLqv!s=IN++iSPwp zzE9y5vKn3wv4B5_@Hbx3F&;Jw&N#`~WY{)y(6}My&u|%N4ge#_oQu>5F^7Q?VS2+$ zvYCRlRZBFFgOOzZ2|U?+4r-|;eXNjg{tX{J%r~IW%bWp9q4^-{R%Mn!d6gDY3DOVD zxC1?Ja_LhDd7D>I1qf(Y`kKi1zo5s4u7U%jqi)X!$1fBfjIO%af$AT8xk^<|d`{bkG_d4vM zVSMLW9yGsqs9GC!`z9h?fRKENs(nhuxzN$#yP}PZdOh@A61zg}ZxB}t=njIz!~bId z`X}q|O93Q2hX!D&x=F6H5=mOqUW5!iY`w>B7!KFZB#5#mLKch?)JXq7MeZ-Tnqy|g zR4q~uCo#Q>Kk;~Q?*3^8uPO)K;}RSidc0Dl%%g{`-wun6#7#X|i8ES)0`#Df z{QJjayGyHOFwqZE*I9YI(9{}Dcu-x)#0~Z@6L%O)bY2qsK%PQ zS%sIaBC3!CTg%zLXlZ||%gss4)YJbqwaU_!rq)J)id8IUz0pb)%#*6ASB*;iL)nN>HgcehUMpvQ`TVIT$ywSY;2He-li}$M7KCJ$OH%(UQraOu^uTuqWDL(*8u35} zSk7T#GKBG9dd!Dijg42qjuE{>G5ls()}>{mYLAl*fx3qb!l+vBWNVO94i-eRdR3kn zK&fE!HD0>=<6-Ggvr#?1Rqd8%qgs5YO1<>;O1P&bO!c}Hn2)zn z^_EkALGe=+-*b|7IbK$GPm}8Y;qX@VwP{}XUiGQ4p}E*#iR$gQW*B{Wn6xt4GB!~= zq^1M(r`Jn}?6sG%g`meeiLmucEkiqkKj!N@JK*ME{?*G}gLY zFHu6lO2~7fwxNmZZ7{Ut&k)IMG!%tBov6c;E<>$D`LN31j;<{9ItHa#%arPLR}2M~ zYK5h$d7aStmdeo5=@x5ZBWoh+J~~oa$#GeE&JrEt5)IoA?odA^ie?uNTOW3m`z;Ue z*npa_T(N+zRF$3Ok|~6^Kc!r5CM~RbRcYYl2~)M)-Xr;_)VxLFQq7Qrl-mo z>b!6a8ZA{gF_mnk%SoN(B(+0RC#glU&4!3XZfVW!dbBbyT^k`ypli~tuF;bfmvrf| z^}(x^FXbmzNj+V$`wZcGD_^^p%oBgq4tyvQ#XZCrnkSTz@`D#?n>-4fP3E^`V$f zz$|Tr?}sms#;x#mC4HuuL@vwGg~f_GRPK)*a%0ToHW`4nvP|xfncN{WxkF}5Y>t^O zHpiY0lxaf@JG3A4vSCUI(7gk;!I$wDI@8yCCb>2I!0-zvvg1C@_86e|Phji*2H`%m z;WDt{szJdN8osoVGq91P(j_8iC7L2M=`%RRxWT9LOY#=+{K2)|^hPKi4u=Oy20ArMeZ1 z{?KJdK!i>yy6gyl2kcM}7#ubOs3tFKeEiA~r|OX}K(SLjbYJf!z%@Jdi0&6o42Ndy z0Ps*fBJkZ{+wA^W1T@bVfk)UJDQGKU!{()IM3Inp5HTF~mQ?T&g#gXCK?YxS;8@7h7o5?RH@*U zYX*hqc-X;Pu8Q|3R#}{66=IN=u1eB3IQaZkaX}lvS{y7{WzgUbzI|1^lQe?kCAri_ z4IP~IG9sb%bt>_?Q~K&vg|>Jq4Z9*rdA7k+DxX6=hrNWEiDG9@>OQPPK37!kynr%2 zCZ%4Ka$XJ<64V}pvXfGf4t-5hFprpc8V}U6d=*CQl!3a;KtpDrNs3Saj}Xu!R_{0#wG@gPxx&+3^O>kEm7-;i_Z2f$GI7I!XGN4` zj|Xm}l(tdXn@*0&tJZ`&+afyQGPxx&XeXyrK&`BF)LVOMS_gk>3?#emjZ&u|64k4E z>77v;tV%`t*NAn9Di!OWqBKmEhD27Ys8&Lg9_m*8A4d=>5k}UGD(n&|ar61MHL=bS z(nBFq^JfrQplD(%>-q>2)PUv~EimIf6cL*_RtxMR@nSs;kp(O7<$5$qA*zIBtr_n6 zD7klF-b`qmUkg;fnCWW&Ro+%QdI#!W=Y06^>X>l4`tg?eoVd_1J!eBC{Ow@AygH_R zwh!g1aUV!Y`PlOuw?#RQ5dTMCG<<@;SZ%_0(fpO@NsPSkTY>!B>Imm~XqpLe--2dR z6J5hU`#`+lObr(zdCM{5t!|d&aPgMI#aoS)P}IU(ULzTagv+}m#7u+FTizvkeFBH} z7h=h%(Swae{fuBxw#L$xj#mnTx4#&xLERXQmsh?&2rtEY5FX$M{N-56Vz2f@-xf=C zF_sd6?x^f16DV{qI%nBy67D7Z7C*B#F|`iu;K8COEQ4-q0_m6Swk%xS+*}4BD2Ax3 zdHlMVvEnw$CT^o_17IV_CT^o_;x@`AZli1|peNeIWt5E~PqvB6D4V#9vWd$mo4Aa! ziOVRPxQw!unRFQySjji6i*}Ae=Q3M0-nwlas$(sAmgDWv0`t*0b<9|X z7Bt?&E2TRE$GrriwcliZl+88|kTl!#kYu)Bu&vZ>I|9hu3}KEgZcSS(D0bTy)C{&_ z$U8JWFobt{Hrg44Cf96npfTH5kkYll7mz4+-AI9PqbFX?6QLKu?7_O@CW=1QFd3=` z{*E9tpJo_JVY1-xxeGI~vJl{tidf=gA;PB`rW5thUC>GJ`5ih*dIS}msXqHq`DU_| z=|fk=$+D2+Qw0ktvXJL944me&Q0VhFnk_^3J&g#8HQz&!%hcnCAUKmc(#wV)9W zW#4PCKG+B*lJ5nW7^3h1wAWB0xT9bsp|$T-j3OwMDtsaE;R=5rG9wgz!jCU|?zM0y zNGXZ*XCa=(t#OD2kH=ac-hX{6OXsuKr{M>ljqB6&_q_NCkcRNz)~AJ?LJ;YRzabSo zjZ&H(NvS{2+K?80KVoW?n1$KF(^zV;>izkQ4Z*A}U$P-hU*^eoZb;Q91o3kK>;1TG zV`}(pR6je>z?$G`QDD(lD_ zHtx}92lDqer7=6dv?=Z0NeHz^;w4Okp2oHZl;Jxd_Dt+2;@@czebA%5ROAOO;vJ;T zJ&JhBBL3*f$8H|hY#?~6J&Y3cBbuQ~+K!@ATVm8v*iJ}q#?Nn#iu@26Wp?oW333r1 z)9VO{wwfBu{kMcV>9Usjd74Drgv&B|K9K;EbTnPL{^Lkej0G-65vssOqx1f8#8MX1 zRbuorAl5q^N?2Xlz{)&JxZcss685Bv;q#6Glj(4SXT1cFru=1xk?iLk8GlLBY&p91 zyra8RE@L~9ROcOoYM_JLB+auDT~y;}7{TkdB!}0bA!{6+KM<;AT1-#0(>})#p8kAF z1o8GcI=OgsKfBX$csMVAJ~^70I~^S@X6#pJteqaOAT_q|m!Hq@{y*^7h;l0b?)j8a zk06RQ9)0f-j>c=AC6Mgq@d8bnc$T2$=wa*Mp_#!O!reSF$r`qOtTl?=tzsU_Lj`g@ zG9Q8|T2ApR<>(jUohzW&!y}slqFWzkN6Yl|$Qp=2saI+G7*wplqcxew<)wZI#oku2 zT#rDpk4F%#0krymfMTIl9Hj-_LTH|kpp}2N7Y`AEii>a=@iYiC?>NNxv%P)OkgwX? z5RWdhLU{Dn_&^HrS9?xlh`j&SG}e_@Y;ERo9PRayJ&JGI8s?)9at)=f5<8p zi|QY?XH)g{sv^gfSr2MQEN&hnA4lySq>nvL>^G0wRlO!_o*$vRm&os@`KrfXwkwELf=h&U=@c1Z@))|-U^99k6wWmi?#=U zBx|itLNUfFmIa?H7E+~JTLB?|2j&;rqosT~sGjjiwKL|NA}NsrL-erqm#wxrW45EV z!MGPq^OaRBLmSt;6x*CS?VPDbS|O^7?>Nj{S=(ONy2H*pW)Am%Im}5-{f;Tp+%osB z+4d7*9p)gp$10YJc74xmEfc9&H0xedLfYQ;s=okQSanymvJYB7n4Xr^1mQg+3kPudnU zlH!_WQw-)UG3J+0wye(M=<*VmZ3$ z;D!`T@y_M-LDUq#WxqgyHlr4~Uvou@IK}?2K#B50+ zXJ$c$)fqmtRF37NUzHWAGg?ZmQKCY1MmJ?dRH)7vEQ>?*!RV9U4CMlScNrBJZSBJI-R_JIP?jqr`jIh2Sw$H` zv{BeJh8SZ)7daitr7G4a_*WotM*pUPBs2-+DgrT$`JH7Tr&O!4^+EUnL!^Ldw6$j0 z*8H#Sv7)99!y2!mvptP&(teTVNk2>9(6@JTH~5HU@P?i#YliWP=KRenmWlCoQ+KV< zG`w!!;O)>o=~@FOw%)PtNPjEl;%ge`^(Kf%s-e>|kSA=!-@4PYQ34E#Uif`Tw8&mPTW&~X1>U!cWmpP$|JP$Z=vsW8 zzKBnIUG6&8>AA9ZqyqkQS{BR1uH!kqx13-`X`v^uwm+($?;xGN=<(-evuzZkgs;j>T#e`=*Wblw(TB)_)lZ-Tz{2 zjAChZ7qMpfy=R5ujseZcL)0_d2HtqFFXU0EPqme9|Fo-ZI@;#qBLX&u`+ z@v!yPIQa-e@hsi4`#$W(v+i`Xrn|vYXo^IJ83|fg$n}YcJc)UQ3id;q=VnCc!#XL` zZ@5fh?rkvQ~aQ9vo`bGL<>+dNR&BCWxyofcMu zAb)*cX{vJ>Gz&1d@1dnE^p)UlF4s{8h zz=XH?db*752UoQYlZUy8dvk)!>C%8a{_&g9b`PwDPrbo^eKRbX*iWgmW@-HNapl@_ zmH%3HEqt<4Uz4ZqJ`vbl>x-gK7=C5y?A^t?lQ-AjdYBpfKX2V)9@n|5fcnP_- zU^4n|0BK}fuhDkTJKUbJWBiRHiK4UqrESlHkS1P2ks{NTHoto$l5y^PERMH7`l-$E zag_2_$M^u!pvqFE|6Sq!U_1wh$PjL18nQ=Bb;zeUG0C*nRnI zcb!+A4dKJT_2zTV`&Iwy!Tk8?Z`Saz3rG2b=fC6A$ENLG`t8#?KYt;|oHg-36Gro( zi@SDzesQ@sf9coueDAfkJoMLIeC)5?`8U7zbj+GPe*A<7T9@s7W8{AaKDo7Xd# zKmY!Ec%(n>7!ga8CmXn~`E&oe@W^N_VWngtO7RTEn`z-Z7hHdBp_}ef!42cn>PE9@ z{%KvCV1L)oCTcIQUFB8R!<{#UWT0kUU8$*-jN|`-+MnZuI}Mvs@%SscHeQx7gNP?V z(Y+NN*An8%Q1k>v4^{MzlJ3;<6vL`P52avTi}@;rL5e=z&CobSx9-X??}%rXqOVf& z*jI>Wp`vdVbj)6sWBTt$QH>8O1?%=_gQ8zh^p48V8;YJVK@wsWohA;llc(sI*Tr*H z(T6L#XleM@ZYxHaVqj(!kAZC>8Je!>R-i$O{+OcMlzg0`FI99bvEpf|=$jQCGm?0E zf$k&+E7dZHg;_lG-^L-jb=`-%Kk-adbnC{?>ib2CZe99WU9eWst$ROFUcjRNq3kzqN~rzu_#nN>@wE1` z+(QDbxuUymi?nWv?!MJ3Q}jhDN#0a;o=|l6ZQ-+YXd=gB^QENt_#3GBa#4%s2X3W# z?uQK1g0%>K<5ml2jVMKEb5|(a3VaDVC3B(L=~&!aAs?xgKVwlO{0HMsH0g8S^t$v#%S(`}~@jtCh5-`HW zvq;IuC&==<5@@d|`e@Zt%@loyuoK-{%Tu96D97}H1_k8)+21~*Q}$+ktR&pOM5Mo) zAx-!DER$#b9qx?4s!Uw>?Ly)ba@rNP2<<+A3wo{a1vYiY`Bv zo`$OqrEpF$vQj01{u`C_)Phbmuy(4FiaQw4$#I!-ta?)O#&&>OA}di!T7MxBKy)$B zBrA!A5mJIS`1E8cy8CDC!xi2A`?vcQeHdbJ)boo6h_9k?cp{J{2xZjfx zQ*`%lf#-ov1J`|ZTB79XKM+QbHLjl_dHnC1ngEbPw7BB_N-4O1@w*T71kp)nl!W_F zuiq=W``-sRuq~y!pCR*jMoOTyS9JG})W;~g`|Z;#(39{J$8J5)`83Jsa2TMBDX?1U zy8rROK1H|wqinA!`QwW2ekn+QKuR&Y|ITU$!!G>a^JtTIcuZ+iLch2esCs zG=0pthsHcu9puN3S6}dBHu@nNyGZ%a$7=KxS9kJfEh6axrYU=&VlS+oN9=sCY5ZE+ zTNQh2^`CyMMfGNXW^?}0&@j#7A5?q`T7wyz5Ak3Q{ntY~H}s3kKJ7;7vEW*Aj>nFF zgj)L6Q3Tl$r;&~oz(VE8f09p7R&+yBPL1v7PM7=2wv=0pf=6KfBjd#`7T>< z^-6yhP<}{TvCqze|N!i%m4rY delta 23983 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