From ddea55dcb5782eb6d57021f89fc99f0cb0d24182 Mon Sep 17 00:00:00 2001 From: pengbaohao <1336737600@qq.com> Date: Sun, 24 Nov 2024 18:36:07 +0800 Subject: [PATCH] =?UTF-8?q?20241124=E6=8F=90=E4=BA=A4?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../demo/pengbaohao/controller/debit.java | 131 ++++++++++++++++++ .../java/demo/pengbaohao/controller/seq.java | 1 + 项目管理/银行-贷款api文档(3).docx | Bin 12660 -> 12433 bytes 3 files changed, 132 insertions(+) diff --git a/code/springboot/newBank/src/main/java/demo/pengbaohao/controller/debit.java b/code/springboot/newBank/src/main/java/demo/pengbaohao/controller/debit.java index 346c7b72a..02d6eb86f 100644 --- a/code/springboot/newBank/src/main/java/demo/pengbaohao/controller/debit.java +++ b/code/springboot/newBank/src/main/java/demo/pengbaohao/controller/debit.java @@ -6,14 +6,145 @@ import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RestController; import javax.servlet.http.HttpServletRequest; +import java.math.BigDecimal; import java.util.List; import java.util.Map; +import java.util.UUID; @RestController public class debit { @Autowired private JdbcTemplate jdbcTemplate; + @RequestMapping("/paydebitR")//还款 + public int paydebit(HttpServletRequest request) { + + //第一步,取下前端的字段 + String debitNo=request.getParameter("debitNo");//贷款号 + String carNo=request.getParameter("carNo");//银行卡号 + String payAmount=request.getParameter("payAmount");//还款金额 + + //调用储蓄模块的取钱功能。待储蓄模块开发完成。 + //根据贷款号查贷款信息 + String sqldebitNo ="select * from debit where debitNo ='"+debitNo+"'"; + System.out.println("查询贷款:"+sqldebitNo); + //第三步 执行sql + List> list=jdbcTemplate.queryForList(sqldebitNo); + double debitAmount =Double.parseDouble(""+list.get(0).get("debitAmount")); + System.out.println("本金:" +debitAmount); + + // + double payAmountR =Double.parseDouble(""+list.get(0).get("payAmount")); + System.out.println("数据库中的贷款还款金额:" +payAmountR); + + + + int result=0; + + BigDecimal payAmountbd=new BigDecimal(payAmount); + BigDecimal payAmountRdb=new BigDecimal(""+payAmountR); + int compare=payAmountbd.compareTo(payAmountRdb); + System.out.println("compare:"+compare); + + if(compare==0){//两者相等,可以还款 + + System.out.println("两者相等"); + + //调用储蓄模块的取钱功能。待储蓄模块开发完成。 + + //第二步 写sql isPayOff >>> 4 + String sql ="UPDATE debit set isPayOff ='4' where debitNo ='"+debitNo+"'"; + //第三步 执行sql + result=jdbcTemplate.update(sql); + + + }else {//两者不相等,不可以还款 + System.out.println("两者不相等"); + result=99; + } + + //返回 + return result; + } + + @RequestMapping("/releasedebitR")//放款 + public int releasedebit(HttpServletRequest request) { + + //第一步,取下前端的字段 + String debitNo=request.getParameter("debitNo");//贷款号 + String carNo=request.getParameter("carNo");//银行卡号 + + //调用储蓄模块的存钱功能。待储蓄模块开发完成。 + //根据贷款号查贷款信息 + String sqldebitNo ="select * from debit where debitNo ='"+debitNo+"'"; + //第三步 执行sql + List> list=jdbcTemplate.queryForList(sqldebitNo); + double debitAmount =Double.parseDouble(""+list.get(0).get("debitAmount")); + System.out.println("贷款金额:" +debitAmount); + + + //第二步 写sql isPayOff 1 >>> 2 + String sql ="UPDATE debit set isPayOff ='2' where debitNo ='"+debitNo+"' and isPayOff ='1'"; + + //第三步 执行sql + int result=jdbcTemplate.update(sql); + + //返回 + return result; + } + + + @RequestMapping("/approvalsubmitR")//贷款审批 + public int approvalsubmit(HttpServletRequest request) { + + //第一步,取下前端的字段 + String debitNo=request.getParameter("debitNo");//贷款号 + + + + //第二步 写sql isPayOff 0 >>> 1 + String sql ="UPDATE debit set isPayOff ='1' where debitNo ='"+debitNo+"' "; + + //第三步 执行sql + int result=jdbcTemplate.update(sql); + + //返回 + return result; + } + + @RequestMapping("/acceptdebitR")//贷款受理 + public int acceptdebit(HttpServletRequest request) { + + //第一步,取下前端的字段 + String CertificatesNo=request.getParameter("CertificatesNo");//贷款人证件号码 + String debitTp=request.getParameter("debitTp");// 贷款类型、 (1-住房类、2-消费类、3-经营类) + String debitBank=request.getParameter("debitBank");// 贷款银行 + String debitAmount=request.getParameter("debitAmount");// 贷款金额 + String debitTerm=request.getParameter("debitTerm");//贷款期限、(1-一年、2-两年、5-五年) + + //使用uuid + UUID uuid=UUID.randomUUID(); + String fullSeq=uuid.toString(); + + //第二步 写sql + String sql ="INSERT INTO newbank.debit\n" + + "(debitNo, CertificatesNo, corp, debitTp, debitBank, debitAmount, debitTerm, debitDate, payAmount, leftDate, isPayOff)\n" + + "VALUES('"+fullSeq + +"', '"+CertificatesNo + +"', NULL, '"+debitTp + +"', '" + +debitBank+"', '"+ + debitAmount+"', '"+ + debitTerm+"', '20241124', NULL, NULL, '0');"; + + //第三步 执行sql + int result=jdbcTemplate.update(sql); + + //返回 + return result; + } + + @RequestMapping("/qrydebitR") public List> qrydebit(HttpServletRequest request) { diff --git a/code/springboot/newBank/src/main/java/demo/pengbaohao/controller/seq.java b/code/springboot/newBank/src/main/java/demo/pengbaohao/controller/seq.java index 20c6183af..3d43ddd3f 100644 --- a/code/springboot/newBank/src/main/java/demo/pengbaohao/controller/seq.java +++ b/code/springboot/newBank/src/main/java/demo/pengbaohao/controller/seq.java @@ -22,6 +22,7 @@ public class seq { String sql ="select * from seq s "; //第三步 执行sql + System.out.println(sql); List> list=jdbcTemplate.queryForList(sql); String seq=(String)list.get(0).get("seq"); diff --git a/项目管理/银行-贷款api文档(3).docx b/项目管理/银行-贷款api文档(3).docx index 7041a33a43feec8ac795c394fc476fbd8d475f4c..935c6f4f96862971bbfb0a5ae58eec4ffe88ef37 100644 GIT binary patch delta 6062 zcmZ9QRaD$f(#8i3?ry<@y9al73+@oyHSlK`T!IW1!VokNT!UMJy9W(0Sa1s-;LGlJ z@$PP4)J4~+>eEl3dd}(JZ<|!>6hZW6X6`(%_ugC~Eg{6{W5#OAe| zQ-YZhQxCdK32Lx>W`i3C!Ad=LAut(TNKn1%?~q=4?tXjFaGHjDCS%&5{zh{aIk7%T zD8~NYY~Arv09_|X(SM)~zB73k)gl%}Kgot7wSUE>cf_9^Go#CXbAwYj5VCgusJ zcMP7*f+VV-3BHY?)XJ4?BtTwWVK>bWRqJ*2_xnO+m zp2~1cd9!?iz#l(n8*cSh+IOQ>5yuD_^=FBG95lQxG|w@@TL;T?f~WJig&!anv-p zn~3}{(6Z;s`X0V5+2YLi)$L>B5+1{L>8*X}vq&O^Q5(RHP&QUV_V-Y5NQw>!sI_f} zUgWO*bTcedR}o8KP1?7SBROKTjqKRH-KIDU*+`vVtbh2uaFx0L*-~j7W*IZ?#-1W< zuF~MzHFWM_9sgPJQmVeBLDE!}3SBIx`IC91ynEJl{}APCnhblsxSWyek*;OozB7 zY0_e&A?sr5H3xs{DRqn6#WObAZ#ziLL>E`V%-TQJ=pa|;e(^&UQ(SfhnI`v;l+4sC zrMw=T+@wXpUp8{*y=XftP?ZveUzE0NtvCc=B}|JIX+K9nNPohAJ;hfhiL5NGUC)KA z2|Pu9k}fhceRWoac3Fs~61ylig3lx%H_Zr-9YeP!A02gS3X92?66QzqE%|eBlZ;Da zn*7b)c4hvxXyET@&bFuiHadGoyV#kYb)Nk681aF1>%$22{cnb8 zj2h5Cc-LF(yvy60<%2i8-JQ>4eb7MrRO5GNe~$pIW1}c4MaIOqt$7hUfD8h;VnXY1 z$$>XMa1p$)_3}sD^mTL*FjY039u*xO5+fm0#qFnEdoPBVSz01ecbKUpkDgtF9)Abz z&6ks>HdD*4E}wK!WBvcQL!qrOB5J>D9eFGeDctnjTLG`Q$tgm#>;FCRfeFlS3LQTl%WG za_mzoz!0KY9%+>0+vMxs3-rI!p?yjvq?5a)#!XdlGp}%GtIKak6y2pqJir# zlD+!P80(xa81rlXVdWmxOQ}yU=DEs6O2G8xEc}QY8zgZwpO=*->7$R1?ceyPG2Jr~ z?J(h#@8&h77_f_C(*#2^QsR-ZHb1md?@`pXLeqr#xDkkLTJaZ;zs}ZUZ6L@$8B%W8 zvL;T%A)v-_@}&8^{iDzNA^sN*+6*u?5N%afa;+3$%Q~KFrH^>5L&x7pE2lKM>BO82;3u#Or`Kh(b1)`=`@E}$dl;6cEiSYtEtX?5~01sCViLPBR_WU0{M3BNnV^ULD3hvvgr9IA^+D24K2!fq@@n zRXR872gKBwA1X5^jI)rJrJf!PPC{hnCS7@j$Q8(`bSL!d}LRVvPHhKO{he$84(K+N9bDOxT$8bs zzsY8bw-r(P_HuQj0W-Yz3(#{_x5&(c8e#CQ|MFooY?ouOFMHZf5vaQ|(8-qaTNvpm zG$Z*Tf*poea=2x!(%QG?#oi_3aAWX_!6?ei91$#A$f)j@JPH&t)ULs>3GU1yelQ8}HVR%b#0u31f4T~xTe|w8gLI~Idx2)_IVWTBl z?)@iJ;)W#-vK+#J0g)Rv#XPE$rMKb{_U@VEu_p8WYUo#V0P#)l*#EpIo##lU-5F z>04EMNAO)w_a^*J^}FjYFZk0K`(@D#-6yU6!`ckTH;f{+y8bX2!!kQ&b7L$svw)N- z)P$LxUJN27jdV6#!Q;w8*u22IDI#xJ&O(*bT8_WP^x5!-Al?bm{xah&ysGz^UFnI# zScUEJi$3p_6$mcQdGYDg7^K6kPWR)^uq6ZCq7NM}uDbu4976+`NCy>T{?mulGjtHh z(g(UqK@OPettgZHb-6oSE{Sn>&Mwd42zCcHIiWA&uFmC);vU2GwFY%e8H`&@TFm^& zX%W&S%;cy9vTVZ+!h}%RIH<1mPZqga=BHasACs!gD0^2V`s|h{ zZFQ1`*OOb!Axg{Y7m0pI;APc-78Rt7l-y!fpzBR6b?WrT#cjXBGjDPt}p z15-Gb^mfH$P=mg*wE~(_xiS@^fT6AwlK4GN3USir4ria9U>oJl*{K&Q`g##&AxThO zh>?0KSCVi@+_`$r+~{y>*yLrdk^7!-OL?v6EvqxK#5M&F1DMi&CL8zHP1R%h710V^ zU^ZgGM{AVn{l#I6x&CtH7IHl|yZrZa0FCIzeu&=BYm-}l3EgNqzZ?W_^VItKS?V_; z)J>Fdw-^$NrNLisZqxSW=WOxM5+A3D*e^8$?EDxjoOO5ED(Z07%(zI$hMiLg-DKbt zp{ZSX?+je}konAhE9#~b3FSoxj4IqCwGK&xu<;zo?2OD*)$=P{A0HHDNc+3Y0I0kM z_I4qw%$yC@Wcf0&ffYH6wSgw6`Y;5=C!nZ}&wx`xw*L!z;c|X<<8PsjaMPIB$V$o0 zXNGb=;_x$(kMDV{Q2`p6Q12|y$|KganKZaQCE9bzsmrQK#v7c0rppZT;25IcOIkXo zb2N}qSs~jEwiT?xG5Vv|@o!qo03lb7V{)nE-eQo*2H`uiDJ~@3ChOlX&!TVNf+z2P zV1d!Y630Ial7f`(iu+!;uX%ze&GnJ;+KIpuckgiU4v(+Av9su+X;Eo2Q(QtS={yeL z;{{$QXV-5%!-wteVc1T2NC&P=9OJgpj}&fZmDZ7~}b_ z#zMKYZzBtOIBEgN70NtTVT%!Obv~_&EqIs=I}zIRu}i9?rdwk1Lls9SE9py$ z$?&_R=n^{tCmh6^Xou=v9g zXx{RgHvgI+KQlqW$F|;V89=Ty$kRe}QVLWc>`Co)?g&QquXu(`%qEv}=MnS@JBz9kBi!3Z}n2e`S&*c^8Ae(TBlt0+v5Wu~BP4v-gbeu$rH2Gv&nQ2V+R?Z@IA5ND$?G;*lr`k!cFK6>7 z!`KN==rTV0LG6B|LG|sMZYiUnc5q|SRm7XX{a+{U>qEm=G<@rNN^R6}qTEWsuf!m| z>S8<`k z@A3NG9n3ypOk+w72Xy^3AI}==RMJ0npHwXfzKMF71}pm!{X=rtk?L_Z#`t;y<&G-p^=~t2LS2s7S7T8#NE>+XT)H%p>`+VGo z?|g}}iL$$p_^YM$4L_#PeUNd0io<#0x2F8I4Hc1v7*qf&%<4fir4#Ij*X%nkYC~%Z zeGk7(ba9EfCkP&J&Z!3`d8LB$K;1%xmn5IR1vee*`2sR_q*$+J+T$G$USJ zeXyr0{PL$;pS5bgJps@DhRCaK5Bd6U_Cr>4dwD$djKwg^7sUdw2!XY8R(wff7P=H@ev9X=NUP09TkxJJfEnx zb*E$tR9hL{`Kxx{Bs3&W8k<*eaqE}v(IWihs5HXR>iAu@Q4-%v&Vs7swrJHVab8v0j%HhfyGtl|8IjWs zJnL}K5}_rcSE|YR-3Rl0Z8k2-Rd8{_TzsQTqM{|JK0Mv)uQHXD8Vb=%?+j+U$@S$~IZZ~cyTE1$|r2iNt|+3K;0m$vw4OqlIm$UqxyuwZzaFD12vaCu!k zY8)Vo2%AL~rvC`W8VAg>x*S?pjCp|6Hh`E=Q)3kEAXctaOrh!Z5;w9b0}l41D4uj% zUQ=CA=nz>X-jR!rd7ih&NrW4zaV2^|^vLVR7Qz$jf>$lkwF`TtvEGhJ%Z~W13ChkJ z3L1$-SVkU*e)ED(s`FGvXR@V4W2@NoClx3+Qp zH@oS~Tz6mQAsRS+bxd8j+UzCkq^oa&z%b+PU-xyn2_3bv-^(tBkH*TVJ;%Q_;1`Y6 zL7qd#Li1vs#_cR)qPiO)c%x6U9=Mwbc;|l(#4#;k57j%(zeu>+mSIUhLDSF zVzVY&3@ah|@`z=ZB)N)@#5z7BI8i)>bCR^uJ&$fiI;uqCzq-kB)E+*O>6a0PM%tg zzT;&&`MIX}z*-g`u=wxF1+l`xKCxsPxMC^=68=y_PRWmbGW3kt)%CEu(3>jMNK9Hh zkY_?WfqbAY3gV=XJNz}(fL+9%ip4-aDQ2TESqD#|eq$s8Q3ojm7rN>|CK(P;8IX^t z61a7?z-m+phC=uVK8AX9D>s}b(P9W?L@Z`bZ$|tAYeH2qXbvDW@62h-l{?zLc~-Ct zp=8X6i>TwtNpD~$oT4BsWb&PZWUGK=BMf#T=`5>hkwQg=d)S zi*p0~v2gEU#f~3+cg``2Uw3lF>|)MMFKhX*2k?5ojAacX=!eQjawFCxKK(v9VZMY<#! zxP;&9*)}wA9`kFb1<@LRFh6M#8wH}4_LyLm$K-64AWm<4E|Eb@*>HM1BStvq9!OE0 z{8p6IwChP$G`%W=zlb9~|AkF#6b)cjVPpg{Xe*~QVk8Unfs+rhj0MWgrT-7ih9+_e zQvL^7{WnF#D#LQ+6N zX@S@0c|Y9md!I9BKFl>|K3r$cZ|3(;wES(A@RaCW(Xr1A3jlCSl%_=_jyv}V07H*b zu1U3jM&%sOQi?r?ChN?zfkr?^6Y`ZDjW%Fh7mLzzmX7mAVeWXD!-T71r(j`P?&PuF zM+26CqzbhmIFs|JUUFE_yBGSE+T^Fl4@9zO2MOv#)I!{_9oN{4#(P)9q!flu>5XmS zU8w=?S|v6U>h6j^T!9FNR3zFsfwY)b6J*LT^x%WaDt525o2Tdf!z#+7%L6-~d8YIv za^tT81iw3a?Kjj~QuDIZ7Y+zhOK{I{mLWPuNTMGEFXzSte*Vc3ch4KjO1LY2cGJyC z=LvnWD6=h__)=^kxghK(x{U=qLC+=0Csi|mE$3CJeqU!|_Q3{0aNlC$TA5*&|)ovYH{oPK|lwc*&MX0E(9s}3rj-C?7T=g_NH;jj0o#!E+tdu#{@Zv9 zYybfCch%Yjj>2F85pu9z0ie=_$`{sCX}9d;#=03@>^Z8G1TO5_PY3p3kVLAJO7BBM z77?CifU<%sNfPv-Qq3#-dl{EI@9Y=Pgf4z|FI8$$C1~XP)+aZh=5)(}K?4B-JJF6B$dCLIzT+5pqJ{Ia0mo(H@oUAB9Gi zhf`{)ny<7=)>P_vFOi@7qpC8lOc36GNCtP7>X3DeRyG z)2BIK?2heC@@cW*4$E^LNo*mUmTN*?9jecaW92b0+BM*e_3^92=FdyVA+&G4w-~k- z>Af$j;yz=lXgqA@qC(@d@|J{#BGNSnK48UKhO@H5uaKK$SOm-o}GNh{68%F~D1`&vrv5z8Nju&u0BXKulC8i43=i4Bo zYC}q4k?JI_Y#P|%a%mUQ`mYAQt}z)v0(~JGml#3iu8T;;1pt0L_}@$FozL6Ju~^^4eMOWqU^U~GEM}ERG^p_;)Pp57lv0HrWh>%R=MTU$lT3=i=?aMF z0nf5#9oDzApl`M$lv^*a2aMo2YC4ejxrmu_dKRk;t=a=0&0pHTq8F#aBSQrsc{>Ov zIbRF@`@4NMGAM0`RcjDOD5>|CU-|<@auvnjsay**tsh`#5SNPzUY4iw!sf))vuZaX zg3yAPOsD<&uXmd%w$_uQ$%JYY8Zh|d22D4V>rW{wwf3PMohKGo{@4c1p z{}!_7X@BGxuYMK`Vrg~RxmYG|8`M~myrXxxzqzzLNVuawfkh7PQpS7V)9f{^4 z>=={sT~c9oN5g&d@1ZUi^fHKH1KWFLvbgG7(4A3kuV-rb5JzJlQjhO?pvDy?5rNr zxm+sMonzbFaw96$xjQt}l)~vclUz_sb|Ib)C!*>_@9ul~Mj>ID;drHB(cOKc@JQWs zE21Fzp{l_tUPGQd7KZM_vaOly5nM@Y8{|*U(v`M*v0?rE&%$xT1aXgg@IVAgSn{82 zmMAUdTSGcke%7c_F1jLuLS-V?3IVc9Gppav1XoK0u!GHdqIWK4Z-S`^0*2yBr^Csk{;EsFO?bU%Flm~~aoTCCVj<$ zqIX-aXaVQRlK|Xip7jI@TkU>F5k>{~o+ZL2SU=YS2iXB1Lr;OgXo(`PLtAm^`!pox z(%EJ78$+J+v4{#Hr-^|kP(gWX;>bhIS9k5l8kL!ywxK;y`!%Vdcf%K#qg;$Rj zi+)9F*A7tWGxGYg(xJp2HBr^>FeaLUkn4=m={7_xvcRkNJn|uv8Yb)4iSMuY6X-wX zQ5xeT+*r@q$^J5I!twub?C*>F&dJ8v<3AibG}F|Rx>nm`xGQq&wjjfsGM>jvm{bdBW-%x*ej7o8t5I|%UPc=WLC}2nX#?kS`S_!}wvt|`KR9jABS2(rKFFD))JtAB z7e?v>N&I!EZ3iC&d-}o{v3`7br84`{T!=bQgvxV>i=tahBkrjLbiD%41??nMY^9Ut#S!)nzk|gSTIl&wr76 zYjE{cyapYxEQZk;eJMjE4Eo6)HJ#~WAlIzkxxoreEGl)FT1{UqvWnLqXmqlMWEt(h zChhO~YJL+E>6B{HwN!a1BRV_ateN-r+Vk%j6C}dxl~~fV|D>)9ZSA*mt1tUeNY?^Ukt~cSjqSFmdfqL|O3{XR%FUfAkP~6YJ>!_C z;*JHC4MwrFm82YCi+|7>8_<=baJJzL2IVsEyymkv(C(VkdRXP7!d;h7fUM1a1g4PF zo{DYeBa-6+{f@ys>XBToVm^8*l187RTqa7BcE;Ba8=b(XTU!@ngL`V8xV&tNCkN)z zoKna=iL6GIX?{Z_#pHQXLVT3mE8KJ+C4a7Zr#JNZwb%Wd)PO_E&`huCF6XcKX|Ye~ zaFio7Lybsp_^k8=ZC@CJITy${1@r){@3>pAXvT zXM?s+!wFJ#HY(ZhJ6pGcikiyslwBaf1-|}xpW*2+^9>=i{uJz91x zlIhLfxo|!BLK~WY41Tz|>a}~llNZ~@VX%HIHqvr8Ca+K*aJppr-ru>Il;|k@p>d>% zo$_i9T+eHmx*)?X6S<+foT2*Bdw@~IS-c=Fu&R778%+dU+MSlY?ZtXgxxLc8JdKp9 zzB3Y&XeB^!K{eCHa=h%6D;i>(=1&#&x8C|6eQfd2k_w2y%z3S54X)00-bA$28c6ZX z$K?W2EY!XHK0oVmmt;f^4oiO515I`@V_Vd)@!66E^MC)`WX!jCL0ysJFZ=3ni%nJx z@+KVDnW7tbMhyIVIr#+IV~CFp*nEFw*6{X#tVb6ilvJ|8qrl>KBEbgyNxYtbvp#TI zIB+q^$jZRa{%m)o8Eu;$5KR5>E*Ci_N&GSQ`YpuXd_Rk zR$G@#N`(>x}Wp1bZvmC^)cP)Of^2gNuVbozV zzfxd*EsEmVEF%=!xsv8SU(fPxz?mImi`RSMEmsBlKDOU{wS1c*IP!D8UjO7aa66^1 zl`f^>qYM@$s5P#h{4L}tU0yQ3qT$~Y*#962(Q*gW^);V* z7pvWFf~I$F%MI^-Ul9)ef@+fKVGq@4-1gPZE!N^*x3`@4nexGNI<$=|(R?P87VL|N zc8Zc~st1R^M9^I(af}7?BM$C|(hGStFuhfYnmgaY)jow{^8DA?tmlyF1pMg)7HK^x z>9EW4X!Bp_3bSbkr>>7j{_*$Nnp}nz-*%J1_Ek7@7VOEbis}=$*V}du1`|eVFgorcPGy_4kihTif2EOz** zl$I|SN#V#^c=g+4C_^_4uZtKYzvr55X}B@eE`7eKS1^Tkh})e1j%Rw;yfvGck%zJr zmt&Aww96wcO!>ksnD1cj53kTg;CzEYtDC>U97S$ENr@uWwW4q{ED2o+ej8e0n#bGj ze68n%6HvgC0zZUKIFB>~IYQ5$)`owitZAz(OPdV&e%0^2!EbX8bZ+q=$~5yKMIU*@ zB&UR5jOwwb)n!W*G;m3uKDMQCk*gcou2)Icta7$Jo6YEy>GIQ%zwtu^S!Ki7k716v zX9l_J$2y0I6k{8VWB`fV{OILs#_MF9izKog^28wpw#4d)Wwp~iPDF55@iM(yj~!o+ zs*qOHxlH8w>ZqerbY#ob@1GuXB!rmgp4;V0%D&Mgzu-+)iaF9?|UDH7kvsZ8{kL71c>}!Ztb2co-yUMI9(bSio;A>zgjQ{I+E59)8OsztQ+ENOH8;Jg@(Du4DmJ7 zqQku$2~4;%h}Y%OgFOSzc^{)KRt{(o9JndAg%FYM#5F-8CNgTt^NE}J)33jbv5?rl zID@d5Ww;1Nol*kcHxG~GNb8vM!_Kl>!@xiV+Q1Wu$jhzgI32fXLlVE;R=Ep!F+@lu zsOQP00uQ4`aR#9Wjj}y7!I{7Y~QLV?SRGkU&=YqD$X<8p4V7sS?B%R*76SzA_ z70K7D8#*kEro*Y;(6%d`THHp~_|Pya-I#ZWQ@JuRk;THv62)&gyUn9Z%d{ry8aY)_ zw(d2t52awsX|qTy%whfA^OKB)E-~#PWDPI1pD<}6TALEb?0F$cYj%$C!RWTRAl>8m zb2LKEWHhiEX(OtuoU731hIoak$;u3E*Yke&$~?(ZQ?OZ)(?abzek&OUJ1^-4Y^p?n zHA`Hw0Qfrq|21P<7iSM$ODjj4|9mMs z45s7$s-kb_RQ1Y5lPN!17KQaxq^4%!-eOd@0W7S6dnTK}f`e(E;x z0|sqhe9r&g3B@WKEH4oQ0+}8}yT6@iS=7wE>lWIHQ&GY@YP%DA%h;nMnD4jXwb~Aw zuv*l{+os4Sf?fYaa$W4rS9eJootFgDj0ByTo*Axq?I4sAFC;aK-Fs@pX~fo#zw4@m z6JI{DW9mKq$|j?ZH|i!g2rcX%AqKX(F4|jX@mPr$Lwq=9@Yvf0_N7#XhPawDXH8R< zQ=RH~!?HJD7AZoS?NXQhNOS_w17sKEf|+Xhef6RdStkc^k~t4jZ-)G=GWKigFRTW_ z`o5FYm>{n6eH-v6jLt=Efqoiv+7s$^9_B>hEg1=LKFSlz3C4+Qz6WdXg2cNEZ)n|iN3X4O*lY~X-i$?mvUK301*OgXqfj-f?l zKo7Bxma!2GLNKUL8HJ7^lIg0Sl`b>>nmW?+hXL>qtm^qlz zat{o4$_}J#;ufJk+t`(_I>rJpE6K(n0G&$bot_oXtCXO6vAxda5J$%KL@BFKVe!=Z zAW#$}Yk)Zr9LuL|A|3BVlyDKJE-Ux2XICX{O3xef*h4m6fzM6dHdxff9LgdHRe3#F z|8cpzRFRi_aA9)apXJrBMN3_AWp$fBw7_Rt5)@;0c1?w!46GZ6YM|+BmEJ^%9GaRr zr~!2~SoNwEXUVCPWCN2%VWodJJ^7(5v(&%1Dmee9&Wz_bYUU(^H_qxZ zginJhT8TD@yGQg<5x6p*(p0poyV!86NKU))@uDpT&qeIxQyF9J_p@>hg3qdOPcIxa z_Iexq)Ae+zKsko-y^%v6A16%_4Jw~=vVjeGcMsT)s_^o^3Sv!u-q7LTcXfZe7=Q17 zbD_Db1^zr`qfGOy?qE*myJehHqf{005p7J;M48FAYbjc%6`d|CFuj(P5NXtAD)mu~ za9=isiHoPyT**>vt`;ZGt@2c?qelU=fMocsZBb}xDjhE)+}~5%U={1Hx#n^`!^OHm zE%3-<+d)vYyh7N~5Y!7^-G4HBR5|Zc@V|rPzc2z|0a*Udb*L-eN4Wn@JX!guv4l{f ze6m=vC?7r{?Aj-&D!ymfD^F0{e0<=4>+wHF^r86qAA$c3yMOA~C};l1;D5)2|I{;3 fANi%RYEXy#l33=bCjz2a5h%C-7k(V?fA;(jkAJF|