From c8abc8469c6f402816348efdee019bc29798ad4e Mon Sep 17 00:00:00 2001 From: leonardo Date: Mon, 16 Nov 2015 16:49:48 +0000 Subject: [PATCH] bug #6829 git-svn-id: http://desenvolvimento.rjconsultores.com.br/repositorio/sco/AdmVenta/Web/trunk/ventaboletos@50151 d1611594-4594-4d17-8e1d-87c2c4800839 --- .../ItemMenuRelatorioArquivoBGM.java | 153 ++++++++++-------- web/WEB-INF/lib/integracaoReceitaDespesa.jar | Bin 13642 -> 0 bytes 2 files changed, 85 insertions(+), 68 deletions(-) delete mode 100644 web/WEB-INF/lib/integracaoReceitaDespesa.jar diff --git a/src/java/com/rjconsultores/ventaboletos/web/utilerias/menu/item/relatorios/ItemMenuRelatorioArquivoBGM.java b/src/java/com/rjconsultores/ventaboletos/web/utilerias/menu/item/relatorios/ItemMenuRelatorioArquivoBGM.java index a2eeaa2be..7a57ab6f8 100644 --- a/src/java/com/rjconsultores/ventaboletos/web/utilerias/menu/item/relatorios/ItemMenuRelatorioArquivoBGM.java +++ b/src/java/com/rjconsultores/ventaboletos/web/utilerias/menu/item/relatorios/ItemMenuRelatorioArquivoBGM.java @@ -1,6 +1,23 @@ package com.rjconsultores.ventaboletos.web.utilerias.menu.item.relatorios; +import java.io.BufferedInputStream; +import java.io.BufferedOutputStream; +import java.io.File; +import java.io.FileInputStream; +import java.io.FileOutputStream; +import java.io.IOException; +import java.util.zip.ZipEntry; +import java.util.zip.ZipOutputStream; + +import javax.activation.MimetypesFileTypeMap; +import javax.sql.DataSource; + +import org.zkoss.zul.Filedownload; + +import com.rjconsultores.integracaoreceitadespesa.Arquivo; +import com.rjconsultores.integracaoreceitadespesa.dao.Totalbus; import com.rjconsultores.ventaboletos.web.utilerias.menu.DefaultItemMenuSistema; +import com.rjconsultores.ventaboletos.web.utilerias.spring.AppContext; public class ItemMenuRelatorioArquivoBGM extends DefaultItemMenuSistema { @@ -14,72 +31,72 @@ public class ItemMenuRelatorioArquivoBGM extends DefaultItemMenuSistema { public String getClaveMenu() { return "COM.RJCONSULTORES.ADMINISTRACION.GUI.RELATORIOS.MENU.RELATORIOARQUIVOBGM"; } -// -// @Override -// public void ejecutar() { -// DataSource ds = null; -// try { -// ds = (DataSource)AppContext.getApplicationContext().getBean("dataSource"); -// Totalbus totalbus = new Totalbus(ds.getConnection()); -// String fileName = System.getProperty("jboss.server.log.dir") + "/arquivobgm.txt"; -// String fileZip = System.getProperty("jboss.server.log.dir") + "/arquivobgm.zip"; -// FileInputStream inputStream; -// Arquivo.GravaArquivo(fileName, totalbus.getDespesasReceitas(null, null)); -// -// excluirArquivosZip(); -// compactarArquivo(fileZip, fileName); -// File file = new File(fileZip); -// if (file.exists()) { -// inputStream = new FileInputStream(file); -// Filedownload.save(inputStream, new MimetypesFileTypeMap().getContentType(file), file.getName()); -// } -// file.delete(); -// } catch (Exception e) { -// e.printStackTrace(); -// } finally { -// try { -// ds.getConnection().close(); -// } catch (Exception e) { -// // TODO Auto-generated catch block -// e.printStackTrace(); -// } -// } -// } -// -// public static void compactarArquivo(String arqSaida,String arqEntrada) throws IOException{ -// int cont; -// byte[] dados = new byte[TAMANHO_BUFFER]; -// BufferedInputStream origem = null; -// FileInputStream streamDeEntrada = null; -// FileOutputStream destino = null; -// ZipOutputStream saida = null; -// ZipEntry entry = null; -// try { -// destino = new FileOutputStream(new File(arqSaida)); -// saida = new ZipOutputStream(new BufferedOutputStream(destino)); -// File file = new File(arqEntrada); -// streamDeEntrada = new FileInputStream(file); -// origem = new BufferedInputStream(streamDeEntrada, TAMANHO_BUFFER); -// entry = new ZipEntry(file.getName()); -// saida.putNextEntry(entry); -// while((cont = origem.read(dados, 0, TAMANHO_BUFFER)) != -1) { -// saida.write(dados, 0, cont); -// } -// origem.close(); -// saida.close(); -// } catch(IOException e) { -// throw new IOException(e.getMessage()); -// } -// } -// -// private void excluirArquivosZip(){ -// File pasta = new File(System.getProperty("jboss.server.log.dir")); -// File[] arquivos = pasta.listFiles(); -// -// for(File arquivo : arquivos) { -// if(arquivo.getName().endsWith("zip")) { -// arquivo.delete(); -// } -// } -// } + + @Override + public void ejecutar() { + DataSource ds = null; + try { + ds = (DataSource) AppContext.getApplicationContext().getBean("dataSource"); + Totalbus totalbus = new Totalbus(ds.getConnection()); + String fileName = System.getProperty("jboss.server.log.dir") + "/arquivobgm.txt"; + String fileZip = System.getProperty("jboss.server.log.dir") + "/arquivobgm.zip"; + FileInputStream inputStream; + Arquivo.GravaArquivo(fileName, totalbus.getDespesasReceitas(null, null)); + + excluirArquivosZip(); + compactarArquivo(fileZip, fileName); + File file = new File(fileZip); + if (file.exists()) { + inputStream = new FileInputStream(file); + Filedownload.save(inputStream, new MimetypesFileTypeMap().getContentType(file), file.getName()); + } + file.delete(); + } catch (Exception e) { + e.printStackTrace(); + } finally { + try { + ds.getConnection().close(); + } catch (Exception e) { + // TODO Auto-generated catch block + e.printStackTrace(); + } + } + } + + public static void compactarArquivo(String arqSaida,String arqEntrada) throws IOException{ + int cont; + byte[] dados = new byte[TAMANHO_BUFFER]; + BufferedInputStream origem = null; + FileInputStream streamDeEntrada = null; + FileOutputStream destino = null; + ZipOutputStream saida = null; + ZipEntry entry = null; + try { + destino = new FileOutputStream(new File(arqSaida)); + saida = new ZipOutputStream(new BufferedOutputStream(destino)); + File file = new File(arqEntrada); + streamDeEntrada = new FileInputStream(file); + origem = new BufferedInputStream(streamDeEntrada, TAMANHO_BUFFER); + entry = new ZipEntry(file.getName()); + saida.putNextEntry(entry); + while((cont = origem.read(dados, 0, TAMANHO_BUFFER)) != -1) { + saida.write(dados, 0, cont); + } + origem.close(); + saida.close(); + } catch(IOException e) { + throw new IOException(e.getMessage()); + } + } + + private void excluirArquivosZip(){ + File pasta = new File(System.getProperty("jboss.server.log.dir")); + File[] arquivos = pasta.listFiles(); + + for(File arquivo : arquivos) { + if(arquivo.getName().endsWith("zip")) { + arquivo.delete(); + } + } + } } diff --git a/web/WEB-INF/lib/integracaoReceitaDespesa.jar b/web/WEB-INF/lib/integracaoReceitaDespesa.jar deleted file mode 100644 index 4f4804a7f61a1f25c1c375dac0b73cd5b9767ec4..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 13642 zcmbum1#nzV(k&=vX0VuKeQG)%oe*aiOYu5f>Ul>cuB zVji0R<^b;ZuZ*U4#x5>ji~&}~@dk2z%ot%cn6JnbzXa+`BcxB`bbbV(x1UrM$sDQ9 zCME#4-@DRvDTCm=Qn@-0d62Vwu33-F=&ID9;1hn($dEgeVYoqhS~<+P)VK2UOte`{ z#EdzbaPyK!Zd@c-h87S{I47J5ZRXy+P;zl|#GDH|S4mRkV-vE&4|6&3sk=Tkb{cYM zwN%!Z7<$8XH4d}GEQcWlJ*OpME#%}IY4UGybg0Zk*)O-tvvI%3$W*$iws+^bHnATC zJq*f9wc&>0sM)tWI4-cgXsL^jy&SOy+dUA)9!rciJUPOkzv8@#TVr-7yF5Q-)clE( z(Ho=n#qSt^gZ&*PH1~gx63m|{eQ|cQF*gOcDt93DG9zS(>=0F4u-CGLum;3wd-?=8 zRne9ykWxwb2+F|Zk=8v;xOdC#9Zb6qWG~SaF7DUsCP7-W$IP6!cV_*%)o3fXRI^@Q zgL#YnR9`Px2F@3c=T(8cqBa^}6dO{+50Oj(ty<(dmw)U%)19&-Ai+uG3LAmij#Oc* zn8I9u(DDPWT}D2Zb4@cOyFRu;ZOwKl@ zjt(xab^u3ba~CFS2Y|Vyv$3i1@0O{#HNe=++~te8i!qbPmoIkKrp5qkM~8n+t!xcj zwN*(Bfl;|Z)Q}9RfD&s_G!xTWI1;7VMw+-3%`l7z^yifQ7*xyzx>1=IzGt%MWJ}bBs`tTif3YVU0K@7?ZmEma4*S8dljK0PiKPN{a9K~zb8VtGg@&ObrqreQJ{d68g z^OU5xyb`!$+}ROevOK{fVlki~z35oKB7)6Y-xd`}ELP0lq;okdw}rV{NyB7u5-3$K zxXZCFHOewZE2Veaw@J`_nQJ#b(}|#_nvQfLD3nfcYdxQn&Y;Kgoh%Gf4=9>VPm?{T zTI60Hrb@r_B{*~v*}^c@%&^(C=+`@`5@tGS4H*S1gs@-kAbQlm4T&Wmnl@FupK^*x z%=Q7(8XmF4(>ib)q2SX(%A#T&u97Gzwu%>r(m_(}siQy7OvOAGn-lA)A3bk_y*qyL*}iVC@HZuS^_Z_<}3Ro4_1Ydr{-LaWgWS) zmDt^f_DYKq*e{4Yi(NJXx<~yyJ*dFRgU zp_VU8wQ=+;#sGJ>)1=dWlvY)^JWbU)M7M=mTT&$_59Kw?X2tSrY}*QljLMJqygt#$ z5Q9zH%Ad?Yw#Gau)ns6?s<$nJDq^Pn7(IF0_9D0*ZOK_fipm&`zrK-qc4s%AM^xv* zqrJX?h>!d2GQ7qUO|`|7roZnF&s`F?_=gL^8zE$@aFZ}}E^qr3kS$)rS2A;3>q!%2 zT@4z?o5L=^xSU!Zn0@8YFJ5cDX$#Vsr-Z%Pg5=~tgl=I|&+Hp<*JnrD0z|GaKlQoT zwcvE6dUuWhYFR#vS>nhtSpK>$Uy9E2WZQzr`j&7=x`moj=@HuyIcbsxJ9+&9M`Py6 zFkuwrhwT*Hl1|F4 z53&E;pSb_a{mI$M)!NPRUwc!s`l{-zGKN8Ta}fh5EtiA@govJSK?GM+0O=M*02?#+ zvs=Uv3WAJ)jEMgL(UnfN$TaSd zFymp^Mf$dr5E1orb$^$^ep65eN?2;ymR=> zxUqz)HU*$D2)J7Pn9zN~8}H*rGlweb^q*FEz{AKWRm;q+8oPwYk{44#_4h`*jjZa$ z!e8X{y+*2eZKXJ->Cvp%ri0kyW3)OWjF;X&lBdrOzLIxqWahhbeS~Uz1?qkC7^yqd zYsMasXv!Z8I)vh9l-mKkU2+scvkk%weW%G#3-6rDc<{Ma_Nt510c4l-JivO>=%_MzfxZ z5r(}Ci)8tlXeeDCb~H+4Ry*3zO4^55jM6oii7?({s>bw5C8~=#uZq7I6WT|i^7Ol= z^=DBMn*E1O?qkJCQE}a~;6;gRaSXLM)Gw89;R{LA%~}&oa(oFFPuNw=b4>kfo}8m{ z^Yv$<+9|Qh^wI+wpvV=ffawof5hnDo-IGZPCD z0lbzkEmPyn2|h6g4|`ZQ2!_nuTwnaqv6Flwx91;P0u}UqW1g2=hB;#5Se_-_@kk96 zh|4_z=+IO6G{KSp(r`jvXc|`WvFa(DU8~to;dF0K@QGgV=&dm{0w$odX(T1tNlxJf zuoa_Qj2H2j?={Ej-3m$#cUe--nR#kZP>5M9(o<0Rc}|(ni|ScMP?U3-4vLP(?^J)* zBe{vKBrP}y$T8&K>k%*b-%+c;f43gZj2)TO9RbF6Cay03T9o^Gus-VZ^FoK?4+)*Z zq5<5ft`JEf8Z@j>A04Z^bYD(nw1MS(@}B;QzZ@zj1Z*M z)vo2bRUHQUWpa8=ZqvGNA(#G_-i{A>#4DS>UZB{1b$U;B{aSOGe9CpX$yhtp``2b7YEYcIwr91pHh!p%XrMJ4P1&k^neN$ zs`#haO|Em3Iivjw@&kxzyxZ_pE57-k*PFqKDEana*MalKni-p2M z{*h7%y>iOC;OID-ZG4pteT*H7T{3qE8M5z3KRb0}eFXuWbp*tnC@ob>^n(d4k$4xL z#?*$kUrP=%ZJG^jrdr1w%FV!TVkOjiHkiqZ6d5#6dKf2kpO>7YQYm5PYVH-|Mhl7>0V99i)~g?*AgVj;R4XRl}VrBJYV+at{ob1|3$yB)Egw<08n zRzNtV3uNf4LY+aetdCwv!*d(ml{ZLp##W_cm@3Q00!uQ|^}@LTCDI0?qpcj<=&5ic zc_fXAEgg`rrs(#FPC~u#;%_FVwfoY>{G$Y<{cu^+qa2nbsE|C)RQEyKER;I$2VqHi z2Q+QETz?T6o3Dq)+|6#NH`G8qC592_LnRI~U?b(~DRul>qF9(ww^u!*kki;jjzd?n zcFbf+AI=ISD#g=`Bu>^UYqkV_^uCC*gbb(bI)qFhyPQ@@i+;wm7J!2puPqGpk+9{_xV*NbqFN2haH%%QyFFBBtQ2H&X5(rmYaR2$gR z$Ezw(GX^}%u5V^e0ng`6D`#F6?yTnrD4UOa4HYdj-Z{jKNU|kOqpUcx_X{p{b23?g zl9sbP0jOsxiP~*l_2m`iaqY+YF%yNCeda0A9zrd0Fe~cGLn3g@Ly&lH0gC<1@6yCe z1gLDEi>3$e#K;D5@x*iDc!J8cS-u0=+mjfkii$XcHm$;BC^^iN*&l;0hEa&oLWZd1Rvg{I4W(otBn1q4SJBKcFJ zEe@0zUKV81pC%YsRNtMd^i2^=dlW$P5;U=m8mpQF0Jop)0?L^)*5pc_YqC*El4lc- zbxT^UTu5>Im>HkV2cr^Xm5&um$P}PCL|Bfq4;r>J7R18zGLjkFGp$D!WxC*w8RJ9O zB(NiDV({$IO4O1#p~pC76kfcn31?5%6+s>lSUZjcxec4~$BxcV(6~E72g~k2W+e!L zR1S9I{vTxhUebl($Efl7;)UEGX6CKwc^M6i5W$8l*(WsASC8Q6?SLL3G`S<^vu94^ zoK$g>QS|N%M>|MbfeAo&nqh7n>%G39v?-^*OFfKr4!hgZt9Yu?Fif2FOpzt~W}Y;y zKr)F+XG`e}QG_DQgZO}=2CNDS4{4pFDuWK1Kp&uasV<~iDPWdF0o5@3N1R=_a9i?b z#HUHtY^pux+N+)?mE#uqLs^~vp-a7!Qy7TU(>f1wq#-m{$juCDCgyC@C{>i14z!%& zc%!94c)b_^F%9tPYAZ6L0#>r>8^(cvMxLzvJCnqgt!tRACkteFrF9=VD8e-go8Pt1MDQ0_h7;=7tMoN5!^m;mXjkwK2Omft( zy`nRSkc^CbC^?LHE@P1RDW!hc5Km-kq@z4DZZKZhx?DkRRCr^itkXu%4NRXuo zqIYS#jPr-0D7@r1B@i#BfwGPyo(h%H$OCEuvjT+JZ?K1LYbb;WB$sN(1SMU2GcMm; zX;nk)?{Zr0pItQH9n7K5gLZ33BRz7dsodkxm9PYa=8hciP!lsEw1-Zx*%?r>*m=_HHOms%2e%I<_L3TOn6DX;9ud$Nz^ZQt#LA5+Y}x5Y7zeH+ac z_m#^PHPK{mt|Or0al$`IbO*)dN-UeDiVhwOXLMu1q?(*8$d7|>9Uch9T`VaOF^!3i z5jlkR26&=+07&>escR$T`XPs>cfR#xg-QPj**H~BoA&yk8*58 zugg<7IjvGSh*;=SO~pSU#nsbYR$Wt1SMo29^8ZRN{Z6Vo{$kTfh)rOCql9cR{{CuLa6#7^1H zGK`6jx+co%PtYZp-w)Vv^>|blUneEFPZ|z`D{R47IILH4`&cD)ZPrka^+uBWp7Jl= zGqGQSXbvGto#|#lJ->sF=~(68_~b+1A{06E&2Id3a#kXxB^qL9B7k`4#}(P%O}9W` zJz*q&rOo}$PW8dvkzP~jgEqVKDs~Y+rnjG%&U>R&JH%>}yv<)Hf^j=u{4)((k-tA} zS~f}J0*x^K`lq6f#^+vk%0w!z=nQHoJvfMw#M|;uXmnVJ+tR&-H3);~PD;hcmpB#{ zFJmcBE|!E`Jx$$(<qsr{D*` z!UVbIbPw|5FOI;0xQ&LsijdxkARg)a(m{ESXvQs`@Z%*T?r%c~naN;oMdWwVh2vD* z53&;(rI39&qk!7FpE{}v_a5dkYtlTzVfMbcG)5b>?oR_zss)P?832zVQ>-X=NCZro z;j-%^zkCYA7QzQ;--SYPt1$rRm7pGvpFgRAhzSX{Xde4p5nDL=RV9uU{mdn*7ppiY z?#v2W zZ>eG$#NvNL(l47nJ&SD~Rjw9FAi$Hcep^lQFm?I;%J}22>DaNtxuT+h4tm-6$bl)acr-sObhPt zC}suHI}WptZr$KAn$#!Y1xh1{r27kdFPJL(h9b!S~u%>n|=6G zOB50oyjOGvlt%qACjFXSqtQ-K9u3i#Vy9}hGLV~_14X95SZ?6H- zEf#s-Sb_(UM^e#(oIYWqRjT{pz}?KbM?><{mN=BzqNr_70wZ}iVNPIUa`y}iS&G6t z(B;UBxJ2$>8@2b@B2d~Q{kn?}O6E)?)SATgmfCrefrlh80()13{yN(2OjMBQJ4}{3XA& zb03%|gai9xlFk&Rjn6QN5hkkcM^v5-yX#Ec^K_HtPy}8s1#aH2lv>_ip5uh*f}d$I zd2W@x%-mq@=PR{4*6hi)dctSHHJM$PXa5N)cp~jJxi#)%(BJ)93fFO;{ZVu$rXy|e zW6K}!@|FE(-J93LsQ?z;SR=@x_Sc8V!4E8GQKvIZDl?T|L@|tqnUMEw+(N4Z9hy5y zT>P8T%uw>&OmE{oW5FFypXYlRk+<*U4H1df?- zum)yJtyab8WX6e8RF<%gW1jAHM6SJ5>h49?Az0AQm6mMxqL3<39PxuHh_TDd7(l9& zN#3KR69FuUB5%qvsarMd=bkvS$s<7C;OMfPyfwiWZL_Sqx!M`XJ+qG_*sW6HUF1&plLyqzl74Wr^elc0sfw-#Ma_ zq%qCQc5e8f(U}vw?gZxyPG+}QxHKr;u`<2V8jwITyl`B50#y`kfjI%k>Br+qhF`{< zD%~gzIJ-f9=wP4x?hlM{+Zuwr!nDo_LA+x(BoxIfWaY}m?cZ-{-`EY+w=sO?W8K#t z?s1kF2M7^0PzVCbkwV@FMV4gofd2RD3R3xYp`4*dvwQFK(ox+3ih1b8IoMM&c^F@( zL}C8C)}-uOqa zD|ka724z!F?Pjk6>_{iiEOT0H!a}Gvo+ZE_2KVVQV_VyoW1G3pLvvDMT}V2IZh2_v zYt*!<#aa*3u%BNPm)U67AF2$qpA^qxvky$L7eqF*rxtj5Lp7($sn5&WKx|s$7>hYP zx^w&_Tk_V#f6WF{=aw8EQzUV=O`gwmA}2&OicM26w>je&K#tk7D-=ZT75{wXf_HVX zrfo7FQVMui`a$?vc$Q@}J}sZHJu?tDw*Tn<4vRy2HKJFpj-bSz`i^oPK?eor*p>e1 zunbqhlw`Fkt{Ab~7k?e80)N5-ni|?5zKBp!wUnxSHDQiUMpk>whxRFmR=;sgqOua` zG~KTGib)V!gN6NO0_{OClP1nLc7z?oxf1OrOs-cEA1m9Om+wFo)-1Rq!@ml_Xjc#Ui2@m@iH|kQxGtcZ^d4|tVP`B`zCFGaUv+qmvP<2A^eq~a1J0hbND?vAYHS6|7%}u$4`VluO4L)P^xy+-6nftRAPxuW! z6ZE-UquAp&<_$jc^!}D9{>-C`<2MQ_njcYX4lfof%~ngR_{Zxfe$R43zQnpVsto>8 zatalYz8}^pM49_N<2OPUPi;DW#wmQ_KR-izXYX>cdK>hbqdqT@bZJ6}zF4?1I(Izl ztPhJpwa!U8gx{H?vTNCuEJ)ychG@A~I+XU^9QqN`Pd7UC|-cIIL;aFAU(AV6t~pv~aUJ7@)f1fzqW@`xwEOlt-y^azL<#oRZ`_(zsJ( z0A3g3$9up;9`IQHIcOpXIeVP*nQ($^(~>KDvIzi6B#C`P-X38&HLxZtw5Qk}LUuM1 zQD+J3ms=D*%E3<1B+Ui_1fOD_wi+5lbQv?7>uSPTTyH-mJo>zdXF1JJnD~J~)BRbu7pulO&X3!)M`M5x7ju#< zI{0nXoSPZdWAJxu=R3W;X~HI3;96(ia>g_eSJ@rVIJ<0^G-3O zk#n#PaUST+(O>%_JVT86Yqrw0u<2iAxj^Rjhg~*8)qKSDj)aE$ z-KN05O$DFjNqImBjA-295Xl2?^Y0*-_hlUN4R2-cFqjHUJt+kG4rd)7dA(9zj(9#J zcY7auZpbo$EPn>8@A{hD4P)jFJN&>JcaBNCDkt2W8faH@AjNqq%uQXNjWm9?wM!nw zqrDBu>g^(0Q-!vxAICOmDQ&h2r~fP&e~t>vzZzh79zX!@FIcJuS@xkE~!- z@r6%(ll5H%iIXCeaTJ0oQW(r{snUWZ4qloBbvQj%m=Qei`FL?m@lQ z^cqOtb;<4@dgS5G@OHiA!m935b{x}wJi`Ahla)*?9JA74(uG^EfV6W@AMYD&-Q??Sj^y%` zdYJZglW7g-m!!DZATYTTvb>6!Jnnprlw0p3AL@o0B1vtGD6n`& z4Jf`#e|N5)@h(MA~}YO3vw% zuvZtB{7eR5tG~;n#Z^`a->GJq(j6i8M{=Q3ZHQ)h;5+RQ^hdh?Zir<)vQ1qxMWA1j zeY}CN>^RqB&|XJ+fi zl!~>+Axp)ia(o^eSo;;>gY!r&9Y`W>1U`G$Mnsajp|fYzLE)t+{7DXMKj zbHcS*H^(Y-0NqY1P!JXngj`<*;>&X68u2-T%_rosdEIURSJ@&9)O-+kwdu7U)zZ#( zjGJwIVZ0{5S((TJ6LmFV+c zS-rnP^i}F^DzBUh71LjFU~19y70L_5@e$PzeNOqvfuKhsRRxyagTN7715V)cxIY*N z!U})%CX@zLw%ZL~UYJ+|)lEm9q;L=XlfWJ}S@L{i#z)W_Lkni+bj^3p!LQ~HtFPp) ziU}D>MJbf!O<2iMeyTzicYQP^CVbhJP*f|Lb>N2;J7;;xSS{idhQ~X$*V47cxvEcE zdz?fP<8M44h$zXa7ecyHhXm|4N-^cbe!n{0rdAAelO!Sewo^z1sp!63ev>+&;!;>T z2H>U#J#uVx0ufB%2khS}EovRB8Fzc40>)gvaNn&+fK)Z_9A@F+;_2B?WK|cd*(P!& zefC}$H?c>1(w8hAZB1jpB%Y-mASiMvJ;P0QI9xC=YOYD`8J$xjn{py-0>4~{M{0yG zq?a1U)qb_%O`RCJ#cPkMmhj|r-bJJ)DjGWaxyN8ehZtT(6!v=k#bY1!s#oTUmnoSH znLnUZ714QI%xSP1nsuz#+KZ4YVS?=#!65*fbEi=#(P3K$z;^^K($n8yzTjQ)%5$QD z9;3cD0p^$%X6zQo0C(W4ZW4`%Ce%*^LUbnV(U(imxOAt8{bjX)ld{|@p`B4iAh}5V zqWx>wS%BA9_#t~4)071cp%>kmgB#>Bu;4U>fZm*2b`<9{8Y6)TU*f{UPhbGx0e zF+n5Ja*Tw=?!sn+ORRV#bCW=ll{aG7jik_`$FqJO;)$xplCy}Sl?{2& z=Z~Vsq>Q|=9sSc z(4=dqNfiOSu{F#VY-Nebj`zqR(s0WAnWFlGMvz`x%J5Hu0t8{>SbkHX@c)es_MdbE ziT`PWlwBPFj+(y{_P=waq96y(f{_JSJrA#}vVUv!vK7F&s-Px?5mm{b@#e%|NU~S0 zUw&tV6uH_$zLJXk*{oc*(b<{m>1dHACD^ke1d_E=8w>Y?Vv)_JM8C3g_!}o_sj5yq z-e9_zzVs+s{G`N0nX)D&;dHpDj(}6zyb8sU{BqFr*Yc!|A+;Y2BEznvY6?^MRjDl- zI%#Y{1jUxuYaR5R@FKsU?d@XJ%S}TMRb{+IP!Phb#P_W}C>ci+L*$4WnSa=Ey^Ig#~;+2(V|cbL;r^Y*f@1@h^; z(5dq8?smsY*5Glew5V5db~8egl5fYpRaydKSxfeh!*qr-AqC72_($Uk=Zu(LShZ`! zVuJc1eHE3Ky%;m`vfGU;_#yQW*Jo$F7z-zzD+`4cYG`A;tCL3`Xsm|0!;)QN#}AJ6 zwTOeRokp7hnWNw#2gf{)sx8qL2znUmmz(}nG0TdQEx>k&a{TA}&{M4=k-eyfl2e2e zF$pV1Ue3H3S@vBaRk$mz(!<9D^)eFZL039iHb zsfs+=9V?`(F#V7*>LqjBgc|GUqfaf)94w`)v2qU8OyA;W(S$8qb1J|+vr+9eCt$elUGe&|0*{&k#~Ij zfRLW-31F2lbetK(Epi10tzdFju(NCD=g}y`h$7~tv><;)L_KIso;`0&&dfJq!YtP} zU@pOIgxudw$L^YI<;ZLq7g=WmjtcW*$(|e2S$ay9t*^6{=UIGb8RM?F#tP(f$|Hok zK#j=Pl>G(A4xyU+y;;~RQ`m)govM~CE*5SLO&T1GAP^wGQDSj_7$1kA+&&6tm zZE_mh5+(S?QAIz6>49S>;p$Qk8B?#?Q9urLUR`6^^^2R8n?ZmZ%ymW#3JB9mY~SQ1 zIN4BOv?=+d&4pQTo;VlAY2Kxe`OEO2P$`ec@eR&AVTX=Xea}aEhXbnP!GUp ztY+ALdX>d>e`k^?GSd5T2Sr!iz(GN)L=>$+*i-}KgK20Q`$jkxUF*`dBgti4pc<_P z;H!P`vx^xNq*uZ_73KBAN6@UlC0;|_^+CBSNa=!)if301Bu#MVi& zR)YA2nL|8lW6MG@1VXZU^?ZMewq_{INokUwzu>Tsyh+XF@&00#l2%?*zx*adKX$tm z!PgOii8dfh2SdA;6}iFoz+OOXH&_J;$^ziN=2JARY4%{x*#kBTZemq0Vhwhe!kV|!L8=mKH=CB{#7w{g_rezDp)A7f}-CF&} z;P1ANWZo9}+!|Ns!#lVe-0Aa>k)J;8Yn-!f|ZMv6}15fDNK4NBmbpDZF{PfH|@3-)< zraZKSKR6=&uH$_9$h{oZ$^Veh*YR_c#MxcQlxJd|-IFg;@0#%DmQfc4)PX<5{kH1M zJHNnDcP zS7&6lwV2>Bb0PMxY`MrR;W`Hwq)j;`6KrGoU%NOW=)M}rPF|I6-I{;i8^flic_i(| zIC#bp81Y5Ki_cMD+!>`vtBj0%iH5e?s*Xqut51X?%&U2!>}v-KtI$=?`+3}*&N`_y4+`9>mw0GMds+;&CfmFw zn;)Jv?vQ3yt8(ld=tOzvpR}Ud^Z7Z4Zu@%Vi(>6SFi1!yiCBpBPmPCUXY z6nH!ceavWPSBk^5mzNZ3cCRkiXo3Q^YWz}DXEsGa2v9+as&pxWw74YlAYl?5L%wef zlY<4r)PHb+LHhr?y#s!L{Xvxjo5@9NzX_~usDEHTC>RFFKVpx+RT_W99{+CtC+WxE zz5G#h{H>HmK;4*yvAZ)Ekq6%T*k^#=?8P0IZv z4fw~xeq*u!KSF{3^z=8~@DIuNAESi+?>zlY`Tg6=AL`=YW!WF<;y>2>JDC5)c>bS6 z#=l+t3EkfX#-BRxAG@RYuU!2fs=oj9_cuuXQ?~qL$yEPCfB#v;{HM#mXZs)Y{f~*z d{109JzhQA@IY_8KUBmvqWPUSJPg(x7{uiH0z!v}j