From 9d258736b749270d74f6f0460b8c1006c1124e67 Mon Sep 17 00:00:00 2001
From: Gary Gregory Commons CSV reads and writes files in variations of the Comma Separated Value (CSV) format. Read the documentation starting with the Javadoc Overview.
An overview of the functionality is provided in the
@@ -48,7 +46,6 @@ The git repository can be
browsed.
The commons developer mailing list is the main channel of communication for contributors. Please remember that the lists are shared between all commons components, so prefix your email by [csv].
If you'd like to offer up pull requests via GitHub rather than applying patches to JIRA, we have a GitHub mirror.
-
The commons mailing lists act as the main support forum.
@@ -101,8 +96,6 @@ For previous releases, see the
Commons CSV was started to unify a common and simple interface for reading and writing CSV files under an ASL license. It has been bootstrapped by a code donation from Netcetera in Switzerland. There are three pre-existing BSD compatible CSV parsers which this component will hopefully make redundant (authors willing):
@@ -116,7 +109,5 @@ For previous releases, see the Super CSV
The latest code can be checked out from our git repository at https://gitbox.apache.org/repos/asf/commons-csv.git.
You can build the component using Apache Maven using mvn clean package.
+ Apache Commons CSV requires Java 8 or above. +
+| Commons CSV | +Java | +Android | +
|---|---|---|
| 1.10.0+ | +8 | +Android 7.0 (API level 24) | +
The commons developer mailing list is the main channel of communication for contributors. Please remember that the lists are shared between all commons components, so prefix your email by [csv].
From 4edb2cf3021a925a732ebd99a8dd33f1a15536bb Mon Sep 17 00:00:00 2001 From: Gary GregoryNote: Any previously set headers are reset to empty. + * The resulting format will have {@code skipHeaderRecord = true}.
+ * * @return A new CSVFormat that is equal to this but using the first record as header. * @see Builder#setSkipHeaderRecord(boolean) * @see Builder#setHeader(String...) From 7ef443c93d6fd34432f4d04d19a34a815a1ae97d Mon Sep 17 00:00:00 2001 From: Gary GregoryNote: Any previously set headers are reset to empty. + *
Any previously set headers are reset to empty. * The resulting format will have {@code skipHeaderRecord = true}.
* * @return A new CSVFormat that is equal to this but using the first record as header. From a529f36b64fc1016db5eedce73bd396781980773 Mon Sep 17 00:00:00 2001 From: Gary GregoryP=0t=A0aV%ZO-p$JXfR_I@hbxD! zSHZ>y(scYf)eZ97-gKp}LA0^K6uMIAdp%vpV?Fi^Hj9o4dWg~7sn(}+tXD(iaudoH z9rEc|G-&@*nl|29#1zW;JJ=B}-o}5XmVi9E0Gn0M{>aD>qj0jiCr#rlD#QLOa8Zs9 zV|(mHLm)3M;574XkTJR7)}*eI*7la$^OR9z`1D}>7#l?Irnz6sNgS zSqDb+m(}V#9XtB-jhQ|!%Vjy(@k#r0vW^ZPnXG {Xfx+Pd z8a|Ul;h8!%$Z*`OPIYlUIWRaF%QX+QqJ?n|HW?ISin^06qLHD&fe|BvTizU**q-I2 zY$QX+p0Z^fP1QrOK?a^|X6NUyh3x4WLnFxja#f#$x*r`N|5$9`$g!d5$%JO^-9ive z)v =>jF30lJO*}dMw74*L7-+k* Pzrk5l%`|XsB%snb<{qH1>(qG z^!F~LNHf~KdT kUbXE;ymD>GG} z;|!&9eHA159D!EgU&b>lCNhZm?h0K_n0}rwJaPet(qZ-$ <$CP-N}uW2 z67LCbwQm_YTPU`SQp7iew>!5Oo9&ZSyggh3`lFd^%l>oxHrLtl_0kL~S?`>$ON$b` zbcHXhrFk2;tat7xmYR3CE{QiKO0+mH(I{8{g#rNvp>5+2C5F(>|%^?5&6OEOIWX z <-O3%XNZ1slq+CnavpVHdP0(}Apw;fLG z&Xg 8W8Wdoi z8&EGw4IAwaoYjJE6W*8>)=SvlS>Xw12{XV3K-x?gbsoWbj~}mNvnNau$5sOR^8vRC zs29=B9uMs77+(vu5wQCL@Jm2#k&{4JdcyIBqAr9`53*j6`W$aKzD(6Y-Q<JkJwO zr=@LdIdr(xiIiW>;#b-02Ce6N!_f=5C(#b|Ry)-7Cb|}|S6s6-ke?`P |X`8Nt? 9*7JiE=#L8@K=xSq8+Wg7%r zSW054=X6R&EgADMQWx`HgwWE@O2H7&L8!1((|f6RBk={D)aT>qwUE<2se}%;lIjV7 zT0z$85~b(yZu2cS&Y%pP!)sg5ktwQb eoIKFSOmfQ6Gof zquor_d|zl}g2ZR#WMzkn$tvcqV34dFN4XIUIm$=!K9V0V4plnKbs2M_A|wpQl_hTi zGxa~kSGscJlcWvsDR!o5_h=p3;|uB0w&jmvskzEEDeg~{D05EI>ErT__vnAvs_}e^ zU8!=R=%0J2i#b0{A!j02`BdClGLhfZl04*@? hx6Nb(G6NBo0`d7Sb8axm-^Oq%#QU2c*GF(*g;mT}-PoPl#!1D<}Fc1S}U& zXVS pDQc^PPXz~hw){%LOTFpLQ0Zej^0MbKL!DAt zIVW8{uqDjT0^SA8uz*>c-xMEm1S8cHGCfmxm-(`F4)1c{B2M5ln4FF(5+x9(dV~LN zB|YC4F;~(^JIZu=#9FE%Mz5@-D;!(ny^(hNR&ymCqlj;a$V%EOD``i>Pr-_hWM07h z{7>=QSxGlYGx*)$Twt!GCNEafNMa?8m@DaM4PCBv@uozH&CYe^N;;Z%yi;)dpR{T` zpIYZ)W05SS|5ORfQp8$H>&>OK{$fNkzy53{=vkh6U3GjZ4KP7xGeO(E5o;+uwM~}J zMchT|G?&sAyPWUWaUWtSGj!Pw`Ht0?)C1foODUl`GjcUIlzL?;E#4;A0}T6C?goha zwayKw7pD^7%Tij{W5RW55q%O9Zlx!J&Q0n8Yy_+oP_HID?v<^#R!_uQN+Yr Y?tnmeL6G#=gZ9 ziFLZv63U;?jH@K-r^EtpBzh4JUkB9fvXnNMXj*85Wht$JdzZPrqXU?@hN@)4EZByBX8(q4z)snzJ>TB|-y>XoH*i=F!(Qm@`12hiIg*lI4N=WdgX zjbtofqF%z=TuS+H%a};DP_dNG2ur<8RjE*x(#=w#xs Xj|Am6ByHr4hZwcZzW) zWvr!i12;R&rL>zw9i;QTJ$?L9!ai@Q8uXN(uzdL`%jX4VtN7Y0cHntzZ(1E>phAV0 z7}L4H74L020r8$x7&ex3Xc6z-IEfxwU?xt_G@5TgS@;i=iBv5pn>;=sPCz+fed%$4 zvyrYVF2DSWt|VNSYGPnY3@=yV@aCm_t{P7}sRdv5A`2e{-;^d_>utnG*eXcg4e4jZ z%2YQurVLLjaDaeY@E4#%S5VIxq)#4)YXKJkw{i?;^sv=rByGU;WDj7pbUb`{3EoG7 zmn|IcIK#&rO28cbv|l)zd$ |PfTDdvZ{ZNm9ce8&o#NX~*0-3GTv%L0v-UPQamDSa0V*AYVJH0{6#J$n?z zMTz8Ts~UFjWm6YdbSyf)&Gekq*o#|SGm0Ygn d8Vcq=_3-m+JXU zfit nFowlHC^0+*afO1&Rjssj=t8xT%RT7I~5 O!ctWsNZzICg)z4Zde9bI88G*OO#B42B|tT@tYwYE zm4S1E%N@fRK@ZwuE5iL5M;Q+VoM?;G0WY>mD{^qCMqvl=M6TVB!fqS}e~t%poG6eK zid9TXw;{U(B9#&o2)|9ZBsEK?qb#9#aFVzkS@|r&C<|iC6(L$6ax1cls4UP31d(eo zSEwuuy5i3FSK$cdkD|~Ods3diiqDR!Oi4&dbj6n87td^hbXrj8N>TvPmW?9N6?-WN z2O1#_E=kRn2FjlaFx){9-b4nn5LJnLDo${mV$3T;Q!Z%f!V>RjI$!*>$%X3(+EdwS z-DH`Th?o|@x+2rG2$&f$IxN#7P!{&oGA#mSlV_P0fpQ`V(;|Q)GSc0GY3WYFlv}1H zf@z6FT9=uoW$9)X_lpt5Nre$iOJq~Jn3g(hXS*PIH>975Y3VUdOB=9sU+`jD#EhIl z+A=K`ZZo(5ILow{IHQ-VTw+@4^(kYeF-Wj8VOt`)KJ^s62z80XdoHzXOGLM#E|GZGO3SvGFtSV7785i! zhmmcaWm~|Qwq;WnJKg7qJn})Aw&m=`E zEw-iE%kpH|7M!YtZCN3 A_{?r!fW=XM**i|U2t7IJzpa=rXLrcyrq zgfD;XsT(YjH6#GN0dDbH$(}O4SmBC-Q0v}G73~R!d#ba-Rpz}2)s5Zl4RUWH)~jY% zjSQ+7G#B$F#b <>{h4FG#j8GO_&4quxbSZsu~rux&g#*3DlZ zTBNwEL3yDxe}w^(rF*3QX1(tueoMzKD<$N6rr?=SZrOiOk6o$3|fDu%7|MM=~p9 z4 3*BgoSR%b=fIF9C2FS9X> z#zkUbRc1D_M>H-HX+z_#35VrutQUpjurGq_A_%Dq2E3p_0WCa#nMITln#5}d@`HX1 zFIs1^5R{oAJgfp^8K4SA*+P}jI^D-v%p!GBo;L30??4!fxOf?R!>N9dqvP+iJBTG5 zhroPIx!z(|{hj}A%3xEbg^lf1YGINdH2(6?x2|noQRbe=uE8O;wm(c(S979saH<`p zIz7&|_Rp01BS#DO*(#L25x7C+4Rb <_M|=(@$Y)%rw!zwwR-`8r jPoE0OCvK^9duT3$PY&k@+>nD(qzUinKHJ zI!P2z%GoNPUl{hy;wBPY<#&-d2h39LQc-RWj^#p}mkprXa0S+z*!2RjcFrT0%8aaL zCm%c*1v|i>D-qxp61CKy*(9Iu>$9k?Ya(94c~WnoS4C~-V-m@cdTR+k{o n50*aG7_#o+Du@?{je|3;SG;iZJp@Ff?2|)-ErfEa);nP7sjIE1yK9l(LmUBiT{` zDhh-&K?bMdEJ=pF3a}V3!~6 @uSf zm?Tpph!IVVAY?T)f;bf7%j9DPBey#cF*Rbb`R&3g3|i01v=wLs2~#85 H zU5@%JqBV)A#%PnP@Xa6>j6;S`$A!xfCCwef#>3r9WQ;CFHMjf5@WhEdm-0DG+&*g) zYTk$>6U-gq;ohx{mtNM`fm3q&7#>%qBXtbS!QEKK@FYqREnh;L5)gl}@)DYzfCv`5 z&N3Z3+J;jq!Q`do;x}7xY(?YtUN2#M <2OF l0*sO zDkeBPLnGz>q9T7KAI9;u#3(wKkdMRpF;HhAf <;0pVRtqIC&KLZEyJfoK-Z z8H vdT zWff2qg~$uIfb0k&D4QUw?E98&l9}7}|2|dSGk3;-?~5OKUw?m-PtDV(x^Hz=b@e%? zPMtcvXvy+b&FkkcZ2sKDNwYl9%e>0-G734+zcWdtq)3E6<)qww$Wr281u2tMLW&2+ zx~`J!7nHw <4dU z^KXnjY;HZYWB-o5J3iFBaM{Z4wXMyQrZ>0Fo%kOACr_L>cgBp?=7|XkocBK{(EZSs z{9cDa$?Mmw>Yl%3#iHg(6S>a`!>EAhT(@G$+U6xI<}dD9!!_$yE?l^#XDt=u`m|$r zIQ(LD(D?o7v_n>}oZqux-RhowR<2mMWYMAPR&*|0vaF|b)rv)(J?mGkT)nn)S@)W? zVTX2%S+Zhn&+28}{HS@wO71j&>ald)BO3vT{Z9Ea-X1En3igf~}Bl>@Hfh_=Gh< z=GrC8dxFC?-Jk2}T)Vn^1?^egvtq5gcI7HAS@H#{(7mi@?b;rfyKv>|<=tzWTf5h- zUD?WQX!Wvn3wo&Il7;SyFlWiCweyGPtY_HSx`vn7C*Qeh^-48$_^Gvv*Das7qI=1* z;n}ou`Ctw0U<-3v_gUT3y_Vki{F1ecoA>|7L5EO1byr2&m|WhowtGSM+U}qmGbYd8 zbN%vV&7bR8t$y31V^Y_|j^>^f^H(n5iSN;I#NqpO&g|H8PHcAg!#NDu*=xHOHLvJi z-m^#RhiP@!M>O2K_Fl4f%^^Lj59?mOYFSU~oSDu1pFM#~-~A`{hac-%v1sk$);ZHA zPy6p&{>dc^boC@g?mxKv <6JaEL_;yyl(Zf zJz5v9UAt FQpva$ZjtV`G9&PvE&uXq_{A!r-q*Jd~rBuj #L~lXQt8wdi=yjr@iA zlER<12FJ>;PdnBq*ERarObU<3rXA;}9T%h>i|dEi7jw-0B8LZgIRWZkqk?0=YuB;i zAJ~?590~`Ohd{_yc}^g#?O8AObwbZ-veXS(o5w8gUVYrURn4ul-NBsMJk=G=3s 3&%41fSAG&p?syRLg5H{R#4Bg2BjTT#q}q1#OeTHESGpQF^;=CIA~ zj1`Q^x7Uf%zcI>L+`VRTbL;#ClcrCaKd*aA_muey<}aK+vwOje$&+SHp14qFrp})^ zqi4pv8T04Q>X|;Td%?6x6DQA@Ie*H+?kO{7E|@iG!DN`DE7ScQvvA$AWqLcBTMyzM zYkF3%hRYw+vtY@(<$rf+_wpsnPDsCS
LT(V+8&w5GGVHN#+ z&yq!p*CLHao>;T2n{FJL`+4!pU0ki64A_42w3)MJPM(_JADRjI&8?Ei`*9RJrlD@1 zI& C@*;pFVZU#CZ!Ac2Dn_)lIk0>X|xk;mn0IX3@9PCQqK!GkxNMX)}9fbWfQ) zZ|cH@(cx%f^i8D%%xd7fqQwbIO!yVFz{UeQTaZG4>)$I=yDq zlJz~yqy+ISmUJ&$(jBTBJe)=Akdw`=Ju5zY#9_2&%)IV3J)H}dtnQgFxzoIC?P@aL zT`ycWv$c6DI^m=lQ|C^b1WcPdWl;ZHx^4~p`-J9YJqy>W=#}d`m# <@1N}3+!>Vp{u+=M?4?f~!A4|KjYtrPjocZ0Wf~wA2w^p4I zmauf?k`=+3 GEr1Dirt7vrSK0g}D;BP_+V5hNRH@EZ z4HfH8`&V#Q8W9{0O3FYa6+B>1L?W7NAUGltfkG=g!QCuv{|x>Xs$?IRUoH{EzsfH; zjKAct>PCmv>mAmua@cs9!=_I;Y|aW0ai)LG5`)5N4o6GG@~`vj4kx==lDAthnc91{ z%l}A+!-J&(@b8G=_n*4Y(Vu!Mz&8VwXyxChnV9L{(Qi0B_HBpV4?3K;$>IFd9WI#R zu%{`&M* #&WJmwNJvZ-?HIBagJcqxK3d6r&j&t}MsVMxrX}rT*`yKw_cMk8n z$>E<)a`@*J4(~tF;R8W`Kk!gMKObPw&Ig0%`e3EYe=vBi4^9i{4?BExt-~kxaQIwM z?yH}6^jil6cvOIk16&{A$pM}n;Ew~m-r<&@o!bW--Tw)Peo!ByIW_;xHVYA}CQ5+{ z-Un}VkUu@Z{Q^8Pz=Z*RF2Jt`cxHf?1$b?McLexwfG-5N&0!?lB7ZjIc6w#K s8p4@G5(i#&~g?I=rghFpc)AdzD6cH8!<-wY^GhUY$*?UVU$vTD*o{rDn>F zcsYaEMA;c$c5f5;QLqtOXls?ARyI+igc7x~i5ex8sFh9BC=n)Vlu)8pHc_L561B34 z8YRL+jS@=KDnYFVky<6FRf1Y2s7-=eS+uoEQY)LNQBsLo*+h+!O4Q0GYLpBUHA*T` zE1RfMQi)pGM2(VRqDDz2YL%o`gGjBC)GA4>lGG|mtt_fme)PA+e=>g<@0lY?4S#=M zYQ}kHcA5TOU1r95{%Bud&MG$v&yQ~xm<<(XjOXXQA~1_8O^4@aJSs2;$MyHtxEbx4 znN|Ax(<(E{^IKB_^Sx@*?)jx#1?G!2rp@znUKE&lwWihcBM%A8N9y$V#!};N-JD}u zJTtk>_-B6C9$s2%2K }QRcKVGq9iM?VW9!JimA|KYt*S;hFog zpv~vXjF}hp%xAMqqvvNm&)HXUqul@HOtT@EH>`J#O_AO`Jf)1@*@G$CySt~9*}I!f zS-rD7rR?6BHs$orU~IaS+dJJ;%IlqGQ>=HY7h~+ZF+VyO^KR_Bao=voeF0;aS|q3i zDUzTTq>Kc$2vRgbEl8OOYC+0MPzzFaf?AMr64W3_xe01P%1clSQY=9&80&6~Q;WfI zJ}MaJ)Piwdkg&B#QVUWfNi9ejNoo fMUZln)Pj_k zq!y%Dl3Fmf-I%5pgX5Z7*l|rQ7}o_!TZ>X^al#zWe<6Dh&o|wBcq#K>WVRPE<|Fp+ zjnvARDZA_MW%}z6H0|a^jX7O^{mrGbG)rBtzy9;tGrcThy7kw8Ffzl-Hs%2P_eSb# z%;f3%dzt=H$}}(6nA7x^Ql@%&l)|u% H#wlHO`C#?Yt$bG*jhQZUPF?JWkQ-ss*!Fyf8v%?FLw*_-E0 z@6GjQaIGyPK^Y0kz|2*hpo|1%Bq$?6841dO`HW6b225&ff-(}6k)VtOWpJ%6BS{%a z%1Ba1k}{H%k)(_yWh5yBRxvtB8L*VGNy <$sBP-Kn6nSqJ@Alc=GcLRO z+H0@A{H(7oJ)k|KT0Ooh<_*-%zvPKx)4%ohQx7hzu$ehtD!%HjDl@S2*9%HYZB~|- znsV9BdXwtAcxtiD;q9D!eXH?*w`U>rPE@pt^ZilA|F2Q`&;zTy!(JO>Qad*0^VKi$@4{Jwdr-HQmQ4qmV(ucf!vYp2IY_r|?3^!V7`GH*OR-q~xf;^nA= zaknJ6ias5k;41obY=W!k)6Rswiosh4BW+1?6}>h($yM~)*d$lcYn@45^?K37LzZql z aufATye;RSclgi|HRj>f40>0`+vP`*|;WeAn#*mJX&Y`zkR3H8^}E9 z$6K0BHNCR&`8E^xQgvr;A7v`MROzYPJ4~6E%2@bn!jyV`$1UT`hN3-SM>Ak6lf9ze zF0T~PTWMJguMr}&q}N^nD~KhyBEc1i!Akr3>viXfguQ~-G?wIwBv&AkD($POSCK1{ zx?*7TqKjwD@CG8gf9I*FNj ~$rmUBcGR zGEi#vfg!a+sc1=3JI4HI#{3w@{8+~Pc*cAuW4 }7buYK; zkQFDN`{Pa5Uc2eX=bX6oqwP@?4eIVcoPt+vzw6tdC}|+0$qWqKxU{mC!&Z~(|LL4+ zj$lG}eJsvFhw*QjP{9F=sQ=5EWgLw){vCCt9E>ym3zJJY$Yb1Zv`Rs!9DHynDHG@3 zc_YSj?NV8m2><*+^E>aD1)Sxt*nF#8P!VxMS9~?@GQfDM%4ev#+m7>%+Nu80NxhUWr zNY7lPXaY$aO3#_epw3rOXY)ZPWOn78V|%~*qhI{jwO9S*?5{07pcOkyuF3QIBa_!| zdV$yA?cZ(OlTn>(5ZJTMcpicM#`$|iXqd_LQhAFWXfUb2F3qEXCc{hRta`D <^ACK2_vC?@F(|+2N4z1auSIhq%oDsCHzaG((TD07t@bLWZ*i--YFfrsNbDx2S bBR>mm$%hx7IDB6ji%o7^UrBEb)G-&krqTVD>}>^G&|6YK(m1S z-YH&z71a~H;@%0Ky#}3Ly1Vps>F4 !#ME49!LD_}j5-Wq6!6|f`& z?XVh@9f3J9>D} 0OjNVK5bW6H&S+a?eRN6?l_-mGZqQHpRTDut1mcylK>Z z8p?KP#~6-7^^%Qa__=ht!=u+w$FmUcl>t`3&@!PN(pxaPC CYK z1 DEr6AymVTsMi=Ey7) vf=jKp2#rC%czsEcwZ3?_PviPc2z zImsq^EU84V*+h>a23(@YsQWY~RJxDsK*MpUK7W5M{aW>!IT|y^SF$|wrA*U+J>^fB zId)cOVY%sxl417c^u;-zIp0#hf|?A~8HJ6RPN WpvN=v zyn&2I4H@QSPOr-MQcI1g_58xOIQ@1ZbpD&r=6KGYR_OVsm>SQ|e43M~7RZKy8qa)^ zb3fx5T*2`lIiAh&ER?FfIQ|2creA`e!N@cQo6qxE9Q=TcFJOGC>Z6=(<>Z`5&N<}d zzs|u}GL8eUBP04a2m6t6I6r }=J zFqw=mfwz#6`w9oYu09bRuBX!!%g7}#2Y2c3EnTL_GczXW?-dga&1)GDnD0(B1sJ)u z2+RqSOupx5zaTK(lTD0=@}R&RFhzfFn1Z-9lc(zMrQGhR=8d_Y-`LOLQmS&Qs-2Iq zt@v$nsJB@|PJbOaS <4S4Oe}Qc$yiOsg=B0l=BKqg zx%3QjP9n!|C#UdDayF5(l56)SBl9UT{?x(zvTe{D>rAmNXpqf=smaReCgikab)%hS zX{Oa`<#s)S&%hq*(l7!`7abwL7R-QlScwP_?Jx>fLx-3NT?HLt7IYjs#B9omqs3O* zq}iR)xZZM`G}8-bdz$fuvp$K5P((QKP-MkJ0ir_UNf<{=6d*<_hhYhHKKUV*LdT$o zFpdZ*;J%ds#t|n4)Tc7QIO4N_I#v$DO6Y9zi iRf9QEc zic+i9h3I*#J(cK0LrBkCnx03j6re{}1Xzg}5$%v3XBJw3^~fPTo}lN^za7%!=;sB9 zGl%p%bRt2|lQeTx8keBwNt(rmGg-}M!x^naO( < zF{g*A$?B8zywxe`dBl=ZE8 3QfxlAb4NR<1NINzaosLl0-^nyH7gb&0D`R5>w4&m*P^ z5LptF!Z_lp0C8414C!&iR{_6wNRK1N3Mf0oIHIh8`$`-OQWhC95G%%9V>?+ zJ d=3u7>T)W7iA0cP0>d4gc_HH>=cQ#rHY>oDL?Nu&fXtEm~xgfzQWo4L(0jr-#U^z zUd+jfh*~a%nhf q033gLpXVANcqtxIr~m=o;^z&kLT>Vkn#%=ztk|- zo~27p <+r3b`{xLn6eZJxKj-ZJgVY?T-#Ciyz87jD4}~jdA-i@%p6!l|n~mJt z1DU8a2bsCSJCEGyNT4nx$T*~02hy<}$=Ql@ZAR)gGE1(vv*k9dzHULOx|fARl3R3j z6DT)1L5Z}JDow0dd>lL;i?kVjohCHlVr{rc8!pb)bI(TZ-E1X%9rdZfo?3;(EvKG^ zOqjB$`BT(CY>V2Z_Nkp}?<}OoZb*{dkuI~5ID25lQJRCaqRr$^hxd2Ev&SJzI*?24 z$gEc6S~K#lkvV@oa#2fFwZRfrb+Cl%mUL-LFy#@tDUp_c)0cs1bJ{iGG$dRK4wrz# zrQdq)*~q<{t!$;u)M+&GFo8VjqOQ|u5pAaaVO!KLwNLF-duPF~cY}xT4qu-Quiqm{ zn@Mw!6SSG!>2TdHxaBywcn1=p9cj^uL}^CSG-AQ1M X6iH=NtA$-cTv}Aw1_rS|FA7; zm)fUxs=YIe|J}?iZ>I6D&LzkAH^w+={Ohy1&J0|EAIxl%+TeM682@1Xd9}92?A-C< zlYe_91*g8g!tC67_3Az2k*K#bqjCS<8+Ue^)NP-R6?&<%#SbQof9D)lMIwhhGRma3 zEXt_#QrW%ztQ9>xni <{j*T%DivP8q8B7@~!>w=B8h=L@Qsh9y z%L&MvbE=L1mn_yON?&6c?@*TS*05^vDC>HD{#%tO&mAmXSD-4_axk;Pn0wKXGhX9O zJ{6VuO7JLfJvagUI9Ld3KDB+UXR5##z-;iTai0D{MZg!q98gzP^Q$6$)dfxjKLO4K zd%^F3SA+L++vr=|zlnP6NyR=7o>gi5Co`yO;bs;kKS|}+S5bM_99AFK(!etjsC|rM ze;=Q=KU6?3)V)N1T$e@96x~N3U6n&`mE1|c-BL*pwm(E)zHmU5=O6tJM!cW2m3#iA z-;OZ@{g=#)@C>5+Z|XGtkALUThDeszpE-K&`7ci~eOv!}=Z!br{nSom@2x!2Eu;8z zjGi;zCOq`t;&j6hxVJb%1LA?osD{Vg<(V2RoAR?f8Ecp{TjNY $a-K#}?&0@sU zG<(pDK}MvoPE6nj4Mj}Y(c)zji zb1#Pt_WE+0pG&^36V_2rhgr-Z%9$l)gB8K5v1UIx%sArQFPC~%+5RZNf~r}_uKLgQ zVV9l#a6HVcBl8aJv`OcjZeD|aT!j8z4jlta;K_MlAv`b#%xA74%!NN@b4@m5EDOwp zKa0-5g+>^`wI XUcw4^b|&Y`nIk!*uPv>7`qo}2q^~Wl-_zI3i?YFrV0B&doE+vD zaqgGP+@p%R#;9YBop-3dBm2+wVV9lna6HTy#I=^Dt=3@VwDB4=;v(pByPig0BMb7N z3*o&vU_LVoVJ>_*n`^S+(OF<7azS)PlD-BbN%}fD xA^RrS*IInwd~GSP^(3Xl9ectRl|+a+z&ZQP&uCtg$l<)pun7sejcT&2Wkl3M=}? zqec3a*LBG%GxJ$%m02@UMD~-`UUQ`W`jOkMA!qk4sft%rnQi{d_uu-PU*B}^GXu;G zK7+xh6|>jQowt4C$gw#&UVqluV=jCZ|B#nU(LzrxG6P#KIkcd}OJyB-FWw~I @i|umEwCv3M(PC);bebX6X!Bu8byRwv W&zopz%@l4OOaq)p5ei~+@^@+K<(d#Q1v)7ReSATJ1*@ ^|H00&6jel%d$*zDA4QLj{S%t}JPcl+ z*fIfA8^*4MsfirKJaf!s&g6Oi?)@Abm5Y3NZVEp~Z9Zoz1?I41lH#Bt2QRUyx^K4U zH>Yrk7}!?2MU~>j#!9ne^QJF+Vq#TxIm;X7YV!VCZc G7 z Pe`%%m8 Y*Un%!h>qZFH*!$=L2sxm}# z4U-XJ6_b%N#A_835@8(iD3l4T98o5dm{2CNA>_$eaX5q(h`e${;7C;7P~yp0`u$>h zS?+k`{X%+p{dhvQzC-PB?cxd9_VI*hcRAu({ZMZEgC_)5Ghr*Y{lyakr2@ItFqtgX zx6Yh7&YCx6>Xd^RPY4yEERm0SP)p1$2)Q-{S~y|qVA3?kn&)JeqZFH*(@YIhz%m3@ z4O1s!6;r1&gmM+rCt)0+DwL_L904fPnNX&*A>_$eAv%N=2+DE<=SWoEP~yp0`u$>h zS?+k`{X%+p{dhvQzC-PB?cxd9_VI*hcR4~{{ZMZEgC_)5GrcUg{lyakozM>jzxvjh zJ;zxkM2W9{P$|`ihDVNG(SCV2JY!(Z@n>{Fyfj%CT^!?Wr$vc^#3O8KGl;c z@?4aY{5O#Z{xMmi@5Cn7&9v`x*`i*Bx{2A~PjfVv%t!QAV|4UiEVXnyVqzg@Kbfnu zyFvY2(k5cb0}#)VH^|q@o zlB_S9Tl2$9UxhlyQLJ-iq#!>RlBSq)K08R&LLEFvHA3zGF4XWVhm|ty7F0Fu{!qi~ z_KTq6<|S$swre*eZ%C`vC#BI^e|(x1&+r02qSeNag&D46%^lDzeww*Kw;y8r8OlAB zzZKYrG8aMpJ08jp2dQIuob!0U`6c2yrib1CQQmuK9`DJFg}#Gf2bT0}wnGoBidveX zavCFPQ?(b6ZlJxrHcwYG&W>XYzU+?u= <$4*G3|&k&B^6NAqR>nh+?Iwh~sI9 zN2OBKfhI(KA=lI)`eTT=YUr3N6tw3?^(m7yAGb+5>_zXWxtk@koE zqrM9JO?{}oRG(@kGS=IU_|Z&Uvr0KzI7bV57}4t-Ea+jxc@v_#kZbA?Z81btHFV6b zYEc8!0>lzX4Jjjrs4Aq)7~(3Q@?*@HbD5pS>`a#)W(FMPx55a&`PccshUJI%qlXc# zL-h&k7uGkdf7l+a+Npi?FzwbVq1s=9SZ}2LVgIPF!hTa9sxQ^2T5*ge+7TaG`O;ic zjv3A=gC0h7PD4B?l_HLt5VeI|Q-^4ZA-b!fV|Mk58X(ro5TP-|ObKPg5H*FA8AIIU zQ+|wjaxQbyn4RC!!_0f5{8kv@H~%^x-mv`ee)KS+ai~6F{lfZ&^$**l)j73~9;V$| z4OII}5X+6UKkOg%RoHLpL-nQlR4a?Iq@?GEU{x&q_}e}NOJl*ue`ksobtYh0Y=B+v zI}y2*1Ebz|5;G^^WP~Uj81!E%g|Y5iVs`eu@Z{fK^I7Hlp)&GK|BDwcoL-vg^=FSd z^7Mym5OK`GaIsBYu!jtj<4=DF)9pPOOy$UA_F8h%PI&8UpLSQl=eiz65?ofH(((-K zuJ|`a_(^<3_s_%g-p{_8IlTY9Le((O!2Pm+EvMk!)P_7<^!>sIn7i-%N{(8WCkL0- zH<;=Fe!SMd^5p$;5YzUpE2CN{%fnY@;Ctp*&01Fz;m3~DO5Fbq7ip@KIn`B%Y9{@& zi(NHqy`8iAF;5?^#XsA`if3rzrY6@!`XK8@*)LW_T_4a%kqhahKTdX?L@!3ppce;D zLpxCkbaU1Z)y)UGZssx6Fc0^CT 7HkO7KhJOfsCK$?Mfa4Y99?K2G}XO zGb8RMyi@HMe6mt?V^qG u{x`8S$%@RAb$0pg;S#%icU@G=cjn7>5pQ6+ zUBtVeP5LbEu=Se1Zxm@2?+ad~d1v76GnXASbKI!J^n+HM{}@Y8FS7JCkh
`SA9(zGssh27^aVHB|*Wh#g&{WvOl)s@E?}SzSBqqi4FUXNIWjSqpg{7%0 zGO)9Kl)2g?1(@irV*2LK!lh#(>rEHn`*E90hix1j2P4>o)wBgX0{4;UsKd@e4z597 z+>ZJ5G*FHv$Ak01qrttvL% <0L%$6!y$Y5$o=>JTY{95m2VX4wwCWZP <6Z_$Sm7R|NIHVg!aN@er~kfvWuODfHbQ!jWal`7r(7VO<;!)itbp6>W*o7PU=S zO #-$&RGuFD2QR z=yR0YOt2P3H3Da?A>Uw&s)EBB@~ZfqFisf;g*Hxk5tLiG?g{167lA9w#ZM@gKcSYo zB1{M>MqsEU522Ra-Ye19l#`xDmMOQx^m~VOaX3`hu 8Rm(zwiS>i^alFNOe!&-!78PYPCk}O8_IqGgESc~c! zfuGlqZ&*^Qg0CC$s`#BSP8kLjH%@sG)Ll943FXWeK^DllPbg 2K8OcTe;;<)o*I5oOEaF#X <$7HimAR+9}c&)X`7(`vCXYgj2HQBD9mQvDAZ_k+-PanNBN_r4NhTKD@tJH zvt#5h^^1g|!xz+=E&e0F_)c=|+Ap5|(+B#asPBIKP4*mZzUa^rHYLUOJL47d%*EK% zUOc`~%V?iPBc0BoNdMPjlu&~8 JJUozIhAcG_=vJ;5A?$_&|WK3(;1iXsyDM z0BZwm3b1iResG;1O$7zL8sMJ;yehzNmKyVX!?C`->oHW&uT}+BhjC>%iUfq8fkDfE zDymlY(aKGn`)o)oqc@((S8wQ46E>}HTY_G@6XGN4!aj&4boN`YCQJFnTOproL!z5L zrU>8XvAi&e(ICoi9e~`{&8RSaJf`!}_^)olG9}7y*v`Y=eo7n@7KT;U1FOxz_6zrl z@;lLf?xVG)|JBQvPA_4BHg96L>Ep`TxDfTd{>Ys--FVymFSF*>$DsKtb}!J6-iYC= zkK)T8$MDt1ARPS)hOa(uKj{q&Uwu?-(kmFg`l#*b$1r^L(Ta*2TTMx?wpzQWC*{54 zkY3Jt&N BhQm|26wQw~Z8IMAA=sH+Qjn%pmyLFrv6HP^tROC)4cRA;3 zM>&D(ouW$A*kk1>x{BQJbS*8mu6Oz^Egej>7*~;hCe I zEw;5+EnH1U#=a1(7N|9$vtUV5Tj6POk`^bab&}sFwVlvKXBl#sQ}ha+G5JbyuBo)w z(qew+e(O-j XWv`NyXz({0+Hy(BdS|IH{e1wAj{OHCC iIrGM`X$2m2H8_zITe3O0jf~mgQt SHO|6F{v_-F4;Ibv{PE9Y8u?Y`G|%7fEtcuenZg?W2?OkMT{8)Hh8x&= z>3^I^2}K*XvHfz})UiZUn0Ch7^!E#m^vMsOp?4lAR8RWXXYzQAIg@}tY_1x`vETpU zQ99#)dbGNFQHLIazj%xuNk5yUctCG`c nH;UmWB z8v7P=%`oH|`&I|n*m2J_!_bYa3PMPz9CIX({n&(O?xwmg=ZwL1k&G{q!B#K7FHSFv zVFAmWPtJLq=>+?rZ`8;$2dj{9PfR7uGz)eXr{WIdtTYs$vR4KeXQ91-X^6r>3F9~@ z6!fz7^#e^Caufj7?IxklEHxLP+G+!+FpllM0F}2gz&K0K1;|PTixS3Jve#zd4>kpL z#>!iON*8DGwE)#n+b@N2tl yRXBz}Gy5AQ#dumA8U4H)C#q6lyEXv@yoLxIejpN07J}YWZqPhN>lSdCy zAK~Pm6;X;`PX2fJo1Z^MJ)~$3@>C6D2o1#)iZb;tAV14%V>&w&gD8wiREWZ(7)3Kb zptK=pmZvxl^7Ra(6%9o%qP9$A72T+fiQrJQqcHjrwdL&z!(sjF(bkstMc$HOT%@5m zNz|4ppyDXCF@+k6s}#mrqPDy@Vc4vHJ*u|Tu)3X?kxhI6fAJ22Fub%MHD^oHqz4kl zzoa}5B0?O84a6SuAK05{Pi#a=HC>z{ti$7 6pc zhzWb0wH<`>U)g@S4iBJ4G`(8%t1^O2=sJJTtz((p`qN)dXvW)c=NNcYDl56OoeAQX zm}7Ko!p8aQv9(@m<|ZGL<_&u_da2fvo}y1*{Py@(VsT9Ey>WAi>ECwiS9e4IdOeyr zeEr!!zxmz=9(nMd8?QWb{Sjj`b*pk~&{L!gMa+;NyA~d_;D8C8=|~i@&i5Rw2}+SN z6fr{{*xFGl!@LabTt#FkuChiGMas~QMy|4kY#Fe*3I#HXXm{=hHTc`E>&IzkE;Ga_ z53+$z{*QC(8ATiW@S>e53TK;^AIFTDDx%p-P5OnO6Hu*QYSee$B4n36*X|AE9`@7C z_+DDF!yCxi`^4YrUTv7#v}adNh%!+sf|DXS$*iXR#tl5a*J%}3VHlDloQ!IUq@;*S zG6c2Y3*NxP<0{M<+6yT&hRi^UXr#zSGF@mNX9JJ!b+5(vkBwr+senG$mTBdS2qt}N zB3jnN@8?&ewN}P^a`%477{vxk{c;~f#=gxab?*uF+VhuZ3_%D7p1yoxqxKl)nb$Mg z4_bBFkAMC9`~UKn`+tA!#V0S?t6aCrwU0=TY1gULKDu1{i1e6tol5Pa%e9Y)E8Yc5 z?W4>6A6l?WY-AI~>==bT_1%V8B{O7#j}a11aVkb(1$?(*R>|CqAY{7o9}Klh<}?H& z<4Pv{jJD{Ba3j;lXxroQW)2u>v9IrB%TOPqto;g>0{S$ <4e29(?41d+*qE(bpI2PMVb~wy9?Pir7-f z{8>?46wO7#FhU!BJDb(aShHlsY$;^UsW>i*=OW<~p?zG%>`${v%`6qQrI2}=BDpA{ zi CYe@}!zjOl8TT-dZ$4pW*msh{lIz_SX-n{tZ zS<{I7(*N4Ey}M=3^!$D6RLpyZbJ@j2U_-`cG-Ew9nI>eic&`XNS~S?zf`JU)Vz6a) zQ9*9Rawl$t|7gEp9Xv>joiz+@1$@<>LT7An1_x(!U;+daR?@V@p{6LBk~j>F5;9D< z6i!z{I>a{5w#yDN@~mNkcG-P{Ou_BGd2v2*Kn+nD=67Y3cLsU!5*hAWxL!`U+JCP- zfpu_AEnn8~Ix3u|_6<6df-@^P(*o_X1`$o8XjforaOMWuWv5o*luC6~8cB!wLA&e= zL7p`~Xg{D96ls^;l`dW_o-N)j DaNvvw&VWF>5OU6t5F+idMg@nVfk8$FmuT1EahNA`?b@6<`rzYF{mG5@KJol3 zZ@%8;^|#DF=Z`z{2|hcJbKtp8mk?NXAY< OhxC~$V}6pYEhJul{;JIzma`@yWBcTZXP9rboHODLAv%aYmlyb zWQ>G$(R~RSpR<0`Vz&EFUU$xh72TitG>reuM$^CJ*Pq{`fKA);>)8!=%_j@7ns)Wo zn$+uGse=RMJy>H>Z>}$374ln1@YGpl?7Evq^jrV2nFP3v-pA2J`79+aVp>12oXr~r zuVPEtelYv?k~-LjoqQ$i@$&~hG8%I;46A3fqU2&tISWh6(VV$IhlAT>0_fsk6lYFh zQoVtUmkK$!pGnISutjs3Yz~%^@p&fIKVx3BL-AAO9rzQFE6kxF#utBk9tU6M#ILc& zTmgO&ya(JDd=;$Zyf!Po4qXr419pL%z**q=;NIYO!2Q8*>apHrd1g`XL~A+KYpYjV zufJrS*n%vcVijTV5CsltL&iw3k3!x^$ZID;2SUDuYwIoh5Szd}fHk(5vJ2tOF?h4K z{23Gj#e>e^H<|n a`Xt5Sx(RA@(6lr&x-DWQ4&n+F(mk zvPQvnq;SbQz5|7;g=_0Ao1v|gRZf}3lwF9NjBy`rc{3sb!AhQ z0duS!l(zDld~1ZDt&~xO%$3|NwrrEOB8w%D%K|Iy-^bw=`wCf_YwNa`p1S|0pM7`j zVVyaOskXEK{tFi-A_}B7@WT0r#$+}f*n0U#qcT{fo=aBH3X|IQ?HZZ$Qro_g4 Bi1q^?@84d1m1c$MI2 zKDOFJ-F&{O%G=q!{7YwF|1|2)_ZqzZqJ6(|r?&O}Bnw7Zv-}=7%q3B{$h0fr6+d9c z;7`5<{o?zPvFPgEZ=qa#Gt$XS zXWUVuu;j}WmfWv=(?%yh-Nq%a#Y70F`Ie1KE@yez)4U4(y&0}{1+A`eUhy!%#c;w; z5wZR*6rBW|r^N;^5SI~$5qDA8AWbV2E+`BQBxl@oM`t ^^2Rsw7K <66Bz~)L~4?f>YFh;t+D16_=<2BXAGx zkTGy2r>N*n*P2OCF9domZ>ItQ=zIeG1B4<#6I=&Ei4zlc+Nf _xBIb)Ym6jEIU2H8Z z!^f2?W4OB-|4O#yO~RV3zrMduKDvAVThBiE+-COFKVM3NP5(oueR6CL4y*YSj{g3W z%t|hZVfaYB`3)XXYRZ}DFJ>>?4`37RdmW@zm3l2lP$zleASG4ikKv@(2r>U9OCZFFm zGK v_#`z*;M;vw2mB6%JjE(9g7p?=o1$>m!U?fgYl*HLfnjq;dv%6{#GnVT0Y; zCBJxW@uJoisWm98;{P-? * zlDx4eGUJ$<%CICa?9KR7n2Q{VT;9>nrs6RnX}*Pcz0KHbkyU*)yvQpfe3#-WJ2kIH zPuBL42vSC`U=*p-!RwicL`wAXO%Kj>_Uij6+4v$GUNHp~Qa~XB%w!zK%Qul1ualQf z`%1N^bQCX| XLoZJhR@H%I$;AAgV3A6p5<1ym zs+VB`Ucd^?ygM)49vpK&UYm*55Xb#^RkTBL6t9Tnn(RT+d|P-m^7+;T_k*ifqc3V} zK?JFwVIM_Gbnr@KVn9zMxgX~`llrC!_rvd2VU>4h!D$Z#(8)NA0Y8z!-pN4Mo kFQER<-J)j^{CICcHx!RT({|p^G;g%u`wBAS=C)|$)i4;d&_NK z+b5f8WlQpY+>YM7Xm7U7`KQ&wmLmuK8g=cl MCDZD#!_=5^}yfB(6*8Ivb z?D?Addo;8^PmaRQ{a=*jGN8WgcbNVGo`pV9@K`%L+{ZpV&ZK_H7Zp$f={NtNEy$KX zR1jC-+4>C6?@6(Z{{CDuaCfe^bhh!o^XWOp^lylK*SwSZ!}k_{WJ+Rm*Ivhb<91?A zrhea3#-J@ 7+dAd!*CrEvBZ&fsLSRSI=2=V|J6u4X%m%NgZa+@l-;kz;kLTJ9;`N