From 043d492f6f927a9d440dbb864c0dbeb1de1daba8 Mon Sep 17 00:00:00 2001 From: Yevhenii Vlasenko Date: Wed, 25 Jun 2025 13:47:11 +0300 Subject: [PATCH 1/5] added demo tests, lib, config file --- java-junit-maven-0.1.0/.gitignore | 2 + .../lib/java-reporter-0.1.0.jar | Bin 0 -> 83055 bytes java-junit-maven-0.1.0/pom.xml | 34 +++ .../src/main/java/com/Main.java | 17 ++ .../src/main/java/com/library/Author.java | 112 ++++++++ .../src/main/java/com/library/Book.java | 118 ++++++++ .../src/main/java/com/library/Genre.java | 103 +++++++ .../src/main/java/com/library/Library.java | 159 +++++++++++ .../main/java/com/library/LibraryCard.java | 126 +++++++++ .../src/main/java/com/library/Loan.java | 135 +++++++++ .../src/main/java/com/library/Publisher.java | 120 ++++++++ .../src/main/java/com/library/Reader.java | 142 ++++++++++ .../main/java/com/library/util/BookUtils.java | 168 +++++++++++ .../main/resources/junit-platform.properties | 7 + .../test/java/library/junit/AuthorTest.java | 218 +++++++++++++++ .../src/test/java/library/junit/BookTest.java | 203 ++++++++++++++ .../test/java/library/junit/LibraryTest.java | 261 ++++++++++++++++++ .../src/test/java/library/junit/LoanTest.java | 213 ++++++++++++++ .../test/java/library/junit/ReaderTest.java | 222 +++++++++++++++ 19 files changed, 2360 insertions(+) create mode 100644 java-junit-maven-0.1.0/.gitignore create mode 100644 java-junit-maven-0.1.0/lib/java-reporter-0.1.0.jar create mode 100644 java-junit-maven-0.1.0/pom.xml create mode 100644 java-junit-maven-0.1.0/src/main/java/com/Main.java create mode 100644 java-junit-maven-0.1.0/src/main/java/com/library/Author.java create mode 100644 java-junit-maven-0.1.0/src/main/java/com/library/Book.java create mode 100644 java-junit-maven-0.1.0/src/main/java/com/library/Genre.java create mode 100644 java-junit-maven-0.1.0/src/main/java/com/library/Library.java create mode 100644 java-junit-maven-0.1.0/src/main/java/com/library/LibraryCard.java create mode 100644 java-junit-maven-0.1.0/src/main/java/com/library/Loan.java create mode 100644 java-junit-maven-0.1.0/src/main/java/com/library/Publisher.java create mode 100644 java-junit-maven-0.1.0/src/main/java/com/library/Reader.java create mode 100644 java-junit-maven-0.1.0/src/main/java/com/library/util/BookUtils.java create mode 100644 java-junit-maven-0.1.0/src/main/resources/junit-platform.properties create mode 100644 java-junit-maven-0.1.0/src/test/java/library/junit/AuthorTest.java create mode 100644 java-junit-maven-0.1.0/src/test/java/library/junit/BookTest.java create mode 100644 java-junit-maven-0.1.0/src/test/java/library/junit/LibraryTest.java create mode 100644 java-junit-maven-0.1.0/src/test/java/library/junit/LoanTest.java create mode 100644 java-junit-maven-0.1.0/src/test/java/library/junit/ReaderTest.java diff --git a/java-junit-maven-0.1.0/.gitignore b/java-junit-maven-0.1.0/.gitignore new file mode 100644 index 0000000..2e0882f --- /dev/null +++ b/java-junit-maven-0.1.0/.gitignore @@ -0,0 +1,2 @@ +**/logs/ +**/target/ \ No newline at end of file diff --git a/java-junit-maven-0.1.0/lib/java-reporter-0.1.0.jar b/java-junit-maven-0.1.0/lib/java-reporter-0.1.0.jar new file mode 100644 index 0000000000000000000000000000000000000000..76d3bd4ad94bce96827574f6986620a4f52bd5d9 GIT binary patch literal 83055 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¨WbK!}m@p*=;5Q_4&>>B)FoK|uOFg#m>if2&{U$c} zr;UNuFcDvqg&QUdH_2;*rd$H?od+)M)U&B&dK>KYK@KX`elA$EPFWNvM4ld93vX67 zm2lF9mQwG2-H%=u%kBiTpbKWlSRxkY9tI&aGbq4b-l0QF3q~itLovfWGRZW2*NFAR z+t0{=${h)i^{hV{60Gu z0~pMvzI~%PbcaL9VMlDFyB0`Mz;(${aYo#9^U*Fqqw8xMw7BPnh={pW1{ONn*+Fg@ zqx+W_H^b?1$?Q+d#Iihng;dAis-KN^am&npQq@4jr}k&BNS$dXT5jDy66wn0RIvEb0V(kB#o|jT<8G2)7^eaFdLB=L;MP;_|==$8SPy6v46g>&)1 zv-C-5Ng+p(J3Qz~9PV`w4OnFvyMBc5WhZOK7ybPn3ofc_!>aXRbv!g?uqK%%& zjXlYTOgf^9ea|_oThm9pnJOgCrm;U?LI1^T{^*GHTVJ}Ay&Yok!T-ZZe=CfA@NKm1n3S`TRwo`{W| z%8={1Tq}7;LA{pXWc%rTe?I)7*oxD}9sAm}x2^o^-nFN#Shb0XmD~uE?f#nUx%Zuq zYf=eidb$r>C;WXwNLUD|A(%mlT{l!W0x1|rn4HiMkSQW3E*B4VBtYW~WyFy*R)C;? z&CL+&Lw6{tLhGq?$pv$(P9LAD8@L{JcbaNpR~wBUdUr{WhVNtViw}B5@WuEJajP6u z8-IWsn5l3N?qxny87D(6Kamq3mQYi{13isgp_?Vvjhi+Yy5Azvb=&)MxGml7pJz}i zt?CkOAB0KsW*+yF2fS(Iitii!Le_nCTU-!m zG?qLi2p5bs7i9XB<_Ck42!d~Z02c9gr&;#P`UCue2I8jOaa^sLFIjnynv=?70lB*1 z)@{(1bo)3Fmf?rxfIcfy`LN;ZWRLS|}GyNs+E>Jr?V0^8p~7X9a&ObHGl;i|zkeNfabr-fIcNWb9#>+j`EiL$hf&1kK8 z4!Nsry1piw^K#UMG(nA^W9+G6aV~JSErmp=kJoU43FreRBr%~Q&V8lYQbgYGOli^8 z26XxC6H(gJFUF0bNku+RM})}RoxdYBP_UcH1G5VQ#C^Mm$B|>-lUhaBQ`F8R`>g#H zq*sPn-+HJl(|#+NJdBGaDeYK#iOXNU;?Qlra9uZ6gZELRD_%2~9=1UoL>rq!e7ZTM z?(j1G=V=q!Y4`1s;d~tn%^}Had|YFWHY4zxruHYY$my{!{bi+TjLovhr>2;(fD(ml zgPzpAu3o#F+T-5l(kdp}wYU}9#o8z(0#07#Q9k3OSfH+(O4sdc6JB7p5Br+*sWgoo zfHPbYp2IK&c)FOC1762Za+pz1XYIAMh7uc8u5!(Xs<#aXchdryLD#h@Inqu7hJ#4u%azh1^-H00Gr zwYVBXu%K+loP3OZI>j_&k9GIGJv}AIjQhyBpssz8Ucc)Msl9mnjmI+(-2;KPMv*|cZm&FZs6Qh~{|PS|H&LCGnF=?}<5% zPXwjNeIQUDrsp$ycLm#%7}gV-Psx@mCt>$Fy3@F=Rzs=4M5pF_;Kf%G6G$KeHgtV$ zzWcWr$)%Wm9}RgduF1i976lM3%{Ho|{wCJE-OTL?+Q&pUy3t|eo*O6_Etr*$>Qb($ ztLnwGt*HHkmy~iJ^-!2=KH}iBtxXj^1=We8gO3bc_du)&3cDg+yCD~7nu0yO!`;&wTmA!2cKjL>n$9y4jP+CgSNeFE4IUoGFWHS8HHHR zyq%MGb>Sm5$tWNBm<}=1A~Be`h@JQI3DYNEmeXWduPeBe%gS!1`@Kw9+5>|)oszbE zZq#KRHG9@r#j?15SIh{0=E`VLkM?Ve;}&Tx?f4;-?Hd-LTh1(=x*k7AM)vl^cF7M{ z@ME(xrkS02!=8?D%dj<%?z$6b^jEYF7W!j5_8!9y%CUITk$Hm#uguB|FZ}h%Ds6d6 zWnj%XYO5P26$)AhqEzLE{Uywus?%YS%BoX10{Sb77HoAmaw{j{{0~YGN)79$HbP`l z%udPzhM&8e`+Y2k#}>vP|ztQ5jQc)4Tl`r z;HDDh=ha3RKF(<36fg>oOU$-AGF@|R0?}o>A+SR=2PFD;o z7B6e)4uY8VK&OTmHY;ni$CcH~)5I&duR6mjtV8rYdaj_V-#loXu@oK75+;x!%UdW| zn6|iaT>@+wpaH3742y#`j{vMqAUH3m0C;%DrmxFaf-|S^zWx|Y?acgW27M-)YWvQ@ zt}?;abT-GBunx@rODawi?=Xu5m&7m$Sh`q6i0Y4ue3S<18MM`|*NNVmr$zoff1CuY z^!~V+MycjCCx~OPFLPtc8iazLla8O0n|gLE!D{K9g+zrtHw|ZRGemp3;%7dkilH(F z?>kbO%J3Z8@}0Jc=IfF#@Y9)DSz<5Mg;|I3yG%z~Ut98=66OkkhL(+HYf1IzHCQI` zb)OTt$8RpVAplspBUSKRAGpvcVMIPk87KsIey)@ieMTW5kGe)J8oFDu;h%U)6b|)+ zRHWZom70*3qRK~7UTj`AksJHcm1hBiJIpH>LZtD5vzq`6H*m3zCCX}82qlV*LvSE| z#_jTY+LTlTsy{C|T2l-%VI~}6c~z>U!6>oy>mZ--q}X9`Fezv1*P^(gy{_6g(XB4B z&ap0&1Hv!bv7Kdm&e`R%)p*-+degjz?>RTsx1F29n)Li? zZD2USLO_}oL7hxHCOVeH3)aL7L^5mo)pdW^X@;!WtxHiV`;hp$_}$Qv#)N?ZK8bGi?j|IYw5wOaB7#3EkO^ z;I3gR^C0FHw5k1Lc}3hY?(TzG6F=EP!^jPvgSSRGVbn3?-h*Nj|Bqi!6k}5bdyt1`9W!#f-O>`R#F62Lg~l=lqnLT z8!m$z)85{O3t}TN^FeQ8?&xHxrbYep%k#=P z2t{RnR%s5Q8Ul8h<-HUoE@Aulwip4&rL0q9Twg$ht-W?n8Xbi*R^qgsx;SCJ(`wH% zZ+lN|#JS?sg-(+sv-v-l^2&-L#bxw)`2Jn_zETy8jBc%2a9R+(6N5th5ApRNV<{i(yHc8d)Rm| z3o3uyyPmQJa$Q*he0jaXP!4anoxCkq`Yc!S-PO-e@{u%A+W8HP#IDsp~g%VI5nV|?PH5)I|LI$z?@zf==4sBX$|5gkGPQ%*@j5Ji3+mDM9o*Gxb*%a9!3AjHi+}_irhL|@ zg8S$4j}E!G0jPHrfGN}?oV7wOlIg>xo1C&@PF^T(Yk^bCFC*9Qjv<|~0L?6)t`0{y z&`vot`Iif@Fo1wYmqd@pTF#aX zKEDIsB*OP2sW)ZB?W7tH+Ak$^q&Y)0c+a1|y+a&JOd#BZRMO9dj;Kl+^7Z*XAVeOb zQWnZv>g4gQ9UibLvKlG={!_0pvC1ZN)}ti4JoL~+@qKE@#8-u2N)=wz&KkFJ9R1EF zq$i_2X&>GS!BeawT*9NETN)@)x#JoS&Ma-^E#w8JvLb&N3vO%L)1!Evd`f1BgPt{! zfv-7hJ?r_&pY9}_yxg27Q`GBI;tvUw6xJ76^E(#+15K8)y|rOoG7jB#*$*GPk@`;( z)3Ijol}Fn|GkC1?(ec81PfQlsrpwc2b!QNG#D-mTdY}hT@(r7|!YnDed-}bxL&CU& zNwHawIZ_qNr+1p6nNFSH*4Th77#*~Y?Nvo+oUZ}t?74z@>CBJeT+M07GtEJKET_#y zZCiTvv6*)09VV{Ro&aNwX7n-cECcf$DO~a~2r$;IWNb=b(sF_n>`7$;$m852g6hQd z2oDEgPlI8*$lX=l6o-@8twu+Y2tG@c7QYBp$&sOm0V~VtRG1VDb;=%*5tT_M(Zvrx z8Xv7jB@`2!CnGVR+@i@QLlGj2k2&?qKMGM6wY$iJlDhNEeI4+hU;*$jN1I%;NdwnnXdog>Gx>>UkFcJ9mzQRCv$su52w+J&9d|L?3XRM zmCNg7sn*=>Jt94!4#EnEOI5FMu1dOGzkBZXyv@#6{9`yZu`INveE z9hQC_q>Y|C|ND17SiO;xdjpaFoRJGEPrZ>D5SQHRP)2$nO<%ylS70eO5+tycJ+ga} zhRF^^`H|3AgED7R!}7v!odHa1Z|&|BMpoJwiBI)8*h8^AltCW;Hc&cfs`iR~Mo6w( zq%an+2HGrsK#r-3&3^RyB+PO}lSbW-9qinAQvrQeV5WGa>&5WoaF^89jam%d%e8rG z-$RKy=G0*cOVVij}ZBggPeY!!j85dtE&qr8>kCT zmF9B2J{fm;N*2u?1Wy+~4wFdkDQ&ej&$|Ehxa)iI9F*M z_@S~$CRJNRIr}Ks7wuAb1gh9HZf+;6~Y7BiUB=#&fX`M%Eeryk%^UKB# zB5x7DWqdkjq3sMB_>H8uSgwnV>pAngqX0ZC#pqrP2fz@sju@tWaHOy8CrH2%4~W#E(eC8JvRw)$M1qxfp8)+*Ua5w#2Q zQm|3{_=|Qm?1-Hdj^p)64%!N!b45NyJHSzf>gPfNAckI1&&x`~nzl;jhefxKF11-7 zJg|o>a$d$YbeQ4;J7p1*B_k}AC8PQ1m8sH8xB7#U?)8ev6Qcq?2Yt2+I^m~MOZQ33 zn0gU0?K)q$I%)J}?BdB*5=t2R^3FO7acgxgH9(W{L{Mspz5{WH9M3Jb{WDQa3yi7X zwkQTZPf`g6g|U{9vauvOc?EAAz?IX6(42;IlM{uxm@4}L7!CtJ)|w*_u7UwB|lQsztf zjNJ;N%F@&21YY`CLKkmkDDpOcZnIpmn^thQHKWU89Rf>Df@!Lk`@ic9QxW@Em` zIuQL=P#Tgk*g`A4Tx>c)Z(P+Yr~tpKLg={=GuaW|`SBbZgF9Yf|Ewc$od$E{1%J#I zXV3A2(*_iROvNkq!p7k9F$k+Z1gil#enQu*Kx?eA#epg0lX!l1<>diIjxE2IitYk#5oem((0&KQ1An88G56=OfJ%=b-l(!%othIK(h8!;QxNxtXbt z!rwp%A*hZ;G_BExutsApKSYKNAqIraxh*#PePw3`;a9eBKVAP4^U*%!WkZ(Wj2Lm} z$>+oKOt6t(q4D*iAX*HbEV?~o(!r)ix<5gre-|(06bc?#FVE1`%IJzIGA5 z?Ad)AM^-M!%Z}UpA4*@LVO31_nB_>jf1axAbXrz65k^Pn5GY;QR}lsuppGyp9Rp&F`4MZUU@VjL--)8#VkQLi*g;{t>iZ95DV zIut);=jZs(iMbA+*L&zqwshC2PCdvw9=Fa(lq@U=xRoAdcZO#bGe?2y!0~-sEcOR? zv(nL%kNJ7qZiAbm*_8c?crt#`n{K_Gk^Pi>$OMs`1T0P;k%BpSx81rc3Es|u^s2%} zcmwx|oGRV}Z>tdoi1)nUvJ3ChLFEBNFxLWhyrg5=X@JLwtg6q9S-U>`%5W(nX+?@n ziN(T$fa28?caoW4y4sz%8i0Uh&xJ+eF6;)4@l{|g_Z_TrJf<4DPxbQHeH)8+c6)p- z_NTaUIP3NBAJr1Gf-OosuP}Oz+U|`Jy1;~2{S3q7^Qy>#0-CDYhPipRE2^P*3bg|o zQjUzcz><`yB%K6}iSOn4vub@MVfzIZ!?(=QPOzq7sWBy@<-4%Am0}%ujbC(Gr$7P0 z^OMB;Y%Z5J;S0fSIJQXorI!?!YT+M{Z5QsDFXM2|k@U+h**utBMXNamchuo(5jy<6 zOUO8e>S@j2Hw=16zq8pv@Wwt2&3IMlzbtU3NGNQl^4Tie=* z{1YO7A>!N8Ux-Lvgg?}auXZv#1`XGSK`R2MmeOIAMWx*lJBnkoFDP5-t+#?KiVSQ7 zvG00+p%BDE92?}&6F8B2?zW#%GkQm;-|=p-TaAE=cfKlifLTo}s;?MGiIdJO!z$CV zZZ`^CVZ~i7UckyPHsAJVTqfaUa>IG-8e;GH#0B?F1q`5E+oCjp({tahStV8O_$lSg zvs_M2z2|C%HJm-%+kF@IfaIG~?PlWY7K1B}+G$w?Nsq=*{VLzp1+y9B?g`3)ndktw zfBzlbidvdy&}C5INhoqSIN)mXm>SzwZDgmFtmo$Wj#UP8*AM_D&^VqDhI zfrQ}z;?p&}h?#rd5Tg!4Bw3#R&3nyb7cFL&k0tb~TUnILvdE7ik6l~Wv+`K%C3=fY zN=dnf;<-MbdYNH%RQiDnwlYSsJ#v(AJ{&Yz(>M4PYaKijJvJvpy86N6Pjz*L+2$_8-{gzFi9OQMUqo;635>56aNO-7;P;__%AC|^HRc3*b$KCWO7quuBJ3hXm zJwNU>z87$Yn^HoG)*2)PL8bSbcOt}V~8tY4XiA7jJC z#PKb*mn~4a0WhjqBVQWa13R@?;EaUcPZjudOWDa76iiL6MK0&@$U7#bedtmKy{R|l zv8k}!Z8HaRY2ll3c7i+~Nt%E@X|v@VtG7JPz*t2E6=!KMy*{ZgNr{+0<-jQC?CZuG zb14l4=4h82dfUO5RbZ2Ik}8aF0hY+!d_Rn1%Z}8R&3Z~2+|VO7x``Y7+^v<*oP-l# z0mX$tOiT)cq;vS*X%5&Cj(qUOxr{w95(;yZ*{s_NG*+$D2r#B`D-^Rr5%Uu*=CHLY zb;-8tCb2i3W_nyX!}8Rx?;-o45nAvQ;RQP{m$aml-~^TPbs`1IY8_!6M~6jzGs+f~ zI%bJ_oUxYX(5XA_!wImnnT#Sj(myJI3L33TRLeirNidK@$>;_BMjZAbE~A$;5c2+s zdW`(KCu_TgTBIpHrlMMH&e1~a^LG}`0P-hzkh4yHGy`zEZV73Hj|`Hj52nHAB355J*>olPa@b;Wv(rc$n)r_@E$#I7uElE@2Ogx$RK}g}M5wy+7d9;@L_Z9kENC6iXt~@NX zgw~nR&`95+9yI6-Pv>PFH#=AQ;C5wrvlqTdYFqv|{Aj}D{2Kn;UK-x~*;_fppY9WJymY(?)H3v; zwovc;w7gILDv#kvkv_^dKDtAX zxW#w$YM5MSOqh}YacTeTObMQ+~Vymum+K|skV(2f04`%nTffob! zsN@S7G&r9zdhg=UK9`%lWEVGzhrcL!zex4yf33t6P{`=MlX=XL}Ms5>To6 zP&gp~ypX>)7jpL6I9pqL@0WkC+uw*h(xS#4KOPaLkrb_wS_ar4f^v1fbHWQkL^wUd zI$33j{mwT{AEnooJ#N)+A0Fm8DRD3+MIK_{Z0{=nBxp3DVEbxt*Vz?uuaMp1sQ+1A z__Ua0tUW^eD?~FSBm$x{9D>W;DdDvm4S1-d8HMP}`}`RBmWWInpq2fIJ+-22H_i~2 z%{n{ysbl=g&d`a*C>uTpk6EJ{yID$8>1ncy6OZlFhOnrzL2Cxgo%&rMmsy;ev9wR|k4 z2$pk5ktI$(rJjg=2Xx4aBB{Yz^n>DJ^bx-y#g)yxT;grx-V}nCocMHIKedte&mM@p z+HX||6-#kr`Ld)r0TvC+@h!@gv>uWRNuLAb{rv)5enOJsmpI@Eeq1nj^r2 z(eDtDV+}3I%-mgrPcuZiS-v=}W8a){+vIY|HH!Vv$cVn$oxk{i^P<|*L2W64J{mAz z$>?)cDkG$7jfqgN_r%quBwzdN_>{$br07%w%>WfY2JvW84&@f!D;7tP9r;4jaA7fyigbM?N^)2rKMzG^x&b{mA&Pn?ad-+0S~&UW#9X4e>?XY7pLwvpp3=ymo)KyeGte z4SmhQmI-Yha_p8xFwTrfxTrQ*IsT!EU$H5U<5Rk$S`6#zhd73Qwdls)K1B0VAHUB9 ze}Ub>JD(?6mP@)=^yq>p1xA;KJX11`VJ`bnf<*PJvUD-h961$Ra)472x^9eUGhIA6 z_pM<^re(Vca-P(P#1*gzKU%4`gQ=RKj+mL2ps*;&n1XttR`rC(BOxi5T`!tjmm#K- zLfW|~0YW!^$U&DOK@4UEEf&4Gw0ESrR7tvI52h;)zbG~-gbInI{qt#1sUyi$cglcJ zv1me2>6AT6fs>}R2Uaw#GhiRdwree9fIIoI&m)!Lc&|7UDGLJtFO`CFC@y-He0m)w z$G2{bWnY7wkr^pVrWFK&_CX9fZnW7dN=%nsss}}uo%+c*S*L8otVt|^zFIZGx;pKA zhBxH+>6i!EIPpiZp)aSTUJ2X{zw_nsu7|D*6rb%)V2?k;sY4C}Puzr#ve-$g1}`_?uv_e~&3xYb4;IzZ337)d zNC_9~JiT zp3yb%H?XbU3vb^B*J6!N&wwKrRu(f6I>1ec6P_Q>q}L#%kI{`A!LGB9Gd;&OD~-5~ zU$bAbQpZ*#fpi3(CbrQ8T2l=aageP|_t1#Cu$XQdYtCHNgN_%Z2Uh_O)-0H>GeoB|>FR5B=O<|{{gcj6)m^iU=?Y{6-J)3G z_@YUBQ!B76x9;*=`NtkQH3WQ{NN2ym&@G4Ci0Y+@^|p$xmpYKsp%R=>C59Ahd+=i= z^gg?Jid?_r5v&F4%O+bh_mOt5tZiilw$bfwy-pYGJeoskJ*m-Hs==4cy<#jiLi!#m zGEbGc<~kkz&5z8Q97b-cbHE_S(cwL}+-osdmNurH#Np|0K+hm~NoxI^=15$Z{?Ms7 zI^_L9tyYdbSWZ1vNki&DGp;qSYb+2P^JO1%_OyMUxVz$GRq~{+r7PZc!Purk+rcB~ zZCFK!9BEqRc*Oe=8F${#H+mN5w{)2gf&yKTYM_G4*))R?Hhqqi7tLc6xc1=jNvKj$-^^p=>^!YY9+K z6z2~)<<4L-zSok=%PDOg=d{sK@#Ql!g%dDrVSY&VyKu8+$~aVag`0pm3Dj4?Ku5sH zd9{M1i4$T|V*=0NqFpc{R>H{mu|E85_LO;)iTuG2T5;L&Ss3j5HGy(^ZW)?!cYhKd z&kS&9)X#JLTs?U;TUzJ#*o~54c2`#Bi>cti`$p|bm*j{z>5gs|0DGpt6L5Jf#iISp3PlJgK64!KIL*yz7F7$v569325^fQ|IR$izc}@?cPRe| zY=(7G$1)&y26{v_eu>w13UfZvH&5o!Sm0S(f7Oxs4k8)PAh(%n$xIb{@756hs1iny zK3PR|NDp;A;2jjoiMm15&U==ANG^U>V=vn7Vz+~Pc3Ur=0oPIN8bLFG(h#Q#)3mcX zI>)wnblw%Bi7{vLa(F$d&Mx&WYN1!dMy;2DF;dteJ*})Wu zjM0)No$WKqYx=;RpvWfv(=}99VXvF z?3?2cXWMsB@s};w?><%rbaEK-z3TY0TXoGXMjYGIyKHhh)ih+Zy~o=C;zEzhJ;B)s z6P$7e>Xwq;Z7Mf{>kHx?Ecw8DbBYaXdv`|lC*EECtRdLkzCqhX&wT`89#l$KUJS>Z zLm@Jaa@|y|hWk`FV_<2=+K3dPw+CFRL0=!#oEkzrj~ZyKVC0RoZ~y^9iHw2G^M>X1 z=39eWPV7h-fR33rD$TJ6I-~Pj9eXd%Vi@IP6xhWX;51Li{y)mzF}Sk#+Zs)$V{6B@ zZFX$i+Oh3)#~s_YZFX$iww-i%^E?0h)KaKRnIf$7;}s<{Rw&Q1VlFUkgu+CuWp*IYGbT*cDy0$y~(Yn`kSRP=s{-@;SNE=RDqnsX3?XyokITzu2wSb|o9BDm_(5AM0|?U4l$?y1v!`yqMmUVTK&p|Ue=;oOA3iR>QLUN%yY zd1?p8`xCp7r)-&BjW7RsUE@ni2aT5US7-9aJIScc`~iB}d-4sO_|*29-kGqk!e44Z zSmb`T{xZC$X;9xRv&|u8yZojrvU|Iu(atv~0=ymH)4OlHy^rEa5QtbDjo2OKA51V3cWt64U`ZQ%V@LI2@y4Xz}{+(}K zQikQc;%&)#O`^tNrmv65Ih`Uq@7;e99xrLI_QJuhxN|$o9YJ{#87P;F?ccQLe!kD&@Wf0J;~%e!5x_ASlJX> z{k?3?OoA7}Bt^!{-ae&p0PM}0dZ)GH53utNraW-wub4gOWE4FJ2!_1sjC?fD3|AKLl0H{-`Kx)#t6_#0MtKm9Yw`~Afqzm|wuY9A(Kb0i~*~q{b zzCMC2buRtUkSziz+bOPnvbTCpa{AJT(mXZtY36k;=P!>y)`g?EO${ucP&Xvw+ z;1f>}ZfegiV@K2c4L&2E`4p{C03Cz#Q;)fRH0_SyXNJM3Ok=;h?&&-e}7`jh6R zhkp*=&O=r|*2g=xyug{y&#~7JIl~LYoBhx4{~69HbX3h7*Q_MGPvp0ld*YGYl3krGkOduy7>-H39~$4cJ9WOzT#!O< zx-Rh>F?YUNX+O%k%e>0+y4*ngbbIvy$sU*hd$|FE^4P1TInDBtO?X()W4d!kF_0Q; zheLZqPxap%fPJYB$8;#tJ0!RzwOv7zYhnV0i2TI2$?egyC^1Am)kyUV;w1beOqe`0 z3uvHuL&}X#X&k&4x|dKScFrKWV!Q92i~Q`co|}5hZc5`RqzR2QbhAF!-9xFkA-*pNNq(Pg@q1o|ffmRG>ZIw>y^*0jW1EO}He zM%P=K^XzOiS8Sz{nu_yeF>`pnLUneb^~k$i16bj8X_?cVk~vOHnrpJ@bi1m~=~-oTjwLTv z^hWPJhlXbFnnC#5?qal{4>274RVVk2+)8<-(__7f!}QWD*b2S(iv1v*B@lgym-smt z4)I~MTYY;Cqo=yecX*iLn1xo{aOLGot*@IpFFJ}rb>c0hB)T&_H0f=4U>NcHqWxGqUM1AFFzXa@X6a9T{`nIY!|I2pN1k*jzoQ*af@*qu z8PgNmW1)6w1$?4Ij*HEu>;$_Q3E5}Yg7cB7NdVJo!P?=-nfjr+FiRDCGj zJxK=a;3ngXO1nR#&l=9b&e5!QVC=Km#>%2iSV!|}d8KWS2|bT@!%yn)j)#q#JFIaT z3(7(kxah0P@>2H5s40_)of<>3$SH_aOY{VU+sd4rU|A|)y*Hhj_gbM_+qJcm>uL5o zP)#KgDCHq`M#y&NnaxUOMBQ=91T9=6Ij-B#t~k(MFw9miP3#24&CAvd=HvK$7rM1? zJ+?hy5Au4YBdhWx7Xo$@4i52jPpd7fI)pD%IGq|x(n|#Rx*EDRd+dP3R$P;;>RE~# z3d;*9>_L?@X9G=lR;Ahc+U?I_yadSpgx3K0%h|63x&Hn5bs{}a9?S=l!Ny)WZSv*xF^zUUjDprWHb_XHE zHAxWh&eOsHoo|)m1nfvQcE`-BY&flGCq&+9a_Yt;cKDD`w}w&V(~tW1rN{xQH0Zu_oTV(H!q?z25g(HqcLJ?(R zl#tN{k%YCMv|bKHDR1A|hx!+ZZq)p^B*~kgzw7qZHqY=W^rYp=)~-bm0C?^3_!@iG z3WS4g>4_|%9Jtv>JP|#%M3*d->|=;vTfRFl_N7MeGUCnI;2q{d6-lU$?&5kxcwP|Q z%MmfyY!74ae&W_4e^{xYT|$C?_O~Bn0g(U|#!K2go~}65%fq(H;OV7z2H@JZ^K+(< znZFjfpF1~0jU#S3)!D`r#Gu~6T%y=3t_<+b4ZxZLGNKi#BU8j2n0xPOh2ythj;rm2 zhS#|zSL4ZBa3iCp92*g`FxL0jse=)8&?=_FrcxPA z$;Nl$0>@fV2AvFfr;xaF)7!klh>!@n#*t*SuqLPDXJz?y$BSF}ii_a$`jwK3u#;7_ zF}C=bjt`wfc66lbZ^Op$mPX5~Y^m58G@8b2MC+~P0!~_76`km`CD9w1shOtii_Kd` zPA@TqS&O+x@<7sdqw-B9C7Cz*JATQQAutH**DeV8tr_>Jk4$Bl09z*PJsZt|z@&B; zvB}EK;dwR}MOC+g;MtURXa6+wcthW;qmM z6PzY*HlIrlfpB4l8C?vedM7PJg*i}ROYI$-ZaYvQNi9z?#PXC8-I`%T7m7m4mx(VR zYy_?WH(R0Fz?S!$d2^G6|b2#IcA|3&CN+|@C2HOAV@ME5Ja5+YYDh)pJ(sYrVwGIIEYd; z*5bG1#eE}&#sNM@hh?|>_4WZdAG;?E3L_Xn9WAHiKKx% z6oj|MmfA804uOlZvi$9^aOANliRwEUZ~rt_#=MQhgxw>VXV~w6q_pFD2J{i<#H5UvM0vjYt=8cg%@Z`z< z5p=*()Bw>~79%cqZ=a1iSR#Mo(guEOy(*I`wa=N4#^`~7;aVOt;$Zql&y8!kG^YOO zGtAcLG9+2V70{c3zJZc`Q6rw_x@l>hl;P#|Ks*|-xwhcL_TYfizb$vx$&>BA9zLLH6B#^CnA}!z#BZHM_<1i zchMkG-fw9fuz*}D`I#(~-h%KViOx3o0w}a%q;DhpHUxj$vuHO(w$eNB5G(Q=>#LbX zB*TnT6#Ov-d)2#^1@}K>w^0BLC?*VfamOTG-}1XIVq;Mjlcx2r zy3HfMBcD?McZN%bT#y)MX+QMs!5H?yop-F>e%n#T?fJsR-+Q5>rrfI?-LPieSj@Ft z|Cd>qckkrv#Ftpa{cH64KPqqk39!UW7E~XF z#J*C}^(_+4iJk_2DZS)Q=YN;7%cZc+iNz={rfMEGNa}l!_9tk~JMFZLS7xiBDLjy5%Eoh(%N4G zcAG-ySHlO6kJZF@aq<_JEwOhG9f#u?j6fG$1uLE=e-S1j({* zY(O=we)R%&p8;L>xjwo01fDPRA^)@k@1}0DvoZGm=1y{^U73FmpI&WQ>R*=x+)!=LB&JvztOwgMi8n~W>0aTZ*?vvoyeB~+_Xs*~JBg}N;= z))uoF=&mdFaSNqj!n9KtK+QZEn6*Qv{+Nj7C_2OVb#(lD)$nAgUMV;|5{kQ`SXA`B zWzQK*_DN3OcE%BDUpOPD-clCsPTzdxyEpD7IK7NHQ(S3=N#wi53bGcGs#CeHsOc8O zzzGl-6{KJ_Su8A+Iuj_MENe|&v*p3Fl3D^(g}WN34o8WSkyC%4}n5Y^%7Zd>UCM8VMJb@8IWdQdU#u;#zb3QPcQY5_G!Ah0Uky_8w z%VnnMP?{I0uA)(6Y;RtH+vfrZ*HCi!UhNuqtp&$XI7)EA&rZ&6XL`TU!`Pnk@^eje-)-hpkUpa=E7w!zI!khiOdOiNh08Y3)F!N?II|he4 z*yn}~PalVpj9&;b)D|z2fh*5knMmmoZxp2u$}ep(gI&MK!cw{|aF0wE)y<{xMHOuG zq)pS+S-AaJjh&+eYJ8=%&d?o0tb-j5gXNC+Y@P4wvp%Bg)$N+T?}yX-YA)qw-z(hF zu2pjz5l>LEl_|!c2rC{5OnZzUw*5vl=YIXb>WOKni z3d1S5=E*%RG*Mi$KIjC8%)u@m|KQXLQhk!V)o}dSwh>?FjO)j1OjO?uSuEX{h${2o zG@f0ZLv(Y-Cxn|-vaNjki{tnCIuE;;2SENdWbj84bAOGG3m>nPz9L_YKu}l0abnnN z$cbcrmLdW63;ek{%IY;#qoEsP7{8^e{I|8*fEPknl$2&pQ6HQKoRH+1M~Z}Pc_;|q zBEKK-5+Sg&7gR5VN~=K|tbc}rY{R2wc7lE3o`>`K9VLiAmCP2Cu=^Fjnf6H_YB3xL z1_?7k9y)~sQBx9Z6o~0b8tkxkOej^)^@Jcr$z^C%u~%ehHv+pNv&gpO5KDWP&hCOn zvIOCfrI7jnrgLVO@fkS0rg_#+DI}32Zpv%&``<;nl7H{9F6j$zsuNw6$Jh<E65<(Uwafk~G*PUt;c zTds?!5}4M#8i48{5W|QX&L@*E#BUliSAOD*>|G%MA zE7i2saa7Sh@**$rvo{ToM9>0Lv)PZMQ*VO|0qI>O?V#RrSSeyZE&dp6E6lQZXRw2FqS zik^sN(fQQxl5;AEsZp*vAkFS5ih5OpF!HcM=(H=4@|=$cYjxE*P(06)hv1eFX~$qG z7D1|xvLj4&!6+uzM6*P5AhXeX7_VpA0+Xis2)EH?^RuKQc`t z$hSk&X-+;&n)CpXl%-L)l?>+=jv--nfu$75#$7Qu;VFGRwvkvLgaII!qL+0TT&Q`# zuS%E^2ezrd(_}|l*w*K%an5Ohmh#Kw?0|3fAYpGb$0Bf+rGOKF=&=2($%ZnQEvquq zEL4OoH!-0Azwi;VuJ^FL)CIrN9nFER8@3 zyExuf{`oO}!W~8sNzi^|sAC#L!RbAkl?|3g@ZhNU=p!ff$1ELmeJ0uvy-PKS6>7ga zm8VNE&bHehc1b)5PgM+6IazB;iI&_J7=;5C*u)7ny_7X@x?wnqjGbFR;eqcOu3EJ$ z6}qfct=h*}G_KFV`nLO&+!x`mh$U$=vSe?+xAS%ZnfSrqU`ls%>EctW{3gc^{j9=u zbze1Uq^Ptd>nn7ovdXrn_|imLSv4O!s3FweS=E^~__QF$A?7IkR^2Yl-#yh>NI`=g z&h|Bj#LUb|V>;-9!__)_l~&vu!uZrkB<3`3Tk-x|3g0Qd3&ibZBv_e* z8EoG9AV<0LhJkhNepK4YP3XH+MmqgD4n3Ayu)n^B<{M@F1Ne=BswRwYx8|b3-OFdU zSjqbGA{h-CNnsN@BfFE}LUM|36$0RagYY$KdC^H>(&5x&5XAv6&J`FTy%20b9dJ%R zS(R)k__UX7%l-+|bPX07T5PUy?Bl-=l;2{<_G*rO$?S*jkXy1AeE?0fN49AZvEA(D z+I3dfoqmdxD!FryZ!rI^d>meoOnAY1qE}>azu1$gbv;BXIo(-qhBHWDzS=`&fOB$* z$7tg(!2cBLxnMeuNt)e~ASQppM<(&2p zah*X#4GMLFnLDz$t%5B&IHM9FAOE!$GOA#9gR(T_O}f|1 zx=C?c%&u6+!2V3o5a=d2aF9T$F${Dg3po3PhB>afOvPe-m=M{4mZUtmg60s_aBAISzyLdfz z@N;AszqG@Jw$+8abx*S@-UV-DswSf~CnGF69@7dPFLr@8fP*>mb7|T^9hp|KF))i? zEr%sMjdD7>9@kf)ItgGSXW2qtADvobj_Z4#K!Hx3xPDL9-VZMI=ZsSaXmjX+OW|r% z$f4WA#F>TGMWyTDJK5%c1y;V$k^yE@R-PoX60{1ZA{p?RAR$_L5Wy634B;E*!CjeT!1jrbi~CqxiFxP(K- z5KN4%<(n}~g>EJ9s=2P;#Uo{i-N&vW9y-l>f4Mj6=b?5-@;%df-%mvNPpi0T!Bd0k z05BM>c}nw;-W&VnJPpBcPs4J5pUmZVFux7V((v0nu~zu=#58zt&o~ z3_kgJp)jhAT_FMSsUHw{sSHPB$~{NmIt`eFVrLda{+=p47rfwz`39ln%gnuMMh2uH zJ@`F)lp1EJ)_8_EOpHpg2A<9)y0SG(P-|g+@Ii@%`Gy;^HM)Tp1Kq*G8W0TRph?#L zc!cMS5Mo7y%W%A*{tv7@w@@_w-NTw->F{qNH69XRO^QGLU%quFwskLbK77PA&m$%N zDi&O1NrBY@TtckvMe{sf{d&Rp&%MS_1O}hR*TI|q@&SwdZ+eaY&x7}`@olBrh3yy3 z%$Lq!Y^IDuG0h51*FZG^38a!05EeoaCY)EGl2pENI*%BK@LF8WjC7Cef=;Z7(JDop z4k`1z^u#M^FAW;bZZ&hg{AW^IZ}s``boKMgCe;ouW5gGY!hTCRrqrt|=mu^Bvx?S0 zW-dM5lw%_Z_z{T56@H!GZ4-IJRMh6S1)T0+dZ_`FuJA80nihAb! zug^~?ZM7ih76`3L$7NRdIQb0qstWTZ*jWDxRpxaww&O4DsmX@KX(+~S-b51c&50u< zl_xClJg!c(?BK{}n;Un203G$YKUSU}KVZvc_aTc=Fw6B7CND%L9ma*LZ1lBMY_{e) zWvV~%EuIiUFMdftGl@Yu`p(5IT{a< zzOxrv3u#(K*z>A)3PD}xbKxY9sZ*hLUB#fOUX^BHAx8^Q0phUXN8)PM=3dtf0ab5^ zK1HHtPe#V?Nt4N3xyifS%U4T*YtdaUtU(0i<#j%=45$cMg zORS>IlPl18f+t$~eXr6nvrrl{?00gmt%1`ypjX1hfMNLmB;x(yVowh%5VvorpO~WZeNJlqVxZ_SwG;YEX zXVTR>v~+)Z6(IXi#JMpOITr=xc7qUZQDE^Rq@8(EVx9#d2eu>_1E*T`DEKI?0`qi| zvhzx~M$?Ww1N_yf4iOG?%oY!94ZZ!q2?fJ7@+x@u9I3A?PJ*v>>sQV1aUlz z<}}l;-cIg_3K9ybLbw0Xz5fqNXk&nb^!Q?i0AI|I)c^M6%8CC^V6XP5bnM8RC#EIICuJy0pe|p#K0*IH3;t0-AmH_# zb>jUXkG{%;laz_iO7Q0^c1wTq$#QF#{&+chv;#rd4xwZ>&_{c9_`wdD&l%WPhox*! z8uq|Roo=ki8|<)xn>+#CniN4ybb!j)3R7I*NG%s*QOb)9*%$A~3J{0Pic`Ws(^0u@ z@HfLG79Y<$!83-k2*AMXmE@to^qe(Slu3fs+yS~T<|VqXvbVVS@f2l1h8r^2wZWA( z7-Bffw`A#VXIY#@QLaQ$;BM653ChkqWYq1fL}d}>j?C3%qS&t7#x>d*!`1S-#hXC0 z5a}dOp@=GJ=ee?4?-}+CVQ-nLWdZ77n;MB7xUSU%U&xX1uj=yV@FI@ ztRLT-_y(P!GfbY&Wf`NJg>o5k`g`r>ogCmmReJqchROK>Fg$5Yh$WKRL2&3u&3tF$ zk=JDt3Ed8(2pWy$K^39jp;0C+u$$9qy(^eukoqDr79WLaOTLg~cY5-YSTy>3csJ=>{ zmhM+nWrZGQTZwfsnA-($VfNrcC+<_c`lF1rz|qhzZBoN2nIyV$$6a$RU6<@JJ@jC= zqweQuY=Bz7tDGkN$+>l<@*ffLpH0?Ut!YaQYx2VYi+ax{4K%sg-6|SNip@{=Q)|SC zoUv=V;MjvQCg-U+2NifnDQ)i`>p@HjV$f$>P;i;P$C$1bW8AXpijUs|7g#G0eFTVB zCM%*vg0m{;!gp;t<|5s0@B^wEimD#$M4$d8ZTEYU`)!inh(#;DEIs# z6$aNcS}v!fTFiS{WTR=5-f$-%V60e5TP3ePtGN#}G);Y2I5nJ^AGnJePKD4_c1#{m zNume`Hk78b%@p~Lx~+x4Dbu}a&I}Ma*ULwJXI{PM0b{;=uSKOZEwTnGbUH->#M^k2oMG%LBv>2h=bhWC?L zO7|F%a)$sJ;a%h`m%9R=puC!xz+hyC-MaXS$GdepZJIMv>oyj^SRkQi*-zF-7f99z z%KcM({|G|c>+E_@_09bkL2z&n$Q)@Z(nBbbkTN;2-Es-EZ5cEV_PFZX6DljEC30Aj zR2h?&t~9F;Ycf!qno+e*{ir=a+iQm?mY7gtt`KH%!=6|nY~6I@gum&8c#lDp*~a)AGINSi zwa9K7e!IzC1ERuvTGUMHw+8VGaD<9|spowOpf4!OzN-j8Qt{@y{Kc;FWWsev?$skO zM&l9)$GgYzfq-bchVB|DMhl%2gqxiH)Z~q#c$*=e-0`kqj~xFGG|)fP|NS+I4-y;* z2+7x`MzR0D3;y4i6#gF_fb7?VNW{?DQ1t)oK>Sy8R;b}&fOY`*^cf+KwxY5V%a12;?9{l^~e)^UB*43A5YV)b9+2f@!R{R?+#)V+TkhVW%AKiLK zV!C##N4o!-Kjpw0U|lcRnAb%-rD+|nzuiF|Ty2|=_el@GOTOpT<8Twk8-xH(c>4p! z8;s!KkW-ouNemgEwr^ppq=Aq#xZ?AuJprSuyU%``ak{9c5`Mp|3 zG~S-_?7c%t+pOJ%sgTkq5zGVkJUD$g;y|;}YqAgD)bwimJ5}4R!HK2TzhdBBp>|Zy z?1)``O#vA}U+m!w^zglcse_MmLmWP_ib&`qsjZ+IoG$lo9Nv&7(;O2)K`u{I`vjgLsmx zqd-;hwZn$Q(>Vz6qBdsDHHksbkYR3R={S{*=Q~bbR!?#|kNu^L3NySRrS(M=$hJnJ z*2Y;kFl*CD+##PuwXxO-pmTK6?Nmzy6~0;*+?vw`bu>;uk*V2S;JQy6C-`~g*v@1` zb1}Rhb?c9S%Ct`T98J%e`HSU8o6MkLbhFHjJrgS8VB8o$JP1{{iY%$i#Qkx`iesI| z<}x&SMS+QH+WQO9w;3vh>>(gVJ#VSWIVanEcHE-!qF`pwvDB$)aLWuI*7c-@;f`#Q zY-a>}PIkGnU9G?@M4hQWUD!aqu&|`C{Lv8wRQY1_v;$=>Pu8|oYOFT+WC~KMihP4! zcOf3?>_j_NH8emhSgCsE%CnYzYvjDBoOEMf?jXb9YV+N*cM?(G`eH+X|3TWq@38}u zf#zXC%CfZcUCZese7YmSXvrC&gGgLq^Wu=KfBLXNMPi$_&2%q$-FmhoB_pxE8>`SG zw%deajcoXb~8+9NN;Lo5P z+MC+I)wLJkXE!W$RZk=J$L}KxCtJd@XVj01Z3gO(us=c9ZbE;>p~O|*P(PKf?Es%W z;nW}D$tvdodX?Kh3w~8`ED*${-I-4B#kdT?LON5FmJ4kco+>Gd{2UMw15;5XmQuxB z)~|#LDjI{*O`stz34`G!K(TZQErCNeR3s}?#qBi&sIy>%kE0MN3ZEIiqzk>Mml~Co z6w1i}Tu4byMFXgdLQl$4h_F>1f>TC1HN(t}I1`ohvw#I*D@IY&hr8f@E5&dWfHkDz z{^iS#wf>ycC)K7W-Gaui^-MMg1L{>RQh+=AK=X@Sfm!dO6oJVT+v&M*hc-p|)53i4 zrhQ4tVve~s5=t$Rv(ozHj65NAkrJI*%3}N?;M{B)!+~uQUR&T!Jb}n41C@=0f#jz1 z#Rc6pAx%KrMVE%M_HEIU63s^J{%ADWh9wzqlxcG8j*d2)Z!r7p#%yCkcZ9?4CGFmv znaiXX<7w%}c?xCn7`HIn!PD4c!=@c6YdX#33n=z)NWM|_Ke04-+~#mV;-rJ`!7G1O zBv{hhk~+G8qp)BNN$PrQ+0-yn_wzA6DS#%2dix5;wEmr=G&QNC(|PAy#dfhVhQTNY zVTQ@sf_)32;8Z;#7Skl*0o9l z6K^f}2Tzn^o#`!ZBu~ui>%T}~{z#Soeb?$k?8{)H?c+7an>N;!Q|*5;?QUfRs)<@! z7eKwZ=&hP)Le?cujt$7uvI+j4ryKWxErNRDx*dpdBBB;XUwq7MFwU6#5j`|SjFC_DO1WnY#yWQDTN zliH9y2W+kuIlW}-TMm?!dB+NeUXWPE84kzvGw)VQ{NT~+;6X_t|3b{X>zoXn4)r&( z*bqW|dlAnPIu~-)d+th-UzIJty8NZ#TK}rW(G=QAlX6Go+1iGCwZK=vTo(gXM@T3) z8gp#4475gs6{5VJT>>HJzvTG6*}+u6Md!THm&Mi;C4#4ynoQOtBLvqND$#~~WS&xW znO92(q6g51c9`}Ob)hpAJn7)(co`<2Bk^n@isHf1}0%im&j#3CGF zDM5gKZ!#v`AW_y!myAown`inYZw8kNdSY?3n<;2X%VJX1DgN^Ch-r)3xn6kVvW@!v zpSJ$JjsCrCB0XB-?@TTaS#6%BRlk2$Ns!?b#8Hb&x@*xl;e;H$UYGH9P$NeBx+sjf zi<50K|Di}kP2t~6W+`A0r;I6a3%<9k;_({J>~y|gI~E!|*?t{PTytQL9D1g`d!`+8 zFk^zi<$*Y{%O1LJj5ACJa?X8uC&l|xL?>+>Gx&tUPI$~BmYt6r&xwuNLzf2{e4(|d z>d+N_MyRBVm)U?S-SddYdCKX<_eeM|L62{63DpXF9=V94!|jb5EBxj81k;N00n)45gHw({fT=UKr2yN=XY3v;K~TLv`CA8LUMb`>5M0IMpGD`y*}~R*$;JtD|0XC^hY(x$*wG3OIs zMFi)2GJ^5V%`v70hX-Ck_n!=_&`4-L~_lyqjiVy|TR z!RD0g5%r7g=o>*&r7wD5-lG8s=L=}r;@oLE}_y+3%$3(U&HJzj&^Z#f%2p=a&H0-TM+=RP>oRV8mr1G%Z9MF{%B3@gSb zGCw#v)(7ChThZ^CYqUXB#K>#Bq7e&Fswu3PENw*F2|I8)e``stYSLmtSLgBct5bw1 zW+T%6=3vAmTHj|{B}P6amN$Z_)tdML8x6=of685GHP4?f;+~K4>^_p*rUJta3tWOT zwjr7a@Xu52DO%yqr}G6QU)#9K5q8jfPcp7LUD#l`fzqq}7~H|RAwPOGt?j)DMjGqa zs?AUu<}v5}!E#0V%yUD(esIqph`7hk^~7X%No02!n9+`!eXk}!rY;aLwd=6*>c8ZL z9sT)VglWPwTNQ_2t{&$vSC8=jJ?8i~vC)46I2!+9la{c2>62LNcn8HG0*HQ@Ymlyp z(NEW5!VR(qilmU&5e3s@NgI1zn~UK^5;{-KHps4;TGS_+TBH|FNKHz@kyG$_pN3?; zMZ8616-{MgtudqUL&!y+x4K>WEFJORZF+saZ=HRD)nKR_X#`bxXG9oc7Gu|fZ-pAN z;3q_f7)4pv zrYJUmGm|tB9l>T`)WnamdC$y9k@49RMrPbVdMY2+y&r zqBEO8io~{^s)XOTuxQlb)Cq3LgiwR6iD$P${kzK~H!?Xehk4^FnD>sqHg3AHMEH!- z-<#T)F*|h$f%8iT!zt5XF-vVw<1{5=rJcbqCyg0`Dl?ETg#?fvStw88`HjB1g1K&V z+1-u_7j1n-9r{~A7ubb1voj>##N>E7O)lKdQGD6=gu(xfx-0RQ28|4~CH>`agc7p= zPN)PIXZN6<$K5+=B6?gpGaGBUR6IB}cXtt2%VZ{_m8R{`@;tSurA;qr)zuu}CVRm@ zl9-|EaQng(-GX!abA`ubn!3rbJ&a&y2*x*WxA-|V%&S&)VCn`I5WV97*y?Ro<@KWo zeN|j@9aCZWJEmeAx}99E!qm+(lX<=DLRee5p2*2`+|2bi@V+Wt#nlB|u|YdbJHjNTa*x2>E{*kCJjR^MQwGR*(S)CGDy zmz9gFx~`>eduL$f(goVX$gSl6Rm8O|k+oHqpFEqt}}Fbcu-OQPFGf zdKX*m_0=d)m+$_Ryt0-XoE}tm?arFhDdD!N%wAc~y0tdgmbtqAV41)bu<~$hw=j8I z7{eNfD@FA38d=145x~n{96AK?KKP6tyOsFq6a~X?3azPTz3!i!wC7_Ddlk5k_PKYv z+;^s*;)5Uhyx!ByUtxe~E~_6TQEXPTi;c}Me2f}Z`6F%$Q+tv`M4IYRMIYb7xenmS z18?mU1og99rOgS#@I%}*CnMp4HV<@Z25OuT-7d|~^ZP{K#!@W`CsN$((zGLC#s^xi zd-*N6S|pqE!JrV{&bmem4+r`Q)Ik*ye?Zezt!G6!$@&IzTNs=Aq47GstTFsma4jEBv#4gsjXS#+>5=)z&cov#h;T%1 z@}Gc)=G5(bcPiZ7H%g(;9xd<-VVJZ(0jnT6RepAtNIBY_0a?%g0;GCjis1^}aRi9hX>r z2=8j;HSrduZu4Wj>(KX*_U|E)CzCkKyaD~748-5mG2GWMf1&sKWX(gbUo|2!vYsey z+j#$W!|bQr+RNaYFqqmljMzb*wEVB;*u;?C-tn*U>H4Md=KsGhqyJ3>O_Z0m1QkT` zF`2(5E|{ep;V8`1%Q2DRwMyAP5b%WmoL-Izp8T;A!-G5_0<<*V)+~@6{!>tm(k&+&=mUQ!znyCeP2R>}%QqGO5*Z5yw zK_a-%y5`C7Sf15{=fF$5Ic`4%L1Yy&-W=>htrY5#kPa7Q?5#!*@c%r0X5J6T#)kv} z2}1e5m_GkI#re2R0`L_!HiJ>0C@`VUQ??+)=)~I7j#M_1XrlwtN1KJ-tVORog z8)KYID%FgL{VA(}dki0%YfAC0()I-Qnf7+9Lj{z)r);$tDfDjyP1i~&=3Y$@c7okVIIRN}p#w=53lqEbXo`rWzvemT5fp1RM1aC$ zlY`gT$R^9unTm*tXbGd0UP0m3=8=Q}>}gXNbV`*(5dxJ*C03%<%<`Z|f~V80 z<561Mb||OBtHadb%`TDGYh*UX8Q8VWoF*oF&jj^q`UUN5Cv!d))VROduIbL|A+&2! zanP}os1vr{4BL5dxlz_-{o)(n#n%L{`m?gc8BCEYb&4lze-svOzL0}jsq~k*Op#hWQx(Pay! zWuOT>~4dKAIdfpR)vMlbP`xF&zanN^e{JuTxtmzxltXT&%jN$=V}U-s(LJcfVAZQHKs< zDp|NJKiZR% z8KH$H1e?w)K%;hs$?(5TpA z%DH3n`b=V{9+aZ$Dhkl@FlTxVApmhCo0A%%sk%@l@-wnciv!;J^CVY~(Cto9365Hq zk%%#&MDe!Sqo+Z00Dg&rfceQ@4Uo>I3P4a8X-m#2$X0wZn1ZlsS`V}$Q(W29#bNoi z(s39<_A7Kzo21~rBL3(bjpS9f%Mv;SyO5TLCyU*3DRwWg#UmsS^p(A|4ZVj?oBS{D zmla4%PA@tX+l149Yv-wApto8C^wnvwOmenjN4KUUoWC>n3CfwZ*2Qh2&9^9cyEr}e zYVA?B6hJC9I0~?4siEoEZyDF{TeC#k(mt~+&2?_j>$;_C>@RMl>D1HiGw8G7@#KB3FK46h%Qg|{&&xtXn4byt2wKktL4(lY8`p#seAAGG$1G0qq#+q%f1FW0p2pxafNT9pqQt3PS044dS=@_E0>^2lBoKW#ta zgI?xuFe2CXHDA73lU=mOpg!rxk@3fkqQ=x?H!RUrL9_jB2>mu;?uq7^;M0b9SwX;d zzp5mDNDGbUvxmR-^))X)(;i6N#S5Xh=lH==?zES<3}~2_0mv{^dyDMH7N(VFZcLv&IQJxjI3n0kuKuQT&8yk)@{1v) zL(`($_M3z^EN4PxEIh#@APXLc4nAi9`-LjAGzq;G#8Kd^Y>Pvt@{IZ}FaZpM1#Zm% zF^V@%@6j6A#v~B6EXMtkDH<1)U*A$Pl>c4PCMWtylsWZ2+5J4m4`sQ}SEpv3U7qsh z!kXy{RmX*C(OgzHSw`J7GB+CPz-c7nc|!i{xLvUxq1xEPFhHDL6pggSU0h{(Agiy6 zz1c?_4p3)T8%J$-%HpN+-j%-_bxV)Xj?rTQ*Z-agG7AEcr5rwoPAzx8N zS+GlbzwD{F)i)AbPE%qR8I?bnOcJ=NoVyXcShbIv9b(Or`BjDx(P5U?xLSIpQ}_{8 zv~uznZ2IKzgrR!D4|vLf_o6a2zY~AjsrS#WRT}mU)+2f920X2kG@#HtVO2P&>$Cc0 zyhqLEBD($pd(r(q8`hB>`X+t#$ZoM!HV(yp$~8VWOCuMftY+9s4kIuW&tj`B_|?E= zU{%2@k`%Gr+|+*N`g$bShXVRTviRSSepLm$(S7Rce_J+=hZV+I{OnN%J_#_f|NTD2 z?LRO}rvGcl=znsT|8v5qr1d|x(LPK$vGF-=GCXb0FB!r?{;&en(loRamcmw_2;ya$ z{8qMxDb;dru|Asj4Gg$&h&552#9i2Ae~Npz-P^1un@La5=bJr3s%F{28@i?XvuR=Y zG$rGYrmU(hj8o((fk96mw9tTKk=XX+TE}#5fyr&tld)F$Gilszo2EkleR0c+G=&mP z?uKH=1xFyQulD#g)5BcW2%*@c8?LKoZ^`Rx|2v7O&E|znNV1B>i?e1_(KetkE6&!E zB_1VMRUjvj-7Swcq?(Nt`k5t7gv-P{c|mgJ{asoe%~#7H;O zHYvV;Hwc=u(@UmzzwcPGbh~CG?sp2LxlX9U>kw7aK{AHhsZBNlKF{n9bXZ znn;r)t!^qlAPH;-YHl{Aa<)`blupD|MVP9*uc2bn!2FJ*6R_hDOWY5>3~`|=uvb5h z$JSJ06TyYEXwSz?0i#M?iRU-%$n2QMX{lCJ(Y)L(CB7?n_RY0wx~AlA6fe8#@oQ1Rdp@=ADuL-ftDDY>ZXdtEqVEY3XtC@TRCPy~%jdb}_|7osIPX_D=0YU|aO6kHjE~{Q zz;*c(D$6%u6yi8~lZG?g6@K1kP=FFhxqxGQA}A;*dh3VJ;@s(rGuJiP{)X$h>h=_b zk4A-HCaCVsfRLJ9bKeI)%-wND`A&>J%p6SoJzLGwUK=QmhD3vS03T-2V4J8m$p!Tq zRf9n;5I=06Y^*>aqx?ZVvhi|%645O#p7}T63d5YX_gwpfOX{8tVf6>vXt-iR#Q*{N z1H|8@haqN9ozGUz>pw$z8Q*~4hm-roQ`Pz@BwUf&ac{Nbn z%u|YMnC>y`#oo33J98LfJljvgMU~5@NkU^IAM9sCAL6gK-<_3Dx_h~v@c(OB6Upuh zIe(UP+oz=V{{wIFpFf8GkFx$x7*@tWeuD^cqR;>yy0c`PI=MJs z%|Bui8T;ieN)G3IkXWWHc2{t@D;`H^hP$##}Om7_@5YyfUyc$u>GY^wQ}oNm?V-ZDoac7gc~B`z zR*Ewz%5j(FFrgSf-77@9GCsqrt7~X>GRCwBjq}TM%uO89!2A^Sa?&a-eDGk6qIF_L ziRL0=V7VF`PUjG6&g$xTWldHE&E(@*h9M?5tSD(|>fr>%y5dV`C8AcV%EZ8y)u>Pn zv3#?=J2!F15<#Z>q$^}iYa1J^DL)v2tfjH{d^s{c9YZ9RH1poX? zg~Vh(k#@ONil%DAhR(7I&9BCc60HV)%C2TQPZzn~L=7c#tFaVA1@8UhZI>TS)hluc z!j3u)ZX(wl=Ob#899G#nsBXQkE5ZVgf7frBf=-OfLC6BlZ0sHCbLZkx+?98}@*F;1 zX|Iy<42iV0H!qwNQ6zNxa$OYrHi$CrFxS#;fr04aFTnj#hpaezSelJmE#M4?>wJO1 z$+tljjBU}#tt?Fq?T)leopzu$JtkF1_ahIxr92`pUHVWhZbxh0Z0&Xl9&DL(S}3JZ zs^Xv&Tq9V?pQL|C>Pt!x&lQVo>z>XSmg%u$Btj=DLL1e-0E~CvkNb}0{ZrZdgRr1l z`v8(ov&Ry(hth-)W33>S>ujnZ13i6DJe|$OB4gAtgVdu6(3BXegU5Jg}P8`y1!0lQP&J6K#Qg5w|z%iRPlY~Yq-~$5yTeaV)ZHW2jL2boFYSi(M6`Wkzy5eGh-}5?PlZr?@Wq=~` z%F%_VaIh1Zd}J8eBkv^7LDbPw3;S6_5D% zy7=7fS@*w(w}@iUrg2+=jEc)1yx|;uV5bK=sEYVU_Usc^!PKme-HI;rUp>rdiR5wy z8z$pxmr{U3T$B##7j0{|gZHuS?0l+1Rl(M;iqx=6^>lN5#r#W9n8=VWR}hCm%{UNz zk;R03kx*YcU2o~7tK(c`JO^4JJ<-SIF8nTL#+btR;rt__^W)5^MZiNn0-*%_gT_CE zE=QuU&q4vLOS4#wf<|yBGMG%*R>m#sLy2?OQw7wO4W{^26N0Hc^%?MF; z+j(|NR?2EzO8CsHwJ4)2t1SzglJuxIluGp`p0ZSuc`fY5;#Le~7U{rk_{?TFGFwXe zPm>i3hWI5YY`s`wgB9QW)dG$zJwiR&l-`0uiDZ(T_83`?!WpWy#plMB^pu;E072^! z@?6$XvJmPR9v7VULblMF&9z0jCdL!`S>%+F(eW4QZ#ZdajtNL zl6Ah7k)Sc^5l%dOnZr3A({t=B&t}>pYQ=tm#ZYN=L2+P?;Q%Kc`mC}fH*2Oxmw$zj zIiS4G1d1V>!xbS(Wj!YH7QC(AY54PJ2*aVZbRwf>+-^h%mUY5!lMe|I_AI2Z0WLlLDdlRBU z102XOui!$lq&$0!xZ!b1E`BiRixqNofsV_chz+>pTB^5ZkzgZ@z!JB{_PNI*1l^fY6P{g$qJvFjN0X7 z4iEVAN48;sQKK1Of&6G5`K7V`JaD(&^_zGek`r}AdUzQToL>L3wp!Cfg|*y?dXQ~C{Wqr~b1B4c(r9c1a9|+YhBYzG5 zl%(b2R)AAO-0H;j`){jEi=>uXPuu-%^zB2|&Y zob#uv)41C* z#A0V}ZMwA-9&89^h~!OmTM%~v%G4PcRQ|M8Z|mv~G|S<_mYU!f>&P&plXp>eOX9vj z#55ORA5K`(v{P?bQbtrWIquLdQmGXnDh<1s$)@a1{Oei+`Eyz~?#TQ{^QkEN%Wt&i zN66rzN-?!S)Z}yxsxw=sErf_~;}SMV^N1mZw_%IzG1U{mk1oT8G?BJ}SvUW>s=Pz+ zLfMX)q7VG(iZuL#Y%!jS+M4TNDL-6-qPYr@m~P$uK$MOwmcU~5ROiVx%b z;}svBo9h0(tVZ#>W5e|HSjX1iL?g;NXYyae80RXO7`@kLnSpe|yY5e7qhmPqy+QXMd z8|7hH>+*LrP@B=)>kXa7@9Q%a_cC4gKck)I?q#oz;q3Sn4qM**S`!+hI7~kUPc){d z`|2!<9q`0fw}=v#XU0h`GYmK;3Za`h z8_&kHNF?6hTs0zb)XpvrY`U~FYhmjWrN>_Pb7w@nSvEh$tHqx@*{$TVrhVOC@)m}lp zt?YLr_sX{&T?L%svXjom)=P|e9zBUE&XbR;ZieAHLeEKQlbDf^W>J}K{}>ydDi}2- zkq!$M*4ye>ag?lj8Qo+@E)aqQdj z;W6Ib1LU0(f`%_U+$?-cVg<&jMyxKn$Cv5Bhhfn+*7`3#P2$qVOL~bwKRNMt_OLm6 zy_q#s#-AqMoujU_)Pji7Bj2FwTlY)toY`Hw>cY*Pic(6Z_ojcKIE zH?okKnTXFwOUwWdXE1@TGOQJ-p}-RT!bonLl<LbETjKMhN2Y3O4 zeN;SQsOO)Qz4-?I=}3(Bf03RUl?tX}abQgbx#Huli{YH&Vox*;=-{?Gn`|u{wGGP) zt{P0GX#8@=IdUvOkFK&L_(EGE!E4eKH7i;)sZ2h}s)0;BIi~z) z?0_pTN!W*WL0LG(OEBfK? z+t(@?aIf-h79N~I&Q+~$`1-ZS6fPA@<^kkyS09vYIKbp^nb47KR7ri{CBMSTw0fY` zu({fhNzY!k!zW?tlVi%HxY0vhag&ht``55+7o`u#OfX!-B6sdWR0RkXF=Xtm{x`E* zIc9!>_oO5&Pmo#jgN}CL&!40Dr`R#PTcGwg0fYOxcoBCD_@BXL=*dlwSekm$!4GPr zUYP`fWTU)??xh6RDF>;C;533>%2B(qTP;U#&6wFYnE#rRVMP8|DgPYVQ)B&a2+986 zUsM0Nq4ZxLP|fNuei);Ge>Jtu!vQ7+_z9?_RLChNfp{5|{^2Cl91CW1&pvS+%+MQbr@|X-e#(OHGgoI#^pi;+pHH#-o#)q`OisI; zhZVn?-fw#bU4(rXD=r^+Rv=NL>DzFhoPWF`&>7)BZ+ zEge7vexB!r5j7t*ge6qJ7*X=aNj*Fmhxlvn@ik{4ROIC0du|E>G2Hj>*g5?YM>j@y zw^dnQjQ+6)7>-~mK(5lQ1t1rAs{!r9y?+vW8YA#nWOPn5+5otaDXP+*LW3TiIE^tF zwvKPLmRPG#GKoy1mKrfVbD_d~AdikJ=M~eUZnK{hdc{bR2PhA35ftCA8;*QhVx-dK zFEIB(p2D)S3Ds7g$4O?20-nZBET9P;=;U^Gf(#-wemy4%q#nsq8x%iWSZs3~uH|0X zV?_l7l>bqi+4PjxZnzjm2ssUlVi22B-)dzrz$7q$KYbA*cL3@w7-?)z4JE|bq@}}I zsC2427eUiu0j#CgMcjs@fYhehZ6;U*ohO(5#>P$U8s!nr*1-b#t!JkX&f^cpxWd!Jc{jAs~d94k&*pH~{W*&%f98iUujFo0TfcfcfG4JZ~K)Vgn|Vh_SnB+9018z=Lj-8BS^@#6hF4|-KX zwXOSuwVlurVRbH5SCWbn>kb0%4=PguwobDf3XF`6H0VS(Wa;}kBfTM39RiyR1vm`W zyKp>L+@*^KQxVNbrqoFEoS%XLPv5wGfIm`|JDfsfY}L+71_yf!fraxYQFc1hq)!6( zRn+h;QY&Xt5w_0=xV?#p5eLH$w^!I!Px0+8Xd59HogKO#(^lTkmtxxBUyuBY$Am3w!*&^ zj6Ucy?YfFl5cyn10y0R^j44UWL1p%mo1AF}R2Q`t?(4FRC5->8_AUcgT9bbAj3ptQ zw+cwgce(-*MtJCH^Y+@hse=H+LG1>t;Mr@yh6QIOW2L(cmg}S@{U1P=`lWyEAv@Df zKRu#X!n9k3`0dhBm-%roC+HD(Q%fOs68ZsZ$YdhM=qV(m1=7aBRU)0pro9_7G?HMB=de@Qf+Y?zs=Vq9` z<8;GQcz(4pt1Wm}b?&;5z6LpAQ22Mw|7JKDb{*nc;3Mq%igLqn>-y?`OtVdSbbeD% zo9A@F)8TJY2C#pLMKv#h5eTqhQ$IMlmhJ1O4Oc~^*2!?Pv{ z*tzv`ORL=JQ-sVH1*i89PFiO5@5rvu9)-ElK`mKb6p~qy$E9kIAVjjUFy8ksgE>m; zO#&CAWQEP{Y1r}3^hSiBx%T9V zP2OTuf0vv50E9XWK^rk!!g8pixF+b2tM>0)2Gp0m=r;JCyB5e5%7DsvNn@o@>^@OVEv_;AbN(TAbI--|u`5ZF=cB8VcL1Sxj4~dN4 z82Cq4xT1CiR2B3GJ9I!l5#QCL0=Zm-B5Ji4ekBgWAx=?Q7lj(dR%r&uj~ z)+48>2%Rl>UDDD*kIfKoy$l zo$_gI62XIjkofprmI%XJ6lX&pyBU-huoS_)+$F-n51*3&IA0`{F<-Gme!$<@m?~ z6>Fl10_Z>|)c$OMvAY~5)>ZUgGw8W4;daM18P9+n7jXjj=s&xg}*gvLiSjNvW;B|*wX3(m!C*v0MdgnI8B2GIbnfww!< zmbX3J?t%i}$-Nc%1d2d|v;qa7LRx_m&;hMLzCQ3D(c}XUlEQA0m*-}7P9YWFCU9;o zzK+#l)}EiY(5r;dEvo9$Jp@BxEe4HKocaL6Jri^4ip7gzdy+dOz{`~0{N0%whLAt= z=!wH%(stqco->03UFOs?u@fJFxx93xs<>rI6<$#_*c5fyE*ralvEsF`Ren;3;ptg> zm1an2jpgN2QkmysNlqg%ixb$wYTs$$Azn)+Nl%Ov%}k#vL#mNwkGRe1ifhYw*}Rc* z&dt5Mj&EgIx)O&|9HX#TdP3pJvMvx%Kxaihm6VP;qjF0FZ7DM&ONB(c(4v{L-&EqV z%5J{epK)3V@U>aqhVb3nKNE6Pmgx1Bj4gGkD#83Qhnojv__p<=NFHF&s?;CUR`lsleg;<9Ob%AXNM->w~Cm$3&cVhlyLLf zda9NNBS4=sYD18a2fel~hSaBZ@{KlmN}kE^>i`@5Kr*L6KGvwr7NPbzy)Ylc9HwTu% zFd=~h7J`NEgK9e*!-Mua$_cW0C9K(=!`OtTYYm3~Qy%(k=n83@Dk zD3sZ*%HcNO32aL*SZ&=o=?Xs&|AxEBX(Ri3?rA+;<;yOraMDeR1WoX?E5OSQ8i6S6 zE!Vfmp&ykj*3fbIr=`3%mZu0{({tW5g)?@?Ave+Bl%-`Hl+Q`IEMU!}Jl?o38sfUa z&s6cwXmMTVrZQ;CBsHTOb-iK_(CA-I)EeF?*2=-RYi7m8Me(cN_uR_UA7tCEuilfY z+COSbp_*&jG&`AwJf7M>kfTM)?O();*~cxhh_vxaDmL@kZ8s?fTXV;xChx5~B3g0% zK4!}rqA^_|vg&JqVL&Q%$jUmnR~$UH7azO_-Fjp#-$2d)H?T>;1tCoP|Ir9>4Sq1t zhf@q9yRE0W7+DwNYY}cz@W!i0%^wj%el|te?A|((%G+NOaZ{G&0)Ij=)#EgPsEhWF zlw?N#*=L2NZa|LBv*I zINyqWGcY&8OF<|RG_TqB!uHYRH0TlgveO?r@PK!d?U#f$3O-h?N9T^vW5G%{Pgy=^ z36B{qhUtE8{s|>N0jyKEZJ7t$t{-nA!mq`+k!u4~E&R}`fhDV)9OU~a_RpVLgAC`e zMRy2dU6vTPkUb>h57VEwGH=rT6&aBCpQJMN=QS8=^>hV>qgWE;<0^DRX%w0^@2D%4 z8R;=LYZP5cjimWT_?q(cgsQwR7jP|$DOim{!G2S2M<*8Y#UD%cbtN|>I_VNyGYC2$EE%s`RVbf8kINYr4}2M!!=XgiCFpXeY3d?4ODH*0!K?BF$S2}4e34)s`ArXytkEH zXq{=hQ%MaD-D^xujI4=r_`Y5hIek}|2d%kJXt9JZ|6WZzv(37qX+MTV%{14z`sC$8 z>FT~YU>Y&hjPPiG&A|tK>)ZVWkrsUZBlNmU{bqeE8w>LmiMp2ew}wk8aLEU9c(&j$ zt;iPSL`36nInjk^q8|RJZ6Scdp-<))=|E-+e^^bH3dZ7&R*F!{MLtTJc;DdrkR02M zYVrSvtc2imkFP6qNZs@|q%jQ9=tYa^x4chcrhBfK@ zPm)w=W;$~o&0Gd*Lv1Pdr%FE!56s{k?H^>L9gQTH6?Viz?=CvL`n1ZUCEf}Tu`&;6 zp89MM_TnDl8qK!DBs5KypsoRaaI^CM9}BuI0Bu+LxyD;{6>khYZ8fGeHf%A1#PUyy zaru%72Bl%rTnZInIAgg;zwO07CkdFQg6_}tMo5I10QgcwY#5Zls=lCeSb28FsJs10 zP!aMe|LZYaKQo{wjy_P5hImqb{SqKJw#4sWX^&s%+4&QAJc$CVLP7-CdDX{q6{rXQ zLU%*!7%W2HwLRh#+3*5)ew)I88z6j zjnjwUy`ZY{P1)YSR@_j35gZA5kr!F6}`!poVY`?3z@2b zm0_Z2EXjzjOdVGgNvBIgeRsb4c7`vM;bTtz>irk-v~~Qc1q@ zQ~x~(f^%2-oTMwTq;sZw#Qi|kS2y;DNR%3Yg)~Huukxn^vSJQ3GqEy_$BlP6|B-{( zT#&0==~ya;x2@LE)&yuq`!7plZ)$d4dtLUdZggv&wm)}kB*=y|@1|}&?{pu(9d9*m zI~~8QBJ+RUlRZ@%WVjquy* zw*NwW4&V1-?9$`AcH95T=soupMc}YM)FIa0t1l4dHZFCTAJkvyE{piOwH6!eapS

{bzt&!*Mu4`iW8Dbi6J%XS^ zA)Fv!Fw*eO4Boe94;$XMeD7D#M2p=1pOl%W7P^j&!Tmo-mr!=ct~NgrhMRx-QCm|Q zg@1?-B&m_bvor^_i$#{Y3^b8!FKw_XTkTpH?^3V-sBaC)2hiDeXgEf zJ}5<2P^#pqQdI;CNReAGr6+)5_>fte> zQC2t^=xHRC(qVlh;!lprTu2{pI%;wGodH58IYLO zJ3iF_SXG~34jv8*YeFuIff6j-i-i!IP+IW-vjj>5)4WB=Cz<3l17$8kR+n;T4e2iQ z5^Qy{&5kLKIVkk<=?y{F3TsN!{WzQ7 zC$tFW(1FPExElN%y6;7XRFpv~L6KqUraqJH{)jm9_YXSO*u3~~3{<(j))c_Zf&~Vb zL=ch#duNnJ@u*eX*O%rbiMmrK)QGHRhXczYCPx znj{sOr-ZD#?ccSAZtXFnQMnw9mGmt5W;{_*aZ)GoQkAS>i7^BNh!MDuNPP4nvGl z-K)IKvf^*xI_3FrMv+YiRaH6}ge*Z;1Z>n#s|_*WO=>vzHX)*S&jdggRtBci{ey{z zRVt}6jJh^CBfzLxAWlP5saX!j|ESp`ru_)_qXD-@{M)0ra@9l}G#=lmJ6cl-#;9$( zsfhRoVuzMcab+u45h+qEmqw;l9xJ~Kl__>~tUM%9Ev8{p&4*8>waAdx&8V3}Os+6D z4Nf#wUATY`_D*)sly)+&5xG~%P$(^L@_!5ZlPE9__l0>sb|ZYBINajn(U3Nesw%zl z-A9wJcoo(LyP_!!3j@m-eVnQ2)uw&^+rNaQ-W(W?Y4E*FzGZSs-Khl)gEDoV5|XYO zb(s=_ooarEw05-;Kf^DYpIPZnk>nX7bSj!sW@SwgHX(#-rv=N_&YFb_=>ypxg(g_} zEz6Rlg}&dOMvB!8m5zD5;oh4ZqOHKoibl?$8iQr|FfeHr9@E-@w@6J-{SzYnw< z_>!%a$uCgkB!h6D%0VF>CCqOLZ4@G&Pbo55eyTnKUgimD2V@n|I~eiIAZaVQ4Nd*l zRzmlrx@MKvNoBVQu;Ffgb!p7(?mNcktb(qgcJ(72H_4=c7g5c#CuZS~U9&8QYMx-> zIF{e0#Y(D``g54gVUVC;WqR2V`{;21Zg^bgk)ix4VH)jKLm#nLkvT)@;FfnZq>I1s z&4n=wZF*}$V0^`MU<1;NzV19=wSzeoN1%I6rUXl-Xhef?QB7}Z!@gBP-LJt1FBGfP zCUz$`#!9M^x9#Dl==s{lKr@wR`Js9Julr507GV+uLWRNcK8HfV`*m7I^M<8h%3fT6 z5Zb=B1==B%CAdu}LR@jDcp_Vts-r1rg^3S`_9_L*q3~DavoWrF@8jrj-z|;|yTsI5 z7^B@Bfe(>9YRxZKxinsm`3u98b_PJ16G!gkjMMzQSwy%jBrp(v+Znk!m;6ghTYXeU z`@tM3$T;Eg=CJnoh4!Hs15JvIg^!rOYZKD}>_v`!bg02BGfGpqBh#|ph z^pOgAuJ2hvy}36J@9b_}em9j@bAstU`MFt&B9&kP>-9f9W zsf~7799D~$T2-0SHKE24XXH$ngc0Q5Gefo>Hzi8iu0yeyf5RAkA!&Sn^H@q0Dps01 z@?vh}Er@RvfvUZk`c&I8t~n+m;?K&U_ zYq@1)gL^}i0cI~A=66A9>P^&YO+KO)>B|DR$m}~FriQZF4TROJ{I^={kAI!qp9TP9 zhaE#K#j?c3>$E3Pu4*nqEJNH3U<6iEL3FOuTnsWQ2L!b+gsubA@wL;@v&Y-?>g|Oa zXUPrk?mv&NI5S3LDA4iNULrM|K=6W%!oV%m1bBJ8b^^oxGBt{y&vSo|x$i(kMISA) zMmWt(1pzYimdBT;4qD3woIFLdqOFjhwZHY+pf1m?mpghraiOvz}x=a{i zhO)HLVYZJO+@VUXO8dJ+Iv`om{u^z*CgfiRN_@pGosh}mIEyxs0Lz42T8{>7G%Zak zrlgxj7IiOFW!Sjnl=O?bxyrs)NQH00G|4+gJ4J5miVm)2T_DgtQ?DxOj7j`te^;yNA>X3opehN^BpfrH2H zrg9pmcxK6s6&JqN&)gMRboiLLARYb)_E|%hz{z7zDLYu`}u;|}s~X{q?_51(KZ7b$!kTa^F)^ly+!^VV_K z!WEpU_ipsr`WK+j^d}LXIAdEG>j=ks$iei%Xu0; zCkC=)mId^WUR_Ney_K`q8`~6d4JNIu&dUKpk##g=DzSbRXinNTss8D=(Mw`o;eTi` zrRY|0=D@k8py4hFo;NIQQj8L)%^NGV%B+nOZA-IFLHe&N{Up+0>KxM;vl}Tst6m?% z-8ecy@PCu#46TTRQ9f_9FnvbftpBU%Tf*AT(7;;B#a7P1*1+sPso`b~ICsn=T;G2e zl#T1MHOWEB+Q`g@nm`pcfAV;tA73({=wX`&ugG!N$g;Dc>zkjHDpx#LEKx4yP&Ol^ z{pU2j=2tde1ulHnUt6lxUO)cHx~7_7U^FY_OuenTb?@H#CGy=ptcgO*U_`QYv4kOO z7w@YIgKy3pRrcBObn$=U)+8jZj*l+iIYft81(x-lA06@_t-?5b-T6+%IWdY)F)k;( z6{SUMPiKqZc=-gM70o#w&CAxs9j4L78rFG(k)bbA<}ELq~O; z=!gt;>+3Bv2qQ|}F98WQM~!sI)#k(Ld%s)zs&oWHkt^!Rh6g$bOLA0+AV@4U!V@Uj zKlq5Ofhb}@3Ep#q7O2`!6t3zk6`>wB3jou{{MvH@dqe1z^^t)MA!4Ox^b$}8?oECR zJ&%0+eu~bvf+ppkS0M$ZSx_baAfN-(Psb-+rn!=5G<=eA?v|-&*OTO4(M8P08#a&~ zXf9RVrhX%&$wJDrwnnvR<6LT4~Nd%wh_g2bovnEBGC`m;db;hDY0m<+F;A!mevFBAeLyQ;h1wr zqOt5fbP79twrf>L5qb(*Yt4^N7|sk+*$ll?$dzF(`Sn+5&0M7QnYVlN__E`^6pNQ2 zbz|d`Q27{1Lve)jJB}4yB6f)}CC|KuUFHHW&uBE19Nd=UsSiGw#4TxY8&=_VT25YN zT$+q?=Ef6GZfqpTB!U94?eDzGcZlhH3nYwC3~^M}xh=#`yIKx4Wxsz? zmHfxmXKRp#JNQb+msnsD5}w!Tjt<|=M?NZ}pQ<9$+*R^$7_bIfXnIuc zTk-V7*qyke{dIN*krM6>wX%6@jk?|FAnh*R`n(B^9<9|Lgu2U)#@-nHcFIwPlH&I( z*e~Vr4aq$}8TF4L3AaT;a#)D5iF(MGv8PR`VH{+F1Q*BX?K30wuH54DG1^PVXCdvi z-Ys1_zY)crgTH>1?JMwnMD@nmT)p+x+2AoZyjvl)s9AwCV|ovWKR4dV6EE&S>Zf1@ zLWMm&NV8}d9rrXKc1z>u*{-yP!G*UU*K2jDUuo}L-n1%iiTTQns9Mh4;T68!=#_&O zd2)nB%xpg;oYaj72RUf0(X^!qxi>IB%NZvePqNZ%I_7?U|2{#Z2gMG|S9UI@tZ)W0 zSf+V#OI0@&EyvT8himEt-J}WKhg5eP&=IDjW{N%zphy03@H!gc`c_?C&65S0$#J=1 zBd$^MhO~XAYq`d#7mcBT^Xoa&ZQ90Q?Ov1CtlS=3C4K7lDhmJ9d2?aBMvB-1VKTB3 zoikMsVdm?O+Hv^vFC-5v`fToX9gR07tDG5+CxtF0L|w`qIUEny-_ULb?UO>wClp9j zzcve?*HTk%mf5qSavlsvhuqYd2_wen!~VTbRRsxE|2j5yTeKQJXyDveZ6u+VM`MMW zu}4s6e0G$RpzoS>3>nnwVCwiz4`oUj#orJifpm;sV|L!&R~2p;LNYPOfe5 z6B8bst&+1<#VGyx?k|WI0|rel{LxkBSWgae9IBgsGOp4K(A}u>>Fm<6a{Bp@U5M9{ z=jG9n*nttSsbz~0!2_ISLS;@|TVFV}qPkU^cdhZaQQ{D_fnG6LjSN(^88U>HQx<5} zid!C63g?-xo#9Z0GR%ew$T4eF$+oE&Sv_vkk>sith#FY`Bi)`Cb5w$}b)-@@d!A*i zgDc@BRgcP~#tL~LC%`YBT>Vhz=27>L37uJIp#}G=M=KP~RNBJ49R-Z?A@yWyUULKV~h5o5S7Y!$3MB49L!7oi>=@7{tB@~Q=}+SC%b zIK}b+Z{d((t<#ExvdN{B!@`4rr#09i7`3CMv)iRa zLae&uqlTv+3{&eQ#T9;X)%g{ve`#~ROS)5c#=CVFWKDx*I@Sh#1pZM;b5a z_3+PbdWlmfK5!_ERMB~8G9q$@6cy#gL29Abq)-Y*oXq{GOvHUg(^-s zthWr#A(O=6ryPd}Bhwukyra_Mi>gW}`oOZoB;R1)x5rVAmF9*l=`;HMF@TdFW|Sb80bEaD6}8uSZC)Z~5PHIGoBX~A3eW|TlZwmlcPq0)m7^k?jYzYs}Ea4kS*PJ<8P zCo&IwLmK#X3&ml@Rh@7g+VHV07X$ypQt$LW)^J}(-5x43#^CnDabyJKb?7o%h#!AMA6+y=UC>e?QEuk&%3uqt>&kYF0h7o|a*z ztm$V>XDo}T0-+2{ZSDy1Gm({|IAJ%ILyBV%2ssk1%U|6UMWePPxFsL zL3R)4Lv~IQl^&8nBH=YC_yi-!8;p%(?leLUxUyLtsv^hk%Ju>L?E7S1+z$N3j6jsl zt2ecv$T~U?iXsypUbQhvhsr7%Ybc$yv@|@*YKoa^SdXVtgFKLj--l$%&VegNE$R#X z3|lQMokGoRE9=ZX;Sd+UWN+q(V-46_CumtuFN20TOU^W*Nmi`IptJR7DwCz9H(hSj zwhV0pk?dMB{T0+o+}X*BMm&ys;;l&>ci5S2`3fEEjaKAuJW0isRvwUBDSi4Gji}90 zuf8xJNfuqxpW{v&S}lqb*OY{(?T4Sy*e7K%?<~^H{ovK`tT|-{){t=2N58P>#=Pf{ zaC55c5(sT5RiQyub4M(Zwbg!Vzdrs!(Ef3qh_9?d?BEl-gA;3zJYES4jmu&vXH@lA zzyE+*;?HZZwx;Rpm9jyMJ|sBAq+0*0Md0gtAUK&526ne_eUI{_8oE%}8Zqs$A^Y~U z7s<@lRN_Q)$qWc0`RXi)nlx+A272BdL#7obNeT_>!|`dJ z`DP+Gk*&dJMxV}nC-wYeB!$!)cNnIJ;p0?hwpXmLua6(FV}MW?**&N&*ecqsLbAF& zXO^vmyCzb|yIVJ!-L)GNwzzigOMNi=-^|kMyRBasjECtupCP z^2#crG1L|?XG!6-$-~?Y$XlhV%!P%G%6jtygKhQY5BvL(vETs#71HL_!wd=_dy9+g z#r4);9v_-6n{bc2`814gt=RtAgrFMD?iG1Aui~8DcLrX!HB{2Yu{0T7B;XmDc|EHnF z0pinUrm7Ai&SplgW`I+Tu!E`BzuCK3iBDmG5y_X{3bgn$dIO`sre*x-C{mCj4RuJE zzxvkJ{UQ#T(-G(AH(GL12tObJ7$;~k)dJ(blzdy{new{AA-Y%thKL+krMydkuv5D0!eql2^SpRecN z--qJg-v>y(Vi_1Hs_kbThM2vu*esjIL%wB z6OWsh>+HAJ$2X8&xIiqLQ;F4xIy$5rn(9qS!xP4i#3yE|V)}&eMrq7}!g4`Jvt!cP znWU1;l8pGS<_A#-Of`C>J@cPR+_d~5#+S`M}SGWU`M`Sij0c})rS{LrkF$x~9Z z18=5BVQMw09~TUElt^l-D-E~&J&!116eaas#T9H@A0~@d8=E3uYkG%zQczZZYME|Y zmQufBIDJL|}FJA?uv((KH_lMwQw>!r&y$;_G9^iYS#hFqV zqw0{25|MJO3g6QJUS@j&k_yJkndw13lb0(EIl#rI5^6vdm(6PYn=^;AJ|l~?9eHHB zYkPIiSntkRMqE)kU9d)TYw`U$Oeyt6r?W7hd4=(CSa_Fni}JL9-np>e+buK^wVK{U z=f>RxDpAh*uvvu~vik>?%O(sY)GS5TuMIdO3!~k3CjHb%fR8z-wMBHgrJg3zFgf=5 z92zRYkY^#zCz^E-bLA4GY2Nhy07J7W6spd2YF_P@@u2XpMizN7vHb1J+W|}HKh#S8 ziRZtY_5EfKgi9l2hoTtS1=}x@}C0!+HjOqZ}mr z3?Bxa>+1KEbF)2G>oCIrBoDB0kWg4OQYJ`W`TTe^Sj*#rju*v&@HuY|ccp6%-Xz$Y zOXDYhp$b;H3}^XA?P*x^kn%B8rbPAT2a2-}Ts7FN;&dt#iDs5!*YUv=Y7_jmv}=}% zw7I)tHgv5gMkae(oUXQKWfcFqqV^Q8lkYY({+8A_nRA-WDIH%Bxb1a*-p-*){;H4b zot{C_h<2|iazOUEeHPgu;arV!>0Ju*ioMyrJ%!$nj}MJ=S*+)a0h)+v0kAEC(OoUk z-|d&RR~mmI{Hv)u5MQBwXB;G0{8uO^E7PJl7BzjA)2QoPD{e%kXqw2BRVz7ktYCUn(Elz@8Y$u&(m&BqH zhPNMXU7hfBym!eu+- zr`12grJ>NLkg)vf_Kv+jqh;@ov9R$jzd`@JZ0gDhZwPPu0+)U-v`kjVES^N_QaM8}>nao6Ta`%_p@uvSA<(&dP6iZ@ zhp8Yifg@gx1M6{y${_8k2;I>~;gulq9W?f18$Ipy50_b~wXL8~J>h4>fuJrz!Y*PL z?jx>-uHA1uB6!A9ex_kjrUd0_F{}lDSNG#7e*{Sl$>a;rl&7u zp8g1uAOm1FSc9wK^)yJ)&2#+dt31=!i(LuD%)wb+rE*N%>99el9i;w3CGdJ|O97kF z+DVgeESZ(gHCgsQ6qxT@+c6{?H`V7=uI!5ciFJ7Z);sMd2bC%_%IC@G7O zJPC>S541l@jXbXYf%dX~2%6Jb^4G1Z>Kcom`2ULb&5hb}LO`ke9TNzM=|9-n*1-Z$ z+h&mc<00Z;Z*FDrw=qbXUY~!HdhE>;IMR7rh-iVy;lk2n6QJ9G8o*2>Nr^H^1(T_L zWeLX8#yXvj$zYb3!K>Y@=$fnN)$C;K>|j?zfReA9nmd{+w=TQad{?A8Hq*f!N7 zI-FuL2|A}oazT<44_iY>=0@7y$uFi!(kFg=h zquaPFuhl>gAEoH0(Y-F`*EqpIsN-r-$3_JWqdjtGvdtXCH^znvF z%-RqL=Wdl4#GPaZ(lCkeRvh~y(c9GgvXTY{zSqTCd2U8Vl0u}a-a0WXOQy3ao5K@4 z_C(+fM&5Lvt?1rP1!&Te~8Djcv|#OQ0xnoS)NG50n=4m+5q2_ zQzwkgog)ZO&mIuzm=dk6=dqTqtgb`evL_|}zLD;_0UBQ8hVuuJLEq`N4rW73q`6Y`cS1;zNi zzKPy70F#{I4XDnxZKA}lma;q~s4v>aNEzH)aaQlS;P5M`?28jywUnx^bge#fjnGY? zI7Ew2`H`%roe~l-o4C7=%W}NF7U5?uY_I96Vf`?Lg~3srl6D<|_xXgniS@%5QK91I zm{vhQ%fcar?1I^9+P7M7jXhN~`_{9lTfU?`gn{t@s+j6%0xm<%LQJLivDi!9C3(VI zCgahub0|#QqwyNccv&Zd8!QDgMw7nu8-!eh&vIxX!jPv=)t>08?9oV-tuoZu6-XuQ zo#d*~h-pZFkbC2CrBs2=NQxsjE- zq8Nu=s)Wnps)V9!#(n$}KEnqxi=^F5g3mG|txkm@H>c0^-K7T*UfLY%yq?+;3@ujA z-7$oc;A|hDs4$a-u9mvoNh!;BB5#r-v3F51xx1y4&9p?;Fy-xwchZ|>BoRdT0s}M9 zjsZ!sB=|kOD%^m{8fSG#6k2jf&f`f#-6LV-R3A2P;v)~Ml?Sc6CpU+W7EFViTs}u$ zw?5oX#`KoYfiVL6f0V$XvNClzLgezd23pF;i@sBr>S4v0Ham}rk zNmd(kcb(Tz;e8&IlfoEU6@TYb!@R?nijlgU{G(z$g|#CZ%*yiZlgCoB^U{D?=_ib% zE+&cP1Jmc5JD}ueqigv+HZ~V!bWRbkp~e z(3q9#5_$X-5!Lm`5VZ=*qJm6bySz^Nly!7eFTxej#RJJIy@N*uJmAYmOhy)cGG4}k z#2qI|J)YRA=tvokorgLE0yL9V^;2^3K~#~{#3wE4M+=sSQ_uD%6eyh70#%^s+3_* zFl~;TZeq}5v6os z;cd=tIaV-#h}HGTE_c5k&aojsFRNw_W|5a5xW)VD%EPh9Z+-}5Ab{Bq)U;yoDRY}H zEbMBE=gziA8i*fdQWwj+cloLd9(b_j!;#viL0E-7V5GI zf|Q#AQIzM%CE`OJ&7=D~G+(?o)!ejx@_Ay{?EVt(*NBeWr{1N^}mA!wsnQ zW!!25<2-jk-^DtxvajcqC~4(+#^3@$y-kA2qeljh`-kl;TZC8li^&_Z4oe6)e&4zh ztt;CzhLd@9N53x)Y;n^Uv}8!8h1!-^n~}Qb5(opqakQT)s%WvsXF^FYfx4V0B@iD% zAyVDfoC*F*5HAch$*fl(C5ypP1K^r~x@tepwEkpk^Zm8AtsrQ2V|-0J7{nHPZ!MUL zJz?UNnrzcM7?oaQdcB^YUB@j9`14ZIcD4Mem?qgJ^|1z_EVm_S@e`w!-r`c2Url@Y z%1jUWu~Dq_#y(3LbZbahh|MUcZOBPhzSNL)iS|I=E~qELj~CkFk(Z8ssfZ4*peP?o zPn?ASDg!>CE6No7QAPq5BbD!T{e}cr=!CX;l}(C-W;fDgT7ETGpsE|AmuWt-0eU8IJ?zo_5OMNrZhX! z$_QwMskBDpIbd+VkGEi5!Uhy(Nj;g7hNVoMnpW6|2>6otZuSzFdGeWcCW)toON=g3 zUH!2<5S#Rh?Lg8x%>V@!SPx6}1~%3>u-0D?!RV1Q(q45nhSD+`&J<^z+8IOBzM*Q| zk!5d77;|SlU`xTg9scCNJ>?RA(}lxhYbhG`TnojwwkMztqbX&nYW~at?Az>CfUk*4hxKEeEJzB z@J0qn7~>GQQFCSiyz-U{`qcSEVh2Wbm^qu1usQRd&bp+Jm4YDto`0M#SLBfcfio0M zcQP*yT&BCeuQ=rP0Il{1BJrn)Yz}9$<7h(H;q20jG%9-0vx*4t?bUiQGc`!s%B6TE zv^UxbUyUkf=!Hz@g`j7}go4*rTt$n73@hS8hkR2_G5*3#0R5g73sXT`LVYkqv@-uo zArk(Fv^t!UTu*5PiOnZ(?G#}id7;wS1=(m+66(U?P03_Sr-~+I?s9yEsjg2wOY2_b z4Hp*R0z4*~ZH6iNKPwA4N(FS?{2*@zJAxbtM>`MA3!vvaX1j(~fty^6=Fdn|A#gu3 z%slhRxlt90(6a?rhDdzE^P3g;Zpz2O+A#Bjn}ME4?&}Eh!@n9`2%HET3rq>%W`|8O z4yIC=+(NW0P08qCSA5qzhC}?gHT=boUp2dNf7UlYQNIP~-Bt#(55+a4qS+l;zai6Z zzXhcu-fk=P4WO@EP=RoS9g-8@TLEvqg82UUI)M?EwTE+rJk&m)f7zaRF~3cMa14eT zfpIW$v)APYM6>8RWJaNw_^bjPTSQk8t3yw36k{xz265B~)dTvkVA+nmL;(f>1r9Kj zgYmxt%ir1}syYh4$8|$!x1@^Y1$f+nSeK6nl$BL`mJ^eLn<%0f$d+v6)7pDvY*9h~ zqGkvem5Z7g-ZAA}pmU91|HR;9KK<}>I;&CO%a?ZqLkw7|BE}R^lml$#!+F5KS%{ia zq>&9$`Nvd?Ss`ab!?$((8ZH{0{vG;5MMF$G&Gwq+|hB+y%q(>VNO3&!vo6<-zDYuOIBz#)c$hEZ6D3=sE3joITIBcyJMIqwAVq~yDg(}4^JSv~a+bH3ZVjAX(2A#Dr#I+0tR@Bqy z*%duVasSzJ-iCq$`s&5}6kL}So5U`wsofSaJ3$h)R>Cu4B7zVGjI;Ka7qdjWu0vH4 zM7fPe$dqqDU*L%MPd~S$O-N8-G*k~QYHckiI;yQ_xQKtLf__=7vMr`>>PdSUG^sr& z5>KuBxntG8%X8bFRXJ`%i2tkS3x3?pZq6+!R(QS7Gn_ZfMUoH7D3r~nPcDe*C^kzK zKb*sxy^L<+IMr-;FSlGL$;2^RJrMEe{V1O^37iyuP^#`j(`taPdzjwkyIb6tTkw2bvs$B7CT)ot$-CjV3qOD^& zG2D|cQi2%wR>>$O#*6hZy{KKcX^AJDh4Vamfs^!r^;o*Zh@8JD9YqU^gboI>?T0ia z|6WAl$o7U-fhlcFB1^gq7@u5%>f8`1MImLh#M#f=U`f&8|z+3aCgsUoGb+Q`%atNO6^5dQuF1TGy%N^(Az7avy zCFF&ngW(VMJ!OVUA!H1E5IA-aFEy^hTIAj$!rRR~+!Zhn6q8TWGA(IVtEgQ9&qAm& z?g~*0Ll>!r%=PzO99d>!zc+?uXM7z3UJZgR(>c0krw+s?8LbF-3(kuaSFDE7)`Ds` z1zS^_Jr|y(Z<3i6QH^{I;4%2>TM?I$(WH_^DV48pMZ3Vk__Sv|7NvMmcC}06hnHdH7$gF9y z8733yEpfsLDQ!)`7{FrI#TCiIagu1^G89_Mm=xlVI5l1*aZ%L%gP^yHVc0%I$(NGB zu=c;!va{dK-QBMU1$z7-zv8c|2?er&9~)*L@=GO(QmlRQ5^P8hrb9KNRK8gBbU006!al>_OG}(Xg~0C9bK*74YtNzbu6Tt4U9bTmYCV%uS+=)8*lxp{{3&REXJSe3Jv#+o{v#K{!iev`f& z#{<`NFc!oEnX=c8hsmx3>Qkj+_PB~vQqA+0eFb%WY9ecLrl;#Qq&I`27T%jkNhs?? zd?8RJHlzK4S%xEM7I|zn&$Uv5$Au864(^Y?R>PIi`Mkv}Mz6Fn?<>rrS*zEHM_p** zGyOHR{QE*Nc{a+0W#P%FdoToSU0EMl+R7&d?ckeAbdX(U&#JTqb}%&7gInLyw5-ETA?rfh#3f_1Y+mu6DEcntef!+y+Kg z_6~|)Ju&%PW=9f#rj3SfVwWw*?lo=*JY7~W%b-{bsp8*6SAlQ@jNdv0A6(?Uf&43$ zS>uNrkO8UN@A)b8{{@!+bd+65fW%D+X~e>+V*|H!yJ;U@j84V~SqTkE3bKb6v0TB*~*Eln?|JKAaptvq*9}cBPtfPN-pcG%|nG_4`QYI=O$!CF}t*1ZRi$ zOo4z`SB~>PG1ZULB5M>k&z_WF#XzUf66$0g@Hik zSmqQ!@&Ma>G=6D6aG?qIox8=6cful<*MM>7+*5A31;Od~>z%#MBp6qL<7e0tR;(R2 z-IkrJ#q=+hD^jd$#>A3^UoFL^zvLwpSgO&T>fs!8MLv@G zpf2{2-mGX<>C(A8LNR?7j0zp}G>AeByAxvC##~szUqQyj`K&JaK7&k6qfV4r1J%V%c!N zA`6+PAoP3|0u2?1ATftn=3%s!fiuX5HH2eIiM~q&(Hj=xpHLLKhQm~}m8R=o;lT>MHY$~zilQd~RtV@uS zwGjSwEC`{6h)Q^~R`Rg%F za4#FBzy~{PQxo2E`W{(39#9teFcXt-Z>2?@%I-54$dj9jK3p&tR7KNhG3a?or@3)v zPsWv^1yVSVF!PELrj{{jL5N|$fy%xAWiZk2)*#*ZJ}n0zP*ef(5c&V`aXJ2t%3)yg zN4tu_%FfZ2;qT-Fz|-9daFiA|GI4cq_L2hp?Qi`oRXGPhmf~x}!{n6B-b574+9X93 z$NII{aTf?&NGYEZt*AgU4AeHuuAQuo9|=M9-&7Zz_kbdd(7CuryE;K*u2Ta#Fx z=(4x_aN|waL)7ubjKWW#n%x3$)JCe)G!~_%(P?c;BR@C`$7RvAL9P&!d0fitZvlJu z0}nniD4<7AZ3*3|Vcmq3$ei!JH<5x@yl%b@dhU2{o-EC@jYr$o>FpU&AT;ias9(!Z-XI>gCa$5e<16!rd-bSbH+W0oyUVp;?+ zMxpGdp9t%iMFJvUIw24ESigIG>_(%~F-DWhqlgo%NkUB^jY1z9muZM%mLv;&nw!Oh zZT2mE$N8q6uTO(Db50n)c&lvU;OAR;_OJy-G&mhkZy1A+I+{BIw}vtve@%QuO2sVK znLq9PIgs%Q?aVM91$P~hRBp2FMyU$vjQ{=L6lcI%E6aY%Zw-S10m=P05CupRIGg`N zmEhmO`Zt8C=>3-A;!E5zoyu6(wt0(UZ;{rX^Su`;M?)2mF6);zx)UPbkjhHff^JMS z{7B}P?8_7AB_!Kkqo)+@o29+%vY4LcdopqNdwYAu?YVlaO)Lbm_){-KG`<$(M9)G`I=9^oVz-dDK_B8~AXotBN#4#I_W7 zy||i}Pb?uCKbGq^CZdk(Uu5`fK$%2TBHV2*wm{k+n2jEPtTpRcq%{8cF2c54?@52f ziSu!Ov4@;{i=*xszjubczEMgv6^5` zJcC2-S6_0)ezJz-tSTeA))xp}aX@)o!?79a8p$RXa+@QG*aC)v+aFi_8qG{NnUPvy z51AWNJejH@=ULD)GIhH}keL_XH9qW>(~qUULgP2l2{C)QO)CJG}|NL(~voK zE;8%X!}N%ub6(s>Kjc1vI@uT6ASbM1^V%RpjLKR>MEXr|vL68o@}U6ihS09tP=4la(9 zR=fpjs7b6N8VhoRKeWam=oJZvE|R`LW67O4m^%6C4Z3QCK@`DAMyv8@L4nS*)70AH z;T|;L?ZT=|IfKX${HUIEAf07VT9MO@Lxq}2tWQcVe}YaKLqrFfcoLi7?(SLtWWH*C{LtVH5Z}5c4+f1(F+QVm&o}r7w#b0+1<%MNk78B-?_NH7Wqew&%p{uFVsoNWKegHF zLww*~goe-sRtx09EFQ|$im1nCE75;uC~dC5jZLh7xQPPFf0QQKMh`{w__4F?&7GBr z&9R=QZEng6N{CO?-{g$*5LZ$GMDg;98vZI&7n~$>HK|+~nTd^~>WXgoP|UE` zU~TI+^snu)8IR58TdTgbwhz*c!$|2oLS(L6@I9;67xV%?x~X3>#ldllE>$MHl#k9| zKRcXY4Sd6JhzPj1ts&sDjx7>&Qc#kcMr^-Xd~<7G{q;4>^v@C%<^{0PGzO0l$`@du#af=$hw2uTEpzCBNz13UH>G6vDk7!)gr8-(wa zQ4Xl0KR}TZ@r=DUG5j!`7fj%f$nuH5R84}88;`j;Sgd8t5rxJl&muxpQ9|C9NIquG zH!#9Q44*PqjRUJeH5WS=`Ku(-Z}%voKb=4W$c^j&%f#b<^9U+{j72pNs|3+PMI z-Q+cO-ScTCixtnwX9J(^$NS0H+?{Sv%@J>85Er~3c(8b_T-T19M{OhZqxFOJlTNt@ zz#}3E4p98+FjxcD1hL;eCwp5Bt~xypxXPHLRAbC!UdtEqKg5S|;espdMdypvnX2?e zIe5$|3quUt)Fq;$CvxbtO&nDu*6oIbW(f0 z)5zr%B#IizL_+plq81ZO+Rt>ecz^g}k8C^47G5#QW*w}ve$R4GAFZz$UGuPF^_jiP zE)6N!3$7@(yxY9qp5`C$MAUY0aL?jL{U9D>TpB25kps-yWLNXzr80t7kii-O8@TwA zgc35>=+kJxqwa4)Y0zfl+FvrQ=~X{JvHARkSB7sXoQv8-s0S#dQcK)2i?k9^Wl_`J zXalNjAG@o!_d90Y0{aopL!g}nFw0^pH<<1SJPw!ruk<&(fzcfBIf_@YnDwt%XkL9{ zLTE#Al;I6nzarviu=wn3#!~2&q4J`HM~Ghm0-?G?+1OnL2Ju7=(8Pk|sb`U-V-laI zEJS8sd-C;>J%W5YS0(GOuk6nx{4U`YmbgF?J|qdPCY4;#aboX#{cWrD;pYKl4=`u= zjap|O(bq=mX)90U0UUA0cF+e;sRPCmBRo``bw~XgddZ<7a@~F}bYwyjSsTmY32J(o z%tjpJw0NT$Po~N}YW?_qF8IKf0!7==?l3V{@^lxOB|N zD5l(!LCpGnaqs0ixfeYQ?<{bZT0>%#R%RoKLwp(&&Jy$%vFQeUqfnQYWYm_%&n)(4 ziRRLN4C&C+!&6OZ^faXt!Ua~+(51xcjzy(Gymm-Vll9P_%RDN>RxyVff;7d7lZny- z1U(!KjlJdQpX9XJ^CJhzu*;0bBr((UT_&0KBNN4^9lVb%@J zUBD%TB*wmW>c)Wxql$-ki`mZ0MQ?>i;+;((luIIcO;WEq5v42d){1LNzEX2)MfxV> z07l*>*6wP@;9xUp$DebCiNFm1O5HC<;!cn(*PJ!lPlr9F_tFv1t2Z0$Rx!*@8q$G_RypV{w|}hhq1s2M57$yyS2w5aKyyhs z60>IiF(=H;XBKPb+%V#*8t5EdO-FNmdyU}G(VXm6JHI&nK7xe9KV(6xya;m$dlxJ? zWXG6Cxthp?ag-c`JFT{$rP;B`#+b(W9^;`$w&hW8jS->Dnuk6r&mAm1(K#ws%M&e?oFSt<8Qm5O+Yl3 zdTvDHzKFdOPKYG#D1o^=?oOMLzMc`#t|Wtlq&Wx0d=s9B6@;Loi@gG2L_y*D14_Iy zT6`v8cX%2E(qGjV`G)z??Wkk!S`$k?^T>=*LXMA-5*FCmgY%Hcj%$c^IA|c_C%(t- z!arixXGQ{@@OkXTI$zOLXF~9S`Y9m)@?YxU`BVRxhkMsnic)EEMG`ZtsaY<~r zyW{5^)kUQa!cxa|I*SI`R7?)t1hmvRq(yo=C9xBO&4t2(Zqj@p7{~`iN)qb! z!!;b|*fH$SM+9i#2D`YQrEC-5?DNT`*OGX)-~O!(lF(_)mj^hX!~o7GivKTuU)tSH z#S0+DX!pN3f4~U^M-3n-9Ynikn*pY+qf*@@XDy5~`#P^}Y!X3g2Sb{Yr2W3T*&A%D z^>}@$pY~k=?@KWE`Y?Cl&fD&n`MXVUTid>|sOeq+$vh|ZWYc&0ThGVK8z#`o-RK}5 z20U$gTR^KEt%(^7a*<9hN9Ex;LNLwAk&0#*TVM$wu{&AC;(smyT2byunF za0iGCwqHpzC>C^a)UD!PA{CvLD2lKRBp>mA4n@5Lbn|`fkJQl7XHoc~T?Ut3MP7qs z7jLW*HB));g#}cUI+v-P7^;SWurtut?re-FmY4LfV3`YDG$r?02c|zXI{e*W2@g{I z;bC(P7y5ZoAnbKU4?6u7=xBF4gF#woZ4YAnJK$0$nAs+ioJngVy(1vYvz6J7oN`;i zh3e}9ec--1Ne(4u+)5sphlY(S+l|HOFu-|W9ox&4gB-ckk}l>~K{h5*4l6Y%F6Sk1 z4?IfE^t(%KjM@{Ner0?3E~MC!+C%L0J(&9D_N%7_lG3;;@xa+pd=e)|%rl(IAx{#^ z0Tp|@m3>yz^lTU59dLNin)P#oo?{34(gGfjzQrhXK{0+3PfX(l=6a6(SC+zAU!kd! z2#N@!AA?gIocGB1t#^bXiVAF&hR-Iw>T;LHu|!h3@Z8M;~`qN>M_|B;g@ybH-kzt*~441&gV&MeNMPwjYK?yUusMf&vMH(Fdtqw zC-~~Yqg$k76hjZ35#a3{heniMg2p#9YfYjH`s2*P@J#fOsz4&`8M*#Ocwyz#Y96lHYQ;%h=KP*qyr!2)%Dmy^UveT)Ce<$a9S^ZrBsRx8KFF$z~m+)EPllhDVTN8T(*!-EjySskQ ziM#n@Y>)mM%q~nfJ5x9p=nr!GeNa?bO*|nOEmWB{Q)6rz?QyHE(86b^N^Iwjs;e5T zwhZ8fNG4sDI14OlI|qA=8J`t`bR;sJangr`T(({r~1Jk?P9K}Bk=hIkcX<%Ygw8kc-1(=yRC zSYhli#pWKTqA$D4_w7gOR)zC1NtS5u%kswci2!FXm!YV~HZT;7@HrOX3}B#r{qE$@ zk;@`mhSy9cxZ{Y3R0_NmHi~pMZBX9oBlhKeBO#gaL07ORBWy!rRvp>8Tzr*kPDwFJ zoFewFKP0w$PcZBar+VdJFWStEV6Z{KVGRtI1?T!9%;{|RTY`DoY<6>ku_u{jw-c1b zs1N&66hj+u+?WdD~%s+pl&uLJ_Z8+12+{!lkT)w89G?m!k z<~vVtxctOME72vN%-G|nsOny;3LYz=stvIuoX&B|C{K6K`_TAqooN*Gx#PR^2le?D zriQ{ei~Eh}XF*~k_T-|*>av!a`~%tplhPCt-F^q9_iswy&b&5^>XA>C1-4)hO{`fA zcvavoDC`>#cb-nGn?JDn2Ypqs)F<~`cHPb)+ch=+W|zR>y#9*|%D0JWr+yKt2|nY}J3@`P}AbNe#H_%uH9pwmE) zvLasrPtA|r0?)flqBQQ!lIQO@QX1qG4L$yGb=N5sB~P+-?6-tEr#r&*LEh;X({Uwu z&-lezwz=y=mGhi%fEHS5H%G%Mc@)>PpYaQ^Eo;rMErgS^^|T_`z>uOG8q#9P5^V9C zg(mIDm0s0HE=~5tS8PxTtT*U0LgR(jQ@eT0I!4LX$#l&Kd`Aq25q~QzvcA#us;`+c z5?Jf)u3&|opM&;p;`D#<|0EIj8)^GR`wqeaUMJ3^(|V z!H{!0nf#QzFNb({p@~IA@|fzwnihCXej6+?WxKBI8M(7pF(y=U=jg-?a-vBC$wP`lv& zFR}$U06&&N#nl;b&Giqe?4QMo?1Tvb+XyY>qg;i@EsNdBVKZM>8Yl0V8c7U_3Lc$U zE>E6jPVOkf>SEtBfRFyX@E&@#jxsYqv(B_ngeXQuBpT`y(S*fu*2@VG<`jS;%MaQX z$-@nkHlM%S83OC2yXXYH;H5iVm|$yxq9Qkm4zGb7^}65q7|GVrbzk(Y*O0v>8-L_` zw&6m9*(rFY3*1l!6!96D^U$5iblzm^I^3(XOLw>Finfd!#DhPk=XauPHFI?=XSTb9 zAQFIx)KpvJ^gv7F^^YJ1-4O#PVTQW}LwS2If18}Kbn{-ch?B0Bu1rGf>y zNM?57IWA$0t}^VOel%4c?Fokm@5)um_$^@~sREA)GR3mdjp3Vu*d_i8oCA(GUpmab zhS)%u8!^>sy{^Ck$^)PrM%Zn^8%Zx^ZOgCh9!CuMB3L3q5l8e#6*VF6{3@p7iVxWb9T2fF>_(Ca-cVHGjX#s1`xL$ZQU#Y z^g_iy9_ZsjFkczrzJKJ*P?;rv zk{WmKyQy@^(KqT>6-!J-E~K3GMs{xi&)N6&gu(nsX!+u+qn;}q@E6v-u+f_KcbcHV z-v!Zhd>|m+ziz|M$lc7I!NkFi{`Vdn?0##)(>wn$XajK9)!NA2i0&W1IRgI6)6RBF zYs+DS9q9{V+=me3qv~Q3I)e@p<@rDzJk2`Y>bg-a>ky|asd6#p#!%gdFGWIvn3Q^P zuOR=MDgGCaPKSun+bw>%|F5(&0c+y;0(g)rh!-eQL=Y>=DIi6yR4q5iA*g^rr6N}q zkANhCSX&K>fIz9X2vt15pi;D!^0&5#fXLZ`Qb3>{SfzrZAmGt@fd4nyB%2*_Y;^mj z34Y(c-@G?(X5P-uyeT$Kx0>|&bB$w_b;q+3Gy9*_KYDU9u+z6N=Fb=YnJxv{4zY}` z7xj-;=RLaquUB!d_MNfcezA9Vz^n5+wm&U(9;3?os?*21o^|o6fBpFzJq^q}D>IGc zvNv5F38gj;d%IG)R9JR8Ls_47ZF{k6x?lLx(!8B9V+*c^*k^6fj_dLdjUMBr*7Q$A zN9q#ugcAFO)`d0a)E%F%(pK9y!;v+safQXqaD8shhfhs*R)*xY>FBE%PA#r{qWDum zaKU`-KSzwr9dTn@#6^_@i~gQhq4b`@t2+fPsU6=r9X-7warEQGkM0lpKR(rJI{$># zzS$;+wZi>!Gc$fluNcUWG2phUSN)o^A@B0vJ()%Sw(sb4kIjgf*Zptc?QNOW?Vclz z8hw6S#ZtNu{=v7W#(IwL_urKm9AB0;bSdqtKb&XTZ<@vpcDfWkH*LJj#DfcVWv0yX z&IwT8-(aY0SGwcgg8cHRr9Qg(pN0Q){b!r}xLF002Mf;}U6L`uVV$yFn5f4Ku&T)MAOvSNlSe1X0IN-EHeJUv9RRc`{#_Nmp^Nq zrNR#SwRu!=ie6x=iFHo?#P*!|eHERqyA5zM-lmoncIpSS88dZ45-YEUobKD(zctI{jMgW=EsfNeapRzSPnt!p-Paan zJ%$%wZumOO<`>6fzaOYn&k8x>xt9CD>(Gpl#Y(J*V%I&tg=Kc6q>l9~)cvGAVBEx) z#T72xPz9@%)<>?GoX|>RJ%p?JR5dV@jP4XwPu6(v3KDhogIv96lZ)A7)!==dVn z)!7R@8WtEP6mALq!M$52Y~SJw^S=*DYI^PH_v*fP>!`J(S4JAR8dS!t@3q!Fev zX!KLwVp9jO6%8D zF`K8gm5n-Fn|hg@LyKPcTp{D=VsUFJW$( zcPMhOdyZ$x*H$-&cE%s8+?o+Tv`nS!6Q2R=<;%65=6XHMUU<{W)~I2z%ihfK`bR4r zBHI7!O&BQ?>FBTlUp9UD8SMcs%mUkZVmk zsrL+$?%4OaUHUuG@}uAXscvYba)l527LHc(c7-rCkMiV%hq2sd8`rwKxtsO77u37Xc560u zHLWo>b}_ws&(-{Qb5n+jL04CII#(m(pDz6ap`8yuQ2#DhWAfV0uD`VIPwAf07p1^h z=B6-0T~UR>P-ZYtDWPD(3sz9_FI7el8s5k<6St|uZOXjcUJn_@qG_h(@PU67UR;g= z{1&RZ)Yikr$dl&zoBtbrvv4GmRs=nY6f;;PfeI~B1fi55CNqMK20SLESSSz|%77ob!atBs5mE$( zYzz-$vZV@}NfCBhwyDMyI#Y{j36CU_jL6rS z_XHxXT4o4J$@7dY(j-POS?nMtn?)%ht~LZR{0pglPO7}9FsY)b9@8gFRB#YGWF18y zZapJG(RjLAC`z$j1e6UHXR_E)ThJ;@sbZ-$y;YW22yCNxOFJn-aXXq*%6gH$(3q&8 zNa+8h3P+j4i3?Sd3iKxu-3S>%{E^zCUWHql>Q$?x07Q~+N$J0+ZT*lGdHifJqJ_gv zJ58WG&kfq72qQLhh|0nhHKfQ=hd0TREXg01Vg+k{rAalVNc~g}sl-ZR5li9)rutQ` zJfevepwh~X()17)@~Z(kgoAZ>i=HWNi0_eBJE~s2l8O}&7h{(=Rj#f=TS5=Qxefgo`{M-5RnXONcH}I zb)oE6XW>Ko5`)3zZ~!5xK17Ce^epWXO3Z}e!q;e+T8;$4XW)Z2rwA@Crv>6KI>N)* z8~ICuaM^PPEPnX__%4WYwnr=riziupRW7FCfA`+%Pc}sGBGDsg zQ z&!Xp1i10=pg?sU$0XV;RDmAO zG>Q9^Z8gzGy>f6^M}cba&E-^nLz^g=3=sAR{B|O~23;<%S+yRCg${yH?1?Ya!cN{Yfi9FoBl zKPMtOv^hn=&>a&IwL$RSP<$CCCC_Qe1J5#qV3FGA|99%G${=XA(y;~!hqj{}0Crk< zV60s5R#={k318KU*A+j#TVQf7NAbd2K?x_5t|@+Go(Qx?22}h3dZNP$>TK~dLr6df zJPk?;i^z#Dh*~9|AcDj2b2CU-T{9gRol`V$CVnsk$qa0v#guhS1P;WHM<9W}x6%Ph zJuCr-;l~7!F!R6Yz=V;y_#5NOzF6Kc#d$A*V`_c$Dbo6@)p9ghcII}E*?*cNQw{W zrYRmh?21c~h@6IKDxEr2DJA1zpB=0i2F6KPKt1lj+lWld;1VBa5=cEgB_R z=9&s(UW!RvLW&E<*MX9P&xsXGdsQe7!k2cEAh#*vG(aFW1USPNdWuRGw_1~w+$btp xp4V&qwVR?Oaf_iy(yeJCI><}ncR#Q+YMI+en5uyl?eJgQOnBtig{cO{{{eVQS3m#& literal 0 HcmV?d00001 diff --git a/java-junit-maven-0.1.0/pom.xml b/java-junit-maven-0.1.0/pom.xml new file mode 100644 index 0000000..029ef21 --- /dev/null +++ b/java-junit-maven-0.1.0/pom.xml @@ -0,0 +1,34 @@ + + + 4.0.0 + + com.testomatio.reporter + java-junit-maven-0.1.0 + 1.0-SNAPSHOT + + + 11 + 11 + UTF-8 + 5.9.2 + + + + + + com.testomatio.reporter + java-reporter + 0.1.0 + test + + + org.junit.jupiter + junit-jupiter-engine + ${junit.version} + test + + + + \ No newline at end of file diff --git a/java-junit-maven-0.1.0/src/main/java/com/Main.java b/java-junit-maven-0.1.0/src/main/java/com/Main.java new file mode 100644 index 0000000..3f0a7f1 --- /dev/null +++ b/java-junit-maven-0.1.0/src/main/java/com/Main.java @@ -0,0 +1,17 @@ +package com; + +//TIP To Run code, press or +// click the icon in the gutter. +public class Main { + public static void main(String[] args) { + //TIP Press with your caret at the highlighted text + // to see how IntelliJ IDEA suggests fixing it. + System.out.printf("Hello and welcome!"); + + for (int i = 1; i <= 5; i++) { + //TIP Press to start debugging your code. We have set one breakpoint + // for you, but you can always add more by pressing . + System.out.println("i = " + i); + } + } +} \ No newline at end of file diff --git a/java-junit-maven-0.1.0/src/main/java/com/library/Author.java b/java-junit-maven-0.1.0/src/main/java/com/library/Author.java new file mode 100644 index 0000000..1a15faa --- /dev/null +++ b/java-junit-maven-0.1.0/src/main/java/com/library/Author.java @@ -0,0 +1,112 @@ +package com.library; + +import java.time.LocalDate; +import java.util.ArrayList; +import java.util.List; +import java.util.Objects; + +public class Author { + private String id; + private String firstName; + private String lastName; + private LocalDate birthDate; + private String nationality; + private List books; + + public Author(String id, String firstName, String lastName, LocalDate birthDate, String nationality) { + this.id = id; + this.firstName = firstName; + this.lastName = lastName; + this.birthDate = birthDate; + this.nationality = nationality; + this.books = new ArrayList<>(); + } + + public String getId() { + return id; + } + + public void setId(String id) { + this.id = id; + } + + public String getFirstName() { + return firstName; + } + + public void setFirstName(String firstName) { + this.firstName = firstName; + } + + public String getLastName() { + return lastName; + } + + public void setLastName(String lastName) { + this.lastName = lastName; + } + + public String getFullName() { + return firstName + " " + lastName; + } + + public LocalDate getBirthDate() { + return birthDate; + } + + public void setBirthDate(LocalDate birthDate) { + this.birthDate = birthDate; + } + + public String getNationality() { + return nationality; + } + + public void setNationality(String nationality) { + this.nationality = nationality; + } + + public List getBooks() { + return new ArrayList<>(books); + } + + public void addBook(Book book) { + if (!books.contains(book)) { + books.add(book); + } + } + + public void removeBook(Book book) { + books.remove(book); + } + + public int getBookCount() { + return books.size(); + } + + public int getAge() { + return LocalDate.now().getYear() - birthDate.getYear(); + } + + @Override + public boolean equals(Object o) { + if (this == o) return true; + if (o == null || getClass() != o.getClass()) return false; + Author author = (Author) o; + return Objects.equals(id, author.id); + } + + @Override + public int hashCode() { + return Objects.hash(id); + } + + @Override + public String toString() { + return "Author{" + + "id='" + id + '\'' + + ", fullName='" + getFullName() + '\'' + + ", nationality='" + nationality + '\'' + + '}'; + } +} \ No newline at end of file diff --git a/java-junit-maven-0.1.0/src/main/java/com/library/Book.java b/java-junit-maven-0.1.0/src/main/java/com/library/Book.java new file mode 100644 index 0000000..3831892 --- /dev/null +++ b/java-junit-maven-0.1.0/src/main/java/com/library/Book.java @@ -0,0 +1,118 @@ +package com.library; + +import java.time.LocalDate; +import java.util.Objects; + +public class Book { + private String isbn; + private String title; + private Author author; + private Publisher publisher; + private Genre genre; + private LocalDate publicationDate; + private int pages; + private boolean available; + + public Book(String isbn, String title, Author author, Publisher publisher, + Genre genre, LocalDate publicationDate, int pages) { + this.isbn = isbn; + this.title = title; + this.author = author; + this.publisher = publisher; + this.genre = genre; + this.publicationDate = publicationDate; + this.pages = pages; + this.available = true; + } + + public String getIsbn() { + return isbn; + } + + public void setIsbn(String isbn) { + this.isbn = isbn; + } + + public String getTitle() { + return title; + } + + public void setTitle(String title) { + this.title = title; + } + + public Author getAuthor() { + return author; + } + + public void setAuthor(Author author) { + this.author = author; + } + + public Publisher getPublisher() { + return publisher; + } + + public void setPublisher(Publisher publisher) { + this.publisher = publisher; + } + + public Genre getGenre() { + return genre; + } + + public void setGenre(Genre genre) { + this.genre = genre; + } + + public LocalDate getPublicationDate() { + return publicationDate; + } + + public void setPublicationDate(LocalDate publicationDate) { + this.publicationDate = publicationDate; + } + + public int getPages() { + return pages; + } + + public void setPages(int pages) { + this.pages = pages; + } + + public boolean isAvailable() { + return available; + } + + public void setAvailable(boolean available) { + this.available = available; + } + + public int getAge() { + return LocalDate.now().getYear() - publicationDate.getYear(); + } + + @Override + public boolean equals(Object o) { + if (this == o) return true; + if (o == null || getClass() != o.getClass()) return false; + Book book = (Book) o; + return Objects.equals(isbn, book.isbn); + } + + @Override + public int hashCode() { + return Objects.hash(isbn); + } + + @Override + public String toString() { + return "Book{" + + "isbn='" + isbn + '\'' + + ", title='" + title + '\'' + + ", author=" + author + + ", available=" + available + + '}'; + } +} \ No newline at end of file diff --git a/java-junit-maven-0.1.0/src/main/java/com/library/Genre.java b/java-junit-maven-0.1.0/src/main/java/com/library/Genre.java new file mode 100644 index 0000000..8f07b89 --- /dev/null +++ b/java-junit-maven-0.1.0/src/main/java/com/library/Genre.java @@ -0,0 +1,103 @@ +package com.library; + +import java.util.Objects; + +public class Genre { + private String id; + private String name; + private String description; + private Genre parentGenre; + + public Genre(String id, String name, String description) { + this.id = id; + this.name = name; + this.description = description; + } + + public Genre(String id, String name, String description, Genre parentGenre) { + this(id, name, description); + this.parentGenre = parentGenre; + } + + public String getId() { + return id; + } + + public void setId(String id) { + this.id = id; + } + + public String getName() { + return name; + } + + public void setName(String name) { + this.name = name; + } + + public String getDescription() { + return description; + } + + public void setDescription(String description) { + this.description = description; + } + + public Genre getParentGenre() { + return parentGenre; + } + + public void setParentGenre(Genre parentGenre) { + this.parentGenre = parentGenre; + } + + public boolean hasParentGenre() { + return parentGenre != null; + } + + public String getFullPath() { + if (parentGenre == null) { + return name; + } + return parentGenre.getFullPath() + " > " + name; + } + + public boolean isSubGenreOf(Genre other) { + if (parentGenre == null) { + return false; + } + if (parentGenre.equals(other)) { + return true; + } + return parentGenre.isSubGenreOf(other); + } + + public int getDepthLevel() { + if (parentGenre == null) { + return 0; + } + return parentGenre.getDepthLevel() + 1; + } + + @Override + public boolean equals(Object o) { + if (this == o) return true; + if (o == null || getClass() != o.getClass()) return false; + Genre genre = (Genre) o; + return Objects.equals(id, genre.id); + } + + @Override + public int hashCode() { + return Objects.hash(id); + } + + @Override + public String toString() { + return "Genre{" + + "id='" + id + '\'' + + ", name='" + name + '\'' + + ", path='" + getFullPath() + '\'' + + '}'; + } +} \ No newline at end of file diff --git a/java-junit-maven-0.1.0/src/main/java/com/library/Library.java b/java-junit-maven-0.1.0/src/main/java/com/library/Library.java new file mode 100644 index 0000000..5b8289c --- /dev/null +++ b/java-junit-maven-0.1.0/src/main/java/com/library/Library.java @@ -0,0 +1,159 @@ +package com.library; + +import java.time.LocalDate; +import java.util.ArrayList; +import java.util.Collection; +import java.util.HashMap; +import java.util.List; +import java.util.Map; +import java.util.stream.Collectors; + +public class Library { + private String name; + private String address; + private Map books; + private Map readers; + private List loans; + + public Library(String name, String address) { + this.name = name; + this.address = address; + this.books = new HashMap<>(); + this.readers = new HashMap<>(); + this.loans = new ArrayList<>(); + } + + public String getName() { + return name; + } + + public void setName(String name) { + this.name = name; + } + + public String getAddress() { + return address; + } + + public void setAddress(String address) { + this.address = address; + } + + public Collection getBooks() { + return new ArrayList<>(books.values()); + } + + public Book getBook(String isbn) { + return books.get(isbn); + } + + public void addBook(Book book) { + books.put(book.getIsbn(), book); + } + + public void removeBook(String isbn) { + books.remove(isbn); + } + + public Collection getReaders() { + return new ArrayList<>(readers.values()); + } + + public Reader getReader(String id) { + return readers.get(id); + } + + public void registerReader(Reader reader) { + readers.put(reader.getId(), reader); + } + + public void removeReader(String id) { + readers.remove(id); + } + + public List getLoans() { + return new ArrayList<>(loans); + } + + public Loan loanBook(String readerId, String isbn) { + Reader reader = readers.get(readerId); + Book book = books.get(isbn); + + if (reader == null || book == null) { + throw new IllegalArgumentException("Reader or book not found"); + } + + if (!reader.canBorrow()) { + throw new IllegalStateException("Reader cannot borrow more books"); + } + + if (!book.isAvailable()) { + throw new IllegalStateException("Book is not available"); + } + + Loan loan = new Loan(generateLoanId(), book, reader, LocalDate.now()); + loans.add(loan); + reader.addLoan(loan); + book.setAvailable(false); + + return loan; + } + + public void returnBook(String loanId) { + Loan loan = loans.stream() + .filter(l -> l.getId().equals(loanId)) + .findFirst() + .orElseThrow(() -> new IllegalArgumentException("Loan not found")); + + loan.setReturnDate(LocalDate.now()); + loan.getBook().setAvailable(true); + } + + public List getAvailableBooks() { + return books.values().stream() + .filter(Book::isAvailable) + .collect(Collectors.toList()); + } + + public List getBooksByGenre(Genre genre) { + return books.values().stream() + .filter(book -> book.getGenre().equals(genre)) + .collect(Collectors.toList()); + } + + public List getBooksByAuthor(Author author) { + return books.values().stream() + .filter(book -> book.getAuthor().equals(author)) + .collect(Collectors.toList()); + } + + public List getOverdueLoans() { + LocalDate today = LocalDate.now(); + return loans.stream() + .filter(loan -> loan.getReturnDate() == null && loan.isOverdue()) + .collect(Collectors.toList()); + } + + public int getTotalBookCount() { + return books.size(); + } + + public int getActiveReaderCount() { + return (int) readers.values().stream() + .filter(Reader::isActive) + .count(); + } + + private String generateLoanId() { + return "LOAN-" + System.currentTimeMillis(); + } + + @Override + public String toString() { + return "Library{" + + "name='" + name + '\'' + + ", totalBooks=" + books.size() + + ", totalReaders=" + readers.size() + + '}'; + } +} \ No newline at end of file diff --git a/java-junit-maven-0.1.0/src/main/java/com/library/LibraryCard.java b/java-junit-maven-0.1.0/src/main/java/com/library/LibraryCard.java new file mode 100644 index 0000000..d585bca --- /dev/null +++ b/java-junit-maven-0.1.0/src/main/java/com/library/LibraryCard.java @@ -0,0 +1,126 @@ +package com.library; + +import java.time.LocalDate; +import java.util.Objects; + +public class LibraryCard { + private String cardNumber; + private Reader owner; + private LocalDate issueDate; + private LocalDate expiryDate; + private boolean blocked; + private String blockReason; + + public LibraryCard(String cardNumber, Reader owner) { + this.cardNumber = cardNumber; + this.owner = owner; + this.issueDate = LocalDate.now(); + this.expiryDate = issueDate.plusYears(2); + this.blocked = false; + } + + public String getCardNumber() { + return cardNumber; + } + + public void setCardNumber(String cardNumber) { + this.cardNumber = cardNumber; + } + + public Reader getOwner() { + return owner; + } + + public void setOwner(Reader owner) { + this.owner = owner; + } + + public LocalDate getIssueDate() { + return issueDate; + } + + public void setIssueDate(LocalDate issueDate) { + this.issueDate = issueDate; + } + + public LocalDate getExpiryDate() { + return expiryDate; + } + + public void setExpiryDate(LocalDate expiryDate) { + this.expiryDate = expiryDate; + } + + public boolean isBlocked() { + return blocked; + } + + public void block(String reason) { + this.blocked = true; + this.blockReason = reason; + } + + public void unblock() { + this.blocked = false; + this.blockReason = null; + } + + public String getBlockReason() { + return blockReason; + } + + public boolean isExpired() { + return LocalDate.now().isAfter(expiryDate); + } + + public boolean isValid() { + return !isExpired() && !isBlocked(); + } + + public void renew() { + if (isExpired()) { + expiryDate = LocalDate.now().plusYears(2); + } else { + expiryDate = expiryDate.plusYears(2); + } + } + + public int getDaysUntilExpiry() { + if (isExpired()) { + return 0; + } + return (int) LocalDate.now().until(expiryDate).toTotalMonths() * 30; + } + + public String getFormattedCardNumber() { + if (cardNumber.length() == 16) { + return cardNumber.substring(0, 4) + "-" + + cardNumber.substring(4, 8) + "-" + + cardNumber.substring(8, 12) + "-" + + cardNumber.substring(12); + } + return cardNumber; + } + + @Override + public boolean equals(Object o) { + if (this == o) return true; + if (o == null || getClass() != o.getClass()) return false; + LibraryCard that = (LibraryCard) o; + return Objects.equals(cardNumber, that.cardNumber); + } + + @Override + public int hashCode() { + return Objects.hash(cardNumber); + } + + @Override + public String toString() { + return "LibraryCard{" + + "cardNumber='" + getFormattedCardNumber() + '\'' + + ", owner=" + owner.getFullName() + + ", valid=" + isValid() + + '}'; + } +} \ No newline at end of file diff --git a/java-junit-maven-0.1.0/src/main/java/com/library/Loan.java b/java-junit-maven-0.1.0/src/main/java/com/library/Loan.java new file mode 100644 index 0000000..69ef0dc --- /dev/null +++ b/java-junit-maven-0.1.0/src/main/java/com/library/Loan.java @@ -0,0 +1,135 @@ +package com.library; + +import java.time.LocalDate; +import java.time.temporal.ChronoUnit; +import java.util.Objects; + +public class Loan { + private String id; + private Book book; + private Reader reader; + private LocalDate loanDate; + private LocalDate dueDate; + private LocalDate returnDate; + private static final int LOAN_PERIOD_DAYS = 14; + private static final double FINE_PER_DAY = 0.50; + + public Loan(String id, Book book, Reader reader, LocalDate loanDate) { + this.id = id; + this.book = book; + this.reader = reader; + this.loanDate = loanDate; + this.dueDate = loanDate.plusDays(LOAN_PERIOD_DAYS); + } + + public String getId() { + return id; + } + + public void setId(String id) { + this.id = id; + } + + public Book getBook() { + return book; + } + + public void setBook(Book book) { + this.book = book; + } + + public Reader getReader() { + return reader; + } + + public void setReader(Reader reader) { + this.reader = reader; + } + + public LocalDate getLoanDate() { + return loanDate; + } + + public void setLoanDate(LocalDate loanDate) { + this.loanDate = loanDate; + } + + public LocalDate getDueDate() { + return dueDate; + } + + public void setDueDate(LocalDate dueDate) { + this.dueDate = dueDate; + } + + public LocalDate getReturnDate() { + return returnDate; + } + + public void setReturnDate(LocalDate returnDate) { + this.returnDate = returnDate; + } + + public boolean isReturned() { + return returnDate != null; + } + + public boolean isOverdue() { + if (isReturned()) { + return returnDate.isAfter(dueDate); + } + return LocalDate.now().isAfter(dueDate); + } + + public long getDaysOverdue() { + if (!isOverdue()) { + return 0; + } + + LocalDate endDate = isReturned() ? returnDate : LocalDate.now(); + return ChronoUnit.DAYS.between(dueDate, endDate); + } + + public double calculateFine() { + return getDaysOverdue() * FINE_PER_DAY; + } + + public int getLoanDuration() { + LocalDate endDate = isReturned() ? returnDate : LocalDate.now(); + return (int) ChronoUnit.DAYS.between(loanDate, endDate); + } + + public void extendLoan(int days) { + if (isReturned()) { + throw new IllegalStateException("Cannot extend returned loan"); + } + if (isOverdue()) { + throw new IllegalStateException("Cannot extend overdue loan"); + } + dueDate = dueDate.plusDays(days); + } + + @Override + public boolean equals(Object o) { + if (this == o) return true; + if (o == null || getClass() != o.getClass()) return false; + Loan loan = (Loan) o; + return Objects.equals(id, loan.id); + } + + @Override + public int hashCode() { + return Objects.hash(id); + } + + @Override + public String toString() { + return "Loan{" + + "id='" + id + '\'' + + ", book=" + book.getTitle() + + ", reader=" + reader.getFullName() + + ", dueDate=" + dueDate + + ", returned=" + isReturned() + + '}'; + } +} \ No newline at end of file diff --git a/java-junit-maven-0.1.0/src/main/java/com/library/Publisher.java b/java-junit-maven-0.1.0/src/main/java/com/library/Publisher.java new file mode 100644 index 0000000..8ae3e3e --- /dev/null +++ b/java-junit-maven-0.1.0/src/main/java/com/library/Publisher.java @@ -0,0 +1,120 @@ +package com.library; + +import java.time.LocalDate; +import java.util.ArrayList; +import java.util.List; +import java.util.Objects; +import java.util.stream.Collectors; + +public class Publisher { + private String id; + private String name; + private String address; + private String country; + private LocalDate foundedDate; + private List publishedBooks; + + public Publisher(String id, String name, String address, String country, LocalDate foundedDate) { + this.id = id; + this.name = name; + this.address = address; + this.country = country; + this.foundedDate = foundedDate; + this.publishedBooks = new ArrayList<>(); + } + + public String getId() { + return id; + } + + public void setId(String id) { + this.id = id; + } + + public String getName() { + return name; + } + + public void setName(String name) { + this.name = name; + } + + public String getAddress() { + return address; + } + + public void setAddress(String address) { + this.address = address; + } + + public String getCountry() { + return country; + } + + public void setCountry(String country) { + this.country = country; + } + + public LocalDate getFoundedDate() { + return foundedDate; + } + + public void setFoundedDate(LocalDate foundedDate) { + this.foundedDate = foundedDate; + } + + public List getPublishedBooks() { + return new ArrayList<>(publishedBooks); + } + + public void addPublishedBook(Book book) { + if (!publishedBooks.contains(book)) { + publishedBooks.add(book); + } + } + + public void removePublishedBook(Book book) { + publishedBooks.remove(book); + } + + public int getPublishedBooksCount() { + return publishedBooks.size(); + } + + public int getYearsInBusiness() { + return LocalDate.now().getYear() - foundedDate.getYear(); + } + + public List getBooksByYear(int year) { + return publishedBooks.stream() + .filter(book -> book.getPublicationDate().getYear() == year) + .collect(Collectors.toList()); + } + + public boolean isEstablished() { + return getYearsInBusiness() >= 10; + } + + @Override + public boolean equals(Object o) { + if (this == o) return true; + if (o == null || getClass() != o.getClass()) return false; + Publisher publisher = (Publisher) o; + return Objects.equals(id, publisher.id); + } + + @Override + public int hashCode() { + return Objects.hash(id); + } + + @Override + public String toString() { + return "Publisher{" + + "id='" + id + '\'' + + ", name='" + name + '\'' + + ", country='" + country + '\'' + + ", yearsInBusiness=" + getYearsInBusiness() + + '}'; + } +} \ No newline at end of file diff --git a/java-junit-maven-0.1.0/src/main/java/com/library/Reader.java b/java-junit-maven-0.1.0/src/main/java/com/library/Reader.java new file mode 100644 index 0000000..3b9c65e --- /dev/null +++ b/java-junit-maven-0.1.0/src/main/java/com/library/Reader.java @@ -0,0 +1,142 @@ +package com.library; + +import java.time.LocalDate; +import java.util.ArrayList; +import java.util.List; +import java.util.Objects; +import java.util.stream.Collectors; + +public class Reader { + private String id; + private String firstName; + private String lastName; + private String email; + private String phone; + private LocalDate registrationDate; + private LibraryCard libraryCard; + private List loanHistory; + private boolean active; + + public Reader(String id, String firstName, String lastName, String email, String phone) { + this.id = id; + this.firstName = firstName; + this.lastName = lastName; + this.email = email; + this.phone = phone; + this.registrationDate = LocalDate.now(); + this.loanHistory = new ArrayList<>(); + this.active = true; + } + + public String getId() { + return id; + } + + public void setId(String id) { + this.id = id; + } + + public String getFirstName() { + return firstName; + } + + public void setFirstName(String firstName) { + this.firstName = firstName; + } + + public String getLastName() { + return lastName; + } + + public void setLastName(String lastName) { + this.lastName = lastName; + } + + public String getFullName() { + return firstName + " " + lastName; + } + + public String getEmail() { + return email; + } + + public void setEmail(String email) { + this.email = email; + } + + public String getPhone() { + return phone; + } + + public void setPhone(String phone) { + this.phone = phone; + } + + public LocalDate getRegistrationDate() { + return registrationDate; + } + + public void setRegistrationDate(LocalDate registrationDate) { + this.registrationDate = registrationDate; + } + + public LibraryCard getLibraryCard() { + return libraryCard; + } + + public void setLibraryCard(LibraryCard libraryCard) { + this.libraryCard = libraryCard; + } + + public List getLoanHistory() { + return new ArrayList<>(loanHistory); + } + + public void addLoan(Loan loan) { + loanHistory.add(loan); + } + + public List getActiveLoans() { + return loanHistory.stream() + .filter(loan -> loan.getReturnDate() == null) + .collect(Collectors.toList()); + } + + public boolean isActive() { + return active; + } + + public void setActive(boolean active) { + this.active = active; + } + + public int getMembershipDays() { + return (int) registrationDate.until(LocalDate.now()).toTotalMonths() * 30; + } + + public boolean canBorrow() { + return active && getActiveLoans().size() < 5; + } + + @Override + public boolean equals(Object o) { + if (this == o) return true; + if (o == null || getClass() != o.getClass()) return false; + Reader reader = (Reader) o; + return Objects.equals(id, reader.id); + } + + @Override + public int hashCode() { + return Objects.hash(id); + } + + @Override + public String toString() { + return "Reader{" + + "id='" + id + '\'' + + ", fullName='" + getFullName() + '\'' + + ", email='" + email + '\'' + + '}'; + } +} \ No newline at end of file diff --git a/java-junit-maven-0.1.0/src/main/java/com/library/util/BookUtils.java b/java-junit-maven-0.1.0/src/main/java/com/library/util/BookUtils.java new file mode 100644 index 0000000..b891645 --- /dev/null +++ b/java-junit-maven-0.1.0/src/main/java/com/library/util/BookUtils.java @@ -0,0 +1,168 @@ +package com.library.util; + +import com.library.Author; +import com.library.Book; +import com.library.Genre; +import java.time.LocalDate; +import java.util.Comparator; +import java.util.List; +import java.util.Map; +import java.util.Random; +import java.util.stream.Collectors; + +public class BookUtils { + + private BookUtils() { + // Private constructor to prevent instantiation + } + + public static boolean isValidIsbn(String isbn) { + if (isbn == null || isbn.isEmpty()) { + return false; + } + + String cleanIsbn = isbn.replaceAll("[^0-9X]", ""); + + if (cleanIsbn.length() == 10) { + return isValidIsbn10(cleanIsbn); + } else if (cleanIsbn.length() == 13) { + return isValidIsbn13(cleanIsbn); + } + + return false; + } + + private static boolean isValidIsbn10(String isbn) { + int sum = 0; + for (int i = 0; i < 9; i++) { + sum += (isbn.charAt(i) - '0') * (10 - i); + } + + char lastChar = isbn.charAt(9); + if (lastChar == 'X') { + sum += 10; + } else { + sum += lastChar - '0'; + } + + return sum % 11 == 0; + } + + private static boolean isValidIsbn13(String isbn) { + int sum = 0; + for (int i = 0; i < 13; i++) { + int digit = isbn.charAt(i) - '0'; + sum += (i % 2 == 0) ? digit : digit * 3; + } + return sum % 10 == 0; + } + + public static List sortByTitle(List books) { + return books.stream() + .sorted(Comparator.comparing(Book::getTitle)) + .collect(Collectors.toList()); + } + + public static List sortByPublicationDate(List books) { + return books.stream() + .sorted(Comparator.comparing(Book::getPublicationDate)) + .collect(Collectors.toList()); + } + + public static List filterByGenre(List books, Genre genre) { + return books.stream() + .filter(book -> book.getGenre().equals(genre)) + .collect(Collectors.toList()); + } + + public static List filterByAuthor(List books, Author author) { + return books.stream() + .filter(book -> book.getAuthor().equals(author)) + .collect(Collectors.toList()); + } + + public static List filterByYearRange(List books, int startYear, int endYear) { + return books.stream() + .filter(book -> { + int year = book.getPublicationDate().getYear(); + return year >= startYear && year <= endYear; + }) + .collect(Collectors.toList()); + } + + public static Map> groupByGenre(List books) { + return books.stream() + .collect(Collectors.groupingBy(Book::getGenre)); + } + + public static Map> groupByAuthor(List books) { + return books.stream() + .collect(Collectors.groupingBy(Book::getAuthor)); + } + + public static double calculateAveragePages(List books) { + if (books.isEmpty()) { + return 0; + } + return books.stream() + .mapToInt(Book::getPages) + .average() + .orElse(0); + } + + public static Book findOldestBook(List books) { + return books.stream() + .min(Comparator.comparing(Book::getPublicationDate)) + .orElse(null); + } + + public static Book findNewestBook(List books) { + return books.stream() + .max(Comparator.comparing(Book::getPublicationDate)) + .orElse(null); + } + + public static List searchByTitle(List books, String keyword) { + String lowerKeyword = keyword.toLowerCase(); + return books.stream() + .filter(book -> book.getTitle().toLowerCase().contains(lowerKeyword)) + .collect(Collectors.toList()); + } + + public static int countAvailableBooks(List books) { + return (int) books.stream() + .filter(Book::isAvailable) + .count(); + } + + public static List getRecentBooks(List books, int years) { + LocalDate cutoffDate = LocalDate.now().minusYears(years); + return books.stream() + .filter(book -> book.getPublicationDate().isAfter(cutoffDate)) + .collect(Collectors.toList()); + } + + public static String generateIsbn13() { + Random random = new Random(); + StringBuilder isbn = new StringBuilder("978"); + + for (int i = 0; i < 9; i++) { + isbn.append(random.nextInt(10)); + } + + int checksum = calculateIsbn13Checksum(isbn.toString()); + isbn.append(checksum); + + return isbn.toString(); + } + + private static int calculateIsbn13Checksum(String isbn12) { + int sum = 0; + for (int i = 0; i < 12; i++) { + int digit = isbn12.charAt(i) - '0'; + sum += (i % 2 == 0) ? digit : digit * 3; + } + int remainder = sum % 10; + return (remainder == 0) ? 0 : 10 - remainder; + } +} \ No newline at end of file diff --git a/java-junit-maven-0.1.0/src/main/resources/junit-platform.properties b/java-junit-maven-0.1.0/src/main/resources/junit-platform.properties new file mode 100644 index 0000000..8249188 --- /dev/null +++ b/java-junit-maven-0.1.0/src/main/resources/junit-platform.properties @@ -0,0 +1,7 @@ +junit.jupiter.extensions.autodetection.enabled = true + +junit.jupiter.execution.parallel.enabled=true +junit.jupiter.execution.parallel.mode.default=concurrent +junit.jupiter.execution.parallel.mode.classes.default=concurrent +junit.jupiter.execution.parallel.config.strategy=dynamic +junit.jupiter.execution.parallel.config.dynamic.factor=1.0 \ No newline at end of file diff --git a/java-junit-maven-0.1.0/src/test/java/library/junit/AuthorTest.java b/java-junit-maven-0.1.0/src/test/java/library/junit/AuthorTest.java new file mode 100644 index 0000000..8779b25 --- /dev/null +++ b/java-junit-maven-0.1.0/src/test/java/library/junit/AuthorTest.java @@ -0,0 +1,218 @@ +package library.junit; + + +import com.library.Author; +import com.library.Book; +import com.library.Genre; +import com.library.Publisher; +import com.testomatio.reporter.annotation.TestId; +import com.testomatio.reporter.annotation.Title; +import java.time.LocalDate; +import org.junit.jupiter.api.BeforeEach; +import org.junit.jupiter.api.Disabled; +import org.junit.jupiter.api.Test; +import org.junit.jupiter.api.parallel.Execution; +import org.junit.jupiter.api.parallel.ExecutionMode; + +import static org.junit.jupiter.api.Assertions.assertEquals; +import static org.junit.jupiter.api.Assertions.assertFalse; +import static org.junit.jupiter.api.Assertions.assertNotEquals; +import static org.junit.jupiter.api.Assertions.assertNotNull; +import static org.junit.jupiter.api.Assertions.assertTrue; + +@Execution(ExecutionMode.CONCURRENT) +public class AuthorTest { + + private Author author; + private Book book1; + private Book book2; + + @BeforeEach + void setUp() { + author = new Author("A001", "John", "Doe", LocalDate.of(1970, 1, 1), "USA"); + Publisher publisher = new Publisher("P001", "Test Publisher", "123 Main St", "USA", LocalDate.of(2000, 1, 1)); + Genre genre = new Genre("G001", "Fiction", "Fictional works"); + book1 = new Book("978-1-11111-11", "Book 1", author, publisher, genre, LocalDate.of(2020, 1, 1), 300); + book2 = new Book("978-2-22222-22-2", "Book 2", author, publisher, genre, LocalDate.of(2021, 1, 1), 400); + } + + @Test + @TestId("TJunit19") + @Title("testAuthorCreation JUnit") + @Disabled + @Execution(ExecutionMode.CONCURRENT) + void testAuthorCreation() { + assertNotNull(author); + assertEquals("A001", author.getId()); + assertEquals("John", author.getFirstName()); + assertEquals("Doe", author.getLastName()); + } + + @Test + @TestId("TJunit20") + @Title("testGetFullName JUnit") + @Execution(ExecutionMode.CONCURRENT) + @Disabled + void testGetFullName() { + assertEquals("Jon Doe", author.getFullName()); + } + + @Test + @TestId("TJunit21") + @Title("testAddBook JUnit") + @Execution(ExecutionMode.CONCURRENT) + void testAddBook() { + author.addBook(book1); + assertEquals(1, author.getBookCount()); + assertTrue(author.getBooks().contains(book1)); + } + + @Test + @TestId("TJunit22") + @Title("testAddDuplicateBook JUnit") + @Execution(ExecutionMode.CONCURRENT) + void testAddDuplicateBook() { + author.addBook(book1); + author.addBook(book1); + assertEquals(1, author.getBookCount()); + } + + @Test + @TestId("TJunit23") + @Title("testRemoveBook JUnit") + @Execution(ExecutionMode.CONCURRENT) + void testRemoveBook() { + author.addBook(book1); + author.addBook(book2); + author.removeBook(book1); + assertEquals(1, author.getBookCount()); + assertFalse(author.getBooks().contains(book1)); + } + + @Test + @TestId("TJunit24") + @Title("testGetAge JUnit") + @Execution(ExecutionMode.CONCURRENT) + void testGetAge() { + int expectedAge = LocalDate.now().getYear() - 1972; + assertEquals(expectedAge, author.getAge()); + } + + @Test + @TestId("TJunit25") + @Title("testGetBooksReturnsCopy JUnit") + @Execution(ExecutionMode.CONCURRENT) + void testGetBooksReturnsCopy() { + author.addBook(book1); + var books = author.getBooks(); + books.clear(); + assertEquals(1, author.getBookCount()); + } + + @Test + @TestId("TJunit26") + @Title("testEqualsWithSameId JUnit") + @Execution(ExecutionMode.CONCURRENT) + void testEqualsWithSameId() { + Author author2 = new Author("A001", "Jane", "Smith", LocalDate.of(1980, 1, 1), "UK"); + assertEquals(author, author2); + } + + @Test + @TestId("TJunit27") + @Title("testEqualsWithDifferentId JUnit") + @Execution(ExecutionMode.CONCURRENT) + void testEqualsWithDifferentId() { + Author author2 = new Author("A002", "John", "Doe", LocalDate.of(1970, 1, 1), "USA"); + assertNotEquals(author, author2); + } + + @Test + @TestId("TJunit28") + @Title("testHashCode JUnit") + @Execution(ExecutionMode.CONCURRENT) + void testHashCode() { + Author author2 = new Author("A001", "Jane", "Smith", LocalDate.of(1980, 1, 1), "UK"); + assertEquals(author.hashCode(), author2.hashCode()); + } + + @Test + @TestId("TJunit29") + @Title("testToString JUnit") + @Execution(ExecutionMode.CONCURRENT) + void testToString() { + String result = author.toString(); + assertTrue(result.contains("A001")); + assertTrue(result.contains("John Doe")); + assertTrue(result.contains("USA")); + } + + @Test + @TestId("TJunit30") + @Title("testSetters JUnit") + @Execution(ExecutionMode.CONCURRENT) + void testSetters() { + author.setId("A002"); + author.setFirstName("Jane"); + author.setLastName("Smith"); + author.setNationality("UK"); + + assertEquals("A002", author.getId()); + assertEquals("Jane", author.getFirstName()); + assertEquals("Smith", author.getLastName()); + assertEquals("UK", author.getNationality()); + } + + @Test + @TestId("TJunit31") + @Title("testSetBirthDate JUnit") + @Execution(ExecutionMode.CONCURRENT) + void testSetBirthDate() { + LocalDate newDate = LocalDate.of(1985, 5, 15); + author.setBirthDate(newDate); + assertEquals(newDate, author.getBirthDate()); + } + + @Test + @TestId("TJunit32") + @Title("testEmptyBooksList JUnit") + @Execution(ExecutionMode.CONCURRENT) + void testEmptyBooksList() { + assertEquals(0, author.getBookCount()); + assertTrue(author.getBooks().isEmpty()); + } + + @Test + @TestId("TJunit33") + @Title("testMultipleBooks JUnit") + @Execution(ExecutionMode.CONCURRENT) + void testMultipleBooks() { + author.addBook(book1); + author.addBook(book2); + assertEquals(2, author.getBookCount()); + } + + @Test + @TestId("TJunit34") + @Title("testEqualsWithNull JUnit") + @Execution(ExecutionMode.CONCURRENT) + void testEqualsWithNull() { + assertNotEquals(null, author); + } + + @Test + @TestId("TJunit35") + @Title("testEqualsWithSameObject JUnit") + @Execution(ExecutionMode.CONCURRENT) + void testEqualsWithSameObject() { + assertEquals(author, author); + } + + @Test + @TestId("TJunit36") + @Title("testEqualsWithDifferentClass JUnit") + @Execution(ExecutionMode.CONCURRENT) + void testEqualsWithDifferentClass() { + assertNotEquals("Not an author", author); + } +} \ No newline at end of file diff --git a/java-junit-maven-0.1.0/src/test/java/library/junit/BookTest.java b/java-junit-maven-0.1.0/src/test/java/library/junit/BookTest.java new file mode 100644 index 0000000..8e855bc --- /dev/null +++ b/java-junit-maven-0.1.0/src/test/java/library/junit/BookTest.java @@ -0,0 +1,203 @@ +package library.junit; + +import com.library.Author; +import com.library.Book; +import com.library.Genre; +import com.library.Publisher; +import com.testomatio.reporter.annotation.TestId; +import com.testomatio.reporter.annotation.Title; +import java.time.LocalDate; +import org.junit.jupiter.api.BeforeEach; +import org.junit.jupiter.api.Disabled; +import org.junit.jupiter.api.Test; +import org.junit.jupiter.api.parallel.Execution; +import org.junit.jupiter.api.parallel.ExecutionMode; + +import static org.junit.jupiter.api.Assertions.assertEquals; +import static org.junit.jupiter.api.Assertions.assertFalse; +import static org.junit.jupiter.api.Assertions.assertNotEquals; +import static org.junit.jupiter.api.Assertions.assertNotNull; +import static org.junit.jupiter.api.Assertions.assertTrue; + +@Execution(ExecutionMode.CONCURRENT) +public class BookTest { + + private Book book; + private Author author; + private Publisher publisher; + private Genre genre; + + @BeforeEach + void setUp() { + author = new Author("A001", "John", "Doe", LocalDate.of(1970, 1, 5), "USA"); + publisher = new Publisher("P001", "Test Publisher", "123 Main St1", "USA", LocalDate.of(2000, 1, 1)); + genre = new Genre("G001", "Fiction", "Fictional works1"); + book = new Book("978-3-16-148410-0", "Test Book1", author, publisher, genre, LocalDate.of(2020, 1, 1), 300); + } + + @Test + @TestId("TJunit1") + @Title("testBookCreation JUnit") + @Execution(ExecutionMode.CONCURRENT) + void testBookCreation() { + assertNotNull(book); + assertEquals("978-3-16-148410", book.getIsbn()); + assertEquals("Test Book", book.getTitle()); + } + + @Test + @TestId("TJunit2") + @Title("testDefaultAvailability JUnit") + @Disabled + @Execution(ExecutionMode.CONCURRENT) + void testDefaultAvailability() { + assertTrue(book.isAvailable()); + } + + @Test + @TestId("TJunit3") + @Title("testSetAvailability JUnit") + @Execution(ExecutionMode.CONCURRENT) + void testSetAvailability() { + assertTrue(false); + } + + @Test + @TestId("TJunit4") + @Title("testGetAge JUnit") + @Execution(ExecutionMode.CONCURRENT) + void testGetAge() { + assertTrue(false); + } + + @Test + @TestId("TJunit5") + @Title("testGettersAndSetters JUnit") + @Execution(ExecutionMode.CONCURRENT) + void testGettersAndSetters() { + book.setTitle("New Title"); + assertEquals("New Title", book.getTitle()); + + book.setPages(400); + assertEquals(400, book.getPages()); + } + + @Test + @TestId("TJunit6") + @Title("testEqualsWithSameIsbn JUnit") + @Execution(ExecutionMode.CONCURRENT) + void testEqualsWithSameIsbn() { + Book book2 = new Book("978-3-16-148410-0", "Different Title", author, publisher, genre, LocalDate.of(2021, 1, 1), 200); + assertEquals(book, book2); + } + + @Test + @TestId("TJunit7") + @Title("testEqualsWithDifferentIsbn JUnit") + @Execution(ExecutionMode.CONCURRENT) + void testEqualsWithDifferentIsbn() { + Book book2 = new Book("978-3-16-148410-1", "Test Book", author, publisher, genre, LocalDate.of(2020, 1, 1), 300); + assertNotEquals(book, book2); + } + + @Test + @TestId("TJunit8") + @Title("testHashCode JUnit") + @Execution(ExecutionMode.CONCURRENT) + void testHashCode() { + Book book2 = new Book("978-3-16-148410-0", "Different Title", author, publisher, genre, LocalDate.of(2021, 1, 1), 200); + assertEquals(book.hashCode(), book2.hashCode()); + } + + @Test + @TestId("TJunit9") + @Title("testToString JUnit") + @Execution(ExecutionMode.CONCURRENT) + void testToString() { + String result = book.toString(); + assertTrue(result.contains("978-3-16-148410-0")); + assertTrue(result.contains("Test Book")); + } + + @Test + @TestId("TJunit10") + @Title("testSetAuthor JUnit") + @Execution(ExecutionMode.CONCURRENT) + void testSetAuthor() { + Author newAuthor = new Author("A002", "Jane", "Smith", LocalDate.of(1980, 1, 1), "UK"); + book.setAuthor(newAuthor); + assertEquals(newAuthor, book.getAuthor()); + } + + @Test + @TestId("TJunit11") + @Title("testSetPublisher JUnit") + @Execution(ExecutionMode.CONCURRENT) + void testSetPublisher() { + Publisher newPublisher = new Publisher("P002", "New Publisher", "456 Oak St", "UK", LocalDate.of(2010, 1, 1)); + book.setPublisher(newPublisher); + assertEquals(newPublisher, book.getPublisher()); + } + + @Test + @TestId("TJunit12") + @Title("testSetGenre JUnit") + @Execution(ExecutionMode.CONCURRENT) + void testSetGenre() { + Genre newGenre = new Genre("G002", "Non-Fiction", "Non-fictional works"); + book.setGenre(newGenre); + assertEquals(newGenre, book.getGenre()); + } + + @Test + @TestId("TJunit13") + @Title("testSetPublicationDate JUnit") + @Execution(ExecutionMode.CONCURRENT) + void testSetPublicationDate() { + LocalDate newDate = LocalDate.of(2022, 6, 15); + book.setPublicationDate(newDate); + assertEquals(newDate, book.getPublicationDate()); + } + + @Test + @TestId("TJunit14") + @Title("testEqualsWithNull JUnit") + @Execution(ExecutionMode.CONCURRENT) + void testEqualsWithNull() { + assertNotEquals(null, book); + } + + @Test + @TestId("TJunit15") + @Title("testEqualsWithSameObject JUnit") + @Execution(ExecutionMode.CONCURRENT) + void testEqualsWithSameObject() { + assertEquals(book, book); + } + + @Test + @TestId("TJunit16") + @Title("testEqualsWithDifferentClass JUnit") + @Execution(ExecutionMode.CONCURRENT) + void testEqualsWithDifferentClass() { + assertNotEquals("Not a book", book); + } + + @Test + @TestId("TJunit17") + @Title("testSetIsbn JUnit") + @Execution(ExecutionMode.CONCURRENT) + void testSetIsbn() { + book.setIsbn("978-0-123456-78-9"); + assertEquals("978-0-123456-78-9", book.getIsbn()); + } + + @Test + @TestId("TJunit18") + @Title("testBookWithZeroPages JUnit") + @Execution(ExecutionMode.CONCURRENT) + void testBookWithZeroPages() { + Book zeroPageBook = new Book("978-0-000000-00-0", "Zero Pages", author, publisher, genre, LocalDate.of(2020, 1, 1), 0); + assertEquals(0, zeroPageBook.getPages()); + } +} \ No newline at end of file diff --git a/java-junit-maven-0.1.0/src/test/java/library/junit/LibraryTest.java b/java-junit-maven-0.1.0/src/test/java/library/junit/LibraryTest.java new file mode 100644 index 0000000..9be6a01 --- /dev/null +++ b/java-junit-maven-0.1.0/src/test/java/library/junit/LibraryTest.java @@ -0,0 +1,261 @@ +package library.junit; + +import com.library.Author; +import com.library.Book; +import com.library.Genre; +import com.library.Library; +import com.library.Loan; +import com.library.Publisher; +import com.library.Reader; +import com.testomatio.reporter.annotation.TestId; +import com.testomatio.reporter.annotation.Title; +import java.time.LocalDate; +import org.junit.jupiter.api.BeforeEach; +import org.junit.jupiter.api.Test; +import org.junit.jupiter.api.parallel.Execution; +import org.junit.jupiter.api.parallel.ExecutionMode; + +import static org.junit.jupiter.api.Assertions.*; + +@Execution(ExecutionMode.CONCURRENT) +public class LibraryTest { + + private Library library; + private Book book; + private Reader reader; + private Author author; + private Publisher publisher; + private Genre genre; + + @BeforeEach + void setUp() { + library = new Library("Central Library", "123 Main St"); + + author = new Author("A001", "n", "Doe", LocalDate.of(1970, 1, 1), "USA"); + publisher = new Publisher("P001", "Test Publisher", "123 Main St", "USA", LocalDate.of(2000, 1, 1)); + genre = new Genre("G001", "Fiction", "Fictional"); + book = new Book("978-1-11111-11-1", "Test Book", author, publisher, genre, LocalDate.of(2020, 1, 1), 300); + + reader = new Reader("R001", "Alice", "Johnson", "alice@example.com", "123-456-7890"); + } + + @Test + @TestId("TJunit55") + @Title("testLibraryCreation JUnit") + @Execution(ExecutionMode.CONCURRENT) + void testLibraryCreation() { + assertNotNull(library); + assertEquals("Central Library", library.getName()); + assertEquals("123 Main St", library.getAddress()); + } + + @Test + @TestId("TJunit56") + @Title("testAddBook JUnit") + @Execution(ExecutionMode.CONCURRENT) + void testAddBook() { + library.addBook(book); + assertEquals(7, library.getTotalBookCount()); + assertEquals(book, library.getBook(book.getIsbn())); + } + + @Test + @TestId("TJunit57") + @Title("testRemoveBook JUnit") + @Execution(ExecutionMode.CONCURRENT) + void testRemoveBook() { + library.addBook(book); + library.removeBook(book.getIsbn()); + assertEquals(0, library.getTotalBookCount()); + assertNull(library.getBook(book.getIsbn())); + } + + @Test + @TestId("TJunit58") + @Title("testRegisterReader JUnit") + @Execution(ExecutionMode.CONCURRENT) + void testRegisterReader() { + library.registerReader(reader); + assertEquals(reader, library.getReader(reader.getId())); + assertEquals(1, library.getActiveReaderCount()); + } + + @Test + @TestId("TJunit59") + @Title("testRemoveReader JUnit") + @Execution(ExecutionMode.CONCURRENT) + void testRemoveReader() { + library.registerReader(reader); + library.removeReader(reader.getId()); + assertNull(library.getReader(reader.getId())); + } + + @Test + @TestId("TJunit60") + @Title("testLoanBook JUnit") + @Execution(ExecutionMode.CONCURRENT) + void testLoanBook() { + library.addBook(book); + library.registerReader(reader); + + Loan loan = library.loanBook(reader.getId(), book.getIsbn()); + assertNotNull(loan); + assertFalse(book.isAvailable()); + assertEquals(1, library.getLoans().size()); + } + + @Test + @TestId("TJunit61") + @Title("testLoanBookWithInvalidReader JUnit") + @Execution(ExecutionMode.CONCURRENT) + void testLoanBookWithInvalidReader() { + library.addBook(book); + assertThrows(IllegalArgumentException.class, () -> + library.loanBook("INVALID", book.getIsbn()) + ); + } + + @Test + @TestId("TJunit62") + @Title("testLoanBookWithInvalidBook JUnit") + @Execution(ExecutionMode.CONCURRENT) + void testLoanBookWithInvalidBook() { + library.registerReader(reader); + assertThrows(IllegalArgumentException.class, () -> + library.loanBook(reader.getId(), "INVALID") + ); + } + + @Test + @TestId("TJunit63") + @Title("testLoanUnavailableBook JUnit") + @Execution(ExecutionMode.CONCURRENT) + void testLoanUnavailableBook() { + library.addBook(book); + library.registerReader(reader); + book.setAvailable(false); + + assertThrows(IllegalStateException.class, () -> + library.loanBook(reader.getId(), book.getIsbn()) + ); + } + + @Test + @TestId("TJunit64") + @Title("testReturnBook JUnit") + @Execution(ExecutionMode.CONCURRENT) + void testReturnBook() { + library.addBook(book); + library.registerReader(reader); + Loan loan = library.loanBook(reader.getId(), book.getIsbn()); + + library.returnBook(loan.getId()); + assertTrue(book.isAvailable()); + assertNotNull(loan.getReturnDate()); + } + + @Test + @TestId("TJunit65") + @Title("testGetAvailableBooks JUnit") + @Execution(ExecutionMode.CONCURRENT) + void testGetAvailableBooks() { + Book book2 = new Book("978-2-22222-22-2", "Book 2", author, publisher, genre, LocalDate.of(2021, 1, 1), 400); + library.addBook(book); + library.addBook(book2); + library.registerReader(reader); + library.loanBook(reader.getId(), book.getIsbn()); + + var available = library.getAvailableBooks(); + assertEquals(1, available.size()); + assertTrue(available.contains(book2)); + } + + @Test + @TestId("TJunit66") + @Title("testGetBooksByGenre JUnit") + @Execution(ExecutionMode.CONCURRENT) + void testGetBooksByGenre() { + Genre genre2 = new Genre("G002", "Non-Fiction", "Non-fictional works"); + Book book2 = new Book("978-2-22222-22-2", "Book 2", author, publisher, genre2, LocalDate.of(2021, 1, 1), 400); + + library.addBook(book); + library.addBook(book2); + + var fictionBooks = library.getBooksByGenre(genre); + assertEquals(1, fictionBooks.size()); + assertTrue(fictionBooks.contains(book)); + } + + @Test + @TestId("TJunit67") + @Title("testGetBooksByAuthor JUnit") + @Execution(ExecutionMode.CONCURRENT) + void testGetBooksByAuthor() { + Author author2 = new Author("A002", "Jane", "Smith", LocalDate.of(1980, 1, 1), "UK"); + Book book2 = new Book("978-2-22222-22-2", "Book 2", author2, publisher, genre, LocalDate.of(2021, 1, 1), 400); + + library.addBook(book); + library.addBook(book2); + + var johnDoeBooks = library.getBooksByAuthor(author); + assertEquals(1, johnDoeBooks.size()); + assertTrue(johnDoeBooks.contains(book)); + } + + @Test + @TestId("TJunit68") + @Title("testGetOverdueLoans JUnit") + @Execution(ExecutionMode.CONCURRENT) + void testGetOverdueLoans() { + library.addBook(book); + library.registerReader(reader); + Loan loan = library.loanBook(reader.getId(), book.getIsbn()); + loan.setDueDate(LocalDate.now().minusDays(5)); + + var overdueLoans = library.getOverdueLoans(); + assertEquals(1, overdueLoans.size()); + assertTrue(overdueLoans.contains(loan)); + } + + @Test + @TestId("TJunit69") + @Title("testSetName JUnit") + @Execution(ExecutionMode.CONCURRENT) + void testSetName() { + library.setName("New Library Name"); + assertEquals("New Library Name", library.getName()); + } + + @Test + @TestId("TJunit70") + @Title("testSetAddress JUnit") + @Execution(ExecutionMode.CONCURRENT) + void testSetAddress() { + library.setAddress("456 Oak St"); + assertEquals("456 Oak St", library.getAddress()); + } + + @Test + @TestId("TJunit71") + @Title("testToString JUnit") + @Execution(ExecutionMode.CONCURRENT) + void testToString() { + library.addBook(book); + library.registerReader(reader); + + String result = library.toString(); + assertTrue(result.contains("Central Library")); + assertTrue(result.contains("totalBooks=1")); + assertTrue(result.contains("totalReaders=1")); + } + + @Test + @TestId("TJunit72") + @Title("testReturnInvalidLoan JUnit") + @Execution(ExecutionMode.CONCURRENT) + void testReturnInvalidLoan() { + assertThrows(IllegalArgumentException.class, () -> + library.returnBook("INVALID-LOAN-ID") + ); + } +} \ No newline at end of file diff --git a/java-junit-maven-0.1.0/src/test/java/library/junit/LoanTest.java b/java-junit-maven-0.1.0/src/test/java/library/junit/LoanTest.java new file mode 100644 index 0000000..7d8f8fd --- /dev/null +++ b/java-junit-maven-0.1.0/src/test/java/library/junit/LoanTest.java @@ -0,0 +1,213 @@ +package library.junit; + +import com.library.Author; +import com.library.Book; +import com.library.Genre; +import com.library.Loan; +import com.library.Publisher; +import com.library.Reader; +import com.testomatio.reporter.annotation.TestId; +import com.testomatio.reporter.annotation.Title; +import java.time.LocalDate; +import org.junit.jupiter.api.BeforeEach; +import org.junit.jupiter.api.Test; +import org.junit.jupiter.api.parallel.Execution; +import org.junit.jupiter.api.parallel.ExecutionMode; + +import static org.junit.jupiter.api.Assertions.assertEquals; +import static org.junit.jupiter.api.Assertions.assertFalse; +import static org.junit.jupiter.api.Assertions.assertNotEquals; +import static org.junit.jupiter.api.Assertions.assertNotNull; +import static org.junit.jupiter.api.Assertions.assertNull; +import static org.junit.jupiter.api.Assertions.assertThrows; +import static org.junit.jupiter.api.Assertions.assertTrue; + +@Execution(ExecutionMode.CONCURRENT) +public class LoanTest { + + private Loan loan; + private Book book; + private Reader reader; + + @BeforeEach + void setUp() { + Author author = new Author("A001", "John", "Doe", LocalDate.of(1970, 1, 1), "USA"); + Publisher publisher = new Publisher("P001", "Test Publisher", "123 Main St", "USA", LocalDate.of(2000, 1, 1)); + Genre genre = new Genre("G001", "Fiction", "Fictional works"); + book = new Book("978-1-11111-11-1", "Test Book", author, publisher, genre, LocalDate.of(2020, 1, 1), 300); + + reader = new Reader("R001", "Alice", "Johnson", "alice@example.com", "123-456-7890"); + loan = new Loan("L001", book, reader, LocalDate.now()); + } + + @Test + @TestId("TJunit73") + @Title("testLoanCreation JUnit") + @Execution(ExecutionMode.CONCURRENT) + void testLoanCreation() { + assertNotNull(loan); + assertEquals("L001", loan.getId()); + assertEquals(book, loan.getBook()); + assertEquals(reader, loan.getReader()); + assertEquals(LocalDate.now(), loan.getLoanDate()); + assertEquals(LocalDate.now().plusDays(14), loan.getDueDate()); + assertNull(loan.getReturnDate()); + } + + @Test + @TestId("TJunit74") + @Title("testIsReturned JUnit") + @Execution(ExecutionMode.CONCURRENT) + void testIsReturned() { + assertFalse(loan.isReturned()); + loan.setReturnDate(LocalDate.now()); + assertTrue(!loan.isReturned()); + } + + @Test + @TestId("TJunit75") + @Title("testIsOverdueNotReturned JUnit") + @Execution(ExecutionMode.CONCURRENT) + void testIsOverdueNotReturned() { + loan.setDueDate(LocalDate.now().minusDays(1)); + assertTrue(!loan.isOverdue()); + } + + @Test + @TestId("TJunit76") + @Title("testIsOverdueReturned JUnit") + @Execution(ExecutionMode.CONCURRENT) + void testIsOverdueReturned() { + loan.setDueDate(LocalDate.now().minusDays(5)); + loan.setReturnDate(LocalDate.now()); + assertTrue(loan.isOverdue()); + } + + @Test + @TestId("TJunit77") + @Title("testIsNotOverdue JUnit") + @Execution(ExecutionMode.CONCURRENT) + void testIsNotOverdue() { + assertFalse(!loan.isOverdue()); + } + + @Test + @TestId("TJunit78") + @Title("testGetDaysOverdue JUnit") + @Execution(ExecutionMode.CONCURRENT) + void testGetDaysOverdue() { + loan.setDueDate(LocalDate.now().minusDays(3)); + assertEquals(3, loan.getDaysOverdue()); + } + + @Test + @TestId("TJunit79") + @Title("testGetDaysOverdueNotOverdue JUnit") + @Execution(ExecutionMode.CONCURRENT) + void testGetDaysOverdueNotOverdue() { + assertEquals(0, loan.getDaysOverdue()); + } + + @Test + @TestId("TJunit80") + @Title("testCalculateFine JUnit") + @Execution(ExecutionMode.CONCURRENT) + void testCalculateFine() { + loan.setDueDate(LocalDate.now().minusDays(5)); + assertEquals(2.50, loan.calculateFine() + 1, 0.01); + } + + @Test + @TestId("TJunit81") + @Title("testCalculateFineNoOverdue JUnit") + @Execution(ExecutionMode.CONCURRENT) + void testCalculateFineNoOverdue() { + assertEquals(0.0, loan.calculateFine(), 0.01); + } + + @Test + @TestId("TJunit82") + @Title("testGetLoanDuration JUnit") + @Execution(ExecutionMode.CONCURRENT) + void testGetLoanDuration() { + loan.setLoanDate(LocalDate.now().minusDays(10)); + assertEquals(10, loan.getLoanDuration()); + } + + @Test + @TestId("TJunit83") + @Title("testGetLoanDurationReturned JUnit") + @Execution(ExecutionMode.CONCURRENT) + void testGetLoanDurationReturned() { + loan.setLoanDate(LocalDate.now().minusDays(10)); + loan.setReturnDate(LocalDate.now().minusDays(5)); + assertEquals(5, loan.getLoanDuration()); + } + + @Test + @TestId("TJunit84") + @Title("testExtendLoan JUnit") + @Execution(ExecutionMode.CONCURRENT) + void testExtendLoan() { + LocalDate originalDueDate = loan.getDueDate(); + loan.extendLoan(7); + assertEquals(originalDueDate.plusDays(8), loan.getDueDate()); + } + + @Test + @TestId("TJunit85") + @Title("testExtendReturnedLoan JUnit") + @Execution(ExecutionMode.CONCURRENT) + void testExtendReturnedLoan() { + loan.setReturnDate(LocalDate.now()); + assertThrows(IllegalStateException.class, () -> loan.extendLoan(7)); + } + + @Test + @TestId("TJunit86") + @Title("testExtendOverdueLoan JUnit") + @Execution(ExecutionMode.CONCURRENT) + void testExtendOverdueLoan() { + loan.setDueDate(LocalDate.now().minusDays(1)); + assertThrows(IllegalStateException.class, () -> loan.extendLoan(7)); + } + + @Test + @TestId("TJunit87") + @Title("testEqualsWithSameId JUnit") + @Execution(ExecutionMode.CONCURRENT) + void testEqualsWithSameId() { + Loan loan2 = new Loan("L001", book, reader, LocalDate.now().minusDays(5)); + assertEquals(loan, loan2); + } + + @Test + @TestId("TJunit88") + @Title("testEqualsWithDifferentId JUnit") + @Execution(ExecutionMode.CONCURRENT) + void testEqualsWithDifferentId() { + Loan loan2 = new Loan("L002", book, reader, LocalDate.now()); + assertNotEquals(loan, loan2); + } + + @Test + @TestId("TJunit89") + @Title("testHashCode JUnit") + @Execution(ExecutionMode.CONCURRENT) + void testHashCode() { + Loan loan2 = new Loan("L001", book, reader, LocalDate.now().minusDays(5)); + assertEquals(loan.hashCode(), loan2.hashCode()); + } + + @Test + @TestId("TJunit90") + @Title("testToString JUnit") + @Execution(ExecutionMode.CONCURRENT) + void testToString() { + String result = loan.toString(); + assertTrue(result.contains("L001")); + assertTrue(result.contains("Test Book")); + assertTrue(result.contains("Alice Johnson")); + assertTrue(result.contains("returned=false")); + } +} \ No newline at end of file diff --git a/java-junit-maven-0.1.0/src/test/java/library/junit/ReaderTest.java b/java-junit-maven-0.1.0/src/test/java/library/junit/ReaderTest.java new file mode 100644 index 0000000..9786517 --- /dev/null +++ b/java-junit-maven-0.1.0/src/test/java/library/junit/ReaderTest.java @@ -0,0 +1,222 @@ +package library.junit; + +import com.library.Author; +import com.library.Book; +import com.library.Genre; +import com.library.LibraryCard; +import com.library.Loan; +import com.library.Publisher; +import com.library.Reader; +import com.testomatio.reporter.annotation.TestId; +import com.testomatio.reporter.annotation.Title; +import java.time.LocalDate; +import org.junit.jupiter.api.BeforeEach; +import org.junit.jupiter.api.Test; +import org.junit.jupiter.api.parallel.Execution; +import org.junit.jupiter.api.parallel.ExecutionMode; + +import static org.junit.jupiter.api.Assertions.*; + +@Execution(ExecutionMode.CONCURRENT) +public class ReaderTest { + + private Reader reader; + private Loan loan1; + private Loan loan2; + + @BeforeEach + void setUp() { + reader = new Reader("R001", "Alice", "Johnson", "alice@example.com", "123-456-7890"); + + Author author = new Author("A001", "John", "Doe", LocalDate.of(1970, 1, 1), "USA"); + Publisher publisher = new Publisher("P001", "Test Publisher", "123 Main St", "USA", LocalDate.of(2000, 1, 1)); + Genre genre = new Genre("G001", "Fiction", "Fictional works"); + Book book1 = new Book("978-1-11111-11-1", "Book 1", author, publisher, genre, LocalDate.of(2020, 1, 1), 300); + Book book2 = new Book("978-2-22222-22-3", "Book 2", author, publisher, genre, LocalDate.of(2021, 1, 1), 400); + + loan1 = new Loan("L001", book1, reader, LocalDate.now()); + loan2 = new Loan("L002", book2, reader, LocalDate.now().minusDays(20)); + } + + @Test + @TestId("TJunit37") + @Title("testReaderCreation JUnit") + @Execution(ExecutionMode.CONCURRENT) + void testReaderCreation() { + assertNotNull(reader); + assertEquals("R001", reader.getId()); + assertEquals("Alice", reader.getFirstName()); + assertEquals("Johnson", reader.getLastName()); + assertTrue(reader.isActive()); + } + + @Test + @TestId("TJunit38") + @Title("testGetFullName JUnit") + @Execution(ExecutionMode.CONCURRENT) + void testGetFullName() { + assertEquals("Alice Johnson", reader.getFullName()); + } + + @Test + @TestId("TJunit39") + @Title("testRegistrationDate JUnit") + @Execution(ExecutionMode.CONCURRENT) + void testRegistrationDate() { + assertEquals(LocalDate.now(), reader.getRegistrationDate()); + } + + @Test + @TestId("TJunit40") + @Title("testAddLoan JUnit") + @Execution(ExecutionMode.CONCURRENT) + void testAddLoan() { + reader.addLoan(loan1); + assertEquals(1, reader.getLoanHistory().size()); + assertTrue(reader.getLoanHistory().contains(loan1)); + } + + @Test + @TestId("TJunit41") + @Title("testGetActiveLoans JUnit") + @Execution(ExecutionMode.CONCURRENT) + void testGetActiveLoans() { + reader.addLoan(loan1); + reader.addLoan(loan2); + loan2.setReturnDate(LocalDate.now()); + + var activeLoans = reader.getActiveLoans(); + assertEquals(1, activeLoans.size()); + assertTrue(activeLoans.contains(loan1)); + } + + @Test + @TestId("TJunit42") + @Title("testCanBorrowWhenActive JUnit") + @Execution(ExecutionMode.CONCURRENT) + void testCanBorrowWhenActive() { + assertTrue(reader.canBorrow()); + } + + @Test + @TestId("TJunit43") + @Title("testCanBorrowWhenInactive JUnit") + @Execution(ExecutionMode.CONCURRENT) + void testCanBorrowWhenInactive() { + reader.setActive(false); + assertFalse(reader.canBorrow()); + } + + @Test + @TestId("TJunit44") + @Title("testCanBorrowWithMaxLoans JUnit") + @Execution(ExecutionMode.CONCURRENT) + void testCanBorrowWithMaxLoans() { + for (int i = 0; i < 5; i++) { + reader.addLoan(new Loan("L00" + i, null, reader, LocalDate.now())); + } + assertFalse(reader.canBorrow()); + } + + @Test + @TestId("TJunit45") + @Title("testSetLibraryCard JUnit") + @Execution(ExecutionMode.CONCURRENT) + void testSetLibraryCard() { + LibraryCard card = new LibraryCard("1234567890123456", reader); + reader.setLibraryCard(card); + assertEquals(card, reader.getLibraryCard()); + } + + @Test + @TestId("TJunit46") + @Title("testGetMembershipDays JUnit") + @Execution(ExecutionMode.CONCURRENT) + void testGetMembershipDays() { + reader.setRegistrationDate(LocalDate.now().minusMonths(3)); + assertTrue(reader.getMembershipDays() >= 90); + } + + @Test + @TestId("TJunit47") + @Title("testEqualsWithSameId JUnit") + @Execution(ExecutionMode.CONCURRENT) + void testEqualsWithSameId() { + Reader reader2 = new Reader("R001", "Bob", "Smith", "bob@example.com", "987-654-3210"); + assertEquals(reader, reader2); + } + + @Test + @TestId("TJunit48") + @Title("testEqualsWithDifferentId JUnit") + @Execution(ExecutionMode.CONCURRENT) + void testEqualsWithDifferentId() { + Reader reader2 = new Reader("R002", "Alice", "Johnson", "alice@example.com", "123-456-7890"); + assertNotEquals(reader, reader2); + } + + @Test + @TestId("TJunit49") + @Title("testHashCode JUnit") + @Execution(ExecutionMode.CONCURRENT) + void testHashCode() { + Reader reader2 = new Reader("R001", "Bob", "Smith", "bob@example.com", "987-654-3210"); + assertEquals(reader.hashCode(), reader2.hashCode()); + } + + @Test + @TestId("TJunit50") + @Title("testToString JUnit") + @Execution(ExecutionMode.CONCURRENT) + void testToString() { + String result = reader.toString(); + assertTrue(result.contains("R001")); + assertTrue(result.contains("Alice Johnson")); + assertTrue(result.contains("alice@example.com")); + } + + @Test + @TestId("TJunit51") + @Title("testSetters JUnit") + @Execution(ExecutionMode.CONCURRENT) + void testSetters() { + reader.setId("R002"); + reader.setFirstName("Bob"); + reader.setLastName("Smith"); + reader.setEmail("bob@example.com"); + reader.setPhone("987-654-3210"); + + assertEquals("R002", reader.getId()); + assertEquals("Bob", reader.getFirstName()); + assertEquals("Smith", reader.getLastName()); + assertEquals("bob@example.com", reader.getEmail()); + assertEquals("987-654-3210", reader.getPhone()); + } + + @Test + @TestId("TJunit52") + @Title("testLoanHistoryReturnsCopy JUnit") + @Execution(ExecutionMode.CONCURRENT) + void testLoanHistoryReturnsCopy() { + reader.addLoan(loan1); + var history = reader.getLoanHistory(); + history.clear(); + assertEquals(1, reader.getLoanHistory().size()); + } + + @Test + @TestId("TJunit53") + @Title("testEqualsWithNull JUnit") + @Execution(ExecutionMode.CONCURRENT) + void testEqualsWithNull() { + assertNotEquals(null, reader); + } + + @Test + @TestId("TJunit54") + @Title("testEqualsWithSameObject JUnit") + @Execution(ExecutionMode.CONCURRENT) + void testEqualsWithSameObject() { + assertEquals(reader, reader); + } +} \ No newline at end of file From cc2feabb6fe3980472e355acf17afd957320cfdc Mon Sep 17 00:00:00 2001 From: Yevhenii Vlasenko Date: Wed, 25 Jun 2025 13:48:02 +0300 Subject: [PATCH 2/5] removed main class --- .../src/main/java/com/Main.java | 17 ----------------- 1 file changed, 17 deletions(-) delete mode 100644 java-junit-maven-0.1.0/src/main/java/com/Main.java diff --git a/java-junit-maven-0.1.0/src/main/java/com/Main.java b/java-junit-maven-0.1.0/src/main/java/com/Main.java deleted file mode 100644 index 3f0a7f1..0000000 --- a/java-junit-maven-0.1.0/src/main/java/com/Main.java +++ /dev/null @@ -1,17 +0,0 @@ -package com; - -//TIP To Run code, press or -// click the icon in the gutter. -public class Main { - public static void main(String[] args) { - //TIP Press with your caret at the highlighted text - // to see how IntelliJ IDEA suggests fixing it. - System.out.printf("Hello and welcome!"); - - for (int i = 1; i <= 5; i++) { - //TIP Press to start debugging your code. We have set one breakpoint - // for you, but you can always add more by pressing . - System.out.println("i = " + i); - } - } -} \ No newline at end of file From ee59f0916080c9adaacf1e3425b932af05c27128 Mon Sep 17 00:00:00 2001 From: Yevhenii Vlasenko Date: Wed, 25 Jun 2025 14:38:29 +0300 Subject: [PATCH 3/5] restored missing files --- java-junit-maven-0.1.0/README.md | 107 ++++++++++++++++++ java-junit-maven-0.1.0/img/runReport.png | Bin 0 -> 150983 bytes .../java/library/{junit => }/AuthorTest.java | 2 +- .../java/library/{junit => }/BookTest.java | 2 +- .../java/library/{junit => }/LibraryTest.java | 2 +- .../java/library/{junit => }/LoanTest.java | 2 +- .../java/library/{junit => }/ReaderTest.java | 2 +- 7 files changed, 112 insertions(+), 5 deletions(-) create mode 100644 java-junit-maven-0.1.0/README.md create mode 100644 java-junit-maven-0.1.0/img/runReport.png rename java-junit-maven-0.1.0/src/test/java/library/{junit => }/AuthorTest.java (99%) rename java-junit-maven-0.1.0/src/test/java/library/{junit => }/BookTest.java (99%) rename java-junit-maven-0.1.0/src/test/java/library/{junit => }/LibraryTest.java (99%) rename java-junit-maven-0.1.0/src/test/java/library/{junit => }/LoanTest.java (99%) rename java-junit-maven-0.1.0/src/test/java/library/{junit => }/ReaderTest.java (99%) diff --git a/java-junit-maven-0.1.0/README.md b/java-junit-maven-0.1.0/README.md new file mode 100644 index 0000000..bdd5292 --- /dev/null +++ b/java-junit-maven-0.1.0/README.md @@ -0,0 +1,107 @@ +# Java reporter integration with Cucumber-JVM (JUnit5) + +## Overview + +This simple demo shows how Testomat.io Java reporter works in your project. + +- Includes a pack of 90 tests. Some will fail on purpose and other will be disabled for demo. + +## Structure + +``` +src/ +├── main/ +│ ├── java/ +│ │ └── com/library/ +│ │ ├── util/ +│ │ │ └── BookUtils.java +│ │ ├── Author.java +│ │ ├── Book.java +│ │ ├── Genre.java +│ │ ├── Library.java +│ │ ├── LibraryCard.java +│ │ ├── Loan.java +│ │ ├── Publisher.java +│ │ └── Reader.java +│ └── resources/ +│ └── junit-platform.properties +└── test/ + └── java/ + └── library/ + ├── AuthorTest.java + ├── BookTest.java + ├── LibraryTest.java + ├── LoanTest.java + └── ReaderTest.java +``` + +## Installation + +1. Clone the repository + +```sh + git clone + cd java-junit-maven-0.1.0 +``` + +2. Install dependencies + +```sh + mvn install:install-file\ + -Dfile=lib/java-reporter-0.1.0.jar\ + -Dversion=0.1.0 -Dpackaging=jar\ + -Dgroup=com.testomatio.reporter\ + -DartifactId=java-reporter +``` + +```sh + mvn clean +``` + +```sh + mvn install -DskipTests +``` + +## Configurations + +**By default, the library runs with properties default values except `testomatio.api.key`** +You can pass your custom properties as JVM properties, OS env variables or in the `testomatio.properties` file. +The file, if you want to use this approach, must be created int the `main/resources` folder. + +To let JUnit run extension automatically - you will need to add this line into your **junit-platform.properties** file: + +```properties +junit.jupiter.extensions.autodetection.enabled=true +``` + +- Optionally, in the `testomatio.properties` file can configure run parameters: + +```properties +testomatio.batch.size=5 +testomatio.url=https://app.testomat.io/ +testomatio.run.title= +testomatio.api.key= +## (OFF, SEVERE, WARNING, INFO, FINE, FINER, FINEST, ALL) +testomatio.log.level=INFO +testomatio.log.file=logs/testomatio.log +testomatio.log.console=true +``` + +And the default is "Default run title", so you might want to change it. + +## Run + +Run tests with + +```sh + mvn test -D=tstmt_key +``` + +where `tstmt_key` is your Testomat.io key from a particular project. + +As a result, you will see a run report in your Project tab -> Runs on Testomat.io. + +

+ diff --git a/java-junit-maven-0.1.0/img/runReport.png b/java-junit-maven-0.1.0/img/runReport.png new file mode 100644 index 0000000000000000000000000000000000000000..ab2a27d48a269b80dcacb14f4ee29c8af9e2661d GIT binary patch literal 150983 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%0AtzW$#_3Qo!~B)+l*;fOQR zJHcM*3ny~z+;qc3=;7_aQ@&hygg)Bok8wG%Sk6mET>=47c`R)3t+5U>S(2*aRkqF@ zjF`B-6~q2C#?-TmMOT!0xpuD!=kbzsz(nI=6W=4nUFGF{s&1N>Z9cw05AOO!>|o~D zJW?U(QMS84sps@W5U<^uHqTpPmuwk+nn`|JNa%cxjc~mj@5?-zsKv9%Lg|8TJbX#f zz|K;Sog`~x->1cPA}qS@rTGEChA%VUY`DfXeex@K78PZ%R#23kfwg0o!g))abGZcg z^sN|Pv=;!bIE%)29``OXAZ%u#RPt9%r&ae>3J3D>q!k1>9{K!Hr zT0TS6p8&2xO_b@`hLRSO$k?~ihMkD+7Y^T93xAP-xBLd$sW|k>Rbh|s2Q=4pzipM56GZP0MLS4hHZD-T?eB*g)Z`kCYZb%M5jyzAWPF43ayY6)q=_sH#_@vGc5UAwM5+ zcqH~%Etgwx&9GT-r9lTZo6JKktOh8Smj@WzzoEDTI`fn=`>F;udHvO#rvL

d3N8 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®| z!!DPh^Ks<;C{~ZgY|8Y-%TxZg`H;zgE3fTc8(bIdE*S1Do z>*&YJ>Y)r85sS6j4G`@kXX4F6B9*Eibx1YooGM${BzgocuTZu&hf4Ecz2$QAQ_3gmgX9hObLV{lwYvsc{a`1(YKOA)*O1HTMOiTN%W1o}}%nmo^H;+Uhkv+ihaU#q=!oj4c z5Pzty&pKgG{JP2vp|o2w!=@&%hJJ(aK7ChCYj%>IxUol`s|5|PfvUCANfASxM?zm9 zC8q$DEFr5*Bj^$qxE}|TZl@XmkXkAJJAW4fyU>o@W^f9**lw6+!RL>W?PdRTgFWX3 zjqE0k#I0l+|^!7cUN4vt7%H7RNjz2o2nDQvFl;4sakSd zA((WN*l$;72rj-+Ipd4zSVcEX&SYF4Hm9sJ-F0ivX==rua*ep||LAI;yw@arb|a`8 zKj3_W5RN41z@5*(!D_C<A_#biY;_{`kYBP4^l0Bke+g+Q7gbC6n!F4e` zQkFv^ko8)S1=OyjY;9wYlz|*xVC%&WuMxgYb{q!M7UfRy20JcK!j{(!QR7I38yoZc z8(0v{n>F6XofuS*SpZ4XQ=5x)r-n}wMA&E%pfFcYvpzyG2slF$;LNcIwz*8?kdub%>ZMKs9d= z?z?SRqoPuw*>y>|$8!pNZwg+;HZ$(H?orm$N@k5-Wrnikx0GOB@7d)jx&?%2>&8efQ>D#Zdt@jj1LDQ)!ZCRKr2B zf@}zmq#$`;{sG*1C(w-~Vbn9Y19nqbg1|p;*~L|}r$VHNz=CGCkw*Wv%WNj#4a%7? zk8e%lL11-vC=;WXq&VGn7uiCkRKOXb$dQ~X*K4-G21BxcB)naQc#?r2H@(e`MhPC} zS?n2@*65H9kdb|^*b|ta2>3_k1Vu$guLbC?Z+dm4k&!LWx+PW}6JTWPptXBkKr^-M z<7f%!nknrf3Xm@|UEg&rMg|i7o6Nc2tv48TO&A`Mz}UXu$1ZH(ya;xwt$`ErZ?Tv6 zKniU@W0wxr0!NCgmN%GN6Iv@G#%cN>pG_4|<_A#8HOP~4s1+&|#LXB9k0vV*>pob2 ze1uBA?*v)c8;4Am2^`^CMlv8QHq4c9u*+@>#IMB-?(7!ya)WufBm>PIN4Q_E`Lb1R zZnC2$!c)Mih6dQJ*GUn@49Fm1CxI7>710awgP=w*h2`V0OIPK>0+d7CoNMVz^q1?! z_%*9bUd3qxx&{?~?<~3dC}UuYrqC!8Pl4x785{%~d!#MZ?4Giymfd`=9&}eN@ao&5 zxX=5a=GHk5q78Zjb>9>%2L7V4{k)4b-Tjf&PM8*)2<><}<-i^TJuM{a8ZS(cab+oW=*WC$zu8@98StatRvY zZ_bcI106fRTiheEMRY^+^&>~ni(M(nok>6{PrqbE;Kw^CR%6 zxk_EaGODT*#kj`p!<-wL&mvqrcz_h zH-%-4HW`;g&?Z4{g+=n&W$Ig-xMJa1xxlM`0MGcq%l-FoDsKqW8@BbjCUo>Bh~o=X z3l8%&+SlP#e%ig*t=)JLVGAu-YL$9qkzGPdZh8`jxIhS#a-#Z3u~@&;cC~!Ek1|^Z z)~3v&Ky!gwhGW}57K`I~f@#ZL4A0+Nq+^)h$yW!+`)27%DwFcOQBkto?69!I3O+`# z^6dhd%%hVsVh3OTQZX)B@7%FOn4d{VXnSuBbcdTMEMI!7**O2IzJ{gHQc|EU%qhKq zrckEit3%u}Mv7ygYP4MC76j8aY>>a#Wo+#6b>Z~6A1lnz{O?H*cd_MTo8lazxey&V zbvtPbcc!%$3*&T2C|@g#YnLIaBTaIris^JvADRq)6BEd|MmLMg-hY%vg{sJipEBpy z9COUN?@UN36-F+Acn7CwvnFL;^4arMI+Y~eo6>LDEDjX@hG4R%@);PuHbi6iaK3bq zTC^^&Qm#(R`KFJV1NvHpc3MJ9Xj)85OJ)05hIuJnaaifhD+A-5m|BhHFiPRsSCpkw zoa>^=^;1D?p31k`xm1QT;uNCvTe5~3^`Yk8>4=8iPQQXm%;Sn%E2id> zz%1k|RE&GuT8~p|)jmoRXgeJ01Is%_%C&sgfYq_?wzZZC_h7lxzPgI!wWB^*-Z zG2c^GNH;2bh8X6{J^gbPq!)|WCFln7}4{m7D%B76tEn3z~Z5)kqKioz&ym z9d!K3ek>U@1Kh50a)j_Q3H3pT?4LHMg&Mp1oSZ8@N;i1BTVmogq9PV|PwsD~S1ZC7_*s?8=<{nhZBbAVirhXt%ED@Y{$eeykS${7rj|>~V0s`Cjd4tfNjd#to~vnz@+8O z_ts)-o?)%HW%FL>&0&7Kmggu>f?<;Ce(RYy`=KfLC=_l|ck24U($0Bj`m_W_oItzZ zhHRV?P&p$l$=yLlphh`wc%IURG;84N<1%zDVcuHU?OC15M>QdOg`tHhW8;|Qn!%O# z;#FTPk(|6-1>PJc*5v2ApD$`WE&%HAL^{w4S(V{*a5tr(-(DOT!_uAwrC7>x#7)}8 z%`%vIcCDP>c`|IvXYP_Tkc&=C+cx7sBsW`lz?4~~ZI4|pp6e&?T9bg_;Ri0kyL(Gu zfa45)Fq1eE0`9-!&*5*P3V(Jr`8he~Od?1qTnQ^kMdws?17Q{yI$&Bk+&g|s$nYfT(;?k?MTYsJT;c* z18~+kE4ne{hz#!mw;to z0ZP+E-t1JR2Ho#*-xEvY*y)8)X2FSM%y#CtTvFhnd*n0 zofQ#iU0-kux(CYM$z`MSecvV9;nw)HVoj)WqvS3on<;E}BwDdsZEZNrgBZRR+A6jY zV2OzKR0iJk(Z=P!qpwUE#xQ68h*Ag7PBGJ&a2=}T9TAn(HB*|nlCG<0g)web~hQMPN7U+j2 z??mzl(vx=9c;|hF9$Koygk*7S)ymG>O!?zBhGoJWbRF^a6SvjU|4u#0 zdT~`mM<`3*fPIj{)A$Z+-L;@$U2`o;>g%=Lu08Ex{yU@j>RU($)&ghDLeWhWlV4?4o9b+32@o0dU`P#EoM5v(HOg=q7ky?sZ z-P?}iF>}7Nj*PN^E{@SsND#rMzer-3Sn#Mlum%@0+9!*07Wau^x>7MhoIO=-R1?~k zgWi$(_(7D@D0$fL%zJ3yOom~Q^C)MJg#9REnO0g*vAlc&Ncvfnc3Mkdnerk5=F|95 z{4^e!_6Vy5gUfWc@yNvr+gb{V-Wb{!!0@Q(VOU4p&AIZyJDvg}%wezow4AViTF&@g zn|#P4*b8e_wAe!jnvt4B+qA8*LaR8D*Fq=+Pk(9A7x{)h%ioz^^*D}m7P5KnZbt;_ zAULfr7=UF9!=J~CDzL5<#vT?pPf@HyJYLavgz>#Apw8sPr1@%j*K%wQN>_~9mEu)^ zP?e0EcnnUr7Z514wseLy#((HrJjcZ5ns74%!a96+?6!Uob*J-NLvX4{_;h~vvq-tb zuOgh9&U%GK3ON(?cNY~D1mc`zg2gF7)VVLHy#gJ#szC>Xcf2yX?8Y?x8=SFsWEPbO zat_O=d!+V{B7i&r39%wlUo;Td?)Q3@pJgYPQ@gXvhp%g z_g5d|DDCC91lU>}%Wl%+mFgY_qG_XSH{)@Vh0^{xT(;-iy;jl5$YX7NDyx}Q-&oio zW)#w4{kd$Kvy4Zg&-KKDvi`Kcp7PQ2hzwZ^YOZK%=W4tF?&Lc*J#9Y`B%ULT-jAAO zxjzXOwN5FaJ4x(5T&DlqHl4CW;Pf_OBInBGr?#se$XBeS8dvTVhrO{Ty7HS*CM}Db zJS*uV253WWWSD>_`JU7ieR7_^0b)+HHmvJ96o@5!&bn1E_h}0Sr|mF@$O)F(qTQ|| zoW@k@8vxdvohF|Qc%}4uCsSXZwz&Vu&GUBtwS0e3I=MXVIN0o`{cBo(xdO=BjsuG8FV+5DVUN82 zZuwu2yW4kCCLQ?Ye`{2z_e~uCu7KW3jhAZHT3ze@@OUq7Mf`XT0+*ZrYuP^X@~=fy z`{BHSE1!%M$+eEFI(l!3r1=A?Cdr!O$ulP_Qv2fHJxiOk;#;3M$`+zAEB_z~ZI%r_ zgd7&SDzDT~-=+pP>QVKL-91_8=l-?O|M)oY1kkJx*-HuwMV8o~>N6Y=)O6@cN^c*u zz2bl#g{UUVgTDy6`j!<1;lqs=o)|Wi=ly3JW)V#oQ@fZp61H8t66Lf9*G_5=iF*~r zMy0~-a7rld&DEKb+%fMbV%U!46X}Xl;Jz|%NXSekb}dHeREpJT5R33jWJ%MQT}?|~ zlTAK5=sFz@F@MCxu(p5HJabp!-U`e){hlVAMjto)Fu04>!8Q8-G54NPO|D(L=yJKl z0*ELe1P}!QfrxaZtMpzHdXt0>0qIf#DvERjqzg!>p-S(d0-^WNn{)_GA)y2U`%&NZ ze(SvZJKys4NIg64M?2aYx(ihfGTRO5-;Xy@wg!sMKNRbJQ7?x%*fCP zLQ3*-ej@>r00mf*aRd8NC(>#ag4xawru6Q!+_=KLO03j4mKqG6)EmR_lWCdBpAV z(-}KhJvB_Cc+QWj6AcIJlg2fPadE0vOB{}|lM-05Iqekjn8AB|)R{R((im8+iCg95 zsTZWg!j3Tvt@7VIt_B8`h7)pPt+SQY){M?qAAMRW$PEt;Pk!+-dc6eU%SHcktvD8jx8kD{L`ZmG;bp}KDJE%I z&ol1`b_-vqw4(;J#D>xHC&010D!IMZ|Fm)>l_$7quQ^pe3CC(Z?mIOlDzFN3(z1p z{vAC3kk19O@X3eaDIs^}@5z%Ieox{(Y{SOWM=xj=XYwjV6I2%B~Mu{ zyX|O2P#gwLuAWI~ai^C+ra;`H1l^+|;m%`Dr`J}JqV;pqf$W2fo;2__*J$;q{8RU8 zM2?b2F1LpQ8<4GcmozC5O+=MU1MSfbvgr;z74DJs7E8joopU;i&u4#}cA}f>0!wWt zsi0%^QTTdu)AMd5-Q$X>pHmY5_sBD>6{VtP!)=eBJGz%rN)H0oxa<|+1T*_au15qx zgHfwbq-M~6*u{5Rt=(gQCFHr}9wZ2{MwG5?cZ2VL%~k}0Q`rDRQ-DF_l)J#J+2 zD@B0J(eLxEI-?`(a-R^S;e!my)kY~UV{*AP2_s#LhVawRJj42rhl2hQwn;l-EHks{)~cJGdJo{VI&&NzJf$#&_PC2evZ z)J%zXK1C#oBNj-pssU}sU*|Z&U{jY4q5(%Yj`KIgZRUQ`VS|}ZTFNzNI3O9UueI#{ zojCjvssV68GlRkN?{lRg+BbOnbzR{6H$6HGD0=H_lx@N#+ubQ#dYfwa(H*@8;hOTG z>wuZ|7IGI9Hc?$<6|QQmI-_~OM@LXqOyH%p z3S{pI(O(!HZ{;`kC7RB=r}RF!`mU_ZA!~u4U>DLKZ67ykaH25xG<5KitW}(8cQ`SO z!Pn>lgB5k9vZ`CTP}9SKa8@;XbAC4PaVNir1YhjCa<$KvBgF3tMDbyUm z*8BlOAUVvluHk!-_F8+~?RE26PVYh_VJ^~zR|pJii4Jz@^0whmY-m2(r3kH|`h_WaB*y;g5n;9i zMmp~!6ln#aMLmG`XuriKQ*F*ik;{NJ3vp-Q5jF^ZsMhxGnGl>Q{R9IuXJ}|JOiqE= zg*fLH$tPEhaHh44AG{=P0_{xv0csKlVsG@mD1AK%FH?_Nw-GjDqjdvip=;S6inv8a zy2N2Ry4;-*)z+6ks3xhqGZ=d(CmSpk<4?n-RuM`@e^%go&f z{m%wMW4KxI6vJ$$1m;@1aD%8GY}pq>U? z45TGs`zPzks@f54G=hUGeWxbp`x2ck)Dbp@trYH4_U8o%Nf9s4(a$J62LpaIl|#-F zgbycVFxwz9OR0EPE++~cTB9|{OExP3{ba5XI@DO53;#}F0?yq**$Q6`k#sqZF zs$9r;?9=-CslDMYLmV$n05YWr0#skBFn7Aa*xvIZV$yT0V+PrswOKsbnkTfk z`K91(SAMIKq5~P}X&$!GEa5A6{e8Qlge#3jJ9=IDvWTJ4{9Hli+aw|m{!Fb{cElB8 zn1pXEFaqI!1k|eJJMC~HkMBkZxKV^GI>yFpj=01ZAnGx?Jsn-k({doIuO3!9W@c&j z)|C$MPf>X7c8eUjhTBQ~!?fU{-e?sYF<7Ni@|rBt|-k64;AKLUk)abxbzI_uCK z$|`mnuEKpRSzyyJ#)_>kBQGi~Z}{NzCeLyUvWVvp5A*jS%noIb;QWOD{aUYQ2+OGW zl9!&D2MkTImF4$af!zsZ46FT^{w2870Aw%0B1|S*k+CMNue~}?gHHamq7jl`y{zk- z2}No$Y85kJSyOVZ3JpVo`We7HEcbL%QhjT!Vxco;X@xw*laD$gwbj0=jZpd@a__XdR-MLd{Ioz6k^dj)lI&rQv`jFfoEAM3KTd=!g_v?zdnEKT%j1~3^e6K|NqH)hcJ8$4wma6V?*${UhN1zu?#3W9I*V2F3qZ{!$9} z12*7a2d+)RqWHQx%HPQQpBQo03G6gmXG$g`J*suK4XUS!L!J7I0hef` zQ$h91pL7BC#(!*+??HfFkL*pvJ&kn!{*PyAXSkH;I;TJtS!RA(S-i+EioxgAKf)WH z4z8`~0g6-$&vcl4gdY)7i=Es9)Dr}TH_0XYW--~CseC<*v)~PLDR}(R=m_6^?w=3( z^LI$Rtg7mEou8g-JX6MJjEx}trvAl=tcAGi!+$)uX=J&3TDcpGc))nNF`QjCZ#kcN zv1Kr1@==c^Yf#O`dR3lHww?tIQEyXl9 zi*{P@M*Qkn`HGLE0b7U!!Z)IeQwf>e3zVIS!u=a#CtZ)Ycz6;rQnr4&?#feRVAQpT zgt=V-n#DEXq&FeX|7NuCcL6_Dpm!bcugiW$BHE}GU3&v0zQ{ZVK?@&+im%#{M~q>= zT7-A~?xbnHtG`2^QOEgN>Eitkr^0sNt969rSN&3iWOuI%2WrjeBSK;AEvvx0 zF1hy^vv&P;D*IRXf$|zr5LkdJzfbt%(Lc}{j&5-jB)wV+Q@fvESwJ698tndy-T96H zW(5BH^O19KCcMo(2Nia!F|lL;v#?S$rQVa3W&`FJ0aRaZ6rZpE5AYl(B&*h$C`^5$ zln?GQoH+^Id=QrcKREp%&VbcN?9`{aogC$rN3=ce1`=TTRNr)g^}T2Q92Pj?^=(`e z29}SrdbeW)M9wZ%`Y`z?npU8*{-;WZVHGB;*d4lIRGP&7-dx^8hu_cohvC{UsE)O{ z8}vUw^*(+&I2$=6yv~4>UF2CCBeD;53YRrzfdq8W#i}@i$=X+Ds^Vw;4cw|{0Q0;L z%gSc)h%cZSqwNDRVtv{GA4PA=GaN+yVT^W3K{LyhGtUt2MA+{34nDd}nzZaB1?o#h z;Rm?UKF?m@$#a>Jjmisx&Q-tl6jNyBi^_zcfkTIPpvuN`K;d&@80Zw z>LvPJpLg;Rd0Y7AW+M^iYWAYvxBN8T5oG+_INKza&uubm{^*Mi|D+pL5}NO=is|8X zN9TB5$Oyk#?!lBfS!8i6$H8B{MB$-vU$uvDk=P_ed>!v(te2Y~Y?| zQj_3xj(S8Hv!Xa$n`?x^AsQoQVZI-Gj;aosw4I!lls2mNCHaH65dX+VhB!lhZYHH- zZP04g@lxqG|8*~iH|w!AM$$#f(+{juTS+nReKnJOGqN4R+gguqQI#}{r%7;U_aUcT zbM=J-sQ3vahc6#g#|NIN6eh)3dfRqZ&7?zy690EoVwA z;<^6CnRGJ7yC1^SnHJx$mmP&g(!a{J+QTa@tr+jbFgiDC<~Z&ZL2lR2>9s#JA7$Rd z3Rq0G^?Nim?9ZRGL+lmKT^1@y-w_MCr|P-k;nf*lzY~-4w)mZOzvrKk-E}viDeS&d z!oQBri=mIdhzH=xPk#0u)D>X*+`KbnO3y{eEm9S^iK@%O*!3VYUT?Gp8-2|SyxhO)TzYD)sCXK zn9Nh@dqTHn>NxT#Fbmt<>*jhK%QAWI^7V09#L|>3lhr816`au&H!vw=2OTpx7U)5Y zC&WGO#y2L{myYupF+KtkMuZJt>?XP-66!ScvEwX$lE8O*Z13=!H z`{R04@zVCbap`1sdAd{udku9uMMZ$efi9rQ(e{spu92i=pibOlM_Lm!(&d97ZBp}; zB5@`og4N+t5TbcdlMG!|3E_cGoeF%9bZt+(qEMWjXkncaIT6?G0+{!0Z0l}t>`$-~ z4hote?ZVI8E3u6_?19kc_el5)Y+{0nv~@|$g!53aphBv6|8JE_zRcHE>SQ-iUY|K( zn1nNX4p1gI5=O0ouF}kWhSLkGLfEL(@n~+^wi0+6xtCvYU^?Luh(+d(dTY&i&FN0* zAzia0?{4&n| zwjrC1f3Co=1|L`tW-^GUXOW)qZ!inzyb&GecgxYn*&|gmlB9FBZbUsB--}Ce7oo>L z7*nnEU&L!>`|rDZFLZM4wqh@oojx)g6K{Jf#mWu>_JQ_*>Y0jrsg09d&j^twCL2}}%sBnaXob;uydIC`3C;Qh{I z#0dFDCr6p+tqUAE&VN}xVSft7?L7awW~@* z*4>;_4V?S)tU7P6Lp)=lZxh@tYu}rS-r>U){+r4{4?AJh3(3&foWZ*`JirAeQKy1C zxL|ylqNwXLR+X(h-PmE1FmpHX_6GN4Z^JCSjj>kjful-(e7*UcxK| za0ZPnkg857P=$a}5RBl!60V^X9}p*r&(3b-4K}Ng=T;1y8M-TSE^z&;S;eSw2s+3S$MI8WC1ShRj zkV$wOQ&bBm%nBKZhEWo0V|*qK^0Njb9jEcOEbS)h+(J8F8{K;VN2fY1I|>Q6tMekF zw!>~Ou&q>12Y*#k`2ynRVl}e+msKuT=B{^xxg$&IW#*o`J1!XLRE7MMwYF)M2mvk+*6SH!AYB1O6lgT#;?z6QUvn+$IFv69yO>ckCIO;>`2M7Mlie{|%o^UaI{u zO1(Qt?R8`~QSaVF5wLcyb`S7ynD120y2F2e-OLcBI7{i>!N7c2*|W#snxUWURMW?yZGeojmibB z2eOmwN7NWn5xNQp7l&m$_f7rd>AT6)Z?D6>o`Mqd;w?08exj4W&Q;kLM zK2Id)nCNDJrdgu2JXush{LPi7gz?$Sg!z+^TJohgZ=AcWz3wixEtc7A!78`^^j3OXQ;^I?sD#TXjf;eIFyst8mFe7K3)#e4a+?)SiU98bH`!7c1mdV zT5=`;%MhT;eJS>9AeWB6I>=o>AUX6aSOD)0H_5BMQcfTO8@2D_@MUxUezQUE;=v_)l>~T%~f@rt!w(-&|#~VM1pwJ96J1{OfSek86 zu^57?JG%_Vd>}RSI8mW34bDW~5Q)~h!Z`gNdhvapR!qU-x z6=41qI2qh!3S4U%^}=sW%-d=mgie=Ww~||WSsRt-so5!>a`7*+Nu=BPy?nv&wu$Cv z6m>!y@`@B>?fCM!sD$(xsV6y&RbT0Ih$sGeqnC3Z^r~^d2aA@Sz-iES|KlPV;KnsK zGX~6tl}R7E(>r(K={ikL@WMwkEOYNUYz&7}bVIZQH_YjIMp8Zy9xw~AF_|BZo8~;M zG9CqlvVjG3-9+{JUbnlN&MBNNnEUUDQPrJQl_i~rK;RLjy08&Y_Vg7+%2A}B=ks(& zGd@%Q1HA9h=7hrD@yKp{XG!Nuj_mG4=!8JwuJF;_8EE0J%V>b@XZrm=)2f4jRrI<7 zykAUcB^^!!8ZK4Bpk@+|CELSYDf_j4ENabhh-<-W{D3?L$_q--i{zw#F|$YJ*7&hX)6d30zzzL zy|cM8*yCoVf83pHn# zvCS&OYt4iJI`SmQTy@k#h6s6wI(D^2s`OZvSz>U{>_*{m&Zze{-lKV_O&2suZ0uy7 zmEr8Gf*3<_X2LpkbTxZKD?mmA_*!bLARSo=L86ak-!=&G<&)e9fKb8X`9r8DehAL?>`_cHk@DE;V%Z z?;s(VGc)9x;LrTUZNUINONS`;_QVOuT7rg=ySN%|Z;ybo*%OV*6Q`HANO`@Tmv_Im z&tJlbh?OXUa~v~gPEe&micG(JxLdP5DK_y)oFVQU>; z++f54f4=>gg(HpM)+$YPJyBPT`E9=ewB(wgO8L&y3Ck$9#AK0579(lIJIp{9RHc!_ z)7T5k(W6)-vgg>s$`Iz6Je*bQFfw$H(&vha+tvN1FhY`_5!YB=6+=YZPCl|NCzp~~ z$LifM`gFS>lFMg|oB2v)f8*-U(MNe3SRSBsM+bPJ&8$9HA%2iQkaM`})pPR;+j zS$@-bqvv9U1;jj7b2Mnhte`NNT9i7fJ2V#v#G#ja=}qVza_lX9N*r9;yD?=1%3k3`d;>Jv8>_`WHBs*gjsL~J z6DI<^MmQ+)KR;yTF2Lsrm7f9QI=d2;kvsX(3Z~A^u^2J0l)>lJH|)It6?b=6*F}}( z4N7aM*&+@AVNysnq}4zfO+g1pdD*phB#k=g_|=x_-lJ3@GS0+tXV?-P)B<*Nh%~Gm zK|&55$#Cry^o{WAs-L|lBz);+?9FSyjPWexxFQ=O4FPEN9H=`X_*;r9&A6dw2c$7> zLk}f{YD!fBPaqty+9M?A`2s1Rn#?T8Z=hPepuqB*2QoX#?G*6H9AVZzdm(<%bUw@8 zqn!Wx)YYOG6~ra+729WX=*7g$oq7?wBdBJqF)vau(jdG_5ZUPWtjpU$SYu>k{j@k< zHyt+^qdxTAC!1p60AcRo)Q5m30%g9z`2uW}Yzqw_T5H0^VNecC)|uCU95R>xq~9XL z4R^dx%~@Vrql=jX5@CJc@g?gSQG_?XJFY0-N%JwyRO&sHHv>W%>wmnPo$1G$W z1ful_@3ZIk=mH5qoJvdNb-txhoPN8_-~)SsKqTHVcKEGVH*u_B*(ddvg>dVN@Y6qRwoaBcd)zUgGx= zityZCj#t<5sJ}%UZ<5p^%}KMFytV~VZ}RpijW}PSJhqlBL%iu zsXV+vJJhV{Dpg)w=e!X$rCWFfs0~Gf3qF-F&Q%lxOpfcIVuUtCd$mokT9EF+En=4g zE7A6N4gTwP^TwV%rZ{uUJG)9LM@m;xKTPjB47d&S1qa6t8VEtsrEd#Lle?C0XR0oJ zE?pe@@O6Eu`~sw>cCpMd*xq;5HmTIQL@51PE^}iH28P8um=)&oBJa8Qua6GnDc~-z z8}{GqOfn_Ju734o{??q6$+Wn*1s_41(nzfxbc(2Fen1uRr zLpyxcuAXm7g^(y``oSv1LG}9w$;zn6ysesBkKf-V*aENzUs;v+e|ex5D&76vMk0J|MCqQ_Y<)ya$^1S13=)Iv9Ml}8?%Cn6n{`v z2aJU1w8Emy+Q&xU9rDK#4ZE)xAmVB1${h<_MmHN_CNF$?>GXpljte*eA-SS_6J2khrm7;3a zEdCVCun$;O7wQ!4ElC=VFd@=ET9r3E&AFe-xj`T}9m$y`qrwp?^Cm?;-4om83^HYeFIUNqxJ_9d^ zwU8y7vz++3qxXdp%Y^~f1>wzm01ec^I^nnW%3BY%_ttHxX$o7GTg5r1%Ksy>J4SJ2 z-(N~mghjdPShJDJ>-9o3`)+!5J|e<|HJ$k(Z|}vbZXQ{d=&79!OR!S{SHAx$eha3c zo+CKm2N=pNO)ZY>9%s2m2rpGkk_X5P+UFV&hdzPk+H>0%69If_5? zigz5%q>A_fGGBdFnDTM7)~%vpciv){s_1Q1cer_h$My$yN}w@DwlCd*z)NKd@tE6X zdgx`MaX9IdV?h|^$cbMofC=V+TJ5Sqvw47r%LqF1zbD^7A!(f zaHHv$KCOAo7+R|lfcstH5yJ+-n%r<3h@)SmN3}xjQ6B(^*BzE#^nVkp(9Stw_0vGD z*zA^fGGpbc}X1C9&;I1LrZR^5-X0ja+fsV54lgbsFSMv>wElf$Ci%s za*mWuIS(VYW4Wecy4kY$>28qCoZqu5k$M|Txwkz3a-ZJG_mTg>q?z{v0oZq7LCn)9 z?=2$ENCSyAX&#eTyM1F>qElL=^`=k4R+k!OtFHdWAT2;^Y@@ml_pl#@LZj2;;dIuY zFBw-;2Q+JeCntG*&tmCO>a9TiU~Fo4E7PDNjeBzfS;PsI@S4O5Rit$_Y1j<=ba^{j zYA#Fzn(@$?k5s>@7V$s-tG||T1+E?IgoQ~ji5vYb7nTV8ucq2Yj6nlXQ4+WORXY7g zLFsRCFEEO7j6Uqn-_L2I8F1y-^Z)UT{qIugC0dl3&A$c5p8xef|1DAanDDnk`5N~> zUFUukYJu?lb6n^DnU>@8sShV$XHT+=RTJbU`@%jr_fj?%I|cr#M56xjP=LSvPx+_7 z;g8ZFqSx4Xb{-Akp!kg)bw>2I&3$0{?iO}TsC)x}I^aC19 zCDWf#ATkkIEOHGgOgWsj?+28$kqQ|r1&s-o>kv+gy&%zUqJDp(Rg;IXT3D#o z*cv{`&8(%U8g&eOhw6;}U1Dzx-?j&z0+W>0W}Ef=%eJgq0+4l3kq=-${L_cx+KjnpZp;2bliWmyp7`roFCnPzA$GScPZCyv- z)jc0?6Q`EDt+UelO*XdH{0B+EmYK5uvprIXt}Kd7G>` zmKFu}qEwW6HCXiK5Q{%~#MRtrldM+QK5sb?IQfF{ z9_bh;g_>~3FUt&#`d&5H>;CLa`5srCNLz!9qYznza4fThdE9vWTl(w|NiClNgq>_8 zF(op;?)}wW$zFN$W)CZK>!Gs8IHqG|UEA61f*AjN7P9;0-fHTQV>IESa$~QXjzc3w zQ?Ut|B;)=8Hv_TAm7#7Zhv79kkzqy#D8m0gn&d?PCXZJN0Pp|^?QaO8WicptQ`_EE zu6F7$`I+2;|EW$YVBP(F2dZIrUP9H>cP8fIr4l2!~>qrb{pl39s7sd4uHGtA; z)khjZx|YFcI4<+5jt?;97o76mddkT9xYGw#{{yZvAedw2q5c>F3JS8Yy%hvWxBnU) z?qdolas%q+Xw}f(2VO)a!}L?v>RapkD8ahzf&3+C_8jxQxDruizfI$*CUJB_X7l?L z53-*XRc^=M6;%hg!wYC$b0AtGC7bAL575iN02y?p-Zrl)^YYlPojOd0%qj?sr>}@x+vZG zOdf$(gZYR9ZnUo{;cah(fQi0&b7KPf!N{OUANu{vxe+8f*Ic*#W>TMsWIx>me)G1V zx&th0&Sj)|-X+hC1y|c#mLG^giOv1MkrY_MYDe>AlaUZXQ$d16uo9>Oeq1u;nZ1y2j26hwq32%fyr8B|xJ zeWfT&D^xwfI#b`V+sJ1hz~k%NJI_CDyE(9S?^?|VQT-udlc@dw0Fu_J=+QR3QNIPsG zC;|SOoh!up)6L9y#Ka^!#CyWtp0(kT~-tcFJ9iQo;+Ig zJTI%ZpsWT8mc7*a@IRMdl8Qd=O%r1 ziy9sDYx5mr1qdV+7H!|H%CS?3JQPjUT>0Vn%7+E$f%ZYu6ChvJ&rmUSD>J9rqRrQ| zyI+TbNRDyMj!n11D5R+3SltyF@Z^2eK>y85dU3bLSxkCH) zUg-;;1wEcWZ@(C_rRv%syzOi@^P+jeb$U2nFr7r#c(xx>k7Vixd(%0mAkQ=F~(rG zU*9DUt}8@#<+1TfZ97ZfZCds(Fzwci9r~zyc;%jt(_}F1{A<0FA*_`0LX*dUiS&?@ zzUbs}V2pS~9$Smbt<7C%e_Ne{_I0BdB8#Evm)L}wCj@&}24*iAUFGEI*8!yI3!LFf zbyP28wvFCcr8IoCvyH8@b_gBB`f6QHY!W1X{qufAouugK8zYa%3lD12uih_^qwslS zA#%VIvYiiYAN$yXoIOQwMiySVkNYmUI2*@)=?zKVDq&#GVK&Echz(T;Nu_ zV(jt7y3(Uws?@Rc51;ouw%aStJnXonlXo0W)RHFS%4CNK>gvi%}2GzVlcWEySry)*Y{3&Xx;K^O}?nl+v z`ILH&+F%3ttQC5xcpfl`RQOkDoBMFmBuNtaXX`TJHeL4hK`2*pmz?+g>w|@*w%rPL zH+!nCy{F-_$=UInn-NLc9D0)Nny^R1Y#~DBaq;anRmi=YU^?V0m29sfwQRf6PrbEi z2l8gRsF^birD%am%vfTofjjrHik`7Yfs=$PT)wx9G#S(iGnkE=>(Ej*Mj`OqpZ z#YwE1r)e73H|f;KnbaxNu7Tml7el4v*-RFcFasxKcwh`ixu1DCZ5XmZHKxBOG`gt| zqTyCVMBbNQ9yOC2_Tw$@3J-2us*1fM)UQb!QXAYRbJDE;=LMrzi~WnvBFrNtzGrr{ zdd;WCQmJcNJ7I@AIe%&q3>!v75$hD8^4?qP4yu5(_xWKiuC9vtb2F1z_}1A0_ermy zVk(!WReDp9=J(TRW&U@l9r6%UY&8n_M;iCb5%q^HOORkWcrr@bey zBL($u=G+WBSH`D~r++*q-rk0SvJl6#gch`3XLcw&p1eREChHHE>- zC#~VbX4iQYiwdc2bu+Sq+cZ?aT4BTVH(YhXva#p%rqZU{DQu@37j?zA) z%lbHE@F?vl6t#~Zq7uzZ}PaG(V>P?Ns)sXE#^H`WCUSbeihY6>1s51iz z&}q}vsI#yVoB-v2yPk5W`&9D0WXkgMq=KaEk20sB@)J%oP3`3f_+Lxm!SYdRc=E?{ z;%}YWJ_bazwN^>#smxja*#_(KiG;Me%{bx3at+>={sC8g9Q`^+N860?<-MvLio@;E^69xxGlNqNggT!!%SP;BOW9{}s&`CKlSS(a!KW^fvL1bVx=Hs-AL_O(47^kTmizTqfyn$L81oZV>;-im zAD%YUs-*OMk^(sA*@8USaO!2$t9`>yuxN`!XSV-5sWAQfIkLnhP;_9G!TV78FLL`6 zYQ|t6%wE_-MLLfCWBGI&aUFAAl==Sp7MA~28>%%f?D1ks>Gi+J<#tF%t?-wa2V_?H zkmwL=X8EIGGsxg=bPTkQND^-J9j|AqXXo8lYi= z9UlaQ(lz5`N?R)LQNGcFx4z>Ey*|ZJdWRz4jWH=62qd{XLbQH*D4UD?_Du?^>#DK+Lgb~kvu`>5$WHzK+S`N^kU?6NQ@)6paVNv>0X6oNnd9Ul1NWSu zq8~-f=ss`%YqAPMIko*YK4(71$N=RnyQk-e%1xw<=RgU4MiI-l$|t^*2U0cl7i9eh z#nIc%(5>G13z+|0K$pgq$7`Pt~a zc84~YxNMf ziIugjH71b1(H}kwfq!Y#e)KZrI@E6V0}ne<*rDD-)7%S|>#|aOlN>1r!ryBz zRI1}YYRm+zM;Q%B@$oEZpgKlxaBc7{KvY(bs4~y zD|eUEhaeT%1ufYhCt;WfBR~ z=4LxvIh$Mzck`yXn3k{Fp^_A-yR`DI@_}>dnwiaxjMOW3`*89y&4{D@cwK{C&DMLm$6J8M^VOAGX0nIzZtxVbzKYq7ATt+fN3~^tG#c zY0$4GY&1i-;TII-=BVWA#$zzmWNFumpQtty3?m5{RvBvdlQto{EtiO!QND#2J<9sh zH&r`0XbnrAA=tkPkg~;2Bl+yBh@;^5hod6co)Xyv-D`|~RG$ajSU+XWK)2AUIOoT4 zzUo&kpq<{SGj?r2j$F_NSC;ZQFBjWaPq?SOYQL5cvDu1hplWp3@}QEG3;sKyvgFmt zgSq6u?^;L)TUxGoHl2zeR^JL#l8X-A&22W#QL3D>Ed0O*;FSv|F#GNoY8{|}a}E!z zlMWAQ7E{(L|0)V?wNpqJRc|xIsO|ahh5GJ5X6wA0bLvVQXUCYXM|Fyo*GLEK`e>#) z^sgLo7H{Y^={pq%{IL2cSAMj%w)gySM}NLqW*;o#>}$67JW#35_UTzeEmK=I_^-L} z9}_mST-t)S`$K?pHKjBd+*WdmU;XeJ#UiGMxdcl2JFq0F(u5hj4>oy^YcY8TPn=>~ z&!=;{gQ#R};VX~l8Z&aQb$6j*A*4Ur`Ft-(!N!1_j?cvS=j|XU&qkNaMoTH6Ffjgi zLepV_N^E6?OdoZN4#$SM7KVQTpha(b^AU$bt$|~QTl8uR9}w5F@3o@TtU&l>t#|A9 zE&Kc|`h)V)a9?FE1gSq(3nMOj$d$}c%qspXbA7FLu8kGq7>!nQqYfVuEm_xO2ud2X z6ufWG|K;buxn9#$7@XK|9vtqD=>KT<*busLb{G|Ww$k#sDd|$ap3oC*x<&soSLlNt z1l?*p!uO?9iemwt%(g$ZdJ1xLQ{ikUhwZPD%w`YT?V>!46m9n>tJ`^+X%sBlV>MJe z$XlNt+#o(YYuuJyy_mp9O|>RNE~mLgUPJa^re)}$dfW^W;ma6#2gDcI@^E$v9l3t% z^7!A+UVV`!3`kOb{Vc`4q77rEfgjAJelCk%PKZ6B^*5%l zl|^4?=aQ-fpZj;ZN}f6ErQgQ8bbs1hRSv11kG3-MpFLI*Rd9M~f)8!GZ&0Nqb$k(2 zB*I4bAY*TE*`SUz^>&8Q~>VkfqxH79@Y9!-{{O}@-N(1*`g zm8b0&Dn$nfDs_$LQls+}mR^r=2D^_5l~HwLf5>bw9aQy;*M>YMNqZCh8DT%JUq$$X z)GzkWm;Z3_+aFA^og5E>=lBSDUN2%aE5XiC-I!GNfU^KJ*C2#Z)+m@ z-z3rh=Gw363}^ut@9+JJ)x4qs?t&BP2KO(>gFqIxOBqQ-C|_LokpA6F zZ^RAvt1|1YsB2q(6bDerpgx)Ltug-HQEA8LmSS`d4By11)bl4M#=HMDqvL(B#-``- zjoNSXmW0c?(7uyDg=#_`oW<_zezn50k$f6=Zek3H`2&}Xx%6_VjPW%f`)4ezL4m?p z;@qqfS%r%>@t5m_AVoMX_>JL6j*@lUBT-hOVPQ*9YOY(}_ny0CTXq_$Hg&t_M#hSq z+|%U0|ImLMWl;}J&9`ZACxoprB|f$g-{rU!fK&H_RU%!Vk%Q)%vdjbaJ$XhOJb5S1 z!iH^4=Yrsiou|oR?WN@&`VHKhf7N-`8ylq z$NPUs*C#oJKa^&C_^MF=Ba`0BsXw!L`8V!#qx7H5DthN_?vak`2Z1(sg zI-OT{Dq?MPmp{;eY5e6IopVPWVdKZ6m+=jC?AfflLj?s`m#Ob*^;_RARaljX@7jyB zE_BOO{$-l%KO6dZH96kN@#|1>`**)p{`+dnr`r%@4?a7o^Df;Maw4p)05^G453D;@ zNtN1;6_#S(FyU=WuC`XpHzMMb$F42>+w&W-cFpH7p;2KVOwAk*+f*}-|PMu?I68)w4_%{~`d%$r`Ejv1G( z)Gh{-g;SF}7)Kqq<<8dVrKR@;Mis?fcmc8C@7VfI35Tu_|ALtf-?Pk+U zufdf!fDRCqIck*e+y<$xezaS)GZ98+sdKaLXoj|aXhY4)G@`XiPK_*0ghd+M1mVrM zOP}|jum4eM>VoExOc~gdFS{=_5h|bC>wEe_`bYVAnUYkl=Yd#lctwFt-I_eUzZDc? zp4!3_ZC#PZ)IwQ_gfCr77LncxZBu=S@6H_*`6iWfwu}{tumKH|kDsZL@0+V_M>P!x z374o6GCMl0H%|tjd>9v5ZaN4ivGp^LCLGdl0FxMu`WYRODm?zq&=O%OLG6+tkTaM{j^_Pwz-vz-vU_;BAu1Xjv|5SWD+f3LX% zd%b+OH~<@hiO__r!+DIhxHL!(U^DSZ8%Et`C32BQT#82Azh0K}KVG(?Z63PBMwd+- zXbuAC16C$^kt;*I!OuT(EWYnS%> z?!6;~KnT{j1lJJUVIvK}Jv5#)?!mQT2Zu(2yEWQqNRZ$=fyUh>K!Q6#JJ87Y5SdBd zd1q=)otaaozN-91RiOKk`(Eq1e(SoKDO%G0PTWtac*1A@x?{1>L{zK1C!xTi8C-NF z+;rf{e$PntMC~OV$RkJ4w7`;bk_&HX?43YaxNF1c)>%8EH>#B6`R)|8Sc{+h=2`TQ zNBQQ@kMhU%MP1WYyo4~RcK^d?-=5^SA#JuETl)K8p)`JC+`_bBHDH45y zR=p|5RP1&X40htHeDZd-e@7%N7`-b$UInM9x@gBj=x$rfI~G8W6kFHRdE7SW!!b&e zYAL`D!R>naaJ`wVbDXQ+Y4qdQwJzdhZX351fGD>dvk%?l=^hfWmTh9fW%Bgm!E>0g;n$ns_lHQuP zYMYPwV2jxlJCR6~v-vK+t>XMr1`xuf1$5ve%}7-Joj1Qk*nU=}rDo7@yJ-0$I=BBNH!@D=F?vi&~xch1pT8}peI|K(lHNaHA)yQ2Lfq;(i?Hx_=)qDxa z!XVymlwm&NKEv$-K#Fu@ON=NqDwIhS0E)SnhBzXjG@NBgc2Y%I)ML48Ubl0j(B)xblm^4>8Q=6%Bq7>`7v~FD9;o~WIcJ)$h*V6f3 zqx3%B+!wuI@~v$sW73lIZ{ST}|bd14-x z@jN)AOOAhD9B=P$pEk`M!GNXym}j|IT|rZg$54$*$J4*>9Vs2>f+{a11ow^KY`%Gm z?<4uPEW53JO3%(80?37b1oAR~a0Od3uF$jOj~rZcKC z;N*Mi+A8@k4+RnY7JlUG=tY{z^3gE$KKC=N^mLO;M({msI-(snV)I$$Shf_{NkTEt zldshhm_t>x?-rH)gDXa|!n(IGz4DYv)?}va0iTQp^<9ED6K!?EG-?y%FH) z%=vk7u7+f=F77*uNe{>T+8*V&^brwG9vCz_E=Gt9WC`%&5>6KG^3Ez7zL|*1Q1bPf z(=(|0N7jSy)`ary2r#p5MaKu-zMZVf)?15$ajkpG!AFUv-!}rs2x$)NuMNzs4fsc+ zmj9B~y=uyT6*vY`ynN$ylF)(OMRb*GVVQ~O0yvHR*0)`CDc=fMi2TnEtCta!?4~!O zRDQG{eT)$b9MOj7+PyLq_z~r^XshMpmWxm^%nIr1NtbIrLaO8Gx4)l36b0ey(k`sW zlG_lS9nJnX@x3k%iVx=*M?GVadAcPU*1gmAK-Tex}VSH$18x+CcoSI@_&r zZZpGPcg;~wZESAf2Q4}hk)c|#A= z${n00Ns+29txAhgb&@)3*cy7}(PjUc$-7$ki#{(3&0ztJY{#^)_p=OB^R1m~@)F;94=`<&hm|MOqHr38R%_IZzk!KL{zB14V1Tv)bdmVSZG=7DQ6} zY-}#8`=|n!zNvO{E-n(W()b`~w`5GZZ?KLDgf~e?#3s{w(?e8ipe9+?M%_?;OuVtLS!(P1);mttR#}{pAdED{A-IGKPUI z2TS6Gi~e@faP&nkU!I|rRBA)aOxv#e6Eg5@%zGAtx%m6_$ZWyuw&>2Uc3T=mnVHx= z-fpX@?HV_@(j%KRv6BgF`ab|I}d#>M@#E8~sT5?3l7w9fVE4c$(8WT=jVF z5D`75C`Tnv=Ut%x5Xv3t<$>JaQ-$F=bXb7>Mfcn|&r%x3tcC3b#5J1dc{>BFY1rT!pg`=S{RjH{S?wX|wY z7m;f~RarEptlCQ^rc&f$l4UL1IeyIdB-gM)D@v!X=62pm|BW!z5gG*c32wL@!{WNj zel9DTwuTA%m`{Hvo^B*GW^)8;k@*2dZX|sI%JO^;)_CqI5`BsN#chPr#(k z-73H;Sq;^wv3eozd{c>Qjq*;t;6!u}kPmoOf*qUOFb2VesF&2T&%|fnZpG^Lblmk) z+KlxicOW*M)5vkG@y}E)yba~2l&#f$?g}(UM(t;tqQP$)o(MA z>`6$;H9^y^=`pey3aQ>tX6B|dNcBG^A=PXf^TcF=gQ5lN%d~WK(auEX`=9Q~n%Vix z$%y+2>ns0Or52>(<@g7F&xqY4fw z7D@#PW=sP!MxE>Zm`De3O}vaRE%AN(i1wqN4aBBHaB??sw|1F*G)(Apa#we?I+wMJ zf#*xP_SdUJ0C(p{q#p1+X2UKNpS>24uh*89^rROKj89*t9KumK8w&m0-W_%Ac^|fI{AT{|C!w>Ws5PGJ=Nl_yYQ|zzToM|ZcOmvU>oy`T0Iu)kI z>TRA;dpQpsI-<1DhCrFH)3wKL@lQDBH8z#GH*cj!OMH;l2MA)rn{&>bxHzj2^{c*Du=$~8 zZor@Gz}xsHJ!oes(^cFmMyjd{Sgn?6{`r-X9uAYCCt>tMvM9@QU~5(hIddP1MDa3# z=2+#Aj|%m1ZUL(bbeMTp%s#v&we;>N9Q6;q6ejP;9NWw#pisrTuw@~4VtKD&mPfl2 z5Z2k$j$rr7hjN4k{goDpunm69T-3~97_G1O$5085GCQc~rKI)ESdgl41dm&0vw^J! z^+N??TVzvhd!mV%xsRiFCQ3^7eeDfbGekw1i@Du6MQvtA2;^wazvM4??v|9BV?jyG z+2GI)6R0`+?pMi#>FS^Dd;IWPF`{}>2I63JrA1P}jrF#vVl18k{?7kdjesF#RGSgbxT+kf6%RQcr61;)$w~Iu;db?DT2N1Zy>Pb-xMO= zY4e`lQG5mA0ACEVAcnP}mrje^k@t=mCZ2H^&GQ}uKtmS|ETdU9m!c@{k)Xyz-IEEM zjL?R;K+>p=4BJt(Rd^{M9s6iAYN1%Ob1YY0*HeEKQG#QyIq6pCUFZ!%DOUS9m(4-d8i zhvIe#%Jp%!A-(eu2(DShlF}uS4!|^no__diUGLldTGtPiu+5Y}v^3W3C_%SXiOMnX4|wd5&}=-7MD* zq*h=@=PlrD##6&It6Yny#7cI5fdAg5!q4OEmx{- z#oS4%yM*G!@m0IgIUXF*UxJh^^}}Cl*56Wcj;eVk#S%2KDS*>+>^}of3N~lqREXe# z;f8NT(z_cQSwf=h;oq*%UjTuD_ki+VQBRoyejp=@#$;}h>~T96u2F1bE{O)Rcx<#> zRgI&>V;p&3+jRM?$(a~F&=CC~L2?+baV!yYuUdGp$Ha+T3(c@okQhdpu&Lp8dDv`a z@bJ9`RqMEByjKM3U)L}y9RJVVGz(`ePRaYfnfK<9p4C3t*kJ7!3Cw*?tbbNM=v;=! zdAF_mA|j4PZphOAgQZ=kL|7f|gm>{OLYg!*ohJhZVUj;d!R9l)3?D=($2! z&4Op!&oeP)Dpwm3;KaL}ER&|IUz(hW;BmP|{N3Edj0=u`Iu7}tbd0-{pGfG|hs?~$ zB)!t<*5WAio4@WPn1p_@^8eYl(qWqklO;m3_@B+1M`$;ybo22>kru&d;sK z&w4)#=(}be^pfsp}v-?HuZ#*{@B5bEo09us3j^~bm>>AiO> zK1=-Qug$Q3{_i(AL0p&n*lChpB>sn2+r#JCSBECg7yXTJw$sCNY{2wHx`S6Y)Sg5y zo@Pf{_tkD6($Je3)O>M5!>wkvO)Uk_`~|5Vcv4-Imp*p{^Y0=dA)J3m!4Ay6gf(=) zJogU&f~5|1p6R)h`5`6;*TVXVU+ zqR&lGJa+5UQb&hdyzINGc3P9Q*gpQ2GXoz_8GHB7TlHW8L!F#$ud|sM=R@R^tWUl6 z=;ui5Z#oaNgX*3FK|$LzR@F0+kfxvk`DD|L3Eq_FF*}Y%(Wr9Evi*n8_MF{(N3BbD zK=(ysWM&OMf4SSauQznb)#otGYzDma_y?ospv9JNIsI&|~}RDDr` zd)z8Uzygx=X(WzvG*Pr341XbB>|ZbW(?@3lYPWqYPCR>AmRg5}yx2+13C+QF^0iex z8XIwoEb#heCk=7Zd=Awp6u~73zl9&c11|Yy*xQsu zj`pZ#=P2=xmt^q>aPL?hq*dH=rAK6=MC_)#L_)C#m7zmft7Be;>@@1IxlOq>y&E+C zZeK`imBx|Y9ZI^bVFNEx2@A6`#e(L0o#fANhN0MLsHL}7Ey||PdEDLcK1Nu#dJ;alXnL*GGyhTU6tdDArx$Bumt3v}>LxEn5#NkaAyy%v zVSV(N1^au$YF8v%(~8wY0*(zom?}+z@`y@PG7>}KKu{SSL$rEG+y{V3nDMFbnEi9WsSYv z5=9&+=3VNjC|}fW>(pU8fc^)ZJk^IbBVnkm^opL;6Y779DRJkDj-k)_uMlKQFzl;)cL#S0)&KijFtE%M@6d>!*c> z*ky`03Me6tQs=uG`fx5_cGc$cUkG#{nxX$)eeU*ET&b%jB?>fGuEqb~dW?H~`Sd%RsSmyJFL>)i%*d-)Jd328|GF5g zetLykzFZfzha8>>AA9433J996g%$>IM^h9M4D%A(g!uiqM_JdJ0a5?e-mLH5nB)fR zv>lLJB#5%?9QwoBwS`yN0Y$}$VMR$e^+q@8Jx4{C4`t!twG8KGzpQOC7mTtX*{*Gp z=~a^HBVL_T|E;RvywkZZHFY_Y5^2w86moMrsmgmZkKWt*%yD+J=(kWvuU9B?wx9dj zLie9@O6T%a8$Pe&Wi(nqZ)p%{qCq9#!Ti}(3s+mc*D%EGhk&}j@C2(I|*Fjz#H7ck>(%HWJ0?FFG#(7 zf0XS0&h9R7KY0@&)dlk(Yt7$U9>*rwaQ}~*q_=!`MjzN#O~nWtOL}c(&jfVh;vY-; zRq!=kYA}-vN<{HTm0Mk`#eZ2Y5sjATuvq_2)70;<@>Qj%vdug`hF0vuQJ1`y$Jwbo z;(+DJRqliP2i@-`!b`R0>5eiS`mruuHI3=K$?x&u2R<*)Pv|RG>ZpN@%nvV4fY&F{ zL=0PMcyYav6Cjd(s1JJcS#ONiB^tIb%HA%KexSX3;Foqg8>@5;67pJ|6n`-EQFJtT zGmFG6{|V2g5Wz6}xHCTdSzn`4l)uNOkEahDHJ1OQ(!R+I0<)xDSw8}lqzg@rE_sd~ z5}89r%@#hu(Y)7BqIg)Kd4FH%5W0_(wp-cpI=a`}0A2n#l<`L3@`oCH*E)%i0(f%6 zMe?G=#n}^}O$>9*`g`B>{cm;iSe~!uvR^2H*Ed5UdNC$ITaR_o%-F8W?U(bEs^pm>8UcVE-RLu z&U_ZMS0TOp(JF!zZn7?IrXl>kL5*`}UT|bKwdajyP_jYhy7E?PAS5F)ckd>DhcExh zxgwuy>C!P#dbhQ3V9|!_ZZB`t`rC%A4z`3|x00&O+LNbaEvf$ij^&s~SXHW{Ulq4` zQxCv`v#sP0eY5XpxH3G`l+_>2*u)^)#cKTLWAbfAm1%6+7hh(1kBbF1keq!ywY<67 zfF}wa;1a#id{nxog9Tu!gZmn;gF&B(OzOj7ohkTu?TOs7i{CU|x>DbKzIvy+Pt-3I^G(a28MJZ*+(5JmW zUY-eHb#|bfizzWB5rksG@ntKgMx*BytJV|!h6T+xN8}06$rag;1lt#Zn#E|yhc~*^ zByGv!FJ$}T19}ki^G#i~Jk|%~%=-%H-l=K9LSvIZ)wZZ98@H(`M8hp7TcdyT;#}I} zgL2DAem7|C)qtT8{7|W@L9P@wu%4qvtqYLjxttTm0k8$oVNi(QCw`+Us~g58kNY@4 znP$b?qa$iYc^iB2e|dA1B8Kr_{04;R&M%lSXF~c`4arJ*c|S~YbY61GTNK4DcrVwS zw>k5sC%(IE?mCw++aqb}rUiu>s8eGYSyV z(IP(Wh?%wnz03+oWbRt7=41Z(fExRCZ`Od4Q^2{>{}^ldZlqUOUV1mGChy>$+dylH z^m4&N{wIHc5=wR=PL|g?x!&{4r~Ayuc{5~%7@!~?MC%6SSw-TtS#;xBC1WLW8PXgf zdugF@r!|}6Rx)O>A4=8q^(V!@w2K`#5bPu!o=9ewW$8W$1H*h1y<3&kPhNWC9bqb? z)kK-T_H*$D033$xJ`NShR~xF5`T`U{$qL`G_9g*M4Xm?C>uabjpBO&r2VVml>H+hb z_#Xa*(HOR&ihEZedN~lb^|Fcdy#^s$0wyqm{>;~w$j=Ff0%(EMIX2zykofEkr)u)C zYEj9(f`xOQV5@WZ`Q2b2cX?b!Z2eXsASSfZbP-fu^`%HjeyDoix@^H0E4#~moATuH zz`874Xf&td)SP($mC=&dI{)IBBK=q!`Q5KySb|8p3-oaNJXeH)Mo#Fz?TQ~xevEys zUSWWR>*Zv<8C#W=EaF}D3Nxrckz0>-o!Ehw79>tLB$3>7LbFDt1P5cjSm9+IDYf%K zHKLEBsh(#`N%O?MzYo_8X6dp$?U(nv{Th9DRgmrw^AhX7Qq`65OO!8!TghYw3J1Oq zf>DgB29v+-K{_{gnu+G40FVBi3SGyuyht{dqN|()`X^7?uiy_ z`eP4Qsb&EyT2L}1n2weZx;Ft#9JZ|dAv(l09;)AThWXI$(_b>UD7Ss_@wMMQLQ~7C zi)Z7O`}c4L@*#bpKpV+eY;#b0$B-=MQ%LKaTJ6Pm0i=#N7+~aVWO-MtUuqL6`_uy4 zuw7goMfNdB}J)Ja3 zhrd!s6B}J?m+-aV7+&lG!H3M z`_Y<~5gK^7>ux?9C6d`w@ym=oV&U|lD5#ZgVg;RY7*{q{`q}(h^)j3PfN*G$qJ}P4 z+S;0G`li<{fa^=}Sx?%k-ktQA+s|`j(OIk5aliD5ojhbC1@^GL{4FV;Z#ogv6;VEf z?^pDmrSi)kbEt~l`%#; z@@DLP^>|=cyuYzrogCDw!EXBx{lpglzC?7uTuwXko>g9>u;Pt}EoV;~W4A45;$+g> z19+L;p1sEHMN(M?JEcG6nKpYwbUU6jKb!5g4g)V-6k)$51;zo>gw7<68J8JtVpD0sZmYPdhfa^ z$f9rEPw^LfSQ+(a!b0E;dXNeY1|p*#fP%7a#>nAE6%riA5XL-n&0(&(XS#8ag)EZJ zl)hYF+IGX96G{xK4}aZK^ZLn>*w_wryA=>Xm);_;WLSW&m%7V&DVHcxcu&0H{b(9U z#~hf6t!NzQ9p7Sqf|zrmf5QsWff^NaYD_jX;K|he$+3yveD~0!SEa|TJ~3Ut{g$j6 z=T?~pGJf^q+r_kC1EjuSR~>l$O91!(j@aDS>>`STBuweRH(pBA%Pr?{0)>FaqhaSk zI>#!~YKz?VB)5hbp9&Rm(#J?hf)KGkaBKh_Paq`0$}3rD!iRGdA5I|uP=ATJ0)-!* z1$*&3cRx@Rp0{pwNm7%1?T#~SnX`Co*^-LdHPhg3Kg=FnE4~^e7S@I;cR2mVFF!=*u?&3VXcm& z+x-RoLBVo?ajje|>ZzeZk+ zvLGt>DPa|cHH?#_k)0t!#+(O51UnU4J4UQp4ih=BDPbmw57B8O_oc_F!b|v?Pd*yq zuB&K^H1Mp4;;xHKB}!L{f|$J3nN8=Yr1l_``*%_YstL>soN<$u$!*&L)UgW2?MV~1 zuBu5m@Aj(e#}S#IkrPak$!|9`47?(r1%10QzN zkT=kI$Z#PvHIPLHnOP9+y%Mbl#T{M8UMp;%OgAbS7Jmdu-X@Hi%E~1xv2~HJa93eQ zi5(vpJj>fWU-KERH4MrV@hdH0IwXSsU|m#)!@z++q5%A9LdzTR3)Uak(wQA-=d9=g zGywJyseThb!lEDLyGR0`rnP;f$uUnIzJPUEE+2$wu0YtOvufUaGnhr7(}CT$d|%&> z_V=D7Defct@{v)kG`CwapV+F846;`sH2R>BcnmS4WMt0Z<=akg^&-ZsnL2%&Gea^n zD$^x=>$aU@=a}*HoSQOp5>yG%aYYd2ize=CoBnx(>c3BCqf~PvP^riklQF3HWRPuFY%(&N{aPYTMg43{$W?`b!@B_4 zqwl70NWFMmg$*~!$P@N~8ngS~Esp7spY2xwg5yDDw)*ml*Ryo?kk)~}tNy7ke*Ue1 z-SNw)&Rt<|?0(83-fuwL{x62^&$hvT=79WPVB-A0{0hU}iKX0VVwc9Xt;!c)a6fj) zy8mQY{CbOwI8L&K;b(4Yw%(V=L9;y{qJc@Q`a59BucKIBjVqy_KTafIw9%7Djvoxk z1wpq?#L2yy9j_h?`dvQ|JXA=lm)u{q^=G8NI8+*dn^!2ppBV0EmW|b(1N*&5Ark|P zX9ddUe#XRB?oZURr-@S_glewt&Vj~sKUQC3DZoF~pAEJ=b=0E&hsbA#sQ53lFDCh} zo?mh{`SV|GN@-=X{LURO%QtngJe4{~*2J(jGZt7pyC^$j;50ScrOYce9wEn4k#%(^ ztBewLC`mS&Vn4kmDaR67f@1Mb+f=W!9h!R>r0k>ukcXAUG8jFN#=l4E9z+gN>8wA$ z+6Bi5-u-o3H+R(IWNA*;_>g%su%I|$!d|1giV=G-K!IkkChWm zccD%=p@QO3$vl_Tl9TNSpXT4pS_UZzcHYHr8Mpn_C>(!>Aczhx_>kGrbH@G?3vuL$ zgv@^>C+1RnG~VYy@f%r5>9GV|Q-&|hkAfA0)+X~hVgB-UNe_rhz$a=#z3AoV<>YlZ zoFpH1$`+$xx&@4&Qg!2!8R=(ZRGGN-LN3`=36{br-gU3XndnB&P3+fd=T_o9yJfQJ zWQU^y+H-or0s|KPk8pTPfBnLQa3CEdN}FqyycM!7>GI?%mGuofXtdxnJ19@Q{5NUW zTL9yU&}NFzPMD-4*ii)Rff1(n8Z+mM8dwoY%)&h{?ef5I`OoSc1Mb+G9A}+bk-4x~ zn@X$f)7BW?FJz6xP;SPv!=x=23*Z@a#{Jo}y{=G@s)4cyU@8`%q7&ius&E@Pxci#Q zeXnjjOZuBI1ylnr%wMsZ$m>uV4#>IS*Yz;F@Z^_{Pj2R_9e8!16?$IiW_84in`TK2 zxQR@1V1VPzdKo~Om*FnA=hJH>x#b#cx>5Y{ruDw3r^5ZsW5l(`217JyQcR-8Jhn>G}-+7LmaT>c|-qWKo4(=Tl!IBil@$ zVbkMTQ(#|tL#{>8xjqaU(@EIyVKE_+!sv}MN54zn)R-jw>@~I|nA3Y+1dZ@HQkzU= z1MwP#GI(88T?&lNmk+pD0{IKIrd_)rmT@TQ43$)(umzantYgkdWFx!WCDYCLH<9_! zT2={{GrxPQ-UFoGg2+KM;imBELLp9S1!Qb5N;!%Ref;uJFKKPT{Hmxs%~%I*q8S~h zey1lHIDnNOmmPS)dGr3=u4Y{6eI}A$NlC~D`mx>fkg#5(jz2j^-%!WbJwH%KoBl!w z-*CXga$nv=ABp-R6k=O&q<=LMnt@dRMfDvBkoWzXXoi{eQJVtgwm%I59&gDAfjx0>ZTVu#B^M401#z2b@|yB-Y79h&s%q}teP2?p9c3zO z7@-Zn*202zS!8rfDH={{bDm_iQ6*Zbox3R<+A+%yKgpf(H*412wS36eI&qlFuG7h6 zl;bm?4rC1Jui+%-nNRJ+Ijf>mG~JBCC8o_Apc*uiCa@=~qLb;K6^u5@hv;GQ_-j&N zb)w)K3h$x{0Q>*U!eeW2MDQh)w7dSI5Wz&D!|aD*bc4k3lPR*`OtlH?(_}ile!so? zz{)`n@$jxH309#mX+H|Sgq%N@=?(=kc7 z68LgfesAdi{(!R+m9z5vbq_}+QvDi!TqIH4>>^>qe?34$v-_uPdvE@m@;q}R0Jp5k zP7-*a-TW+SIhw}ry)Wq@K3pq`47@iXB3o_7@04Y0RWGcTEn#7tcYI^csi#(CPfh@x zq6Z|OQ0-oX+C3;H*pe=X!TgYgm3cV*wPop)(r?I1%?k8%N2zAtbU-=T_Bgq24 z&Fd#!J?@5-`9zhvBwULa6|*^m*2^^%^sN3vg>tb|dzLsrV#3-{^vxvCJ_!KT15?jl zIg#47{eE%kbd~hwJG)uO@UMreU$!HRqO1zVaN{BZtOo`Bs!~+2!5rQ<<`NG2h3hI5 zl|K^0Q%i2eW6U$gY`_YD_7Yr#Zo*cR+^Z=N%Qj&6Ps4kvNbThdx-w+J>FM1M$3mow zKdgwQu0OCstmQFJk{Ki^S}+rs z-zOeZ&g2i6XyO&sj#FWxHN|nQen&QNu*$bJ?)pz2S*nUJIaueDch^z^H|sSv=b!+Lf%Iq>o{&gUoW@zL zjtZL4U6@eX|7&;!zzQRP{G6dKaJUH@HqgEXXamz8eNC#SQaT)Iep+31eZ=8ffGg6T zuylSfq~cwb5=b<50UKnQewo6%5#7#Juh3otD;%pJ43YC8NYu89_xY_tq}s$CJ8+OzXF3 z&vp$KDt%OtDThTqwN5zv-BS*UX17u;BqzrP<0%IBcZK_Frbg>mQ;4`zR+|NfCk25a zIau_Csf8y9D9`%(3UW}_vv{4!l`RpH6$VAAUpoC|&jo32o%GA9*C6mCR+aKnO&09Z z{p(kmXG>5qjV7|A7Br%b!&i+PSnsyh9gTv0*h`$$0QQ9pYcrm?O@54jx6LQ}_I7WO z#DIS#X6W=CqjLKnXM?{FYhiw`c&CJZb#%d5JE^@iA7Tp3z%D(CM!T1oHpu_}V@j%P zN9x+6_^-&Yq;DcJjmt7_1VtWhd zwLJ4j>QC(JgE>cOso?{9Fh>&N(u!!ws)NEBIlk$Sd}(DUvPW8)iAVV za9c<#l>EUcfWOY9|G-~e&I**D5Il--PgUg2fvQ>3BKAsmiyJfhQygv@Z^Y283upUU zAP3tr-JcZR%Uu66N~EwuITjh$FMhU?XenB{_4q2wv#{}au8uknp<<*vwAS7{p}beu zu)yYKuRpcvgIyfQzZd1xjWy=7Ewx0YG8iQA_7Mb$f&Xc-_or@E^6Q0ShJnBVSHmb+n?}lZ{5B8ROo+CLueYduR+=O?h z{bep<+-9HD>>)vR-gz{`m1U;(V^=Rt!o6bpQ-7M=|5vhAEKGp+0qDY1W{TAGfC1T>1Cb%ZP5-?2kyuVfYoA zGPOX_?=H_9o$l<_8bA&E&I@x}?MQZ;5e5E{7jCV#WE!|GzBkVAO|EQPrX8Ck#h3b) zr|(Tjt{H8B*PYV@3rdf<)}VxLMIh5FuBRdRH!X{ka!|c);Jw51*JQk}Vj81!_R^Ld z$JUWDjqbV|l0JmQ+0%2Ta#bngZg1E2GYoiwx{NmVx>K zRb|5_z*up9TzQ4$UG;U?X%+m6H3p{#0Qmpcvi=qoMbH&IN1G{)EBs((xI&vKmBoJ5 zr1TV(cRik}&+$<5FQt}~(jxb#8yDk{w>xD;;_RBs3pjB+C)ToTCHTV6j_=UT@ked9 z@wlB2igY&byis+4s<*0TwJd}HSes0Gw%q7DmoIj{l-aN&rZj=tPbo<1s7%?djwjn! zRyevHTsdgne#lkNKPrkM^GK%x&yq1(vo6n=I%vNcRz!TkOrQcA?s&sKc{WA6DyyJR z@%`m@>aAvQ3sufm9)i}~1K3&D+|OIrunuCnSI{)4qnCgqMG+@}5u^j`8Wy>UYJYO@ zSWQUYU}9%%))cu)K@T+<)-ID7OjNJKDJNZS25`R*Z2GwBFyab54>8k_v`9Lr+7lX#}33WUm1Cvc;RaINlaN|TA=4oi4_ zqWw2s`OjmH0W`wC9!owup~pg5H#!MGn~M$SWr>>AIEG9M9t&`mzEAPcb>@_cx7+2; zgY<2RWT5l&tBF2sy5k@P4d?eB!uAg1#=R~vS?f}n-WCOtHd1>j#qk5jv)4oK6MI9!UVhb#L!^)bNR# zvKs#>Yt(x{#vrrG7O!aiZ`tibrSX-aVef@zA*T-PXY&UFM_I|6eHu8_kvW?Feq%0m zslVW_t{95}7{>G3D+9{+2Q#On zyGT!*O#fH2m8Q$(u&K{o&K$z{|78j&_D8I@=gvu! z9%^(-j0EjCMtv;NVO`fgV#J6FY5BGI_7MBm(vFR$3qYNKY{&5R6-m)>Lkn(aNBjjpNsOuG z7HCXzG$gZAOAw|>cNK+_63EPEplm{ZWo1xA4T)8MD=T%b2n6Hhrrs*2gEEh{u%sS~t*x)ATA zZM{wQ!pe_6ZXsw{kRC&mqm(Wz_f094{TM_PZp~!6KC5349OXdrUdL*qPNKI;qM9Qi zqQWfuCwQH%?=i3L8Kje;YB|F3LheD+E0mx+7x}6|=R(y#IOjAoEu!MfAqkPC805*k z+Ilq4*e>-!PbNnv<;)7q@6(F76`n|CL{c@~{y-xxlimkl^(y8$b|W1g51p@>;MGMN zPugDuV>j$oJsg{!EMhSj4lZup9GR)C&m%G)-@KsoXxzBrySh4=+iOCb;XLrDWUPi+ zk{k)u=-Bn@iXE5IL8?MGFMBnhnI`ZjYQ#kh(ZhjmEL;jFqp)$y)=n2mOH-jMMTJsDC$fpFwcG_4{*;*~cj0v@Q#NAV8mdX`4;^|jZQS5&SRg^dG4}tie z7A55z7VRpbQSP`$G_pMNCsl>&nNj@rT6cUe zYS3s(NsA7))6s>8tu)j2JWmE|=K>}Ahu7wh_S z@>Gyh%-5$@nY@HFt-YB0GF9<*j5teW{giGxDa#Ip7+n?j|14XDk(p@vAB8D$hHiey4mhx0*VSS~F$}_mxe( zf5T*3zq^EYUkrQ9yjpcb`Vk3FM`qHbVRr~QJO)xIN#ngaqgBLB!*^tVU^*EE0H-Uv z49rBY22i$rpjObWNx5rXO8jlmA>z?Bat5*>fS;Vfrz_rA`I99m%4!u@u@SD+JeEy8 z(az7~q$n_YGq_@o`c!xB2Sgi z!I#{Y++f&7&1uubbbrK2Y_|9etp935XTi1PJFqFNz#R@Qe0!MeSjbGW0{NNw9tMSK z#l~E#tyfccIi#;2=Ob)8ruq1k=^vyh#DFaHbnC2pf~s~NK>luE06p?)H(QolDG zpoBeF_McETWNc^Cf;o2obnH+Z6sjq6w4KzBP4;|W12ERScn;fa|jVMXw{dtJx8mgMs=2XniF%A3- zmrC8#HbdyiYg|@OYV$q5c8vcMq^kFS45@-LO+d663K^sL^88Hip7;?RZqr;G-z!^~ ziaf?2UqgzoM|sDn-QVg|6}R7@&WJ;cy5IBhXPq73E4KBU4tJ?|r5t%W1}d9=dvow| z=7Qr($D>K6i-}T6iUpz2trOuNH~rpE14%$c+P{%S(l03!0K8@#sm+$=o_bGbrmwnK z%9;EB2D0cSgzv)_XS!E&4=PS>*I2$wUV2O5YWFu^*}HZpm@lPZ3--)+&^Oigmxn@= zgIxAek4S{SVVx?yH23U=nmqvHBohgLl3nf=iyBOlu)}Ai&Fzhk^zt`;b(= z@0lQcOT^&Wp=#Qz)-MwNUXx?amt4cZ@TNjjEImZaG_%NpV%|sT%&SNuih4Q(r7y(h z*MvQoEdozYwj_YZzbyd{H{|N%XiIuw)))$4lMmLD_S(XH@N{pZpP45D`LA4^X#@C_ zXl?C7gXz$OkxVN7*pFVbG4(sb62v`QiSG zo25PKch8V-3*>zss-Ml&f6aCLd`-Vki>WDH&)5A|!(zj<-xj7lJ2ijB?+{qf2gP6h z8uP!;%|U_K2%ze^{+HtWzcn|PX;@G0V!~bL({f23w(t)JWwX$qB4B6d}P|5m(<`KtTZX%R#5 zD?%|n;fOVVoQ*}N{k!5;dK%%cMcc3z^rA~T+;O5CMJ?$pXEo{&1M)ZQ z_wGHA*f=?z_~9fWeRR?OK%7S7ZG6l`Wv{}K74K%6_kFiI%ZD0AeBGF#$oaqh(T~F1 zk0tnNGT-s4bv$}28c@=>;sTP>15@coN0)fy++P%nA!}a9h&yY#?SVuy@Aza7Vn#zl zo@3<(Q@#1@1qCJ?C4ct!HNvh1sf{X2%`fvv{}IeVIFM}uV-cJFkcJt_fENJqi z!Jr#QyzU>l>R7p=>>8!PCd55TW9}@G4Q=(hGq>j3KI!ut1NIduvUtGB66rGk99N{{ zgI}Ep5PN(T>q1rFp({LDTTID#*04FG^^f3=JcHi*XAZp_zD#n%2S#4mGC(ZEU1Z%% zpngrIovnkVDuxWmD7ma$_GL`b)hNw&vjL^j6Z1} zT)X(USeTdfZ%!8|fj7oZ=I2RMK;0Ns08=21`}qB?^NY$Zd9_xvAj(WLqavcefBw${ zVcsyu8Y=9o$26`mT*oHl-tWm?Ka42oW)Ud?ztusA%Wsf);^}iF<*oz(tmXVtS0Nx0 z!0tkkjx`@lh3PI@T055jkW6RN4ZYn&Qg1eaS~NO*#HAh4kayYeP7J^UkL8AqAMCl5 z$VO*7%GHagZ5-rppSf$|K)Lz<^;cm4-j7k*SgZTFEL!=BE6|Ej#0*s9H2@pLJW7}p zko$8W8girqDhv}@xYQkZyTe9zGFA%;-MwV?(cIDSu39%V_&7yCwy^!CGy3GCLaBJS zE$MS_B3B^waAXKeh90kftSA6!me4{+)^AJUm|;z7+hP)+t{`la@9dC#yc%=NRK%8u z6u~Q0r6Fq_3hqKUdx#9`S2sJFrSh6XSB&Ul+1v_JcwtZ?dr5VBNvpe_F*-~l>VyEP z9)y-56@0^*ud#neK49y5a&P3?h*={Fy5Zn24JStR8;gYSAjeCr`rxT_U4mvoTp zRCMB-%e8MeB1xE-b2vj5_B3n8#0MgNi{G+^C4ZI_10S(?Le8Z`CJV2JF+oQ?5tB=sOl#fhro@m=w; z7g?cWK1p;Qf$ch!dACQSQa@ez*HJU(5{$KO*_{#kv3R7*yn*4VQRYCreMFXxVgiG^|<%+n? zpDVs@oQLBJ9>?ehr^q@h`G6xtkFGgrY$|2|g8kcS_0;`c5cNAlqR zu=k!pQLX#7_g)I3fRd4nfaC@wspOn9G(n;^k|jybOO((=0m(UMu*n$%IW?(4NsZ); zYiKoi=Wi$p8d=@pXWcu_zk?;m5{PuIX0-2^XOMMd%%-T zj2tVESN2(N$7boMnI*}BWG6KWBMLnkyf6s?WtW|*msDoZ_5F1YyjY36ijpagZSz2{ zuKT0}fWOPdmSl6wfEw;d2yu|^&jgy0t|DC;cIU7?{&GAWMGPM;@P`_fpfPExb|NJS>Y z_tF|+{OIf1c^@0#Y8!AxWU;+lL0JR&h`l4;ubmfX=q-fSuMVQWr|C5>fbLSW&G@MZ z<43c{OI>kN^nt0VbLWFjW!%hc*qzNom-=N+zX5XohGNZd-T5g0p}WsZyY%<##<>x^ zjyYO4zUF47Kaq4l^k|Q36DDG?tMUd(Rg&7;F$E2t86D7+Ij<8QRN`mav}P}z77u>& z$fo`lUkM~$1ieiK;Ld3W9^awtBIcTXYswK>DtV8qi;Q2-_?=VTb$MPe=Tyc>=ZM66 zTel@5aFj5O#PQ)s^NOy6=o>{Y>v1G$$r!zy3opD?byo znCbY-hURaSU~?7FX?uzZ$ogajtV&@n4a!R%7~NW4CAueMe;vjW8=R*&1ZL{7i3&Ck zmoa##*!Z+2AS36jtGpOn>B??DSNxqvvtVl$A7Ztk@?K9l)~DIVEJ+E6*C!`VB-Zk% z)$wz`b;<(&jgS!5HlTrkAX0`v1R23*Fk3%T#Z=5;#2x$ATuUtG#hVb54P5?#y&icV z6NOi!wGC~AQQc%GMb%GcD;>t~dB5+SR_*Y*{T13?QpR8gs^%bxLE3h_jjJ?v%ZjV(r!Oqiuhi#xA8O9E#?eV{VSD6#Lzt4iN?b%=I9HdD zEMd{*dHm?!iJ0HabC2fJb8h&(gT0u3(T4*;#7<%?J*+b@O<4d4C5el0d#4+!hN<4+xCpvX~lXH+zu*d zXzYvDt15pqD}r~10(PfPp}+1$?vu*gpV(DjfB>^8Z(b|E`IKMcS(P76xz~sj1CDIuN3&@9Fo-WA)Z|eU{bye5&T^OIsB0iAI4wlt| zo^(Px9|#V{=q;Bzd#Ifjsv9Mm>YjMaE8gS}j36bBwQPL5q(4Q384{ul@Oo7FG*ZWq z8RL#AwN2Eo(~}&}hvj6{!dJmKYl@PWN#0DWY2D(|w&<#fX?A{?tH|xb+O@vaQ_ZwQ z_C`V*!J-ul!=b>T-NkrEVr5{GcfAy?AnUpoL@Z-a=F zKQT|B05>n6Hos@T+)qjzKoR+6%Tn8`_#`hPL-!%v8GzpUbIOvR1eoxavKTB`^YN{g)C2X|jrXFS<52gYtf50GY zrV6+@Q(Kl_Uyh~o0tAw-wyzKXfgtl}sM28kq>P2*OXQQ*Vmdb!*CNk;TR&A`$|j>CQ|W3t{&LR~?v=lCP-0LJ%|;sT z&MLKcl0(G{r7lDGbI}b#r4(t~f zcD4=RK`f_46p}158HbGsa6O;L@G=5iglRTKq-Q`xol-<1!X*K9q|~EuV2BVzngdE_K$VQ+fXheA&b17*{q+VtJ!hztFZVk z5Wi?k{w9l@A%DhrSq_gTGqJ3;X?z)en6F@PSqEEwgBo@EsEgx1NOzf|RJylOgM)D1 zv^ltIC--2*DL`XTW+sMkHsuX}yd+){3GDcti{O)%+127#C@mu#}&AVBNcoTih`&L$K7;-AzS zz4tD=J?@2Fl^#wnDp~(oLO(L}DarZC(1ujwzffu>(;S~YJ1-f9SAd({y45UwA>7lbcHrs8 z{_E3?iB#ok!o)*T1T?CY)F-F`?P!$GZ_9?XPcrOK8gl~&7t8WumPzvv@W+kHeCb%& zH3s@`SoDN|xW){KYiq%xm9ELb@8f*eE2-9{dL`vr$Q6CbB+}0vBM&k-H?}GR5=vz1 zY6!mxMRx{n-OM&Gb_u%1}lH1MC?!zeeRK>)LKT0Slgp1Tcs(uL8GA z8nicIr*&UcwEdXLaap)h|JyArv$2zJ(G-yn5OE zqzQgvB6s@OlqtWpU*NPkwPVM%;>0V8^Q(8q{UYQ$pWUWA=b%b~j<9q+h8VyCdH4$? z>R&XZ#F);lOg@0~Ub$aCKXBsuWyqlniDKP4TTEWDK+nB(Avi z<^#V>e^^KpA)!B0G9D^^Js7|teCLUkmi+`zu`DILa<)f3xQa?WL8h5vu zBeH9=qkM;RX0aiZ ze}sbE+k3#0gh>W5_Y)sEDpT*e_@Y(=o|%bocB zat*gPKKKCLF_~T%L-2BVNu3Z(#b}ak<2=<$==E|usB`bq{NR=(Z7puEZ`wO|N}4Bm zi_6WC&ZY~bT{7i*Q~qY5qm_OcL)N@Nm5Cs&QADl*{OKo=npPJ9(%LjwN8_93Uc`<{ zerb(?_=d2jv0eMTn(fDV1C!3eUPt%^3v8NaNOoIkL`KREPkM8E*rh5+iCo7E+4Mf8ou)^~>mBlUA6X=pFrY;^hgS|PQb zryoD5ozS`!JcRh<(d(QrABw0DYiU(IAAfl_6$aFMW$Mey0Y`gONlY@?=ypv0b}bz# z*SEo?{2}M>RHBr$offps(7bTl$L2+Hrp!YPFcOp)#pl=^oRxEJ-mzAm-`82^S#BI= zTr6IU9vUV`fZk@&s!gdj~&=PewemVUhhsNWKf%Nk@#@K`@kL2#C}%| za#>t%x=blIXs;{j%O9bp+ERGh647jrH(Qy!+7Uco`HJBSyXo1Ug7-^=NZP+B(D;)} zLi0O-eX3G^H*Rhumn-H(j;HgC#h>XSpXJgn0GQw~Wa`pY9PfF`=syJRp3nXx$u+G* zdqi#`hko}WN51a~XzhF?8T(+ZT&6?Y^s~?--a{P1&?DjZl(ds1@eQ9UZ;6=PpBx5! zI?fYK%Xlk9Vxb(NqfXXt=`p?Xjh=a-#?qI{C3GhUfhIyL+4XMjDfP)mvUf7A=10oV zro2|bTXKEI^wdPvcEml8`!86f2C!I2%8QNxJQYk+sz*5xZnH22+@@W=hX-MdHAH_f z0{&CuPgDTf<8lG1SqA}kDjR`HY*rz#w&)4^DMJ4s0Q`y^A~2#hKXO_?+`&z%;d{v` zamG~U>q~xKY8>?#1%Xi@5%833AKsfPksKubOAAg*S;n-w@y^J7;j_m$&S$Ia{0XN8~X>_xd_-J(;s6XYD z%h|(-pe4HV^mCT=6sql(8p&c++uZh@r(bIsNe^6#H~ExLyeqz4(HT~)Wk#56Kz66q z0Af!0iS?L)^J)5L_Q=|~!Nup77_1PW)r42av%~Rx_kk+)i_b~&`9jTQYM_RxI?vyh zBQ`(Iue;@xZU5w3CTjh%lvUAhZo)F@(;R%o(ed(F=9)SGIExQuz6R5{9Ne#I9|-B?F3sTOw6vpvmqUnfMSd_S~> zRV!XJx~|pv{7pR_DXrACe9emQiRNz1Ry?dyEswwX_p~vQ$L0&qH}0ny zT?*dN>NjPwJAcjL15(DhKkBq8FwCfbU3wowWR%6dqbvktd3v z-@0I;I?|3aqQ2me4FeGmceTEua&{cMuN)#Rw|_FmayCcy@Jr`FhTiBpA?M*tHgB$_ zW}aZ!Qxu`W21$nA+1X8Fq^A6IDbC#vAVyElW zdaW?>b%r9ime(NV0Zsb7vB*@(S@8QqNR8C8E{T{YB-WlI?`lF7|H!h=a^W~F7=E+;MZQ>d{mG)qwN|o_|A9`1?0-RzoM^rNwQE~+*DLb9 zg%lrmjP@`1NK4pbt+sh2hA%5$*Il`&kPEK26&xlYbi#dwinqP3`fO|~xh^ZBGG9gI zb6a&Gs_!Auc!>+p&t+olHl_pm-Qo`#??~qVW`;QFNznpr>|~|R*UP%8yo@5!POPCB zy@1^-`8=?Pgkz;1-_1>x_eYL+I?ouR=%8}5z+fmWP2k{3cvil`^hlY68ztFPZcXx; zAD+tSo;Ez=#M183*Pn6YS)?gohFE&2rV%VdXM})oJ~t@+}<_TZ{SaESQUQ7Yo zsi(}%TiXv#Q(LZaSI$u15gGfN4HRQGJp+1E@tQ@-eflpS6QS(S<2% zX*6q&wFo~-8qGx$C)=HhHFFuiaqjmT0Z;l4N8kht{lkFrs#tCR09 zhfCtWt2!})C2$6qz{obOZsTY1zBOPW{ri$gb)b>O3?Doa8fOxRt8}wMW;0l&K_$AI z3`oo#Hqw*5Os)ut3l>#a32FCm>z691;$-bs29mRCgL~*Rbi(94AYFHxC)SG7U*mM( za6kW_r`FOOKv%gsQQW2{1`ybVhJ7yjV1QC`xGA7S8e5lfY7=np<#qOz{%RpZIGa^|qV^6^3{cR8a1Vhfa% zdlQY_+k?D@TpR{b7tiYgSBA_-IauWs3NRLxa&}=xsoL!%q1E;UPO)#)8yeJ()b7iJ zCbTLCbjKU7`cKwYwGhWUbX8&tQ}!oP)MSJLf@1-JAw1JMIs_8%IwyJh7>#{9Z8)Tb z0yXdw%LsY#03~&{T1+mS+UpkKAT?`^vQxcms~^3H2NA5q z|4vVOAkwg0eUyJw%BKumAFm2pgApCYurY>@DkmF&VeZzKcl80OtFkPs85t}W6(%b@ zfx@)s36^nd82(i)=1_Qq@5pvN{ukn$3NvXozzej^tzHRHeKwv~7s%Q^_w3%GEQ#b= z(i(C+=rO>%g1LfcGRs!Wi|{=Pag4b5pGp)?lv%3z>g;plsGnr>jK0`Z_gPcVi(vIB z_^tYzhh4H)ijj+ez?-;6Z3Fk;)|AuVzj%}ZFZ+_hgH~C0%tDLQ^U89+<=&|(aY(a( zQj9baHF)xaiz5cU|GcAa{*r#r(gPGzZ72}bxmWJg4TcN_OTV^4xwd8LE_q0&v6F7X zc(H}jOGb9NWN4DkXPmH1(ziVcqfC7?9lrCcwZ3ygIfViROLR%qL^2d1mcYS|{%-Dc znO)Tp79&uf{73%w!9h^8o*RdvB+lSci`i?nHv~z@jl>3LOM48Cpcw6dLaofAFqaJ3 zg(UgX*66hloVXDujHa&RZ>`wCK-*OWX`-9V154>NHBd*85I%vGd1#BMs|Ahv}a za07|sbwQVOeCwI_6Q`8;H60Nx@Bfh*t?%q%m!+hu$>~nF$;@_-mw{9SE+J!LQh-gp zW$~FbR4@fQ7I2rV}-wyb{ zp7TUxx=p57ftA3t{C1YUQZFfnK;_S@VJk0`7EQl0>At$55|AWM1+yfUYAjNR9NiLR z`dq&r(G$qPuXLsbD{>Yo*cvYjPT>LCX&wFd1 z$W90(+HOHvJ5LrflL0LXi?slSO4BF<$~O(L|4z(wUQCGd`R)F5#8pmJTHrr&ss!;m zAWuR$=ZyYB2;WGsxz}y-1!GAN(CQJr4wCDAKk;2jviSxC&GmxrC;|CZ1hX7$C1ocg0p*%r zA_=V+dsZ3DUr4yG@TsLb*V>C_%@q#od6pI4Ov#g!3%qjsR3x9Sm|c1)J>XNqRK z0fd?F5l3K@dp#a{#pXi22>(HkQda+~V&7J#uN<`B%}-`;Cb__-tP!`?+BVC_Om982%F%07Hl#hGU%KHU=^K!G+ z{#uW?O$jkQRK1<7#lY3hhI;>csIw$p##z~ptTi&=@ zRY$)Ps9_flex?siqi(ZoI58D-$+JW2?=Ck8qCy51yVt{7HL}YJ!Kv&APm-*x8J4GS z{5TNr{4(9fRsks@0P8?PB>3GI$k5Ht%*h5sFNdlqm6P{-jX(pN7`mFkAKem#vV2;p zin&=<@vG{&{mP*f_wT-*lP_Sq3hKog0YN<*ZnH79ALy)DpIA$`X6x-9!Z(V4Z7^xi zVi=$)mUN!NL?qpzC-BxSDYcstkagw{(`{Z3MaC z7B@wT7oWWI98XE1dU@K->sfeLY8NC%Ev;*sOM~={1DLuQf4mWYSsR0GS5bSxfDst0=Z8}?Wig8{ zix?ACI>nSOTSYN;o1(R>_|`2AM$wQml0_DUu+6a63|MF7nAr?OgK_Z$oo48>#s5W9 z{THDkmm+W#0Tk%CyV$SoB`$PL4vTeSnh!S9$5ZE_TW7ja()?Jv@5}0#Az$|rh55am z1TT)QLuF>swD#uH>~vew@#kVnwLslHu+`iDMOO#P7YU;Pi)jMROI#;K_JCo;^W z^E>tqd%dl*9T*jor#;*fra$XYZ_+sdH7~!`d;0sKZlV9uk6}#MBVhmDdODKsL>S_` zphwPN`Qo1)B%B%>5ZGnklhJZ7{gJ(L<|&;e*FKY$Zj~zu4EM^BPS&9?6x@DwBL5ZX z_wRbXHHiW670>Nc$p1n&N{9@)Ix&xDC~|}76rYsGTZ2mknN z%s_EUD+NlV#rr_}3>Xjew~1Xa%(b38cyG@HIKKPub|Ln}KE}jmyI(MyQdDxF&N^>? z)#31+I;T&1i2Cw1`~s;WchgwTZ=G$*KqK6XE$&&bxO%!UxoB3IBkc@I_^AogzT<`0 zbkG1E=QDbmK|j*qw28Y8w~ZTua<}ba&3P0@52>X1o>B!lHq~lTkBAVy|5>#yX@~c3 zdDBx*Qa&oZ1kjMd4IHXD%_Kq1;eC8W;L?QcZ3#^6>c^tNhX9}(NiKUlzymI`lz<1+ zH9Fnk6$q{&aVapEe5Fy#TAX4lHyz@N+mO6UC^8Y&z;uZWkW?iWQCaiYP@MTX%UPXz zNHdDcNi*3Sn%a7AF9ldCiv~Yl(x8tUm`Ui;0%Fr6WcsIr^fT$7?JYMKd$Sxa7H+FG zo?~iVv?l>)WMKBb&96P5CbRzjV^?YT`g`{s%_%L7@BlHfKughKTlDN$FYxv>L$I%} zk9qqv)OKw`=h^nQ@+7%%>vMs$%SXj(_@{MddWU;CZIj=-csRtieR3!nYQ;G{+vi9@ z203Zx*TZ#^2}0usPgY)nraf;EZNbh2!_urdJVW^300dKKr^J<$>5YUC4~7llh<1@BilTz^sbZNd?p} zPAR^G>Z2Q?5w71tx5M%#W+0vO_Po@8a>fko<~Vx)s7Zavdj(8FJLlPl?PUPc4R|v1 z!CJ%;%Uv;BDMYHarPA^ivQ!S5q7+Wuy?9&DusEVnCbBV+^QTR|M7Z%Qy856vty8L7 zXx&5JHorNDX0&Kow}!t~h{`9E@Y~73ildlQwM|Z^5sg7#kg7r{|b5V~|U!V${@Q$r7g$fq@Tjh?U_u)`7 z(Do5%n&-*qN?1y10K3fQHY9KTea3{}^ql>AT^dgWl$J?Pn2^$jm)FSCmUwQ#BqSJV&%E={#FpvcqM{W2Ba-1<#0_25VEh zW6(Bssu~K0HzxyK@r-L<ml7COvtg!&v^@92vgm=wtJTlJN#A&Sj>v+_3OeTG z77fYs|2xY`Is2{qLy;g z?aAxM8|Dq%bH^`cZyxrLU3wFy8@fa?{}}u9Jpsr+z@u4$e(2u6Y_+`&D`-!l(B11H zuSK+xgubT#Iwe}urquPQ*ng1uM0g%`fAIsm+B{Hjt46ylm}(Q}(~VJWMhFB#+v=}x z_fMpgF&ObL^xe`y)utpKi*!+1==UXU$KL~MMo<*eRONNG>2c}nfU}hI*qa-%qh4o! zA1CVIa;B>&pn5i)PinhOxw@&G`NSi>>yzRrW8R1|SJB+(<`u!mD?WZahOg5CofQNW zB^g;v=wl;W3YC}z)w2h*_hhMtjAGYl)`x6*m1DZePL0*a1x->-eHkel5F{AT_G6ZY zzWvgd<>%b#51h8@&r8B|i&6Y%c+FCbftk|;;OWu`gjQ=!rv22k8N?)L|H)*42J*Vv zWm9E8kO`>od@PIi@P68pX&j%mJ26As;l5&d$6@G~bYJZ|f1*%LDA|3&*IllPV3bk@ zsDs0VX0iILm+#|@eT!vJyyBkB$P5>Hbus~=Ij)FjQZoEHEmjMoE(kyJt&<(L7r@JG z-kw@~AzumM%Fs~l-FJ@^%k^m{SX^|M{;(zYLT&}Y!AcSpZ)}tsF&TI?Ws4=3!Qq97 z(ygQ;HMuBcTp8Zq)4>%SuW~jeiW?ISTo#J7dd7C-mcC}1$JMXQ1hd@kH3k`LkGH&s z6gHIktOx^z*{n~NU$Txh@k_nj@n#-7o5Pnatr?QyfEIn!5=xgfNJm_*a~plD+mmWk z**STj>Qa;0vZ#`>Mme@FZ%q5;^#QyoA`K7gfkOq63Z;RgW#6jb)`5A+B|_-`2QbenRT)a`Nae*ewJj?c3o6{%=@dxqAGSV+inn4A!wR;C zM9Q1RWXRT>a?!C0jmXrxbTF$`j`_q?7C@N=mSHmPaA#^6-!CN$6QUNazzL8C@z7oY zNAQlIkD^p=fe0ua0r-wW4zUqB`k`ej#3N~{j<>adB}56FABzU*jzq=+G1v5>!e-hA z_tXp1*jzqNJald*mOz|6C?e(f9@5@TS2a~yh5~RAcAMgzV}M&PzS#GfQcpeMmYs{r zUh%$2ZF;Qh5!Kq4B3YM+W{!eXE>j?+v;zyt%+^oqy~fuxnu{7ei=Aj`#FUZ^H20qQ zYTf`D`dX$B&fS9PG;`SogV?m-J?x>?4hVSURsN8*kGM*Y*wH`tsCpP{1&A0J@q<9!)DAw*);nBxX0ChxSOanV@(@tMR)Y%vF zn_2&!66)*l4;3M``Jz<@TTKEFKh66~Aku@2Rh0nGgK_%#BG|XoWO5WHwB3v5OL*jF zh?3E_uW!=0qHR~ZbwGl)GkaM3(De2=nKgmxMtHYbj*-ZS3|E#P)7aayH7a8$U-m)H zX*xx<4=|@mdRTPHJ%WBio$p#z-FA;$^%JO8nNRH4zji1#;(vZO29>>C^{jtg^PJ^n z1-XzIA4!V^e&b1LE}zJYYbL*rLJzX)Vbrhf%uFA`z1I4|^!Aaa=uyC@s5f6!LS$@&HU)sA zAb>N>2kb&!p8yMqu^;!O3+X1;t6eU5U#nsa7qo%{SPt3BPIM+bn_Tf%-Nr!FI*%~4 zW|VTO2KT5$G^_aYhHpgE#4CxBIN1TlU}PHt&XwJYU?;RN0qM-QP$brjK6@71;D)Gq z|CKPUK3JxenCfd#ZsOLYR1){_MzSX84%!$NnK@|!D=fDnufgbU_6|NYU0yOj7b{<{ zb)B11U^rqLY@FsI=ycquf6)dJn|R)oUo-0{)poO2!SJ$xD4a6ABdJ5DYC2= znF{`}$Tte$VIdx+vi(%DRW;=yLuJ7DB<+TR%*QGV%2vHTrU0N6*xyd^WGTgLDtq$l0n8lNgYXK#dV&k17+kxxX3>-MrLz^)gRQxHix?G+s@URFQNCf(1I*J1uDyj{r4 z3mNi@Tsc&wR=TQoCiVoN026Z#Y`Z{{Q+fZH(^4{5$S$TL9$oBJ_T*ak&+N%W_)z>S3F1LD04mO$G$XUTjwfO{!-5O}$J*tR_A zxvTsUXgl)RFuncX0;SMK+8rFWOSubIVC7GRd>X1nT=rEr#b|yjB4Di>k^gur#tRqRoG^mVA1H0VprX8NO;S5&@`vSBe#Z1u zG66*}SlWOl#1J<+f%++sHJKFTE;eaH**>rF&IKM6skN*aEAA(nix34ST=xY^f5p#1ns z@kcr7*xCo-vZldU-4BcomJ~m|D5p~g-4W1AjC(`SG7Ebbw0N#n&En%9ar@JyjCx+pTY%Ly<9#yH zRMRSd)z|QU4Sgd*@?R%yl;sjIx0SF3`Fr zn>{_%&_nnFGu@lojm@13kVdnjVa2L-i}-1NjF9#{fqwokJ)@EnApDsx2IJ! z26)2e12^>u=ZJ}Xa^ejD7x^50=zdoH97phAKjV%_x!uQM+Tz3Z$?r4##g}(22CM2Q zaA-w-zknrsmbR^6HNrN05jC4HDojG!DCLf<`DZ=@kkFt7N3j^EFC-y;D;;pQQ9U*1 z`FW-JU}M41=G(>Z9WyVTM4M_eQ|MQ#F^S=O7Dhx`t)MCW|$P=Rl6S?)kBYxwA0(ezo0&vol`M&3_wty zfvzKJvJ^U)W!=uA^wUNu!%aMExIen*XywcAR(h|Y^QXs;?Yv25@w=PyO%5(c&*8dZBg3dB;A=gmKpY2I zT^d=#i9#^T&xKQcOrls9<_DIT!7yCtz-qtiA!zKA#?HL9`^D&!rY7MSy_7a>M9p_! z0dw*i-20OvIRv4%Bx=2BWv9IA1ncnFi>GYr`~=3FBWCOJA>V=GVKF12aHgY^>3l{z zfaGOHg>1q;O0p=aJId#pJ5Fd!|5>fQLDaO#J^*(wpvlG+G=bcC!lz6*xo13)W`A(nd+AAyR!%WqNsVAb&1qQ zyQdJgp=11sqUO%k1AJX)5B9@~`WvyC%g;q*zH)tn>FNpsX*QRmJXxFuhwG<(^?{Qy zHk8<6mLK1y#UTiP1bkfODoorxA{#^-3Aw_ZW5QfARn=^ha{Am_hqeUa$C*N(3Vc4F zid*b8odcWYZ>TljQf?d9lOl0ObdRCKScY;0Z3jAquVSv$=^;AM<3W%~(T}6O^l5$cCNt z1MmGG=h?Tb>i^L--?V9}k|{`OL*6}&7&6?Tvh6QNq| zVX1cgGBGd8p4}j%g)dQURWCeoxf|JiUStt_=&+tx$HCgY?6Gdj6J`ZzWws+if9|OW zR%{r{Rki$!Vv>I*UL?^S$NvR8?Wd%W&xq!V{i-PZCBcI}OawklAr9B$>jLN1-;`Yy znjA_0X`Z}ER|`0S|DNL|_$R7|(EkO>5OAm{KacvEBG8%&`Lloq^uPQ#kJQrE(*HRR zCGqnjbZvH){$gkO<6pl-IkNvnXSUX&^tx`Stydv{L6>?JK_%j2%)%-9e|AV4zH~-8rt}Z-(Glb zvQm@LaxGs5J>lsxoYnbN7S{n8pZO7Zo$$BO*gAaK2bCS9Ds9Fy<_T(GK$xJG?@`?_ z3Df9$sVn++@v@&kGrQc*nOX;*xxwK{Bms7|HFwDMC_&-lC#n2CtV+jMT6ua;x`@+ON_Q3E-;B@Zw%K=5 zF9|#RILjqJ+hhlOMqp(vHw?aiPj&g^sIYy^RMr!34wHYzPrl#i0&ZYLHO ze}U<*s<{3E>uC+{o{o`0jT4Bz|5l z(&Za+^QaH#B{A`GK~KbwjjNk1#`sEryDqr>FRL18k5OzB2Y|2 z6$u)$am74KZkKObe?*VoX)==H2BwN%0K^QS1iq=;CWamDS7F33T@OGYUM?2*0 z%~8bftL&H3H<%VoLcZX{z4{2zI6WPhCx=HRNRYg}We1Qsx32GkzxzyRpqVi*Trj7*10P5ttvaxD((znnzK34#?&+w~ z%DhnqTOm=22xFI8c(g|GD4v11=u;VN;o?J~dgN%ajdO%Tl@X<+bZX_ov&yk-Cqqfi z1}e`wjLb`pIpf!RxMx11(?+=gPgNm1`dl=ex4wxLiXQ4&q?dwC8PhHHA5mMrwRoy~ zwu)lyU@b6M%FzDLnUBxpOXfW?3 z@)cmP-M9qpfRD*V-4&-z6+|LdZI>UbxnvE}5%!VTo{|^9gi6jo@n6CKrikfp6TZ1P9MA&_Mq{IV_sJy21v>#!2JPuMP~xHfCc8^kVgi#O(gP~P z;V1dFr|HtqYnhS~;ZlY=d5d>J>ep}(w34<^)Nrk^$eLA`Ra2`wu;7z`{6jXoIYFz! z*N>@Y#UJ=ZuM1*yV#X)T5h-JTyoKTLVBrgFpV>{*q=3xVyRVTkbvKVYNPEuhQzvFQrtMXJv~r@=uKp=KD=TQz|AZTjE30 zdqo5EF#*3anNr&-F8?fd;${Br2y3xWARl53Z%LPbCml*ps&dQx2+H=M1f?bqTH6zJ z=r?PEpL4~|1|fT~r=7;mcLls@XCOm9YCDc{ZCR*h4fI{7;NKV(MilyS_EDY7yg?^k zAna`mPlpZXA3LSzJkh|)U2DJGjSHqR+!Q9->5b8=V<%m#JB+1{Fr{X^r^QLi5J%~< z>15d>rb3)F%q;^MYKdz}H&u52R_K64-j}#MkC2ztE@VlM1u(P)hhT7lwd^C~@$aOe zU)}S*Mz)#+FK8VZ`(ASWKGJC*g?cb!LNQ}%p9O(!npAv4(Q56ey%gKR?y-dIjQEwMHcyf0j;^?Ge4Sq{gA#yQ0i#%YT2IqLuvh14*xij7B!M@{db*B)%scQX zwU8*j{^2Nc{Pj6=YHv)EQiQdWiZtjnx!0k!KK&_vXAiCa_65&|i+n%u%X7d5g_=6k z`}3K-9Co#;v7S*uG@4)U(paR&kQ_62etDeMX{^H!VI806iI0xgSb`merM%bc<6pY) zsLY<8Vi>V#(n2iRw}IwGr@bVS_MgD*rUI} z=Sh@*1hdrP=!gzgke89T8>&clQB%Zu|E_kUWVJ$TTRXkNqbA>421KxRp;jRnyjek2 zR8?rE(Y%l~&JQBj{att9Wao%ZsU_7o-li(xNNpeQU@rEFrbc|E?rDi5D!m){f?wSi zuiJ!OzP{1dfW$(Ubf^Ow^71!7uFeabqTwM@&5@p+rR08sjoRe~!O@U(N~h^duGFy| zgsLz@=bcrv-d4s<9sVrP$2I$QtzoWKQWPqzzU;=%krc^s=1pFHT|@MBdeP^pJtKji zp7x?c>yj7i$V(gKDXJ!wtEy;F;mMb%fZwRRDzAyfmam_8xCDWb_uI3gOUiLANpjHJ ziWuNd!w;=^SBMId2sqPDI-6xF2ye*kFD`#e+M6{~XMT3ir58o@&r5yBikXyzo@~4& z?8ER&9D8f#=xj`h{H$*5IM$tNNLR@<-$#?EVBP|^>*kGQ0hYfQ312#;1SN--p5OOV=8+}EQ54uc8iYlHmT z<;googN8d$nfl0c9GQhekC)#^jpq}o3Ax7hEG7G^X>-3LX^LH%i(NsZ+o%>R_d?hN z-C8tB=vd_fy;AE%$&HjzWVr%$JeuQz(1)Q7 z+KO$5VSS+J^%TqQ1u}vwj)Rx{{Cu0>Y*q^10{dR11D4b{CrLUREV$H8y7-)}+N2%2 ztp706IyJPEW99TYz2tX_hBeY}LrwI;(Yhf?cIBc9!){%5okou@>O1T866UAi4LB;y zSlkr*D}Gqt-8OdXu$Vb~hL22Nq#3=D>z$lEO6Y`;b=Fdt>Ys`X{PZDqHA_r{v=e9F zf5sF1d_O5hnWl`={oGEDu9cFoaOL87w=LexC+;vS^O4o0Ax} z&4ePkFX(LSWvZQRhR?)MCrpBo8A~BMWhJNbHlyKJWzHNKf zO_}mVwX*Zw_$7gI?x8_Hd@zvcTELQTHo6<3`LQ5f%iZX6|4tFTFpmwn4oiLYOLAeYW0`rTS+ZWGs430>Z;q2`palXf5t#SH}ZqBbA?L*)15g}Z$DVO`&J6f%MnjUn< zX6@HLgVsWP3t7czQ<44`jrZ=RLSQ#?E5qC_rE|yf+UD*h#SO^poNAF(ce*0_Wu8s5 z+O|k+q}YU&3uabNV_u`pbTOb#GcbC+Jhm;{xtKA3)*srb-a7NRwt>_Jx#oXa^H675 z=O4P)24J^hLaxp}z@yhnB`;V;0!^=H@(DV1_bmV~0yxyYLt1D%%5Fyay z#`DWcl8mA%8!RandW#5>R^oY+?ioeUxu<`li)tX3MzB1C|_T$7}27U5(;aIuF zp)?UmTG(VDXi|Jf_>I%ym!XeDU+V2hLYB!)mvx`*z48sSjP=)%F{x_}s9spExnpp) z>OW{WQ$-lyA;V(GHXZ_#wg!J)C3Mz^)8~&5yUig)(UKpvMG8*XhLG#L5Q!2GumEuv za5-5wk6@~i`E0Jqt{b^W(yrQkHZK(9pK;uoQ?XoA&3v%wM+qFsV+?4}Rfu2)Tyt4v2p--8r z&sfoyyvwa?T7Cj5Qz*Sp2sLhNykB(jImK_j?~S zs_e?41;JEPEnQ@_zjbb!;wWXr+SM)~Qt?A4)5b82-uVuMNUW!Y=;~y;AF{o8Va*#* zD2#N@j?{1AdkAaG^5yh}J%&u7`kEl~Ev}h`{dM_>3b+|}9F=^O;aR~gCF6<6-%4$t z`q>s(zc*bEE!ZAC{r|fA%CIQcw(D)60wPjFgCc_nLpKPBFo1+K3@t+nN+S(hX@-z4 zsUaK&0Y|!}L8O$fkw&^}i1)_WkNZ8I@A!`I@5k@^81A^@yw+OhTD}5i+QPOcs&;$_ zHN^DFyD%6|P*fE6*_*k@W&PupKy}}diBMIfK&G`h{T{LINzY1Q>y~64!YP3(!^V|9 z{&?!zF@w_qHoq;}MR}2is&NN5U8!52Wiw&m)~+!8{J)!1=Iin+>D?@MBGROKegsCE1))+a+pdK4iNTg|k> zZ*>fkDblp8Y8h-1k89w4)=oy)ER_v@YYXc2yapc?!4slZvD8w0!@ObXtv%`*Ben1< zQ|XGQbl4SaBsz|36z*^n=ey6eRGn&CRR%3f5{?IaDa388F$?g6nzIQH$Oy+kB-7n| z%&xRn168wf9xN=;^!h|meQ;@kbmole?-Y&m;q?QweC-)o9aTbxU?MaPfqI{{xb5rq z=VWLyq1m8XNv!EmCbT%nWrTJ0l_&_9trqt&D8QudHGNqx;&0@TWEokIPh?;nZkokV!^y}u}(9g zEo&T!Y2^eQYoW^9X$opH;Qi8e>0#fYsIETSnZg6bjwzvJDXqE0b)#1FBZ# z+Ab(;a0(>=L)z?DpOLZY)CGg%Tu@&Vgk9D#!fuzjbZAc4tT8XDZA7$w&!yiuKMqQHl!&*g0$JB`!V|hoi|vf~`EM_R7Yg^Xa)9-Q5V3mNl4$Ew zmjZX-WJ`{imQQ(4$!F6m_m7PtBMn2 z<>WMbvAbmTqf=+O%-TP;6q^5F#On@1(Jz4NzE|=-7)jYcEV1)r7(+?X3edxMmyy@x zO5Y+MYVlQVRt2Uc!ut%4oH+&4izB+~5c=E)hup^`288PzRJRub`#$tj>BB<0rCp%$dZ(IGZIM{yx2jZ06`#4)%<%j&3k*@iDHiq?Aka)r-Dm(Jz)3rIu!MPEuA z9a|~Sj}pEPl4<$FFK<*M?Z2gpLf&}`AsYu|vcGAA@#Ok8+bGp?9(8PUjJ+?_hzDFL z2CL|;G#q*DuXAx>!`FgEE-w1yGl=z!?!Um@Suvo8S_22T^EHo!=sVMSkmV1?A<5v8 z7>2d^oSCm_^_T+redq@qC`u!d$NB4dsMiu}nDebsh614@*(yt-Gy3IiZg7fPz@5TR zAEN3a`-;pmZ$eK4W;4P|@0!4v^^iTKa#O$>+1r*2WFz88L89q>dg}ZT4UQv>dj#j+ z7gdOl&o#oZ{hOog>JFuh3rB?}{1l!L8vl530jjkzu5{R4@SCvY#v}-0tQ$T@A)7uR z*1P5!K}@pPsO>cJg?{mMk?XhXFHRpv6qu_f92eqSJ~N?Cc5)$#fA_ATbA1F$SSZq8 z`>1}dwLZ=+wL#z{8F=LLO5oAe|9Cug05t(p^ZZ-_99bF^Zzu>L^_Dc*D72~}L2S>h zbv3yv7hQ;ia^ELw_^~*-t0D$h1z1m$`iv?rv=v#O6s14ZG9j_xoIn(2>dza6oW|H? zI0yEXO*vN>`#00dcEU~TEGHifSx!0BN7*b=gr=8%6LN1g=qdj;{*C+C?=7a-i^QTk z6bw?yY85tyxzbn+nDM`y2ZM-YZ)j1k=AeYF2}Pp9TfHLh7vr_zvPX*;<QPLEQMAP5@FJ8 zl_DbD8jH*o8(+H>3cHS9RaxB&pzrcMoDkOc>n5!Rkf%#+Byug^CMXfcM&d8oa3{(_ z;6l0dZ{~Em<<}z7uFp0WzoyumwM(e{80yz<$NbT<6#YmK(V|Im-Dl=zsI3eWkR9$j zvHC#clCc`-)BWvE*1Ji#JS(5@GoEvFX$YN@cw>uYOzewH7a&GW=m*I8bW-h5r9%r4g z(+%6Vn6(i|itZT*jny0x7=Yp)X%!mQPu&~mrEq8b@p}Y+{$6%I?6^n&!n>u2L9 zxgGUB&VQ{(G8>Dd&}7hCtzP`CH)WAC3U@y_d2Mt(Q(7^k zJv>UW`>Y_&RT=-i-7{+c{Cg@z{N8zhSx7A_8VV%|9eHlUbYRj}pRy1gLVBKCQKM=| zNfv^3RMLbT=`VkFFj=za)_Mibh20O(p&ugJwkA)Hwx2z+A&b?1dXr0vbxZYNaadWd znv*W)m73(+jZYu*@!FGgBQM~D~DvaPN|Wp_XbL{hgXa`Q!Rxj3L{qn4W~KaS9AoQljx) zF$XSRkC8~iiMtzbrGu15tGP^i^ReOt2~eQLGKubA6UCVn0c?W_@|wY_v0(KaN1i@& zH5Ux)2r&4isXker!0vpF4`;JrENPz3Jxz*0i*5xB-mY#@aK;Gx z``KiD=HOW%PABeKu6uhk##C3^kRX&_vr)A}x^yQmgN-_;NM3eVw~g8+scS^?(E#lPcv}r)w zWmc8%({^qk8%@`qJ5lRIO6})ON9@b}WwkB)1Eb@r&#{a9VqnI(t-{ad$^!-t7D%|7 zA)oNy^Oglg6a6*3{jT4A!!o#vXxfH4+J}dS(n!0M*P}Sxa-B&)MbAIpAVGA6qYP^= zI?dOI)iUP$$c3-x=eT`AD9bq<+HtV%i(0DI?VGmka+ccxeTN*v`Q>1R1fDjo!6)nP zB6~B9?g`gU4!Es#3b>2TJ}=3Zq@2L-tOM?@fsfYzJ!{TgKa3u#sRFJaSR~!uDrUg- zgTzGP-1UR=`a~lH2qe3I1OL9_N&qy2wbcAAI{+0tFjN2Tjbt1)MhMjp90BvAnxZwvl~yXL5gk+37nx3}dY z(pO8m6|2~l@^*XQ=<%-=ADQ7ks5z?E>D;{qYV%OTz2{l0%VX8W2G8qs@+j|J{>&+5 z(;j))_u8^l0GG9zM|E=enXUDW!R-9(lhGL2>e|csBWrwxrn|g3ll{7QiOGCKb47y4 z7iqf;AJPc8?ywC#g?tihrFIh6w;Q*^Bgi$oEoql5sPiTX1>w4Nco^R$c=Vo@+F=**G%dK5sg)O)`WB?Tbe=*O3kBZc8~Ii; zgaR|0rv4Xr9~Gr+jBjD6G@l+c>+Q{c^EC0(C)e{>H$e!d8-}KI$X+l{ts^lY4tS{P zc{h}wybqO5DZ{ByZ8U*O-&dGb&-Cd(8xDGRH-%)&P4*%OxP41my4JC!XW^qzj%dj& zD%;f(&zd-poi;|7VBjqDTBSk%-Uw0j6ETnl?S9FFv8(ndl48Jue-Y;+@o7*f%aT={ z*MlR#8oxP6b?QiV2UrZ=Sx0JTT1^0}{s8W{^WjWw#XQY2v^4DGaWj$_&+e&lCC|)+ z`QhvBnh&Q@P7&qgO9!6pKEYkv3COjxPYa4x*qs`~sd5sVPeV`kv4MR!ZLrVoXb=z$ zM6(&jxiubk_r~t_LL_|KMy`)m^z8NvJ1eP#7i)fNe#12;cLr-;P+4+S;yUVWHu6Oj z)ogc0Cd9)UBnw(*@`1&fVn7jmZ z29apRA<;^)JxnA642Y^{u`i_P35|ea=k&@f?!)^HZye10-H3q?|Czut$B}VoPFu8_pWI+olRTL_n- zL_~e*(STH~*B8-fl;UhtZFV+?oBBK?u>r8K*wQYQB`0Q1kR+~%J?$b#GnNMPr0<5t z#_n1{bCDnebbZd``ss5n&>0-BEER*hKelL4#vcb)n|It9Koif6e?`1^Yce|i-YfO& z6pPq6NNy_Q);#H+Ig!?X@AeqHbc4PX=RH__zi!X|z~jpLJB}v4F+;@g6L2N}1lA8p>3IuDOwG89YiV?}3Dar8OENfLt1gFD-72$5Up&^wa#G}2D zm1kk2YUmLsDCelRHV8=?#6$-b1R4#3-IM@6^24WCX9oX00lMuh_q1T)d~x=>l;9#~ zrVOopFeixP`&_9jazHX3Mc9ZnwA12|fRUiHl`3KU*hm&omiSD?{&JKUGbnXGu>!Ue zZFwW&S@Vp5Tv(5KpCv+Od%SIU&u;19+F%8EYJwcGP4jLEI^{(O3M$O!@SpuROkO@Fk10!INGU1>D`Q$J$ z|BK&a0@3sKaa=aU(T!60t%-xA+l~xKyqh-35hOT~2(mWsF`gokZi%p`RKQNitQi-& zrHd~^5@D?Z4M1Bs&rsN562k+6PBw6N@GBPZuWi#0Ru-H%uAm=tCq~+SCW%&dL;0tB|!C2W(6@|Omo_gIsMI0UsEP-maj|jAZ2!*Ec zOaHqvAg#6Lq4{#R?>D>0=J@!W=HW@#Z`S?5?L5hGMAsQrg(jW&&~rcHO%q`A^{jGH zpgx)1zx;u-M7rYr+^6Gk)p${gB-EZ-tnaQk1;v*(aqSI-Y`10p{aH_xI##@|J&{p- z;!>u$il4N&)meL`Oi`slo}kV&yszSD`dzR$(aXPREUBI51YlU&7db`^wB5^!7wyQY zw&$}NP8lk`!uv>rHPi~$@$>wjKrpO|sH#2G^*Zo=8bWV%o!En&@xv(Hw*Gg6H_zXs z&`+*!-Uw-N*oVcMKVA)epewP{k=!Kg>GPK*@$=@GdRXXa{f(K%^g(!ceY$;wq9)`M zhJ*V~clF%VTodXI3g{TZucbWMqmp9dUC1hvruS?TKgSooNdD_AVGG!nf=oMF%(9Wd zWLKc70}9({1llljG}{;nk9t(^cJ9xjsd(U_wk+_H zZ@a)~Bkt~%OSM+4q#<#USH>2~xY}QFc?!}Tz2j-9yYjhvuR*7u3SC&tY$7sR%SN9i z&rRZ5seTCS|J$hY0L8c(_cg3;gjMXFh4yrJMVpWZ_Y-Z68yO4Xy!V++)2##4#nO5b z9%6zqM*R}cb~@7nw{%kaYKj=4p@lG`^G-2aZpUbqNh5~jx zivLD@^zRl#{B*|_hZUoJIPh{6%xAyK`Z_U4PGU>=A?#4wQ#i+7TKUnQAh0iYgtm0P zs9(Es{HbCxeMN+eZo=QV%kDvfC?lS`F>pFk^7!}KuM9y4KZ*4wH@~MT<&PY7;z_D# zf!}Xu2qQ=A%f1pyg{$8F$q5dS=DiYq%N4@rV&^loIJvh7 z9%}VVUBabQRB95Lgx%}i7y{=d?AlB1*p9Ry$L`vir~DWz=3XttMb9@K-WqCy(`?d2 zd&s(WckgsA!piOBsiAy&@ieX+xEd+lgYDwO#G?l{92pWrN0!A%xYN0+V6i)Og0v$0 zd7eU(eUYE~)^>dz?8f`0_A1DRin<$S1_LR_cU1IfXfy18e_&1aJx0RO&856;^f4=7te3&gZ== zQCjTsiH8IOm%iVGxOK#0I}S(_H2DIkXn&paAIb+t6~cK2)S|hmWq5gG#EiWu?oqh> z8#@5M!Q8s2ep_gzSEoDdlTXlOoGqEMJ&cXy(j<-$jq(gDTbOnwx6%CySQCZ1oH^7= zI@xtN)G@fS4i#cIVy#36ef$yJZ@oAMpATE9S6bf#)tqKpp3QEW+V|$4bn^&PrE|ya zpLghI`~It<()cAk28b`sl={q&B-!fZx1l`R< zwkC5^2JENh4zOh<{rNP2X82F=1kQaxWIJ&%=wxbp4wL|l;qOu@DeS*MHvaxd+W!k? zbC-#Nf;VVr{P&n?H+%J;m{PN761ZAC?=ERTqvTP2<4YnPr5EouvP^qiivOYVubd6& zPcHn%gkC%R`6St;up03l;_=}+dSi&b1@93Kd*`4bD9zh+>c8U{wmQ z-8~1^_l5XuVMv{QEy9+2?K#N{ALQs`lbJV_!v{JAk(Bcl>anMSkWKB+Tmo|oS=;)( zzLc{_4ai`IbNuF7I;wv(7DgxY^-CqIkuO2k-f&@6CF?t}oGzi@RHyJwt-B><)epYi zDY4COa>}>a7(bd=te|s#Q}4b>wKPP#pgja%)i>P04z@0h6MR$nC?aU`2RHjiyg^cS z4h%TSxMX|u*}S8)<@qV&Ee@8c{YS=I?neF-9Cg}<_YO#W!Qi#pMJJ(cq`kZG?c zC*|44*PNxuoJI|{A*}ZM>j`sO53u}1Vq@#VAt6%R%d?9(!{8RF72|y-^j>O1&XkFP zC{7TqJ(#7e6?r8h(-xra-q1J3O%Yn1nF_?$Plnr&Y*RU}e{6hi7_}Pm`acx;AL#}i z%&W~vh|3a~bOJ~>sOdy5olAR30~Hw1IVyNs9jx9^UUZMB(U3ivGKAnXSIdprjv`s& z>sV3d*+UkxEPlgZF(@Z!aSFq1=f6LE zASqj-AeE2g8pk&3Z8_-&ahy6!S#jFwg*4VMk#ok`w7{4I&@0aPRji5y$%?Ik@$^L4 zukx;hY@b~**V)U`m$RlVa;Ma!STmJoy~1sih2Q0^ zYT{mf_=0wQ__p5Ip|=3a%d+>_>pQ@gxNj>}ob8gK^o=6RrtE!V5OVKJ3$G9k^_wp5 z-N`&GG`JrqKIUq=tRK{yqw{c*q4m(zj@H}NbU|#Q!kK-PPRd|O!atR_&6lp}ki_%; zPm12`%flZnjpwVK67M;A5*G}x@(8yCnSq=qZE4H7z){KC7v?M5&Kr?`)|*|ZwskU6gS%e@Ee$;bRzF5DO4zF+v2Qv=1i|+hHLToaxOZavaH;< zCodSYVPa#tTF%AW`uw818UOdr_L z4ja>=X;y}hn3lv!PmPI^C?fPF`^TstgHEKi&-kkIF~^bX)8jy@!Kh&n*jM;seH-2B{u0K_kgV!Tpnc(U+ISuQDW#Ge z*e^^w=3*$6T}Srf-rael9v$Ng4JqB&^=80}>lX^$npARr`nM}%h-%~GHqC)lfMQ zBX54wj!%5e=qrW+5VSks+GJzs%^h~#`A8zq-b47OSv$e7t3lnHU z{k<<`sHu3lAFGp$h)^MH<$S@;@0~6j=3mbv7cg?KyS&&Xn)`22s*R4-AOe+*)Effd^rEhJ^o#GDy+X{ z%8mKXe>q^+0)RQ18p`^-<{3kZ_ck&UUy4h_wUm*=C12G5_H3W4)p>gxI2k*s^*NKv zjr!NZc=E4BO8EAxK}Bw34mylteRSY`HFh(?1T%H%ZWZF8>`fPn_0&o`7!Wqt;&{C{ zu;PFZ0+k~DOb;Odjr&=l=T@QNnsi&82PDtxL&A_t2s9<-4yAqW^Q&q4 zbznzdxnCq)HWN_ML0r&mWE1ToB*8`tmpNlZ5AP@@E!Fq*MPYZ_*S#+9%FVA~&lc@< ze;K>61F}Cm;*%x~CXXM|w)1&%?GtebT3tu!tKn$uR z(!m{ojbQU=^t$P6AdS$4!t@6dTcRtKRyr4tuq~r;`n?SAdyK~;7ua58G!?SaxxKwX zXoC$$*$V*u@>-7?)SQnup_)(Cx4b$9pRLB4D|2O(+Fl)veRG|zsk75HOAH?IR}~iB z)?K_;J8^nVOh+#2AL>@RDzxRShT>xtqHUvR!Y=uES?=n_sr=S}ANstP2@-gZqHh?pRyv*%kCcT;^1X_e$uQeQ96)1@S!xgH0jiHwi{ZZRb%UVBx>s z{M=J=zh{(CQT zfp{G%Z|(I5)mRY;nG8bxE^|fK4C%VbmwdyAVj^YnQifaAEN?IY=2qPU0*STC7+Oheq7oh)s?geL2UJ&vvi2lqrO_2pa*LO2F9=aGRF{3~6 zm|%vtE#y`8`lm9YZ{lM`V4R3e(@B?-uB6bI0hPO~k(^%+FB9%EhaLzib1ki>LL z8os`UfI9hh-Yv^eL=!7-F0DBcw&jOQ1jG%yZ+$pqkPUily3Hq>-pH}|C<>-IUc<9A zVoSo`?OEE^5N=`s3|P$dd?6_VT87rHF{9rVeN4DB8KN&68KKF=LQ@V~5p@|o7Sd*6 z1`U-l8K`Pmes&5%6RgX$An(bpH=pE2!eX(zDC~Bye82Dh9bUE3ers*pO;)!Sa+oBl z_6{7gdymme<-7H>ze**!M=bI8N-B~0SNY+oZ3rs_)WXY|T)@v?QAHjbH~h1JOQqK~10`=gpuX&A45 zb@vL9u+M`dkpzid#?ikYY6#ODKO+%*@usz`64N|QB^y?j#Al{-&$_B<^#(Gy<#k3% zHQ~t~U)at{Lx;hk@^3Gf$mH%9s$keL%FCuP(OuOiHcc~<}hKS089vKRltt{4G zipFlEuqUkUsMBu-uX_|kf9OHqY-W|BuNV8q;u&jmS}5**vl&&Sx0YM2@luMLQ()wL z&{B7yVj16$GFgp>ol?Xi9msYs%628D2|L_kB-c%hrCgKV=YBjO0be>gP3shGX=oHt=eK)q#gV0LefwiX`t zH9p#rL0Nt@iy;6t83nbV_&vSOuO&l&5P^f7_aognD_6W6Nf3LmcCeFp9)Z| z$H1IhQU;7aG91U281478XE4jbn>u%nYCp<+2jBa-fWuEiByP1B0I&$wE=|0)sm=at z2e@|oyAq&IhzeAX19*FaEs?0OyP!CEO;lNS3$k4-K)Ni1)%lTFLa?)(7Il?mibDug zWS!jAvG#p1e+$xwqbNr+E4XEIz6?!$r!63c0YHLp4orqH5l#5YbD|`R`p24hwUPduC@w*P~x`=90003!UkSK zg2!u&@P^=*WL15*ARZCg<`7MQS@gU{aU`^)DxOR2L|#MTF;f_-8tM8YTt{g>xMj@P zNBnjrD^PbARsN&Q>5vf(f!5NfakwvmDewju?8f0dX-e`CHur^i=iK(M*;x-0ylr`& z-b{x%b3xJeq0lzBBDc_%&4u{H=`RwL?x{OKN__|lO%5nxyg(tSJy^eaRtez}Y(v2x zwj*>4n-CDNKGw!&+LfFA$+yeH;dE$AxlgOCi1Hz!#<=2U|3a*!&kBLo_{Ur8l*Svh_dZIm0s@B1a+zkm3*jW_cYO+_Hg* zGtyKEArJY9tC5LO|DRMykAP<-300tDt7LUhgqkqH)c{+#Qv_!JsZt26#9UAQgS*zX zB}_{eC)SyoDiRh3USnYc%_O`UBrWW=$q9nRE=lh*06!3FPd>sbUwvzu=N`t2kV|9F z{bsbbsSke-*@$_m<=iZCHtzA|k~yiYP^jFi4c8%ktuSJ37{%+&N$EF02~IpjXA=7k z!2){uK!<~1g-sFbJ(8HL6ERPSuh1&S1iGqd|LvLfPhN~fUIAo=dm}#Q?06;wyDh2KSo~;Ry zZI{8ps?#{XDIMl^Q*YBbw?FWHcdfl$oR;Il;v4CSPMKyT^U-)z&n(Byxa*}<`$p>I zPPygx<_BzZ4?)wmp~CaNOAJO1ueJ=8X)FSUK1FeUuYlq`&c0)eb{-J!79M zbz_;g-zZuj`Mpi5&HZwlvyN~2TV9nYqLb%RTx<;dN8$zuqjD>HzBI`(VSw9-F8Mi9 zW2*i{d1b2r5x-s-m@+0Rl++NyW^w>jr}CWW7Xj8WKKKYI%jz`vY7Q_{UD)D6(T4HT zae}1~bb`T7D0qUPcO#F{XKa}0`1X($;d(mN^&Mm;>zGxioZqVE7^PW5f;cUa_h8}^ z<4YFRW{H*MQ+{(+`}u6rk~CXk61@Ag;xF)~{_>b)ZIYH?{BTYpMQn~sqn6f7FBEL` z#z(V{76?YY$SPpvTjMBEnTFjwt=GJzQ&>4XYQlqt(V^S;v&8q^O(iNH^hWM26nN$z zv@cCR-ms_su*$O)cIiWZehuxAMC409utoh!8(Z%14> ziT4BM{$oVsMgg1~^m5ip7OP?=0TcN^8lt0_12iMG_aqxuBSc#Bo!pOrB=o2*)bU-s zJVn2V_an`uPCnCG)CndSV(5j}TUqzfV3fav(&X_4>*|vAxd(TxEk8M?PD$uW<~?|O zy2@Y$O{x_#i6?byFzTliX*=}NZBHFqc}Eboz!0``YLe`2q$L*mp1ruu+++%;O&gf3 zX2EGfV}YJYR%=F*_$pH8PQDGV<+=*C`yR^8TU*p68zIQDEC;;agZft=aixhTe+!m# z=UgUYyeDo07Qs->8U6s?0{=~OX+d&D6-Zh9CONTGtE8aoncRh8dPOlel`NwSmn8I4e_rDO?@xHmFl-f3b3TPl2sMS zVDJ2Rq4@v$SG-V&0w6xwHDPK8;0O5t^u`p)G!a`~O z?(?sdHrSt+0NPZRuS|+bEKF26cIut!=V=B2 Date: Wed, 25 Jun 2025 14:42:21 +0300 Subject: [PATCH 4/5] fixed readme title and minor --- java-junit-maven-0.1.0/README.md | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/java-junit-maven-0.1.0/README.md b/java-junit-maven-0.1.0/README.md index bdd5292..7bdfb79 100644 --- a/java-junit-maven-0.1.0/README.md +++ b/java-junit-maven-0.1.0/README.md @@ -1,4 +1,4 @@ -# Java reporter integration with Cucumber-JVM (JUnit5) +# Java reporter integration with JUnit5 ## Overview @@ -65,7 +65,9 @@ src/ ## Configurations **By default, the library runs with properties default values except `testomatio.api.key`** + You can pass your custom properties as JVM properties, OS env variables or in the `testomatio.properties` file. + The file, if you want to use this approach, must be created int the `main/resources` folder. To let JUnit run extension automatically - you will need to add this line into your **junit-platform.properties** file: From 3eac7b099c68d779da4cb5d3b11a883333691ced Mon Sep 17 00:00:00 2001 From: Yevhenii Vlasenko Date: Wed, 25 Jun 2025 16:00:35 +0300 Subject: [PATCH 5/5] cucumber demo fixes --- java-cucumber-maven/README.md | 10 +++------- java-cucumber-maven/pom.xml | 7 ++++++- .../src/main/resources/testomatio.properties | 2 +- .../src/test/java/{RunnerTest.java => TestRunner.java} | 7 +++---- 4 files changed, 13 insertions(+), 13 deletions(-) rename java-cucumber-maven/src/test/java/{RunnerTest.java => TestRunner.java} (83%) diff --git a/java-cucumber-maven/README.md b/java-cucumber-maven/README.md index 2f4d0ff..68bd1cc 100644 --- a/java-cucumber-maven/README.md +++ b/java-cucumber-maven/README.md @@ -24,7 +24,7 @@ This simple demo shows how Testomat.io Java reporter works in your project. │ │ ├── ProductSteps │ │ ├── ReportSteps │ │ └── UserSteps - │ └── RunnerTest + │ └── TestRunner └── resources/ └── features/ ├── notification.feature @@ -43,13 +43,9 @@ This simple demo shows how Testomat.io Java reporter works in your project. cd java-cucumber-maven ``` -2. Install dependencies +2. Install dependencies (run this commands in Bash) ```sh - mvn install:install-file\ - -Dfile=lib/java-reporter-0.1.0.jar\ - -Dversion=0.1.0 -Dpackaging=jar\ - -Dgroup=com.testomatio.reporter\ - -DartifactId=java-reporter + mvn install:install-file -Dfile=lib/java-reporter-0.1.0.jar -Dversion=0.1.0 -Dpackaging=jar -Dgroup=com.testomatio.reporter -DartifactId=java-reporter ``` ```sh mvn clean diff --git a/java-cucumber-maven/pom.xml b/java-cucumber-maven/pom.xml index 11fdea8..cc41996 100644 --- a/java-cucumber-maven/pom.xml +++ b/java-cucumber-maven/pom.xml @@ -18,6 +18,11 @@ + + org.opentest4j + opentest4j + 1.2.0 + io.cucumber cucumber-java @@ -52,7 +57,7 @@ 3.0.0-M7 - **/RunnerTest.java + **/TestRunner.java true diff --git a/java-cucumber-maven/src/main/resources/testomatio.properties b/java-cucumber-maven/src/main/resources/testomatio.properties index 98c637a..ff0fa7f 100644 --- a/java-cucumber-maven/src/main/resources/testomatio.properties +++ b/java-cucumber-maven/src/main/resources/testomatio.properties @@ -2,7 +2,7 @@ testomatio.batch.size=5 testomatio.batch.flush.interval=20 testomatio.url=https://app.testomat.io/ testomatio.run.title= -testomatio.api.key=${TESTOMATIO_API_KEY} +testomatio.api.key= ## (OFF, SEVERE, WARNING, INFO, FINE, FINER, FINEST, ALL) testomatio.log.level=INFO diff --git a/java-cucumber-maven/src/test/java/RunnerTest.java b/java-cucumber-maven/src/test/java/TestRunner.java similarity index 83% rename from java-cucumber-maven/src/test/java/RunnerTest.java rename to java-cucumber-maven/src/test/java/TestRunner.java index 759f5eb..22821fa 100644 --- a/java-cucumber-maven/src/test/java/RunnerTest.java +++ b/java-cucumber-maven/src/test/java/TestRunner.java @@ -5,14 +5,13 @@ @RunWith(Cucumber.class) @CucumberOptions( features = "src/test/resources/features", - glue = "steps", + glue = {"steps"}, plugin = { "pretty", "json:target/cucumber-reports/cucumber.json", "html:target/cucumber-reports/report", "com.testomatio.reporter.core.framework_integration.CucumberListener" - }, - tags = "not @ignore" + } ) -public class RunnerTest { +public class TestRunner { } \ No newline at end of file