From ac202afe9153d226be2eac6ff79011dcb91f502d Mon Sep 17 00:00:00 2001 From: Peter Donald Date: Sun, 24 Mar 2002 07:55:33 +0000 Subject: [PATCH] Move to the external bzip package git-svn-id: https://svn.apache.org/repos/asf/ant/core/trunk@272010 13f79535-47bb-0310-9956-ffa450edef68 --- .../myrmidon/lib/excalibur-bzip2-1.0a.jar | Bin 0 -> 86346 bytes .../org/apache/antlib/archive/BUnzip2.java | 2 +- .../java/org/apache/antlib/archive/BZip2.java | 2 +- .../org/apache/aut/bzip2/BZip2Constants.java | 84 - .../apache/aut/bzip2/CBZip2InputStream.java | 957 -------- .../apache/aut/bzip2/CBZip2OutputStream.java | 2050 ----------------- .../src/java/org/apache/aut/bzip2/CRC.java | 123 - .../org/apache/aut/bzip2/asf-logo-huge.tar | Bin 3215360 -> 0 bytes .../apache/aut/bzip2/asf-logo-huge.tar.bz2 | Bin 58089 -> 0 bytes .../apache/aut/bzip2/test/BzipTestCase.java | 115 - .../apache/aut/bzip2/test/asf-logo-huge.tar | Bin 3215360 -> 0 bytes .../aut/bzip2/test/asf-logo-huge.tar.bz2 | Bin 58089 -> 0 bytes 12 files changed, 2 insertions(+), 3331 deletions(-) create mode 100644 proposal/myrmidon/lib/excalibur-bzip2-1.0a.jar delete mode 100644 proposal/myrmidon/src/java/org/apache/aut/bzip2/BZip2Constants.java delete mode 100644 proposal/myrmidon/src/java/org/apache/aut/bzip2/CBZip2InputStream.java delete mode 100644 proposal/myrmidon/src/java/org/apache/aut/bzip2/CBZip2OutputStream.java delete mode 100644 proposal/myrmidon/src/java/org/apache/aut/bzip2/CRC.java delete mode 100644 proposal/myrmidon/src/test/org/apache/aut/bzip2/asf-logo-huge.tar delete mode 100644 proposal/myrmidon/src/test/org/apache/aut/bzip2/asf-logo-huge.tar.bz2 delete mode 100644 proposal/myrmidon/src/test/org/apache/aut/bzip2/test/BzipTestCase.java delete mode 100644 proposal/myrmidon/src/test/org/apache/aut/bzip2/test/asf-logo-huge.tar delete mode 100644 proposal/myrmidon/src/test/org/apache/aut/bzip2/test/asf-logo-huge.tar.bz2 diff --git a/proposal/myrmidon/lib/excalibur-bzip2-1.0a.jar b/proposal/myrmidon/lib/excalibur-bzip2-1.0a.jar new file mode 100644 index 0000000000000000000000000000000000000000..216c15b399378457bac2511dcce82d96e0fd6e5b GIT binary patch literal 86346 zcmd?S2Y6OR7C(H>%q=Nzl6L|Z2uUc?69_H7AWd2*3IqwD2tq0l3<)Noh=QotdskMJ zrm-t3V!^W3weDJWZM(Xzy{r|>s!P7#nfoSrQFs6De$PJt=lMSLoij6c?vyiU&Y77z z^UKUbwUa{fFZYr){jDeNB!f;bnmum7)ESco&fG8Az=~kwAUu{|`^03^$IX~JsiZ{5ct11VKKXyd7akY(zEG!tDmXemz zRzl}<_pgY966)%gB-G)jDN^Gp%2t$BEUo%C2{ZOjShlk9-y{xxp16E%^@<@0uRQvb zs%HM=l~rXmb+!K{eaPb5F-YGG=e zWx|Q@l?mgIL>s5pu2|Vv(umGlUQkg}*3j_OzIz|QD+N3wg=W!LKJ85*MPDV;Vf3{) z--z?AINyo$4{^R1=Lerw2>nr86Zx91P6*UNP>gK86v@< z;uK0T2TEK_oM93-T%3c%86nO{Nis@&qs18`&cQx?B6O_J<9r_P^8_YSGJD*t*^9!4UJ{BjdROtR#s{B9wYIraWf_^nkg@g3lqx&wcmsBZ4dN* z4<@udaG2W9C|>l7xw$`mmXM+M(`N~J`b_TfMHTfGOr59wvT)9tFp|k%zNor(PD2%w zntvoyWci|os$*u?&8Y>EIPe50xDM4 z*H_gxPFPxo0@GW=C5=#iOi9ZZ)z6q+H@VK1RX=-X9r8iujn<>8hky|kbt`L81FvG~ z%=)TTs7l3BM5|?RcrAX?@u*i#UB%I}%4#d?mRC1aq5O<^TuJrXs=9c>FMZy3LF zF87>f@#ajR+SB`t{a#z=)vVo)Vgjtl2lcWmr^FoLXkmRwti`DEmm&ut>SBVy7OhavEtXy7RRX@9|yaq9u)9Ro|=a$u1OE@0sG%l?M zxBLDJ0sE=;10&pOQHJQo^0JTw};tI!zTSBj6=J}6#QRbRid7L2VZt6YV?U}`7q ztFLN6zl55!sCW_>1NknhuNOgdpkC2s$VP;&zA7#**$q{V6RTQY#;YqU8dug=Nspr9 zPT#3gYHDrO>b5>+6r6(BR<5vJCE^p8=Zd9}m1;2FKAlk~vNE%*zH!{oqsIR{3O$}~ zUrcyy{|LOae*|9XxTLCaTy5p_x>Z%P>n7FL)!ODrANjRaYZ^r6N~+?f zRiptjQd4D>LRD=jUZ}^?@^GFcVo(`ME{aX>JAbPEZ^G26RtVgu?3N=J);LaDV?uc4NG_+bq`O4}Vuo`9{KCpdj69!9VO6peDS5!@^7A4T(=Mx&y zcM-aPHbJfYD>DS{b2RBZb}j zv7T*{Sf(Do__}?&Wu63yi`q8Ul+`X7SaNJbV-+-&uG`;A&aAJljgMdGmR6=DL_-g( zkVG{Q+#qhZ!YmsRy=0{5@8p#$Dlr$Z#xvQ@qGrsQUIO(1-3irHR%4%}wG68UNlD!? zah^p?C78Z=%MdP42v?vC z30RXH8KynXE^@8M z-9=uD$Imm9X6->tQi~_qK1$g|DS1)PuzHMA)h>!82GSA(=?LsW@{Bwri{_yelb64n zGEs$g__fC`*lBBgG29u{4sIDa)Ri)*8+C$|b*BR;k9yEh>Pe&ED}ubuq5-ss3ZVT4 zLP-sQVkv~KDTiLF0RJkXnyN757t z8z!lZEGh}QRzuaMh%)&Vsq2t>1yVz|##8sQxez7aP8~Bl-9=eHEufK-pr}(sdHsq4 z)}nypkQ#dISEN1xsW%`UbY?vDi=fi1io83i^A+T(o8XC#f@5w#G!^5=`1$zd;Wq$3 z*;*Nf-x&PH;Wwp;dNt7j=)3GD$_B}4qV`Sb+1-@e1j*PE*OIeGYx=mx{QCuLf`*2T^kurEIs^-IZhDhrA?YR<)|+|m506LXrV zU4Gy!D1d`!rNtW^4jlXRV;ysws4HIU9=L_0K@Z5!DG1!+{G0^^4pO=txQOksqxlV< zmM72g>shdidgWo{_ZFv*jObm|7Z3VffdPrAJaO{Tjs2U*2N}@Dk#dYlqCKepgAl@p zFiIbWc76zB^HGS);}DZa(W6h&6d3H8^bC6NS@hnMn4A2DNi z71HrK#^ImQ$A1B*-lFRUY0@gklHB~1|bS* zqflj{zV3v^M8sV*unB5yHx0t?CwgoMYDe@wrP7DcXdgkpe2jtg3ApnqWd1YM^K;1f zUdZ^@G@rhKF8j{5Iuh11-fAT?u6P?Bj<=ywipH% zk)pT1l?Em@Z}9%ji~905I(i7+#(0f{+3nZcBOt#-KcXG`FoK&Y02_1Iq2BCb_syq~ zoJ3PNnPzYbHlCZf83;7u7jy_2Qv8|DKW@Yc!ik>y0+!rj!0}Jx08~3LHJb(&$AdTfgbO;Zo z**uiyaSYuwjE?2ubTW^ivv?$(&!gxn9!uMJ99_%f=?0#dz^WTtS%oD*oK<;oR^2Am z#LtQ)RB5YNLW5lTGqF7G--zXZ&Bej{bMeAmG&q!QE9cfmMe=Obpx4?&W-bK~nJM7c zAr!^RBfz>Khi5{>4}*x8K*VQ5#OF{kA5Qc62&&?FRLAqFkr&c>UPPC0Db{XfbT!oa zwY->an&Lpj#hlVH zD(1lW=$O|;>4-`RJYBreu=|^DI9|3X(3IvoVQ-r0}^+2YUqW zCQ5-diw=po8{KAPlN30Gv1E8Mg5-i&N?wq%n})?wo2Y(c3OCVs9h1U_-$e&q7)x)W zq!Af+)5suQZ6VKkVre2;qoPS`f;1Gge#0&rCE_+W+UY4&53()~03~37rg7ng2QQF{s57B`=@IWkWk05Q%#`NYO zeRK1B63p4U@BX`KOw+#I`z1xZ^y!!^KijE{XN%-skXC4?HZ8fud zFU<+5xNbb;R!Yc=hddkd5!#skBciuAKiWi@k|KOl;%!AgL)%d8|DeaJth^qmV;QJm z*kc*eV^Q>2YbRy=>rQ$Sul+|NdLdr;B@z8+=}zdHOJRDpLkC>USMgR%jVI}ux`akx znuLW8e~D=s@rjhgCs8JEqz-%v88GP~ENu zsaW5n%M!_>FxAg$FfovKD@qsHhCYOKyu<8-c?pu4Gwx}Pf2 zL)0WaLQU4A)l@xJ9jYg&>3WhvkE+@F2z9t#rjF1n5x-8&*JrB*`ckz}Uyby)s8ao? zD%Ve_DzO3VVd@S&AKEAGuCAq>m_}pIR6mG?jx1Yp^$m0fe44uHCb|fy%9^IYAo<3=@V^S5*@2&V2LybQ?iqE5f(~wuwXb-kEVOz!^Bvm2F?=^uor8JJZ{=NeI|o>(;9WflTLzL}2IN0X7ezaR@h!%HjG!>BG{9BRjswY;ig2(+enM0Q@D`DHe@`X zA@Q0dq7)r{XQaj%~aq??P(i;KZUPI!KEVwhD1H7MC-i4s+u6 zt3@s5{0ps^y|wwV7Oj{K!=1gxsa!wW+U{(z-8na*I2XcWS`-`B=varTlSr$L=(y9! zsIw?g=b{nkQ?9y*3e?4P5T1`ymr;qjoQ_gg*hUp1A5=HqDDlZEUUDytuRaYL^b7=4 zV;vX48aG_yW0yVNE*dADGENd; zF*EL`mDp*w3_GaZl%?*ae6@#$tNRlwaZqa|u+<(`LXCnH8dPF0CX|62OKzfmI+oHz zSy@hyQWzv-b~ONV%#>nGF=2Uwl)&HG{NBc7oVf_R9nF8TiBtOrDVU_n<7mgN&BzNA z%Xa;dMQWi_8g7`Ra*!(Te&WO;@-T=jD1a00yF@sM$eW+&SXvXM<_BrWE{%hZX2AJrEv%_+jcL8m<0B<3XpX zS80}dofd&sL*Le^ztZubr>eK;?Vf`NRGjZ4A4*lF6gQ87ji?&dgz=;muLLCD)I&%x5a}1p?EBf6uWoLGDFp}j&$01p6blw)~gv7nK zkU`>-EwVg{&byi-chl5xV8#dTq&x?z-PuB^65S6oM9~uckmVs5J{WC>O1xk3(>vbBPsx#<3ZRj!` z(3Luiw&-kX(m8aK&b8e;C1gyzdtL0f{RM_ncFMQW8}KRY_HCv&;nP?&Uq*k0&!KF5 zVR#EZ7dxb9(cj?nkP@F7Lxw{mYAX(f!qt%B+0muYcRA6)TPZmwde9C^!?U=?0>cMY z?xtzNhXmDOm$te)x%vP~(LE?f_rjE+!o z&(>MYGd|_T>nBTb5!^9SVoYOEHxR6Mvxi<`mn?Sq%JxJg*6N{989D22wTf=3NR+lZJ%ORSQ&M}N6)Zs zXjhW#!0|@#XF7f}qylc~s5}o+GdeGt0WwC*4)FnYC)mS=Zzxe$H-C$?$$=BNSa-{Y zaqiaUH}EaS9T6_tO_m#Yfj1}coYD(p@a1f6{!GVwETQa+eqk&LNs_P}mo*W5@{?87 z#-!#TX>;>uS*{L}g)d2g56?!Q10RJv8via-tVSehd3j=>veo7EKJ3A1ZNFZjaUBtD@avsX7+18n_VYQ-)wg7(^gLErD31 z#TTS*ONdUjsv227BbF?JH$l=uk`5BSl^R4aZJUWl8L%R$p}9cuXSVh5bNCiTdJOjJ z4#re@ET)o06kuYRqbH*ura~qUp}u+=<%1St5Oqip8cSYX6zqwir&cS`V<^QJe51@)48WUlMD3OJW`*_MTncBFW_VJMZ6Yi zPu7=MX?#ewe6aKjzmjEeqgBuNWX!en9u%v>rq~kfXv3pu{3xFyW*c9?p}N!kaWrTb})?o z4qpmAfti*}*i+fZ;`CFA<8-KgF(j#MP?8vu2)D;qK6y6{HN-diaNKYw)KZMh@zLlW zXPU-LvvZ50P07!3W@F}=pQC4QRGbryLdG;czsSagn~TWs)63T8FYUl8#8(%nf;>CE za$9ndeHa%SKDsn;OP$&FJB#G>H#^kC_jH@QOp>XK#wU6(h z!UqK%H_Q4ojir&+=is|qPs>dgDZc<;6n(k>5$B6PySB^SsHOb+A;GUWpRoT?T!&seU`STuQ7@tm0@683NqXmU$VgcC#lj73vt z7tOK{9h`@hj7y596-}63Y$GSl!odlgcUV+B7pbNc7vuEmyxB!IeS4gZNH`B+4`e2d zs;H5Z5I6@Ip1J#%NB;IZ`qOUz(;Wrjxu4FI{a>60DK1}z zGQG*dsA>x*Bb<^Dmh_Q?a2mqt3E>QcqX}VyaArcd9m4Gs!U4h^62cu3?vxPDLKqE| z&O*I%uw-YM$Yva4Cx?_V4_`+1q|C#1$I->}9HahFJkO1uP&^Ok3*IW8=NrAfcwUmx zgNoZhDKmw!ZgLE)l4ARl4M?pFnwHzc1`!XP%qf_B#8+9&7j#00H z;G^v;AYBZj&e5)h?*!>)xC2Oc!=Hm3U~~mY4?{12^fY`PNH3$V1LkU?PqgN+)D&=8{+f($k4R**u& zKY$!)I2$Bp_-`P?44nuv+~__a2N@+z9ue|kq)~MUjWTp8$Y?{Kf{cldgnO{z<3Pq5 zbrZ-qqlGu)jXDNoLRig-MxBgMQM4NFBttiVOg2ioVv12oAXAOr0dj~@FM}Lv_|G8I zjFKLiZdlqn!_X}t#YUY5GShPXu;^O&XNA2}VpJwVvkl)1GRNpSAajk{4RW}le}Eie z_4N29P7}^H1)M)9#YNJIQmKil2|p3oBww-x`Z(^m?PgTgbOjPYb;~jdbOWb{))e`^@>Z|GseV}w3pxJ>AyRs|Y*3?G;z{CISQkSB~bLVst} zDMFvLs@2d_M)#2L(}ouceFjn>^x5c9LY|9D(C?!a68wYFg+iY<+E(fXqimrs8VzAJ z^b$H#=pPMZY(q60WqbVPc#pjjHvLtjFg^{vX4ER7uN(EA&_5f65su+wxUa zn^v7cn5@1v^j7pRiT<0>R||bRp4~e}WBeI|f;r>ED zGWtNFA4g{h`NZ(yLjR7Q7WyfMnb6M+*-CtF6``RojP@k{OQW9=`jz2!LiZZ|zR<6Y zveNgBRTwaGVfNn{w*CB%=z2-@z0vc8{$TVTp+6d4EcBn&oEq8}=Uj92ctqo(hI&gV zTU~||d`3Yt8iw_)6bk#hS*UA!o3Y1nssw$b?h=}0_-LWYM*mePjBY=nu)0!bhS?Q` zz-dOy2xA!D+l0dM$_QbY-cN*@sB}MPhU1&t8TGM*VSP^$8bH{EcCgmVa7Wuu+{rMM zp5ZK`dkO7qG?XrknNgx~n9SFwox#9bx$I zLPr|DNa!fTBE&q}@R>r#Sd(w~V53AZc&yR43ms>atp!Z=`4XOBl<0PbvHqLTBEzQ( zofI!;vNcqOr-Vw5r-oyT4>9@$Ne81nPAIJQSfSI6sunsU986qn_!|k&G+G3f4>PJs z=qyOQ&=SL^)F`1x7$w7qVZ>h&3M+2gF+Vz7f(t_B%16bU zyU?gdBz_UBh0s#NPYQ)C|EJ9=8|}Imm0R6SuK+v z!^@&F#`$QYZRs_kvgPGQ+0tqaUn$RF*LMkBf%XW6WnU;1rrnOKhG>lh8;!ELt~6}J zuB~Xv^EnjJ`+0mm9T1 z=oN;nAZ-F0CHxy>4H#b;T6x}V)Ta^;E8j=x)ka&U!pdJNVOaSNLbpK?2;FY(PorfF#0CPV{4om-?(2tD1 zT}zty;bR7M2AT5OQWn-_$nOrd*hAy+Gsm&zKNIq zt)a&xIV}A?q5ptZ68e2;+8L&PmV|#a`beSwjE|>%MqA_CY}ESVJBWAMC3jc2_S>^v zcy~icQTP3~e-3{?bL?hpCCE<>djI0~Pk48!cx7YjZS0=7LRxWjQBBoP?qw71BRkYZ z_8ht4qt<}6YRzD#{Quxhd@D)3w$}0IT_4}SN~81$_Fj8Mu)&n-e!RHtyANRG4GKCGZ_$c##knP_1wUZQVoZ);a{-wn8B;?fz=_Rj;pmxtvuEf~U z`ty9kk6B)8J{~sHq;680Y^upYc=?A7dh6y|5R6QO9ej{$2igG?|Mnm8qh5aYqSp~C zzk&GuO6K(({F7~8bh_tL@~;#aAG`SfQP)Z*>_5yBF2%LT%74)F@_8-%7jj;>Bv(9A zP>>w&z`y%>_h&yEqNUYrK0TcbQ!DZxewu0qj*V^PVg#aScHv2tvg#kW?R zDk* z;%xT$suY}uzd9KX+B%!JinC3gZ5L-pGEO&M|l z*ZX{f&o}yflg~G!0zVVnMAMNmt@!YwS@t`_qUqyG4*liNBd9KP&YYPu6O-!Z=4NE> zmlVwo-%Oq`t!Uh=(4RJWRuLdKW-XdJp}1tWsFn=WV_H#3Nn)JTtz`PRY10JeEiHe#!i$fte7yyN+uC0Kb{(l2h0rZISV;id)rs6U!U_7iJ z6APPr2sx36FVTMaqOzKry43>sU@x?Xcin+@Q7#x3VHT}u7SftT6bs3}p#=<}Lo49K ze)AZ7JzKtLadmw|`As7$E+-? ztOq&^1PcflYgY(7hMJEnz^KLQy85Fh*40))Lc+kLvJkrj{FZ0aLUrRCFsBOu@&p?o2) zY{4#g;F3f1PDT)1pLOj zx@mQ_OYntrsZHjuuBu+LRDd456=n5+aluP#fw>amM<@$Pu}X4Ug`B)FF|-D-Mk-d; z;8OSD_H`877cdPNH15h3KxRNes|HW2TOIm_#C=XJ{vpW2U!b#R3Lnf5Z!3j8>L69FAwG zcjwBwSyg~eX{Z*277T}m#dY<|%LKRs&2K}*NQbwjS@xN~cx6q^aS(z~Kly2V?*k75gJ@{2W)~rwAFWkSlHmNPRnqHrMF+$bwG=h=%geD;k~}^5EE0#; zu(W!y2y#-{kPvVHEj|WqM@$60&*K< zWy@4J|5vY?T33cxpSl$xo`@q#8A=+m6l!3rQqZ~<#3eV5w*=r3VAQlpLI^RUmPmIj zk>S-?*9gg0`s;&@Y%2`|{uuSN5i=re1t4J=f4QptG2%~`wjUuW-hsJ4PoC1qQ zS64tJLg17(ER;B8N=ieu;LL;~=Rl-ppixV~CwEoDYO5Mo$S9GakYv@%EWtARl`GOF zx-Ei}i_iaCIF)s@UZ6%cMCe31N#IQ2Y!v4daV*Nn=~N@gBd0}h=;^u$4xb`;t~jsJ z^ATKug`?pBx&+Qs^t8{nM))?~>GSOoTqL*%ceOm&Ex}8~ zH-mE`oDB!(Dp7-PCGkMv{eQj-fKKDPBe)oZZ0{B4K5;s5#|Q%!FT#6-Eq4(3`cK*y z!HKZXBDg&S-u&9tA52aQ7ZYbAzxMdef3hJFc9%t2nZ2|=oB-~(%kjU3bJ-uZ1y+12 zEXRJ}E&tOUC)w2t_xEJCFY)|T8_o>2Bm}{Qae7bCV~)njJ_bgBY-7|ST$d1Df$%X2 z;b{ohCxoXX+>j7%M0jOFcoo8{6T)i{J~knYD=h%jXemKqzzsJ9dQjB3s1<^!!h!Jlobcv-H&z52gTZ&<9DYTBIP&bxBXIKhtXDJkkrBFm7wiVxeWZa>gER0UI1N0B;52f{cz40CyaHCK- zbR;(A2xiBjJZuE^$A(}5M#Mmb2IFk;5L{&|1V%)R4xw?-;~T;AQ^2#+fIxCOuGyW5 zOA%+|?$NpQ5b#qTgW`V@X5d-q{^z0Gh2wH99~^Au_zQ84OWaQMsX|WOamB9&ec09u zR==Vz(7Wy}=!NzWrN?n1U{A`32+k0Jq=h8iUhD3fm4*Z1rTIZp!6u7c;ENYG&EyhJ zkc2bSZ{dP;j=d+I6#>XeR+>2JI=Zjek$d6r2T4jmO0psW4wo0p^%;0G3gl8uAU^py zYYU3S#j`YAjmb)jM;2^tep9?bG+yA2=AD6y`fla3?xs#nd`ectDTsM+k<10Cirb9) zxH=ZqF@rnW@@_#4_oy{;UlWVsx{ZqtY@$ix+eX>8q$uw3gk?qx3bv7ldpW3vNsPjg zcF7CBC~6wT6`+;hZ2j7d_&{QbUQ_(fmx1 zx=Ffdu+8KElq(XqHkRxJ$!<+)ELmcLWv$Eu&`l3wOaCEk&OeMz z^hfP!^U*kUJ{DtX0_Jm*a60`^jH#JG&YO!#-U5uAa$G5@!bPVVoIPKG^YN=O7hH=O z(y6#7b2j`};hxDgNP7!z!Q6$})E>;s9;T0gg!3_S!PF14mX~l!{bhUQ=?mPN`4Xx2 zBE{D@mHjPz{{VK%kKB&-aSzP5d*dMVAl6(+U-B?^c?=+kCvp-`=VV-YPQ`pY!gDzd zSD({)0cT+88^wY)lWVvgP$mN`X*=?T+?g-o9KMFT@O9jcZ^wn|yO8c4l<*Mu;zv-* zQ{0E2#|7(GI1iVo^KoIiKYzvr{52261?fS!6g@;K9*T?5g({g3R8fwpc062l<%3i& z_=oXGHHO|-6M=p(jmN5Do}gy&M0EsDQuBGTTEtUSIUk~``A}5@ev)DbnP;j~ zk?uU6tuE%d>N1|EHuHSd#0%7|e3ZHe;fLu7^%$3mR>Oo8pE%UxxG;PYw43t&4UULUR&rKnk$Sv&+=no7QUfPRb8BDe&*8@+lOKH~)HHe4J&4RW-C4ulNV zK$owECVvdRD0&+=Hf-EW$oX*__cAT9PjTp_9g{6?%*hR$ z9pnS63wIb|ZVoO9m2S96SPIl6vDf$zf;%1&t^ypuV#>nJk3PKAT9)wsL4mEEbV7lx z9rg<_J9q{)QTR}mgK;C4B@3hLIrtpv15W=QJ{R@Gf+=3l1Z1?%nb~(yjto<_Rj^YC zUJgWpI>cbXgp6g|l?AEl8k+ju)D5<_yIh;gg-76=dfe55 z=_RczKyPA4fqVd?Bmod51Ar*)cpY`(^|<450(IjJ)C=;_k52+{%E`9Xk+9IXJ#Dj? z42{rIwV_BORde(1qMoe^C!7rN>E!Sk30b*6$?7G%ip5~Om1E*rMbLm=VFP-#<(LlE z5}%74&!bd6KOt8^=aeZ{Vg<2&jOY3S-jl6<9E755aaPDx>w=grI6Jt5pQZ6uq2^G$GEq;# zMVD9MQwc3qvM|Rpk&^9br%X*tGJB&P?U#d&C3?jFE2As zs9-epd7L_d^nDytJHVkmj<37`Zo-AzJU4skp5$FEz(FEM_MRW#4H>!zUr+7@*v@^B zn>_$qdH?_!&jW`21>1=5o?l745lNWSy>1&Jmr`3g9CHx-2XH-HkVlCFqMg>tExaBW z6u2myCx&o0}is2@a$}9dy8CG91hyCeX|H zLiH-7<}redi4#a6WgD)$DA+y4Ba` z@2Tmbdv~54B!aaV7h2WWN$+_MV}B#N({vxw6!zTnBM}L z;ydV&e^4HOPY3c32{nqfwmF9TbU&>TwwU6gTaNljjXKNGf*x`ub&xm%#Ibl*L)%KV zclx;*cY(3y!kwuMScdknaaqbqD7kZM$(?amPu5*Z_KV<3*S!m!ET6qAnt)3aO5PZe zyj&}JNh6#r=U2&IG-+G&!&XRhq5>N=s4}~9&4w0f&4!2$`nhacRjiV6pFI_r0OO@DVEGk!>ZKDdq>b5qjB0ikZ1WcqvC!_+eQsh=!LndKZbQb`w!0MPd!^DUThq{w78N=_u9Tr({_!ZEIyJ>`^ ziKj-wVG;~eW6e2IE)sXdJN>e;I!YD1$&o<9k_*F9&W`5yK}M=Ac2eBdrQ!ANZa^&Q z4)cBhbyT?Ota?#5)dz?h{V1mL@K!#JRsE?*4WL6*0nJc@0bVf#Tq>k8;H4~9!*JVw z2sHvV;do5UPEcbL#9>36b91mrl!=ds1GXmP;_xAOCByLq;fQ+|jS}1nc*j_HhcO|% z!x-sjk&@9T?E(b?MP799ZU9h3$5|H(cKCZ+x1=pbUf6AI&9E!5Aa)!XX~=23D6sKO zl$_^iiNaOzHip={ld1^fF$strlPOP418T>7DpU(-ggOe0ScnhI9X>kU$8A)a5=HYmd-5+59bU;U2^?K_TS$DW~XNrrf zD?)@d(x%-sv8~Ql<*JS3sZ(HHPen(bhI!`c)J2^^y?{V6K%E2eJ~yFGLw=!7*x^J? zFh-qnh$#-Ks7)xX4=hP(#p{rRr5yuqm0`S z0wMRxeW&97a(wLoP{hOGy&U!kSh8vp)cKXv7brLRm}VBJt$=#j256G)G*w+gb5#?~ z0~XB!bpw>vjkH4DM61;;v=Qs7)6`BnQ{6!qt2+TtvJ3DeyXkgy4zMfDK<6|2Oz)g$ztdW=5D3h;aN1haaQ)78^#)HB>(J;&MV1@5I@NP%6{h61jH+Y$Plb5Tvc(wW)pQzsE)786tiF%(ms}J}Z^&#J+KIVJW z-+7Pvlpj=|^ONceeo=kNuc^I&3j2mXQ{VEp>O0=2zE`R0M*xKV6Sr%cRW__lFU_hy zfV~dVF2KAz0C)KS>`GQg0qCn#M^uGQS4Zops>eN?mAbuJ2jH)bx}!QxXR9-Hj=C5C zV3+HzR%gr#wLyys1eZUziX0jO`v@?B_#|_JUBPPf!}-`{_zG&hJv7l?_*_7y6=TOi z*1;t_8R)aJ4p!KIh?_;-7pYUQ#JCP?ggx#wC^rlE1FV`Pxk@h=97uVTnxB&c=mtDMnn_#n2$9djpM;-4srJh$07hW49+RI7EryLV+_sk`s14@l z1}?UI0%uF}$N4&N=Hv=UgvU*ER^ValdZX7Yn{}SMLbN#nV_2jv{1@IXCX2n=Kk)Tj zz)_&QRBd5>n(VY5@lH!T;FO)xV&sJ_J=kS#0LtS z2Kzlgs8OVQXac)rAEXZr>6m-Vg_y0GXdc?8z>cX=|X)tU83jFoj|eJ0~Ct~fn4#VUPRC6 zGI~ju)62So-qOH~(AD&jJ{kxWKs(m8^qpS8S|7unuIEfWigWcUK0vSGUiw(>tB>O; zdOgq7Cvb`0z(?s5xm2IbOMz%{G!QLT0?pz$pjoU3n#HL|e}+DvF9MpyrTRkNsxRgy zeTf|*i$nR1j}Q+_&d0H5gfD=6k)8A?K)Ft{yFHppF$Ny9BV-wm1`abu2-a|G=^rve zFq2@59=bb@$*kCCC3rq^JllhNCwFdT9P7PY|cl6UG443)qG zKoxe!1HTw@X*V+icWd+e5Xdz#-@>M1N2dAt)}F-V3?mTu5L#bN$$Bd=Mz&+~^cwW! zwbUKqe0>8A#^K?4jQYzubClgBlWzp0?9Q2s zmL6y)(jJ}}Z(U_l>{|Ep%9>p+u49tBR04~o^H~k#I zTYhiL4=0PgBG6KS{%~fEs`((SA z#NtapnB!>4OYP$L*#`(sLFTmenbWSOBWd{slOkq5XjN?E|o|k;)Ili~WMsoYI0=dJY~~9NfM^dXNDWylDGvcDao(k`qsY%e$+@<%ZPk50v5H7L31JZrnQ8#S3eeL-Hv#7#5m_F- z7KKlMI}J}E#zGi|u*uUz8=v3S(5=n4NG&=bZM+IUVcCZ*J-M%K85n+Q(l0~Hy#n0P zSD|6v0qoCv7`gAz!TJN5s6V1ZLFehe!`OZXL;E!_Q@@3w{hH3w|Df~r_b{+O01E0y zYJ#r5!NE3`qv=l22ON(cagyjM&=;LldfmYh94DPVax&-#2T=V^gj1Y$oZ$rA4YZ%r zi3dAb9CNaHtdql2om`&obm7CDu3UlmTIT@X==9)oou0he$>(j(0B!=^=?vyOokHH@ z9LSG4!}%%aApV0hlKS+oH1&!Ger$^4pQTsL)2tv zrkdu=Rfjo?)Lf@bEp*D&a;H)q>r|;ToW<&VXQ{fvsaDrG%hYbCM&0eysYj9aIp;X_ zqO(rD=A58Da5ktPoDeU5XD-sD`Xw>j78N1f~Sv(9$?H|J*kzH_Vo*16eXXQq?t z++nrlYRE?-r4HkJ*%NcB7UI0W51)hOw}U^3a2h5M>H43z zC2<<;L!iIm6xslb_c|tFUm{%+rbFE^700J0x)_WkmsW|?gwBm8ymNe7IG$hX}SxpV6}rU9h1Or0LPL~Qi^eY zD{j2^1G}3fno+>+ycV!KAAw0B*jU z;0tgn4iV&z4xBOa#LX6@SD9r?1?(20^8_mJBqcddp%PD1n)57WI=`pD`2%%yo~O>v zi`3QmBXxIPwv`FD5PQTcg93pU_LZGT^uT9@uk7rm2lk`C!t^2u08Lr&VV_tI#NnCj zn#zW^Og!2F86RvKxtk8dDrpveC2g||3-Idv1yy>3(w#R^rN1W3EZY6T%mOFrLSDF2 zAuqt%RJa-X!TmIQgq&KCV+QzIe;>`BmxnWWb4n~kC=zUK{s^Dd@ho)+wi)MI4?fKt zZap}Jas;sSnp9JeDrv1w-I&^JAKpoGftDvP-bshY(&D}&V(CE|Y#rt%0Ip1rrtH8s zHBs+DdWcII?u9Cuj10d*&Dbg1U{>V@5rKV&U2cs?`)LHSDa9FqFxhUJ2RzqE%)t-H z?%2&r69hsSS1kYHr!kIb&C7|u6(m(+%8|esS~yZ(D@Bf&N+io`NP|bQl%LiJU&2D^ z3ev;+gb9+RdZGLUDf0IeS`xKXJ4}X;ZSh12EerDrQaAte$kri*KVPu`YWOpZ?9VZT zzN8$`KF-(pYboDCy?jTboPSV}^F2**exyU4eN+PdG1t{J&vmH6b!oZl(P}q|PIpu2 zLN}FmxM_5an@MlG9q4_xBYo_4qR(86Z#SF1adYV(ZdaT_?#|ln!C7uk?&9|5?rtB> zbNljew;zvl^LV10&y(H$e26=ci`~II%N@#d++04w9mb2?gSgxs$!pwEyv`lN8{C8W z40kMF=8oen?s(qrPT*_ZiF~~~nQw8Y@=o_qzSBLBce~U10k@cc>mJ6By0iFMw}fAJ zXY)Jm9Dd)O%OAPf{C9UA?{(+%K6imia*tB&-G!>7yGV6*%T>&+P!rrrwaBefweAwN z)?KPjb(g90-J{hew?^%7m#ZeXPTk?IP!GDtsHfd}^_<(NUU65dzqzZ_C+=$Xne(IC z>mF-Wlr?|q>lO{EzUEw*5@V8$#@*m^=rf!U=?%8$9nCkkN;b|H8B}IHDfa|&+zpiMoO^Ve-$&1wg>#&=O$xGG8Bwdl5h&b3xhfr(Hy|Aaa?BU^Dk`t6jTPg--Xg)F4DM#u`Dzb=VODcSf_Y| zkf76?pkt7=rTP7=4m!w^c~}Z^Y(aVsu!`Q@CYYA9OMshsD$mWYdMznp{3`{|=V~%BcURH``A3=dD!YAE%;ry z75j7clXb`_aQ&5d%^{sffH&Ab>zJ1m;6rkl(+K%1doK26hHUJ}7;Lr|0K09YJsaKJ z61~0ov&78N3(vQ3__}y0a*%m{B|&BXT1kXbKOj#=TyhXCY!Us!EYYZmF$GeSma*_c zI2N$hXllL!2cskQZ$5NtwPe`Q2Zn@uC8fAKDb2ly0{326u|2S24^VH=fd~(GAESfa zCuqF;6isuVp;_*8w7~rXmAfy%lD$Or?w{y*_Z2$H#c5jieLBJ2-=u-C+ z+U)+Fw!5FwweDwhz54~-m22b;%Jj-j(M|d6hD6bQjgC6Z=^9nDQS9)Ffc+gW2KG*BP z7kEASVy_op=Jn=HUVq;174Ws*AimWb%y)Z3`5|uvKjw|%r$Ary4(8Xqar_r=Jpa|3 zz;AmK`8}_QKlCQ?C*BnP$~%OA^bS=?-Za(To36TfGgN=CSPl1Ps)^ndHN%^wW_u;- zNN=_(_2#I>-dt7V9j;b-^VRX*QR)EwYt??rf&C+R=d6B>LIUA zJ?^bgPa^z+*Qj3gFu(IKzw`-4;Hz2Fpi_c=4XSDe}2tIm<$ z>rScnXJ@hZhO^51t8+a3ry~A*?_K9o?>*;A?*nIt_mOk6_o;IS!uNY$I*)jJou|ET zoaepooVUF1osYbI&gTe!?|tbyezKe5r?|#Xb+i14+tp8Zd-+i}A9RGD>5fI*A$})! zrr+6} zKg_+$AMW1cALQ=wN4O9Aquk&5W8A0xvF=O$IQK991ovIP$o<5h?6vcYyj=fKuZKU) z>+O&5`uQ`wLH1~7ZU@4b!gHKA zI0j!TrC}TlgD*mX*M;QVb(;P_9csTVrR$H?6#H!{1Daqh569Ce=B)4VLGT&pQr^rX z;LF4vmYqBjzIM35awCs|uRU%ZUWG4kH8?eVE!G8N;OoGXoWJwIJQgQ(r#bKQIBco4 z=UL8MJf5}zoBl6IHvxa7QVum<$VKpV#IeTn@b~N|;ymwrbT&_hFN;5JfC*lC= zCv+-Lg)f_b#F5iO;LE`&ogC}ypqJ4y{0YdDsDr)$w*cfDUq^g%8)&}@cGABgIc@zF zW$8E7Y+!SYr4G()x{dK|lsdW#uvs@9b?%sW*i3FnhHDS?Ech;8)z{@@%bFUqICmSi z;O$3351#~~gbntm<&V$o#h+Mc;=|%GF%OfrQZa_u6u|}<=7RF+#O``vx*&f6SiX|< zvw!IqF4ph3h9U&}DXzR5|6tKs_G#h?a!YZyqI5TvZ)$!#9-AEgVPRW>{b>KcEurpz z)&^u8?ojP}0p8(P?0b5r{hJk6?z^qkY~f6KAx@nhMZUj~()?0N_bbTwmDJu}OdUac z_)GC8beB;-zlMhRwKUwXqmh0ijq_L0M1KuU_m8E+{IxXOKc1@mbyVZ8r`7%jT8p>~ z{F7;uzmYckXV7;4EV|Y|hi>)Hr91rd=q~>Pdcwbup7SrFSN%)q&xrfVznp&bub^iC zDt7%XoaAp~<8Q~`)7ZhC{A;v*Jp1CK%69RFrs=-kj0L=eV)%S4 ztdHiI@Fmf7EFa~RB|d%2wcJp&F(KZ zEe*Hb9lc%I=pEom-9>5Ktr|t|0XFVl)iQdYY7@O*74ob@^g)-(a0$0#bt*ZiKZ011 zN=&7gWP`e+TV#-f)otBUfGpvni5*UU%~;|rd2t~Tl;z67Tl7kp%(pVVk+KR9V3Y;F z%=31sDTzsZV=jNfsj)0QD^x=WfS=_j2T%^?H(QQIb(ICL>P1j2E|gK*Is5si5C8nh zcJ=O`Km0pSwyX1rkfgM6wA>r{cY^qT@g3rD9y4yaNn12G8t`jUTQSzDmNe7H0GDHn zKFW1h(WhvZPpVGQr`7Q2b81`^?V9KdYG(8$n%`b^YV>8A-z#c!^i{Pj`kJ~S`ntM1 z`i6Qm`li|&eM`L^eOrAUeMfy4eNXG?`#K}~fzFM7s9Q!q(%qsT>qDcT=#uECdTjJF zT@n49=Jka>CHkd4E&824Gy1(=8~s6F5dFzjLU%+#Uzn(b4bWT-*Ikki3yh*l7<7Cp z-~!4vU6o@}Y9#zvW%dOd>+{b|Ir(*zk{=f&{0Z3Dh~oXw#ag7J9M(8pd%8&)q^Xc* z*1Io%w@q8sW0uV-ZuK&|WsCl88$5K}akkN#p*P#cgN8?JtJKeKwFf-*WgXk$^cP>W zg-1Lw$#%=UwA^;uv*tP5^XyIOfZN`6mmT82I>#RN^uv$X0q4Kj*!CUq+tqer{QB$c z_~&=z+R+!SyWfr&ea1q2Y);XmcGlj)6YZ2sv#zw$$Hjbme14yLcKN@L-fHJ;T(;CM zIA+=&dvWt!Z`#Y=zV;}4?&h=3wilMIJ;a{T`re-QocCWl!>+pGml1YN`TOtLy9>vU zvA2Ib@C&>9>arsH&l$^4ve$QLx7uF)dB-kx+x7K7wwo$5j<(Ntp1IaO{mq=#_O%_O zf448sJz}tZq$qcYec*?bU+h!2G(EsRzOdJY_UrB|+t}}a*|5?6a_b!fZPoEter4b4 z{r$K0y{b=&?T2^nS#LjG{&YLrbwmSonxE0q-u(8u^X%!@7k02`R~B7tPwo)wYft?=>wA02)klA0H_YhM->xm3 zw!vQT@v;K@<}LXj*moCl>C8t(t^Q#@`=Li~`^}Eyde|T4E;`fx+~$ zWoN&-(w3Jze2`t5x~{Wb@z@!s*!iblKfx|OV#g=8#LF6Ok9a8dmL0gJ=wRD#P~kat zf?9UE9dqBbUUt-~KJVHii;pg~E%SR^ZkzqP)q%F{M)jp_b4>mq*0YB8vz_-2|IQwI z>7ur_$GGDzwKo1@D;s_OiF0lGMV}pJvqyhfWn=!PpKZOT?;2`z&cBpXlq1$Ow_kM_ zoo&DS{D|A^kJryEv%gl(dC9(A*z{TZ{>Qzh+E1>|z0-a%BPGMW)cTHH_PO`3)b{l& zR_?X0ly8`AA8fwoSbOi=PrqjOZ2sP}kClD$PkUGIvsT#Ks@6VcZ@F_<%1 zq#f-R*i+_qe83)k`r1qE*dxwrZ%3wH`-2_+*seZy*xBz7u!ooY^0gh5`C6eZ-gEC| zcG;@s&FqQAW$WxbHL%1kx^MiCcE*~F-)!Ze`iHak-SK=o^`UkxtbgedAKCc0(Z|?^ zIde|6d3$Gev}R+kZZ_qZrmJj5e#&@T=ij-X+Jnx&@<`id#2ws+@C??>8)u5NX_y>CX3r|gr3`3>x&A9I!5i`Ngo!aiF$G_Y@U zIPMAi>gS72uK5f_EdBzL&^5yF$+w*(xxWislb$zD2aYyVXd+pq; z6nkao!Z+-eZ;EEvJ8zjb)84vp*(-Ku(b3l4^h2LpqWXZSD9~mUk0|cadE&^v{e}!c z%|RgJfGnF{IeYS?%3?vUVHx4{HY5Dh2I=e%qwjiVpYnlsf%44{u5Y7=Jb7D*&n;37Dj{MDrOY}yp#YMO1hh9 zAGn-Uaw0@*)#*AT6TM(as!q$)Dd-fdhW{DWQlk3@xJ`}~cpQPFS7TPl+hUTS;89c( z37#vNGO_hwXe5K9G&*#RPNZ?2I%7-4Hja##WCS*jG39thsMX3DX{a#^lB&`^CmO}Bt1>~6ITr2rJ>T0>GdgWcF(m21C$N4wsn7ZU<<>j?swa*uvdK#+C>1qLa zzlf>!5{6aByRS73L#&Q3+h#c~*V36HH^OAtu*V zAO%c~0CbILkP4ikoJ0Oh=2c(e+kcPl%_|WVifYu4> zLSsQas2{|kK>%!ftZvW%S}y>6JQfeY7?0Ht8bKQbxzL6|9yBKa(m&QH0JuDs8#ICD z1wg&W@`Gm3#=!y5CIM*dv8F)_XtSUt^nd^$^jPx%(D+!309=q*%iut0tDpedIsoK7 z)+T5RJuqkoEeP5}3xf{Own0Z|y8xW~So;8w?^uVR3$$a<71}8PvOU&0D1vqg05p$v z4GxBO3l4!61>K_F84jmL60X-}j0v#L-g&rOZgB}r-K!*gwp+kcs zp~C`D#bYHwDRg)sz$Zrrqo5;#(a_T1DCo#w40Kd57CJfreLQwlFdjN4m;fCc91R^8 z90MI6OoUDd0GE#)9ZZ5A6HJCq45mQK0`S&jlY*(x$-y+}lwdlvJeUEU8dN~11wh5e zrU%DCX9NP$QW4CA9vc81A3H9X4Xq63KxYPm)-o%Y2b~?vht3HWK<5Svq4R=8(D}h) z=z?GgbYTGSOKefF6uLNA23-=I06jif4qY0ofG!J8gq{$rgf0(Gg02WwK~D@$26J7l z3|0#}DL6&gs$h+)*tqx8Tc1rLMVQYfZg`FClA?&o^Okw{B&JuQdaJH~Bf^&qO z8LSm{R&cJcvxD=5ofDidY;ACXuycb8g`F3y6Lx-Zk+2Jbi-lbnTq0~;uwK|j!KK13 z4lWaRNw7iK`rvY5mj)Y!T^4K-wjtOo?DAlXu#Lf1VVi<&!Zrt22-^}|DQs)7UD&qZ zDq&XyR|~r`xJKCa;96l<1=k6?I=EigHNg$St_^M!c3rST*!96p!fps|7ItIsPhmTP zTZG*d>=br$uuIrKgWbYz32qg(Gq_FIuHbfIyMsG~-5T5}?6%-8VYdf&3%et@N7$Xg zy~6Ga?h|%*aKEs7f(L}%8$2lNzThEY_XiIPdmwm3*n`2N!X6496ZUZMxUffpCxks3 zJSpt4V2`lJgQtW&5&TQolfl!%_5{xedn$NV*uR43ggqTRFYKA%1!2zyFA94ucuCmv z!Cql61TPDFF?dDTOTnwc_6GkJ_Hyu=uvdcDg}oZQA?)A5o5EfT-V*kD@V2lwf_H?y z8N4g(t>8UjZwK!Sdnfon*t@}p!rlu$683)Zv9J$ee3w{#zeekoeAA(~awD0bI14xUwW z*TH^s?qTU_1nYL{Tj{;ONmECv?}U6WQqKp=`y$yubJYUB_vx&9U(D!z|9_75WA1mfsndF>IsPp zsV}5~kcL8XgftS8DMS4idM6g&ZQJyO18@rKgyB3F$55 zQ0@vB-Y2U2Ms>fa;H&z8R0CDrZ%BziRgVM)I~?F=70;dpnkRs~wWH!$9+-U|^s9Yf_jyoU`+%d^^@f#9{EwkU_J5WXV9Nf_lEP#_UJb9^dY_5K zpVU-0%K)~yV%Dhn%t_36@Ml44oLb?BBojM7tEVF zY32aIu@(63{js{it)8-Qp5PgSn<@ap08>|kqVlZ-EGmI77(SZ-9h7c0s%pxV8N=sI z6@1YtGr$Nn$3ira$gUP7z_pVxuj?e-1ctU#$Bw|d^0CSD`z@SCN}X{?h2WjKJfy*M z>v0X-c9H~OE*ChAZoEt_cSx>GtMFXw2rBU8idj?3ojZ{aF~KR#%F2V?r>e2HlVQSR zl3BCoB?k$1cj&ZFfF8L)8`gqZCr9&d!)tf@E46KZxhQD26(S~qxt%;I%oYHy z9cpkmrOtG)+9d!hgDFfdPnlG{s6whv-6;ud=&3;Ty4q4QkX!;-e!#qWQY!(gokaZ! z5iFzgrY1f zdb~6z*W89o5(M5513EfgKz)aSVw~zsVZ(3$;7jpjmXbzq>7uDq#0;FcUAmNXMYt!& zrIFB+s&&bLB~zx(5ol`)5VSDGPGtg9T%gGR1f9E{6iD?Nh~#cLK-^)Lvy@Vc!W|QT z$R3cYX$-E=C`3|DAx;Y45io8$dHx7!#cbl1GH>eqg_Q)hFG6>!6m#WNCn11HPLy7~ z8Iy|%X~EPm-`r{pX~-5hZ24CWi5*GEEH9K*UMQ*lh>%@_(w+?6Zsq_<{739;{7$c! z(n%zr7?3@op-Z))YqbF!U5;L@+}TAq=AMG zrF6n>T`LNql?Amtgq{xpqdk$SlqDjr&g6v^m1H%2LSnJ17KeGCwW0cd9O{I3Q=hBW zYt`~E43$O{XR@0yH51UX>6vPVs>oz(19F^@N+C1VtV}gq&B^3!DrBCJ`Qo-njmlJu zg*>Is%S7j5y+95_t`u?^yQsQq>Q! zphn|%garDadPv}sd2pt@_Jmjgf)$YDO@9X2yg|IL7VoDBxm2u=sZE0QjP)NvE*G~4 zAbN;AI8EHn7V?OCG!qmxo;vL49pYuEShq+FzYx>ALY`62avRlOD7XDZd2*y{2fkW$ z{IA1uK~)d5Xo*S7hX1oz$H{A<$xy@lF01alf~uM^@*crLUa1oB;gM<-=Fu|#1H7V< z8k1xni+x;@eLVIFN%o_$ACqLCh`lVyJ_-BeB>NP;A;8D-En17?G#JNeGmg`29H-?t zPUCT$_TxBB$Z=Yc<1{44X$+3jrW~hPIZn-XoXYJuO~7#)faA0V$Eod((`nojPgl(K`cD* zp20#a;J~$(tYk|z76FEsE2q1;lq4N0}65?Wv|HCo}`n z_W)>f6!}}IF08ipRE27QYDc|muO@P&sFL#u3wUz8>V_1Wg2XB(|E40erXdWbgRic@ zuaa{NYe9&=2rj0J@k3`K5+KYOz83zWgje6qhh1!BR;m!dmhYsCnE4C7=iqxTzLB~K z-$?+C4T6TdRL=e%Sjh7IVqQV4{e=%K;{zw)8wvLpe6Pg!N%%vWCVW2!mt;+0rMuB3 zz@A-)A=VS(yYm<&Jd@RV*^?;X*N$IDesZH>Z+?CG9fmf$sO9fgxu`e5@;G(Aos!+H z^0!knb_>Lz%?%X{rCj@ohCk9eO3tTII@w73o|Mp`)Xsj?&4J|iU`l8xWi*^}DJ8d$ zA`i!r%wvfBB(*iEET<&OGMl=-nV%#G@tsKE1=wUB+TG@ERgH3EXfm1+tT zfN3kcAWd@Dv-%M<&7IM!AW!OcGZ_m;bb|&S>M>d|TD)dWdXp2$n*N_B%l%pyfNrht|@f1;~*zM!*e;dx4Nbim@$PC9rn2 zIWn0xsW_sM!nvJvbsw$t0i^SNw9kjAE{{-69->4a2Ug}uN^%b+_!Oo0ID?m`8M{17 z)qS1{`2v0Xi;N{+q1^vXdA~+EzfMlQOP9I*s6eHQsQoE@*L2tjV_ z+ko#;lyz$cA7b*54du=h;W>kkFuy6UP|?(3M@VjLRYyo(wAqPDJG>dcmR%(aFh~Zq zbQ#1cqtlP#?FYi(v!UH!Q$)S4u;dO}22BJgMe0$Amr<5TwUMz{A`SN^(jagMQdI3X^37C< z4kERcl+ku|xEv^IB~g~Wtya;^=p|#QPF|;dlNXE1+Z42b#nE0f!{GKQZHGMyJWB>Z zC^4i$T(e8Y#$_wCw%enn-GjZY!&r11#@-e{%4!_@juX+Ro`TkNZF8&jm;_gyjo9`h`XG4{NnsHs73!G@4 zD%4Fm&(=(J*9U-;+8mtJmPv8zUlTV*tYO?x(+lzYt|cO(bVYqxmx$Z{slMEz3f5CL zH#_*GLaI=K#J*5sFX{q?zCj45hE0nH1)|&OyhwQ#c$-uRJjbqM8+mcRy7yPBp6f#O zfn-4;Swz&`Il@I5n@<>i5kLCRF6wVeO&#B^*IYoR1=ZDvFa`2vvM2Rs2Y*ID-t1I`+_`sN$nl zi5|ly`&e#i9LE;(1ONmksujA7v(uB9;!Rc?^%U}KI_I!ws2lZhN%^*;Cf}G}g;k8X z$ls{`F7mZCBT@a6(h^qx*`#GIWj~MVKcDKqnCicT>VG`de<{`fgrvCDR)1zfVcb%_ zWD}iXn0+*8N|rXEcSJ#dw?aU+AnUr}254Px2T|gW1`F9}-VRRZFfk2%pPvuz5TJga}G9vCc&il(z{6-D{9+Fw}{s0cT$z3e^Xp z2B_w(PS@Lk+A5Nd9lT2&a$Zq38ra?I+^TxSvyFoQ#ZZ(bRjVfmC-E#kv|{B>)l;fp zuUIP0P&&w7-sY-1#g8+WFZEWSttmdFIrai*W=TAAWl=^vgXieFbp}>{Yt<=Ovc)2< zS)prrdyco-+3zb~qwty9J&@G<)v5Q3Vl}Cc{m-X9_mZmITyJAl{ngoW?mi_aYJsH_W#II9 z)&#);C=sDe-ZmE**qjH_6*Z4%jar>u70=#K^}bm1HvfLtt*ZC--*@lh6?ajQ>kZ73 zSDpwK?*JThtyV^Kp(Wf#;Y)J5Cv{EgTQ)C^3c1io!WJnPTS~%~;%rfDtFwQ_d27{! zoLCkg;hW;_BKiesBijELB{tR7*KQ~a62Y*<>PU%kPehNJLaOuUh4dJ&{a;nl^LXJu zRngzdZbH_qqwCp<47fmFt~WC@9%zT#Qq`Sd62o&)pHG0U;*iS8K#ZS)Cde9I;z{>pD_;2oUcwLXxZ|aHq zZC$S4)zkHRtloXVdi95TvHnP})F129^e6fZ{h2CO5leWm_IU#EZ5 zH*!P6KRMU*5W4nH<7cn&z@v=luS|;mS)+^3za}73wlP_z5LC({Q^)iJnR0-sYf4N# zGtR`#(by-OhUQq)$jmX#%u;iJS!G(7Q%q}f7H@7a2b$|mM{~33WOkY^=04Na{L6GR zuMyfOxP5C5Hb0o|AY2{{qGc~oEDr_2vaiiC{XnklZ=0F{_CPbxb~b}-cXOESWe&G} z&^IqO!|XtFq%Ae0>=-k~9&5(hg}5&_6YQCwW3Dq3?MD3HU?$lILCJi?Op`uffm)!xIsHZpC=2O;mDn5=4Qx2sz)d8)bHrgmat7-%=U;dY8DwyPOt zS1`dFXisu(slYG|W12LI3EwI^fXUJ*CJd+BUQC%rF`)d&yv~ghqZsmX#{f4wOc)>=JL|S3OMZWFpG~Wg?u;*ko*#3X(bj zowt8T3zGWr)S7s(5Sn=Z1WHZf0j^*!9by>D%D-l={g%T=H^&3kw3J&rmZ?VO1fa#2 z1EjqoDJ5NNzTcV2UYHWrauYFmk6I%~-X@~4Zlx1;0ukhZ=rF`#UZVf17K?d*A{BEt zS3OiM6?5shbC-DKD|)%UJ6HN{0FBtGq4N0Ef{i&k^DuKVrxZ`2;7;S(k2AS&R$PV2JHsdYs*VpM4_rtMR=7o)FzZMqbl_(~%nqaO5CH^{c;d<2ssNmX} zTGN_hWUW5&t;M8NzIBL{kGD(p-x(s=VjGb79LBy5+q`dxZQfT3rLTBkGSheeNZbtS z$SxwljY;MXFpcj5&-m`7NE}iV2^QhQNSL0q5T8hV%Yc%5l+w`F1BY?D%E|HK>0RS# zjIP=VT!CC-Mb8Uj9~yw~a~l#!xGCGJUUZ%_+Q!ovq{`!10~7=WUqaPwOAr~T7lr5r z85-0--u)DCLwOj_oX{Q;uDgJGkST9|YKyV}r6`PN5ged>S&87XA4g%bV)Hhs z7WuIOn^a?f7Y^Q}8UVF0e3QVPbD&UW^t;tzH|54U;Vm!L7jOBov71ywJh$3}HfkhR zN&^Q{VC+Vfd8-;6Hq1oB9a!KY+PzJ{kkDQaWP~VE;y{8tJZx=8h`V1~1;V=xenM*e zOcnSAsqrfk?KdF8e^<>+l^Se~8fvW?W>eHco2Hg<5Nf&2P%CVVRXVuI0aIp-B0KF5r9RWjzbPxj3j-L97m}x6>Crz^w$Qu;3fksEt)W;1|v28bFhLFmfG! zO2kdt{T!5=<0+#+1}ZxbIGz-)8vFv(Wu{Q>#i-zZa-Sg6ahVfglAp|~R;O0QQ#Vw7 zkrT1;G=WVK9JI7i0xJ~dBM&CFf=Wzx@OOB*e}N2NK+P3#+n${Q7ehfMmnnV9>h!AW zD1Vg0wR23e8jN9`%hi?Hl!?0~QZguEIfR~l-g3q5`Tf$GVkh_k^@1g97LTw4D{v0sgp;jHg+iR(nm1(Dp9?0A7n?-E=Q|UJ4TIzPq*XMOnbCi zWRIbJP6V%Xk~-5)rhQIS7ua&}N~fx=__@x`P`hoVy35W|58B!4aXVM-vGdgnb|F}p z$E(+|e_&4l7<{(+#a3$1o~+XW`Oda$ILUabZeahRTi7#ndwZ7dVb9S6a2p2D_gsL! zm*V$iyUx|ddu7Q-uTIp)I(mT<&zyEaA@hCerD0JF7;;QjHPPWJyT^V=4y)WE+J^#c z@DbuZ!u?ZSSoIbuaIDU8bvnukg?6}!kYBD^xgmKPQ-dd28UGZw+u6OBx}U~rfP+{i zmx;n7jI?CHo}r^mPCpknG%YG!N0Pw`bA^(QB$IXKY3|)DV#w}&*lu(~Vkw=>2?C=t zL@=rvRSVkm!aQ#zBhSJ-(3=6G7pxpqwL%oLNIs6BKe;yjwQE>i*>wRr2hjHjKswc- z$T|$ShJ-jgN%%W&JIEIa^NHH};$X_`dL+U|B*JDS0vl6Iry65#ZLd{r?e$28Ymp2) zm`L5M4!5_UMYs!0+gqt8x2UG^jcxZcAgrF>&z70VCW)j{}tw zaOr>{1ByqMILCn_IKMG$)X<3~qw#fENeO3R$BrD}{MY07j60*s^HSursKO=biv1U= zZ~GhD)7rm+K?>E5SFv*^Som9I*Ol6lfAD;|y>&$h- zMpb7ldnTeG<(uQsk@5|i0g>2=C`tL6)A~{0qGgfl+m2|Ir1-WSEXt{SSgLP|U}>C? zho$=#rGQw5Z%`kIWujaF%knkq3bAb8PK4F*H7ECDG2d|1Kjw4z9v1i(MT%Hm)Cpkq ze1rNxEbiO!u=>6(fi>_ADiE=TzL^Qj@l9`7qu5|*u5ZvwiRJkQRfHHa1^t9rV_y^J zSQB5PsS#`H>-w-}zD6e?c7SiEz?!4k0Bhmvb6_ofgPusNm9J4#h_#M&fwuAOEZBj* zMn@u6;M+o2A^IY)w!WPTYv&vJPJ7=-kR5!3)<>*k_<>Ho>4dGbZ;yd>@y(5}uD(W< zAlA*-xv(N%zYRMG-5l7#zHJRV#5a=U?qNRk@Xc&&J<*kc^+J^a);rb%dZ@3L!TR_H zHI`Uk-%8%}^UYjXaTv}1zBw7&fLH}|AUZBEzz(G-4)aYaY_M-po{1gq8`L{uNB9~Q zj@S_2NQn&fwWM_z`Y*5&-<%2??sEOe*iy_R!qO@AO@M8ruWyHq^6ecl_dWlifENq-_&w`EjO*7a8-`oQ`+P4?Mj`8iWu!+8w@+|Z1JlG^(qp}g3?3)p= zDZVL(mHS4rZK`i2lxgUgz^0=B1e@VoDZ&chN_9BaH$!2^`9{Mkef*Q;O)!{S{8W+b-7zRiX$@%0MW@xB=eTk7k} zVaw1af}OyP!m#DOUJP5|8!3eoeeJYeR{HiF(Gxkz*Y$+2icJ=FvTqI)z8Xa);ivf8 zxv%lfdayD)w{GKN7yy z*HPi;y23?S%QrbeS4$uExx5)kY?~vg>UoqiNde&^&a6@ z`uYOl+kNxB@T+_~Nch#hC2y(UzIj6UwXtGh*ZGFJgcesKb8kTJN$fZJmezzKmv3np zXma^BP58~O5}?cF8-yLoT-^2{d?zs#zRNfLgzxqZvV*wCN`&3!+ZMuakCh3#!`GJx zztcC53BSv?G*EJebur=h`1VTS_xkp6;rIEP`j29luX_uBz}J(6Kj=gtx?OBNiT&Z& z9AS_6)))S$Z%z^Zm=mq&cloxt*q`wAF~Xmu76{)HJ6hONi5m2;*c7oo?c1)xpYg4W z)U&>EAAQc3yXVpKqA-QOfO50&7k%SO{G~*R?G2OuvTtagD0}&4k?>c2^S9F!&#R?aKM5*b4FWvv0==|HZd=3jfvD(}e%#x>Gd4 z5;<2DI{|03bIe=9x$X;D2AHjHkc_^j_bnGr|GPnW#Fe&Y^<#}#qrTZCJQaW=;c32o zQ#hUOfx_u^CC-{|R|JC2@~yNmO~<=KI6bel5KY(nsc=6g#jk^~ee1fu`9$pWzN>`C zsqDh*yWY#!4O}_thQ3DV`8vn9ErmDoEkc*h%r_!tbe^xPgy;K4q?&H*+xEigh^1t7 zQ`Z~#x|!<-d`(|`lDIeb?H$5f_~v5aEqyCuMz`|KKZLiA(W&{G9@!;|E?Jtnrcajo zq3M+072ej@Hwka&qlN&dUv`<(fqW4=J@e(lJ5dLOcaBL(=`L;v;cGf)7i>4_{(W5( z%0PXPZ@v~g{c|hfbkIKv@9yi*g!l0E`NDhpS}L*bJy# z>l+sfy6UxJFJ?PSIGy#|!Uy>JG~oji-x=gODqkNK3OPMEY+L$p-##n;=(PI^r`PTy ze5h|KgbxcFlP>Y~_hKLJTdA=6NZ)K1K7txAywuksg!Ra#u*Az9phsMi*-UMT=mh3n^JA4_UEmuR>Ow*iJH7j2;fs-k!k4%)kgw_BPZm2pd`IES zd_7qB38Bc*%VU$oy295t2tUy`UkG36>#u~<%Xb&P%C|2GKbbEHUmf<3`V`-868jo@ zZsDhf{iHrk23@|UmyZfR-M21QXZXemfir#UVttmcUzg|f^6vBJP}Rl0HWYZ8UfziP zyhJML{largwxB5xYyVErcgND{KLYp52JsBZ(Tj5mp@dTclf5c@S6~-!s+ERh5ysnPYJ&T zc_VzM8|eFbSE9Y_4(s);zPV5y)62WB-tOC{#eRox-w;kWf1Yr<`KiM1_U%7}-xH2e z^u50MNbL8~(+j^J)mPyU_{NEo2Ypi}_J_hDoqjlx3y&Z^#r@GlZqUy^C-%pE+feuu zzIEX}8FOW~$2U8~`6=JJO!}8^R*RjE{uSZRB&5`{F&Pr+=X^a&`16U_zL4<#B5gt3 zU-HdC!uR^x37MD4H?h;vpCbHKH+^Ed;A>}pEs>hn!;zqVgE6Z3d(*crv)}SFl>_{YAzSokLl-h_Xe$kfjg&HwYT zGuB_wL&|fydMDDqiggz2*S>L5;hV74f160mcfNJ)=KI9gfAG~q;+>xUci}%Fm4yEs zcI}$3euUV6_3b#}za`q!@4j`NZ~{l;Z|ePMx{mG7);uo@y)$5KYoBHI2G8 zBbHXm%fmGyGXup!Q(4LSfq(?H=%`iEU)HZojsp65X{E={LXB@h#S}v8DVk)xwK}BD z-wW<4y+2?OXr8aYWxWzUKa_-+u)ZhDlryi0SW(j3u zmUPnU;J+IT8#JY}7tWh9bzp_SLN)kfMM|ubWvT2;_6S>MvUZgb<)o(S{okvW`>0xl zOK4QIzZE7K5H19E{X4JI215`~S{p4>_9;34k>F{L2a;$CnS%}d$yOHGfgQ9%7Kg)= zC!&F20H9I(p?;zBE&FEMOY2-FJbkEyCu|uLZGMqb2#Bf zTS`qhDJ=7wbOu9j@~0$?xyv zWQ$Jw$r>t3N>ru&#Yz@syW#KG04bh*+jf#FUv>TZyA_0HMxMxDSU_?y2^X7Fgvd-p zDS!KB=bJBW%b#!rx0~|o&eOk>o%?2{zB!$9f1r0v2If-_PX{2oBn_7%g^UnVDrBUP zQ9?!wIZDVF&OML)%_=YJN2@Xq{K%>n%kPv2V@6ha*U9PLdt|pO4F0| z6fW&c=cwOQ@j6Y&ba^&INQIDNC2q&bgG#X;C)SyKT7W$!=~+T%3z;Lwuu)=|q~{8m zCuF{OUI1{fSQg3ai^a4=$nip!3Rx!P1bMn#$O^HZC^@lGOeYChB@a#(vRcR~Le>a5 zRmf@L;S;Jm4GY0$Ejv_H59@E<6t z0|hdD0fQhAHl|e0oowo>Wx+jLAbM9XGWYER3-B5LQ~7@x|i@4|cDHSO?xTSM`#y8o*gt!W$IFtYN&& zYmr%?kO1IdW-+cYv)Ditln=qS5Ojp-g4wf&%$_x!4cHmZTXgZ%is>^J@M6lGN%MfE z;iaWu%Gd=nB@l)W0($Z%Kpy75f&@vQJb(DY1)zJ3F6HZzC`QV)03Vuo zhh9b%J9v*&=f6VoO^`kI1@X|+Naf`DNAZk!H!7b!Vk&4b^D6{Mm9{Z|+U$8VCkYk_ z$*%?Z$i`TmEcYxrZDD2Qpar865ki)j3MrBbio{I8Bmh805IM|zai5RLpFWj|3K>Lu zbO2D~i$|IAD6(`oU%=nuc|>nONk5)cR!*drWX+h|cfNp^NJZp@bioy=#uV{Fq?SK| zi2M;MWPi|)idm(z=Sj_)PoQQ#<(G+^oCWen$vg*`L)deUC!Z%*Ob_LPStJGRW|H8( zm>EPaI(ae^F$pFGlap{M^Ji2{le(Kasq?})<)oIR%q6+F%%nXHois<1J#%V#7v5@9 zTwE+zEP4_@f~h~V7KcU>3^Glr%b1k85?%L7qWyW5vrBoyn^7Um0^5THNl)BhhY>rk za)Gl=Um!NiC;13)HfBD}h+&V4%$FIpR(;3+y~$S1B$Rn^WJ(B;l0d)BrY@Dwo(Z;) z6DcIM8c`~ez>@+?1=yY1nh>InNFse$t1{3rgD2UH>ySYtkMMf3SLq`Vks8+ z9i25upm=bK%o401yw96D6L}w55cZ0ZNeMnL6jdQ+mN#vZz)Vrd0_sEL=PzL9sY?@P zs;qO9swvO9BzV^Z2TsOTOrbu6*e|tkE(z3^^!XJ6l@nGmk18~bw9FveBa7xQcA{{O zv)8)(SgjDeX-BP}C4iEIznw&aMyqquOJ$dlDdM1;ToX=$Hx?+7% z-pCfy#p2}>dF@)Ut`*Y&j%o{JaVCe0`R-TZxsBxfe{-pT^3&I4>g(kjHwd{=2zbi^ zro$(9NTyt`ZpcKd`^QWU$9VBj#6By@J{bG#B>Umm=Oo$ZVxN~}pO1Y(l6@ieMM?I> z*q0>PQRxB5X_<=)62@_ajN`}|#}PG-BW)Z<;5d%VaU7xHI1LR$afFlONF~P+GL9n@9Y^vw zj{JfjK;CcWY`a0-OmSK=JO`dyP#ELJ=fslNHlBnyFw0neI{`hQ>gBUk5IweIlLfk~ zh@a-HCHE}D1>hV}ABM~M+3>pDXWgRQ9m;~b!*p4Vo??eZn7HlU(-ATu@ z5p0qS(VGTsCtFU%d7O!3*DVsu;zV4G<15kF@p2wcHVQcp=M8{G{Y>_RI1kr~jWN!{ z%^wL%cL?Gc4naKAA&6&zATFx$tn~#2vCcbH-MrrUf|QaHOY5EQZQ*M8-UZx(?r<(h zNPT_{!bL&Jp>Zta$%=xf3RygC$0A|}YJNu$K{|6*x(lm#-N3v!NF5F~$W}Tq)I&iW zTdj7`d+nnCxs49&ZhEbI=_($glX#3?U=M=)8TuT_@$hoqXKQl&*+h;j6ojs&ObsD5 zQ`cd#Nu}TfF=avNMsA=KSbQ`ObB=)?Yg{n_ZR>HCU=BhWu7>^}BxUK4@c!cr$F(> z-RG#xyUR$q!O}c|qONwILGZ~SK&eT9LZBe=IOEL74!f(dfx91j8^o)px zpX?-8$cAx^5z`ndO;tNw#QYK$gXsTe3^-s-Hghql%gZSFEZK)*S&@&k z$F=Zy@@k93E3tAVYF!E@AVop@qPk(hIGZb&fPx8lxo(&vSlcHGCWzOiM7^!QFN=HB zo6YV9SCkrD*>^?NA)YEKX<2+S9qa;>&z$M9s;>$}aYF9R<+?aZ#4E}OYt*)?C*v9G zrHDGYKn~!$Qsb5urE&3mq_V6iO$(8W+?Z2(4X?c1V$T|x3*(i#$*{ICMQIXA6 z_i=ju9@UHCULO=oi#bg{kT!J$W5D4+?2V>vO<+hjnK9c`+E^tjTXPssE#`FnQqKLa zVa#+U=F3r=x&ps9FzVXH=<-g6hWE?JkYUYJoacXr^ZUC{gSHJ02ECHa4=|JUAXA|aGnJSZ=)<{M{Rnfi z9%|O$?;L%kxj>hii}Yx-L60%p^;mPG9%pXDe!qIqJfx2nsiqsrwupHcY$@sW#KhEJ}IGo-4LD5-MFQi@r*NW z#UvNRPea01pf5H8z{uO_Lo-wqmCHN$S|&=pyD8b#Z2iQ|4rd_qJ_1(NthdR-o znpD9S(lgYw(2dK&kksP#61oTSl%qP;Pxa{Pr+}qYKix|V?vwEJ8(WQ&F(T z(8(x@g3Qj`XzzmAaGlh78K47|Ysmb1RSbBRxwFt?N-t9*9#>+LM$)y3DJ>J_c==aAzj%X4NRj-KFxRnF8Vkbwdb! zEC>sgxG=B6t0e7YI0dc*ye9t=;K<;OFL$6@O~S5zx4Y1-nWzEg)9DI4Rr6id7-bT4 zdrDIQ_!0%|B~>pXkCy=cvXrYkm!Y$Bf@-RltCo5NAPy%21hdkmIy3xeqCZU@x9q8j zS{M9C)FNCv)1pS;BvNvU^7NXdpd$MP^%So%XH2BBcOs}v63{YCK+Dnr=;iAGEzFHeo2ZsgrMY_I(igYPAp>9CG<#KR> zHlbXySskRefU&b3jEt+m47wUss2kKMW{49ROv*4O+%GLlq>7j`e38nQj^fU9m`qYi z4WhNWVr?azQngBhR-~iejGhI#URkVOnG6tcbE@^j+%XO^ z)58qyfOmTsY(9Xf9s&O@k~`zhw4K#JNK%iS-lAsoNuN?r0|^FDM@xMh;8Aw~`0*6D z^#5{+2se*Q6NyM=O!tCIgpnC}qG&E5!csH`Z3lwv7S)bxc0{YNIgJ7Zz?7kF?~&|n zN4K_9wG(5j7{Ldk11<2T6tH&qAy zyeiUfC*|-#iO6N3_VkjATz#Umm#%H!9A;@C5#hm!2uBNY^LDFFwM8B_+z*hkA0~Yu zT2q8k`ba540Ze@D4@Jn5MdAasvx`_N`h|b^!e_MK&y(^ud3GV;CeJR6tb!!MU5Yf4 zs!;^ILoV4Y@{r)2jnn=~w$x->;z4aXLmBxE;2Pf|HNH~?`g_$)|Bw`;qM9@pp+&oY zj97ajj$4VzKF9~nMX9!s?nx zGEjn)dTCwPB=yqUr{%NU6=tTEtE!}USBlDNU4ETs>;zwq{Ol^Eo5-yq1lU15lB-g? zY;)LuMVBDbc89nV3Ez0^Ca;9PnMEEVs?H5~hihinGqD5_^N{T-TU46mJKL&0fE{8s zxnXW?MF|zqbHG$-M2DTL8kjt8e{QUrnx2GHNdn|hnv>qP66;5 zh2&5>HOX{P(@aP32ny8#(+xa=gVc%UkfaK*GLdtmnD)s~Mk)Ynl2EB$uaZ~N+!jiX zM0Tm}I}?CP4uGO(2teU5zeM8n0DwYt&e4_bv>O%gSYJn(f@5ywXlbpBya1jCtlK5@ z03N#eowfsc>se`1yH%gsY;cICj1n`3fCL!BGH*MY($`V1P`Ca6jc-6J zMK1lNtifL!u6h=vfi`*Vxzs!*9+m8a{mtzA|5k{hJW^SXm-k$)tMW)-XH@_EZmv}qfSq$W^QxNd2l zU^e51&oWzlUQahK>SN7IdZu|^t;& zelWS_N7K^$WZIfv%pvAC)7SiN2Ae7~+-d;BtSPe|Kw&B7IGbwb*)+4zW}4+T+pM;A z%&E4nIo;MX7udMD*fwx-Y(yvxsyjV$^kXNwkr1pBFtla9exjR&TFPN9s|KGT$m=0- zKF1UR#;t_a1DVT~>OttV3zV3VZJSWufb!unOji0T#`$+fh9KPfQ3r~_&q)>aenB0~ z$ODZBjsAG*wyJMHvH<2n9%U5fi#Z z0LV1bSqt;y5teP@-lnQg3T@mQl`p^*DGc(@h^JhxDp#je$%0!-WX`onS;0_|S!ehc z>NP8e2irCtwWEQ^;CmU?K@DwpLv!4{YIh)>y|NO*Vp)!!7(;oavM6PH)mDNP9 z=_$2QeK^RLr&4T7&<|RvfU<003qU_;1NuQbkQLgicD94+3}(tf@P1&X3<4`a>g)qo-I)q+9TC1cBHz~ zj#Br4wDFidNbb|K!sdV6m?Lptg2K!Q&W-*$7q4zg;;x$ zO0$=Mdvd92Xg5%jm#b#j3+)!wiDy0RHYXD%gx{`~39Rz`#OjjNzMkr5(k|_!r}~BX zTW6A$F3*`{^(#V3ySbrr3eOK#zv32UU8Y00zQx;YYbVmV93K*zObHkh4v?jj&N99g zxsZ|zs7EzW&({TsIdrUE`A#*kHgSy!T-mEt)Lx@90pvjMm&9EUpbL`%yDMpY+9{Es zY^KcB<5RZTiGYkxhY}S@VuOO%3^z2BNo~C{F%nYG+7G%}kiCa?aW5acU)8q{B#j6g zBtDWnB4m#|OmE7`pZ=(ISkN7 zNp8gIfd^EbMQw5sor!@zs|mo)%j<%g@4}FGBrLzqrY#{vlH}`wxw$njZDWz!O)emA zX2PsP-eBN7XuBOF-^l>UHBk_P5d3ZRw+j>B4h}F|g~(Yhv@dmdT3KA6^q*C1H{yi9BMyO_EvoPl;#Dpwj|h zn8G5#@r;y8v5|n8IT1#I>A7@IjdLP-{Eugpw=WUe3*wb;m2N>sm4%6CECQu2aS2X1 zh*c2c3*+gv&p^8q=dD%Oi!UJZq%BB%&LhxGRV#_9zEQs2TYAPB`S{K&bHjO{Z`ucg zR|JDMI^-#5J$wbQ%<=_~jili46~OKi{doE|W}E_;6xj{9e$8Z5@RFH~dN+lyOdzG~sqcY6 zG?le4%F5$`Lx^q@&x&W40L)i!i<>rM$6MzzuMB55NXXb+^_XO;1T~aR8Ftttw1zn; zGEOMW%(uerX-Yo%}VTI>6~0{w_rsP}m7 z^mAT&{ess)@AbOqcf79pL$90u(mP0h<8?Icz3!%~S7>^BJxzbFpBd~OW`=o3no_US zjQ2*GW4+O4k$03?diA> zcni$e-XilIyvjS?dfqZy$2);x-*Vg7TVY#zD{VL2dwZ+x;ocfM)H~ab@YdRL_$=>y zyTV&%&+sm?=X;mfo!)wTw|9Yk&b!?1^)}fL;a_|G?62%p$Xc)i+#*lI748Q1J>~im zJ&*~6Y}*(!Oy599Lg&b)(`KzPd6e*X45(JqIcD3>wZ)V|X@9^v(Q^8)y|x7dYZ(rF zVB-v|+5FMZsku6WDV;Uw^K}ZQ46}$;>ZrIe{O-Ut4&wGQi1umD?Nc-Y(w*BE>KL7Y zDbv44scBn46_459i)Fby!$GHjlkw@qc_7I}F+<6f^kc49Nw%+K!?_j=2dNUk8r%1Buv;C5BG4k+T? zu2Q`_h{T;L%exyr$a_`XyH7Rn?pKYx2UQdAVb#og)I}y-_-mes3?I}WJ-ER@bC&l% zb0d`ItP+355Fr(;rvMYHx9pEr4<2M0S_ThwLEI;s4iUt^-KvCNZEFvgPravz(!W%; z_cT#@CTZYM_m2YyIR_W!MPx9w1Po7uUg?K-sUy4Bv2rw_UJkqFcc>%B7O?I=qSQf; z;$d^u$82x&ETc1vgQd>E*2qX_;4sK2F#5Ke?Q~`MbrN)SMwNSbiz)?$PhPx5jV#Ja zm_`+4BbGDE8F~PSnH{6gXj%}@6j9AEf%Jwem`27LMVFXiH_1|#6R`12fs?1_t#QcO z-+^Gt*sBk{?N+0~iOnqX_<$8`6E!mJ_EU#?*x6CEkjsmNO_wTdz8Bpn|6d z(*0E%oHeDr8yv7O&=KcREaFk@a&d#lwhlrPtR8Q|?HNg8s9p-(ej_|%vrQTO+wD+wV z>wTxDc;Bm;-VbWA_meu!`$e7S{i?Qk>|jK!dM6T9A4F2sCy_MuMI>E)6UkKHN3zvV zkr*e418pPqG%%XFaioE67HOypB02itNF&`hlB@ei^7NoczCJwCRF^~!&?6!(^r%R- z9usM!Cq@eNJ7f>8h`cbkkQy4%RnBy6c-F zJ@qY-R(f}&x4t{lN8cCeryqphYF`qjt){cdES{va|)e;mowpG6MW-$sV$-y=g! zYGjzH7b!6fBEwCiNU14`j5NiOQD$Ofw3!tdW0pq7nl+K}W^H7GSsyvtY>OOYwnxg$ zKO>XOJ(0=giO3Z5RAj2z8<}R_j!ZY7MrP2derCRn9P32Xkzp?+Z?9G{O{7!0_u_OesJT%Pr+HBYekz>VheiQz5S^*^87D z4;Sjjn9^C7e_S`gl%b}Wb6uy$MVjVR*Xd=kvbS6}#4fbZ*FPjw^>^l>~%m{Fc~Wwzu?tf1G!UYiZtkRsUu+Ccpi8y&TM> zQJX-8?9KWmjaKG56T0SkH5UQVNmjcuL|);nvJT`XMSxBwCT!cPuC1xrob&OC%xq;M zbCegEtI{I#RSe!JvPdtV@7HoVm);T z{Rj~+j+7N;3f5+>405vy^E>Co>bRx3cqR*Tk|nW}%~kK=wf_d!p@<1UsV$^KIw~3K z14c6jdy3elbLj7TJFrK^E_1;Cep(s!RIx{6c;f_{Nb~-3@(V$|H6FzMO3r|#AdOfg ztjCT&3n1}&_yPL6eOXbxc)fVtEg-~31^9b&)w>u{wyA=+ACGP1{u1BYsPZ{e=a)z3 zP+CFFtK~)YklT{BHhJ-s%_^Q3k8V|U3VEZvbDkX~X%5Xv$=z-pyr2R-(7JqKKBW<_K~T*hcPN;&m+IpaQ3H=kw8>W{=@v6M~fa`Ma;#cff2 zThzc7HMB)J@f2A&J&IS`#=UMujpFqRZRdESu4U(wnejp|VUEY^7e*51`tb&ZDG76f zc*DYI!rU;PQ<$1C=g@=EkwmvuU6oVU#_NsFsq4k#&`7*KG$q~u8jUxErp9wdbGtwo zk;3YT)RSzfms2-?LN_W~ydDv%NzJDt9!uQrgOv1F z&iybV!@6}>DX9p4B3+9bkiOMi3D}^he!@Xmy#Ac<#!gJj0NMFyVWt(`ErRM_;x1=q_lHRJnq?%4vAML=^O$L0eHdZO_OIyK)mm` z&j}Fk9`|m(JjdVuySg>r-ge%4CA@WZACVQP$yAtzV`ix;HE zu2Zex9k3r9`KLORBToGyx2hqL+trB3ooYhlZZ$b_Fa6a0YF^|)bwcD}wJP$sS`&Fe zogR5nt&O~-&X4R>|4(h#0$@|s{m;4U-hDh~>RMiTj7~!|j2VwiWx`x{99L|#RNLXxN?g`z@|QmN!oQt3-kQB;!uZ=E|&sjsj9_g&8V?K$V{ zwby=~v(J9~_FTt)ZK30U_L$?Kw%l<@Tj}^zd&+TG+W_|)j?d9bJBrrXS7@Cb)6P1+ z)eXl9y|Lq@9^^Qtw|AV@LmX%HaL3Pjgkzr`>G(~Lb)3@^9KY+S%BJ6-?D|lp^x?pf zs=hu-HPp*hpnet8E$cc^RhU(~fWhq}(zNcFS@sYqLhy5819 z^|HBC4_mzIV;i6_+d#Q&Lsef}wsPC@RkW={^|Ost{cRIfylt{dw9Nr7!nr3@hV3ae z(6&b1U|XjK+cv8kZLg`Jw(a=)9hGIgrz*v} zqnz3TLzRtssIhdd8b^_8JoQ!;6r=8-e(FvdsP3Y{>ORU;(B%HCY9x3^In>{qCl>>bo5dq?%MJyNZ(N2}NE{na*mirQh% zP;c08RBze~)LZrvxNpPxN$Oqu{px-DZ1sVCq59bV82((=k|Bi zm-hYYYx`mReGJ!rR6p9!s-GOBPCM$WpBQOP`@6orkEP|fZhwP zX8Pya{g`bY3EuFd+I`qIEE2P0zt$${QE;`;f5Bu;7hElE6EXKqTumqw?Dc&yM%9ES zYi?^~ttlc&8q6&i3doMH7-;8iaS^)hl1V!dA=@x_e=90KS8afsi_L4=mlvr>6OP$pI-WWJ!? zH2?he%Cq(TTMSzvSVQIi+YpNXXK{dHf1lFt@4*@I@b9~xv39R`+88588;5f>BTrjs6l#wd#oBV?7Hy4DqCIDnYU_=1 zZHF;hd)pYJeQb=?4&vM?<2LO#qe44xOw=95-FiI(+c+4Lv9rd#`enuxu((XsyBPQD zk;ZhrH_oLSGxcG{gL;-RTQ4={g0?0}zs;C$eZKhzoGYq6w)F~K`h4-N3YYZx;$s^w z`TWK3DhjOhoZ7)1)2Z??&`s}e^%sMO3Ty6ERTrz>BRj%kcA+(v6e9h;82_-kr&?p(4nAKo5OX)34_bJBe@$*!gUrSvjSMsy zj3vm8rCLjTMFnFn)Ro3E?J8rr)(O|bjVG*F`a4~_RK*fg+&!=lv4pEXT!^LC#p)K2 zDaoPM$Gdd8VyUzLa}^WxtSPkm92h9go7koL1b{S;0_-Og}IlP%!E^;%}-XLlQH z1BFvS;> zYx|6C+7V;BcGB3P{bcOab>mIFp|MMEWxSobf4`fTHnRS2y)@%o&~Lf9N@KK;WGwMOqTw*#G9dZLyKWE8y| zEekG98vq=k*=jhuUY~wzsC(S)&t8KOemOefroX}2mFm8Lq^n&6tgUL(0E?_HuMc60 zxPt6kgI=Ke6C;Z#(B1xHYHS~UkeY8BIg(mVN_>{u#HBc>eZAuwD0t`hms0qY4?m<% z@w>99N5Fy{>biT<`*i*E#SOr0yLmGuG&(Sf`t8}igJNbKZbPorb1UhlrmLT#A$!-h zqKtWSU!~NHspWKYi-K%r*A9v zbf&8(jT%E;;tID=FME6ox^7#>)6`)i8l`RBty*IiQ?G5*ajRKEJbmFi;FFzjE42z( zzJxB{y|EeTQ@&|Tj`-7$Q@wh7Dkxy*?l(Buz zPTf*K!y6rao^tn`wb8IgV_%`c!-mwOfk74TlJ{U{E+sDLl1-k$o%d37i-v&|wXfMr z^whHL^XQ43112r&aPAjca`bQ#y|QF&JZ;Qe{Tr=sJM~I>_Q>1^Y0BzO;WWJ<;vu># z-07mpCjw8?!z+iLqJ?=;(KMq|?n0V}z{ysW>CbBo3T01h5 z&fGHke)_drN;>_1D)9(y-}L=W^lHWNf6+U=cXg#*=Rcf8A8eR(7ri@n!PRuI=jP+I z@9g5ilpk>T1QqT+H;6K)ADBQn$=k1?arNeQquX~*y@yJttiF-P#IOB^lI?*R6u-^+ z8O2VDxR(0Hb$Wnq)W%Pt8@A^5qV$PTU(f*eP%m8>6uF45IM_afLLb$>r>lkq#i1`M zu`hMom+}+!Sui@3A_tFLK-BcZ_GIkcHIo|5JKm2j$@u;}IU6nhm746?oJcKZEtpL~ zsgv5$58)Y?&`&4gU!5t4;J>o@z)Rb=bI`-aoor zr%#qm*hl+w78cX%ZFk>HTaN5GM7x)qw$skcZ=R#gy{FwyFP@*Vlh$oo@1(UAt5(p{ zJ|JJ&Z(HYf)M!Ec*VJ@y#xT09#i+^DdS77| zvOU_X2dQD^L~0nMhR~%4TYXE{%vwHxx~Fc$Hc5>Z_Mx78CfrNy=IxnAX2$NG)Vb+5 zpHs-*(`mGAW&5$TH81jQdaF}Vb9&<#c9{Ecb;>e&uON}>)9{hI=)j55x6$WIc5S7v zGCv$m$J&0shE5zgei?ngY;zF(n6vmv`lZ99QaX2Z!RvJ2hI934+StP{(}bSeN6_78 z5A31&o2Gt1iz?<0r&+z%ZlrnVR|n9Vwa#Z~)h&UFmUrv)DJ?w}kw=@>1#aPl({ZMnCG6j9 z>%$4fps&ivD#;hZv@{VQrxCK+|AbpEpww3u=QkkL4gXhJOi`-HH^wsPViXtwBkFj$ zkP)MXf&%LDi`-y8swDWSwPjHq+M0Su7C*r%mf$uFz&cxqdV2i;tj;z5E@Mp{UJyUi zCFTp*F#`cFKg>aZDshQkpn)}i2n*Xb1>mnpw4kI7RUhwt9g7Yzvs!KqgtV3jVveI- z8;qvs5KKJKFcZ+a*&67_pL!#F(fSot(V$`j-YN=ION*b!;U;{2Wm+2iE7??)2FyKf z46~rsKVWVd)fHw-IMO>#wu#mR0ZW;mH#w)4DMpndy_vL!E$>1FA>O6+=%0~Z%X5A$ z&yH%(NcT$5HCqv5IwRGjhCd#{D^XlaLv=j#%c@hN3@Ii}()JQOR)@8k*sJv;T767C zYmKRE*2#LeKC9VVhfS;#g0&h9YlRztQREV^h%^Cn$d%aEThiV1Ypk*t<6$kVRBM14 z4K3laVI;0qRU9xM*$zLNnj~`*!C67ztY8O7D_DWFfX5138Ik$qmj9Wuu5CyU&gU{UAiZ6$3&0v6c2Jsb;Z8#Y6at2Ae)8uxLSMZgP z!3=(MXIloByt5sHc*A)mhd{RHj*uM~-0#k-I21C3J41HlFvw0E4jIZ_AUiYY@10=` z?r&!}cZcl4S3`DXFu6OsaRg*{2G6lhU4&Ys*G zGLk_m@4TL)AbYV3vN!jI?89!zD2|47v5d6}Xr07r2k72~6SX0#o?` zf%|!ez%-sIFr6P1cz|aK%;4DqGkK1{gFIJY7S9uy%?}C8;fDq0@_d1Lyg=X~enjA5 zUMMi17YQujM+F|?#R3a?iNGRWD)1;jCa{i_yvJ= zyg}f3eopm+%K{tu6@g8>MPM^;6?mCn6?lbT6WGG93vA_W z0L1pdX}3VhAS z1&;9vfp7Rbfp7VHf#dvxzzIGn@ExBL_?~|h_h}8m5lb~gh3bnr}}d8OUp{~hnLHp zCa5OO@=~9fUu2eA)c@9*;UI4<8EXomX=$iACciAtEH1GSM7L&PaZY}2es)%8s1qfj zrX&b>Vhi&@C!AxBDk&bFp94o(URD`|4~m4)7zCkac5zWozIZCNJQe!Ndiw3^8g_wc zrDk!iS!I-vm70a+rDZ1KQq5eU{pwr=NS-33 zQ2~s$3dIG6ApyslW)_%^vr4McyviaozYKJ#xuGVaU7hsi7$m!J|C*)c*?FR~B&Rd@ zmdnOopt%$!5}d#V1-M|Tugrq0{aH|yRp=`-P&3#yI;)_#NL=8d27mJK z@{(YyMh0K_{HaNSU{mTfepdZJsWXTBq)wxh7n{iC;u6$v6c!|VVR0EMs#RvoN=Rg+7V>Cq$1OsTT!B4$-vB^f0Vlo%p;P_mF@R+b~lkkpcse#@&)S7mEuzUG&h zlIY0Js;K>0%uIP|pgjB4{dwwF#vrYq$7_0%W77t@Qe#ZGQ&N*NJkc@HW@e_#ixV9> zn69K~9D~f58&bfT@5Qy`RMV4~lHh?8{;;)inkU99k1tP>J0U&VlN1+f_DxSSlakZS z1WzJ1PL4Lyl0(h3ehA|a9?j%fGchLB-4A+PeLV@Dv_TRk)Wv$zk`SV4#v(+Qnc_-K z^SIL!T&bp+lAfB9?2R$SY%|*9btkwyi80Y(CTu{srWunFlayw9`+@A=lz^emmEv;4 zg6il(ZF*9)E6tOfWLj}b^P2ADq_k8IjK{Xlrr9?J_Dgqg)s;FZRFp%pH)cRO?!r}=>`HXS#dyuDtR$0H(w`?A^2D8< z8j~mylEm_+_w}ZE($dpn%(&#_Xs@WpHU}AKVR$3Wgk-N5>TqAWHzpJTrMWBvBx{kN zxC6KMP4{~IN$W|%t_i8>DUu2yrr8hMGhhd6)9r$9$#>*-lB699fFxsb>L5`qsbb|6 z;yJKi3@#u~kn&dYxsX1l=|wuaCI4&gM8HVbG^q1OTcT{5NilH=p17DKcZ^tOCX2Fx z9&bztGS>q$<3zD#z(5xQN4bIlxXF|V!VPtGigBow_ogS-bVX-C4`SfI9|gwisVrbP zRKxgfl|DOtT+1T;(~HK641JkM?+ORq!cw5Z+Lm$7vklD+M1J( zHbgmIYOo6J6x8^17S9@royUbi)o8436WVb3qiQ7NRG&i`|2=Un2dZVF%MEj+vF z-Cb~l9MWd4`C&RrjkiQsk|#FCn--QBTU$d*jC$4h5F*v8p9Fj#{*c$|U-(Mu}FHFeaE?DHpT{RY>jbb=&f>1%^Xj4nErk$MeXR514 zqHCKeWqxPbsDgV?D&)AXj;{E{b#?j6d`+4C+r`AHTA>R!Z9@@}Bce_)9p3so!Th^2 zbFpm^Yl4aTpA{ep@xo2fYC>Fh*bQJCxkj4F7Bxq3YHjk1Fl|0J@S_ssI20 literal 0 HcmV?d00001 diff --git a/proposal/myrmidon/src/java/org/apache/antlib/archive/BUnzip2.java b/proposal/myrmidon/src/java/org/apache/antlib/archive/BUnzip2.java index 414f48fe1..7a700780a 100644 --- a/proposal/myrmidon/src/java/org/apache/antlib/archive/BUnzip2.java +++ b/proposal/myrmidon/src/java/org/apache/antlib/archive/BUnzip2.java @@ -9,8 +9,8 @@ package org.apache.antlib.archive; import java.io.IOException; import java.io.InputStream; -import org.apache.aut.bzip2.CBZip2InputStream; import org.apache.myrmidon.api.TaskException; +import org.apache.avalon.excalibur.bzip2.CBZip2InputStream; /** * Expands a file that has been compressed with the BZIP2 algorithm. Normally diff --git a/proposal/myrmidon/src/java/org/apache/antlib/archive/BZip2.java b/proposal/myrmidon/src/java/org/apache/antlib/archive/BZip2.java index 712ce1ef9..729fab09b 100644 --- a/proposal/myrmidon/src/java/org/apache/antlib/archive/BZip2.java +++ b/proposal/myrmidon/src/java/org/apache/antlib/archive/BZip2.java @@ -9,7 +9,7 @@ package org.apache.antlib.archive; import java.io.IOException; import java.io.OutputStream; -import org.apache.aut.bzip2.CBZip2OutputStream; +import org.apache.avalon.excalibur.bzip2.CBZip2OutputStream; import org.apache.myrmidon.api.TaskException; /** diff --git a/proposal/myrmidon/src/java/org/apache/aut/bzip2/BZip2Constants.java b/proposal/myrmidon/src/java/org/apache/aut/bzip2/BZip2Constants.java deleted file mode 100644 index 8dadee3b6..000000000 --- a/proposal/myrmidon/src/java/org/apache/aut/bzip2/BZip2Constants.java +++ /dev/null @@ -1,84 +0,0 @@ -/* - * Copyright (C) The Apache Software Foundation. All rights reserved. - * - * This software is published under the terms of the Apache Software License - * version 1.1, a copy of which has been included with this distribution in - * the LICENSE.txt file. - */ -package org.apache.aut.bzip2; - -/** - * Base class for both the compress and decompress classes. Holds common arrays, - * and static data. - * - * @author Keiron Liddle - */ -interface BZip2Constants -{ - int BASE_BLOCK_SIZE = 100000; - int MAX_ALPHA_SIZE = 258; - int MAX_CODE_LEN = 23; - int RUNA = 0; - int RUNB = 1; - int N_GROUPS = 6; - int G_SIZE = 50; - int N_ITERS = 4; - int MAX_SELECTORS = ( 2 + ( 900000 / G_SIZE ) ); - int NUM_OVERSHOOT_BYTES = 20; - - int[] RAND_NUMS = new int[] - { - 619, 720, 127, 481, 931, 816, 813, 233, 566, 247, - 985, 724, 205, 454, 863, 491, 741, 242, 949, 214, - 733, 859, 335, 708, 621, 574, 73, 654, 730, 472, - 419, 436, 278, 496, 867, 210, 399, 680, 480, 51, - 878, 465, 811, 169, 869, 675, 611, 697, 867, 561, - 862, 687, 507, 283, 482, 129, 807, 591, 733, 623, - 150, 238, 59, 379, 684, 877, 625, 169, 643, 105, - 170, 607, 520, 932, 727, 476, 693, 425, 174, 647, - 73, 122, 335, 530, 442, 853, 695, 249, 445, 515, - 909, 545, 703, 919, 874, 474, 882, 500, 594, 612, - 641, 801, 220, 162, 819, 984, 589, 513, 495, 799, - 161, 604, 958, 533, 221, 400, 386, 867, 600, 782, - 382, 596, 414, 171, 516, 375, 682, 485, 911, 276, - 98, 553, 163, 354, 666, 933, 424, 341, 533, 870, - 227, 730, 475, 186, 263, 647, 537, 686, 600, 224, - 469, 68, 770, 919, 190, 373, 294, 822, 808, 206, - 184, 943, 795, 384, 383, 461, 404, 758, 839, 887, - 715, 67, 618, 276, 204, 918, 873, 777, 604, 560, - 951, 160, 578, 722, 79, 804, 96, 409, 713, 940, - 652, 934, 970, 447, 318, 353, 859, 672, 112, 785, - 645, 863, 803, 350, 139, 93, 354, 99, 820, 908, - 609, 772, 154, 274, 580, 184, 79, 626, 630, 742, - 653, 282, 762, 623, 680, 81, 927, 626, 789, 125, - 411, 521, 938, 300, 821, 78, 343, 175, 128, 250, - 170, 774, 972, 275, 999, 639, 495, 78, 352, 126, - 857, 956, 358, 619, 580, 124, 737, 594, 701, 612, - 669, 112, 134, 694, 363, 992, 809, 743, 168, 974, - 944, 375, 748, 52, 600, 747, 642, 182, 862, 81, - 344, 805, 988, 739, 511, 655, 814, 334, 249, 515, - 897, 955, 664, 981, 649, 113, 974, 459, 893, 228, - 433, 837, 553, 268, 926, 240, 102, 654, 459, 51, - 686, 754, 806, 760, 493, 403, 415, 394, 687, 700, - 946, 670, 656, 610, 738, 392, 760, 799, 887, 653, - 978, 321, 576, 617, 626, 502, 894, 679, 243, 440, - 680, 879, 194, 572, 640, 724, 926, 56, 204, 700, - 707, 151, 457, 449, 797, 195, 791, 558, 945, 679, - 297, 59, 87, 824, 713, 663, 412, 693, 342, 606, - 134, 108, 571, 364, 631, 212, 174, 643, 304, 329, - 343, 97, 430, 751, 497, 314, 983, 374, 822, 928, - 140, 206, 73, 263, 980, 736, 876, 478, 430, 305, - 170, 514, 364, 692, 829, 82, 855, 953, 676, 246, - 369, 970, 294, 750, 807, 827, 150, 790, 288, 923, - 804, 378, 215, 828, 592, 281, 565, 555, 710, 82, - 896, 831, 547, 261, 524, 462, 293, 465, 502, 56, - 661, 821, 976, 991, 658, 869, 905, 758, 745, 193, - 768, 550, 608, 933, 378, 286, 215, 979, 792, 961, - 61, 688, 793, 644, 986, 403, 106, 366, 905, 644, - 372, 567, 466, 434, 645, 210, 389, 550, 919, 135, - 780, 773, 635, 389, 707, 100, 626, 958, 165, 504, - 920, 176, 193, 713, 857, 265, 203, 50, 668, 108, - 645, 990, 626, 197, 510, 357, 358, 850, 858, 364, - 936, 638 - }; -} diff --git a/proposal/myrmidon/src/java/org/apache/aut/bzip2/CBZip2InputStream.java b/proposal/myrmidon/src/java/org/apache/aut/bzip2/CBZip2InputStream.java deleted file mode 100644 index 04db2e8e5..000000000 --- a/proposal/myrmidon/src/java/org/apache/aut/bzip2/CBZip2InputStream.java +++ /dev/null @@ -1,957 +0,0 @@ -/* - * Copyright (C) The Apache Software Foundation. All rights reserved. - * - * This software is published under the terms of the Apache Software License - * version 1.1, a copy of which has been included with this distribution in - * the LICENSE.txt file. - */ -package org.apache.aut.bzip2; - -import java.io.IOException; -import java.io.InputStream; - -/** - * An input stream that decompresses from the BZip2 format (without the file - * header chars) to be read as any other stream. - * - * @author Keiron Liddle - */ -public class CBZip2InputStream - extends InputStream - implements BZip2Constants -{ - private final static int START_BLOCK_STATE = 1; - private final static int RAND_PART_A_STATE = 2; - private final static int RAND_PART_B_STATE = 3; - private final static int RAND_PART_C_STATE = 4; - private final static int NO_RAND_PART_A_STATE = 5; - private final static int NO_RAND_PART_B_STATE = 6; - private final static int NO_RAND_PART_C_STATE = 7; - - private CRC m_crc = new CRC(); - private boolean[] m_inUse = new boolean[ 256 ]; - private char[] m_seqToUnseq = new char[ 256 ]; - private char[] m_unseqToSeq = new char[ 256 ]; - private char[] m_selector = new char[ MAX_SELECTORS ]; - private char[] m_selectorMtf = new char[ MAX_SELECTORS ]; - - /* - * freq table collected to save a pass over the data - * during decompression. - */ - private int[] m_unzftab = new int[ 256 ]; - - private int[][] m_limit = new int[ N_GROUPS ][ MAX_ALPHA_SIZE ]; - private int[][] m_base = new int[ N_GROUPS ][ MAX_ALPHA_SIZE ]; - private int[][] m_perm = new int[ N_GROUPS ][ MAX_ALPHA_SIZE ]; - private int[] m_minLens = new int[ N_GROUPS ]; - - private boolean m_streamEnd; - private int m_currentChar = -1; - - private int m_currentState = START_BLOCK_STATE; - private int m_rNToGo; - private int m_rTPos; - private int m_tPos; - - private int i2; - private int count; - private int chPrev; - private int ch2; - private int j2; - private char z; - - private boolean m_blockRandomised; - - /* - * always: in the range 0 .. 9. - * The current block size is 100000 * this number. - */ - private int m_blockSize100k; - private int m_bsBuff; - private int m_bsLive; - - private InputStream m_input; - - private int m_computedBlockCRC; - private int m_computedCombinedCRC; - - /* - * index of the last char in the block, so - * the block size == last + 1. - */ - private int m_last; - private char[] m_ll8; - private int m_nInUse; - - /* - * index in zptr[] of original string after sorting. - */ - private int m_origPtr; - - private int m_storedBlockCRC; - private int m_storedCombinedCRC; - private int[] m_tt; - - public CBZip2InputStream( final InputStream input ) - { - bsSetStream( input ); - initialize(); - initBlock(); - setupBlock(); - } - - private static void badBlockHeader() - { - cadvise(); - } - - private static void blockOverrun() - { - cadvise(); - } - - private static void cadvise() - { - System.out.println( "CRC Error" ); - //throw new CCoruptionError(); - } - - private static void compressedStreamEOF() - { - cadvise(); - } - - private static void crcError() - { - cadvise(); - } - - public int read() - { - if( m_streamEnd ) - { - return -1; - } - else - { - int retChar = m_currentChar; - switch( m_currentState ) - { - case START_BLOCK_STATE: - break; - case RAND_PART_A_STATE: - break; - case RAND_PART_B_STATE: - setupRandPartB(); - break; - case RAND_PART_C_STATE: - setupRandPartC(); - break; - case NO_RAND_PART_A_STATE: - break; - case NO_RAND_PART_B_STATE: - setupNoRandPartB(); - break; - case NO_RAND_PART_C_STATE: - setupNoRandPartC(); - break; - default: - break; - } - return retChar; - } - } - - private void setDecompressStructureSizes( int newSize100k ) - { - if( !( 0 <= newSize100k && newSize100k <= 9 && 0 <= m_blockSize100k - && m_blockSize100k <= 9 ) ) - { - // throw new IOException("Invalid block size"); - } - - m_blockSize100k = newSize100k; - - if( newSize100k == 0 ) - { - return; - } - - int n = BASE_BLOCK_SIZE * newSize100k; - m_ll8 = new char[ n ]; - m_tt = new int[ n ]; - } - - private void setupBlock() - { - int[] cftab = new int[ 257 ]; - char ch; - - cftab[ 0 ] = 0; - for( int i = 1; i <= 256; i++ ) - { - cftab[ i ] = m_unzftab[ i - 1 ]; - } - for( int i = 1; i <= 256; i++ ) - { - cftab[ i ] += cftab[ i - 1 ]; - } - - for( int i = 0; i <= m_last; i++ ) - { - ch = m_ll8[ i ]; - m_tt[ cftab[ ch ] ] = i; - cftab[ ch ]++; - } - cftab = null; - - m_tPos = m_tt[ m_origPtr ]; - - count = 0; - i2 = 0; - ch2 = 256; - /* - * not a char and not EOF - */ - if( m_blockRandomised ) - { - m_rNToGo = 0; - m_rTPos = 0; - setupRandPartA(); - } - else - { - setupNoRandPartA(); - } - } - - private void setupNoRandPartA() - { - if( i2 <= m_last ) - { - chPrev = ch2; - ch2 = m_ll8[ m_tPos ]; - m_tPos = m_tt[ m_tPos ]; - i2++; - - m_currentChar = ch2; - m_currentState = NO_RAND_PART_B_STATE; - m_crc.updateCRC( ch2 ); - } - else - { - endBlock(); - initBlock(); - setupBlock(); - } - } - - private void setupNoRandPartB() - { - if( ch2 != chPrev ) - { - m_currentState = NO_RAND_PART_A_STATE; - count = 1; - setupNoRandPartA(); - } - else - { - count++; - if( count >= 4 ) - { - z = m_ll8[ m_tPos ]; - m_tPos = m_tt[ m_tPos ]; - m_currentState = NO_RAND_PART_C_STATE; - j2 = 0; - setupNoRandPartC(); - } - else - { - m_currentState = NO_RAND_PART_A_STATE; - setupNoRandPartA(); - } - } - } - - private void setupNoRandPartC() - { - if( j2 < z ) - { - m_currentChar = ch2; - m_crc.updateCRC( ch2 ); - j2++; - } - else - { - m_currentState = NO_RAND_PART_A_STATE; - i2++; - count = 0; - setupNoRandPartA(); - } - } - - private void setupRandPartA() - { - if( i2 <= m_last ) - { - chPrev = ch2; - ch2 = m_ll8[ m_tPos ]; - m_tPos = m_tt[ m_tPos ]; - if( m_rNToGo == 0 ) - { - m_rNToGo = RAND_NUMS[ m_rTPos ]; - m_rTPos++; - if( m_rTPos == 512 ) - { - m_rTPos = 0; - } - } - m_rNToGo--; - ch2 ^= ( ( m_rNToGo == 1 ) ? 1 : 0 ); - i2++; - - m_currentChar = ch2; - m_currentState = RAND_PART_B_STATE; - m_crc.updateCRC( ch2 ); - } - else - { - endBlock(); - initBlock(); - setupBlock(); - } - } - - private void setupRandPartB() - { - if( ch2 != chPrev ) - { - m_currentState = RAND_PART_A_STATE; - count = 1; - setupRandPartA(); - } - else - { - count++; - if( count >= 4 ) - { - z = m_ll8[ m_tPos ]; - m_tPos = m_tt[ m_tPos ]; - if( m_rNToGo == 0 ) - { - m_rNToGo = RAND_NUMS[ m_rTPos ]; - m_rTPos++; - if( m_rTPos == 512 ) - { - m_rTPos = 0; - } - } - m_rNToGo--; - z ^= ( ( m_rNToGo == 1 ) ? 1 : 0 ); - j2 = 0; - m_currentState = RAND_PART_C_STATE; - setupRandPartC(); - } - else - { - m_currentState = RAND_PART_A_STATE; - setupRandPartA(); - } - } - } - - private void setupRandPartC() - { - if( j2 < z ) - { - m_currentChar = ch2; - m_crc.updateCRC( ch2 ); - j2++; - } - else - { - m_currentState = RAND_PART_A_STATE; - i2++; - count = 0; - setupRandPartA(); - } - } - - private void getAndMoveToFrontDecode() - { - int nextSym; - - int limitLast = BASE_BLOCK_SIZE * m_blockSize100k; - m_origPtr = readVariableSizedInt( 24 ); - - recvDecodingTables(); - int EOB = m_nInUse + 1; - int groupNo = -1; - int groupPos = 0; - - /* - * Setting up the unzftab entries here is not strictly - * necessary, but it does save having to do it later - * in a separate pass, and so saves a block's worth of - * cache misses. - */ - for( int i = 0; i <= 255; i++ ) - { - m_unzftab[ i ] = 0; - } - - final char[] yy = new char[ 256 ]; - for( int i = 0; i <= 255; i++ ) - { - yy[ i ] = (char)i; - } - - m_last = -1; - int zt; - int zn; - int zvec; - int zj; - if( groupPos == 0 ) - { - groupNo++; - groupPos = G_SIZE; - } - groupPos--; - - zt = m_selector[ groupNo ]; - zn = m_minLens[ zt ]; - zvec = bsR( zn ); - while( zvec > m_limit[ zt ][ zn ] ) - { - zn++; - - while( m_bsLive < 1 ) - { - int zzi; - char thech = 0; - try - { - thech = (char)m_input.read(); - } - catch( IOException e ) - { - compressedStreamEOF(); - } - if( thech == -1 ) - { - compressedStreamEOF(); - } - zzi = thech; - m_bsBuff = ( m_bsBuff << 8 ) | ( zzi & 0xff ); - m_bsLive += 8; - } - - zj = ( m_bsBuff >> ( m_bsLive - 1 ) ) & 1; - m_bsLive--; - - zvec = ( zvec << 1 ) | zj; - } - nextSym = m_perm[ zt ][ zvec - m_base[ zt ][ zn ] ]; - - while( true ) - { - if( nextSym == EOB ) - { - break; - } - - if( nextSym == RUNA || nextSym == RUNB ) - { - char ch; - int s = -1; - int N = 1; - do - { - if( nextSym == RUNA ) - { - s = s + ( 0 + 1 ) * N; - } - else if( nextSym == RUNB ) - { - s = s + ( 1 + 1 ) * N; - } - N = N * 2; - - if( groupPos == 0 ) - { - groupNo++; - groupPos = G_SIZE; - } - groupPos--; - zt = m_selector[ groupNo ]; - zn = m_minLens[ zt ]; - zvec = bsR( zn ); - while( zvec > m_limit[ zt ][ zn ] ) - { - zn++; - - while( m_bsLive < 1 ) - { - int zzi; - char thech = 0; - try - { - thech = (char)m_input.read(); - } - catch( IOException e ) - { - compressedStreamEOF(); - } - if( thech == -1 ) - { - compressedStreamEOF(); - } - zzi = thech; - m_bsBuff = ( m_bsBuff << 8 ) | ( zzi & 0xff ); - m_bsLive += 8; - } - - zj = ( m_bsBuff >> ( m_bsLive - 1 ) ) & 1; - m_bsLive--; - zvec = ( zvec << 1 ) | zj; - } - - nextSym = m_perm[ zt ][ zvec - m_base[ zt ][ zn ] ]; - - } while( nextSym == RUNA || nextSym == RUNB ); - - s++; - ch = m_seqToUnseq[ yy[ 0 ] ]; - m_unzftab[ ch ] += s; - - while( s > 0 ) - { - m_last++; - m_ll8[ m_last ] = ch; - s--; - } - - if( m_last >= limitLast ) - { - blockOverrun(); - } - continue; - } - else - { - char tmp; - m_last++; - if( m_last >= limitLast ) - { - blockOverrun(); - } - - tmp = yy[ nextSym - 1 ]; - m_unzftab[ m_seqToUnseq[ tmp ] ]++; - m_ll8[ m_last ] = m_seqToUnseq[ tmp ]; - - /* - * This loop is hammered during decompression, - * hence the unrolling. - * for (j = nextSym-1; j > 0; j--) yy[j] = yy[j-1]; - */ - int j = nextSym - 1; - for( ; j > 3; j -= 4 ) - { - yy[ j ] = yy[ j - 1 ]; - yy[ j - 1 ] = yy[ j - 2 ]; - yy[ j - 2 ] = yy[ j - 3 ]; - yy[ j - 3 ] = yy[ j - 4 ]; - } - for( ; j > 0; j-- ) - { - yy[ j ] = yy[ j - 1 ]; - } - - yy[ 0 ] = tmp; - - if( groupPos == 0 ) - { - groupNo++; - groupPos = G_SIZE; - } - groupPos--; - zt = m_selector[ groupNo ]; - zn = m_minLens[ zt ]; - zvec = bsR( zn ); - while( zvec > m_limit[ zt ][ zn ] ) - { - zn++; - - while( m_bsLive < 1 ) - { - char ch = 0; - try - { - ch = (char)m_input.read(); - } - catch( IOException e ) - { - compressedStreamEOF(); - } - - m_bsBuff = ( m_bsBuff << 8 ) | ( ch & 0xff ); - m_bsLive += 8; - } - - zj = ( m_bsBuff >> ( m_bsLive - 1 ) ) & 1; - m_bsLive--; - - zvec = ( zvec << 1 ) | zj; - } - nextSym = m_perm[ zt ][ zvec - m_base[ zt ][ zn ] ]; - - continue; - } - } - } - - private void bsFinishedWithStream() - { - m_input = null; - } - - private int readVariableSizedInt( final int numBits ) - { - return bsR( numBits ); - } - - private char readUnsignedChar() - { - return (char)bsR( 8 ); - } - - private int readInt() - { - int u = 0; - u = ( u << 8 ) | bsR( 8 ); - u = ( u << 8 ) | bsR( 8 ); - u = ( u << 8 ) | bsR( 8 ); - u = ( u << 8 ) | bsR( 8 ); - return u; - } - - private int bsR( final int n ) - { - while( m_bsLive < n ) - { - char ch = 0; - try - { - ch = (char)m_input.read(); - } - catch( final IOException ioe ) - { - compressedStreamEOF(); - } - - if( ch == -1 ) - { - compressedStreamEOF(); - } - - m_bsBuff = ( m_bsBuff << 8 ) | ( ch & 0xff ); - m_bsLive += 8; - } - - final int result = ( m_bsBuff >> ( m_bsLive - n ) ) & ( ( 1 << n ) - 1 ); - m_bsLive -= n; - return result; - } - - private void bsSetStream( final InputStream input ) - { - m_input = input; - m_bsLive = 0; - m_bsBuff = 0; - } - - private void complete() - { - m_storedCombinedCRC = readInt(); - if( m_storedCombinedCRC != m_computedCombinedCRC ) - { - crcError(); - } - - bsFinishedWithStream(); - m_streamEnd = true; - } - - private void endBlock() - { - m_computedBlockCRC = m_crc.getFinalCRC(); - /* - * A bad CRC is considered a fatal error. - */ - if( m_storedBlockCRC != m_computedBlockCRC ) - { - crcError(); - } - - m_computedCombinedCRC = ( m_computedCombinedCRC << 1 ) - | ( m_computedCombinedCRC >>> 31 ); - m_computedCombinedCRC ^= m_computedBlockCRC; - } - - private void hbCreateDecodeTables( final int[] limit, - final int[] base, - final int[] perm, - final char[] length, - final int minLen, - final int maxLen, - final int alphaSize ) - { - int pp = 0; - for( int i = minLen; i <= maxLen; i++ ) - { - for( int j = 0; j < alphaSize; j++ ) - { - if( length[ j ] == i ) - { - perm[ pp ] = j; - pp++; - } - } - } - - for( int i = 0; i < MAX_CODE_LEN; i++ ) - { - base[ i ] = 0; - } - - for( int i = 0; i < alphaSize; i++ ) - { - base[ length[ i ] + 1 ]++; - } - - for( int i = 1; i < MAX_CODE_LEN; i++ ) - { - base[ i ] += base[ i - 1 ]; - } - - for( int i = 0; i < MAX_CODE_LEN; i++ ) - { - limit[ i ] = 0; - } - - int vec = 0; - for( int i = minLen; i <= maxLen; i++ ) - { - vec += ( base[ i + 1 ] - base[ i ] ); - limit[ i ] = vec - 1; - vec <<= 1; - } - - for( int i = minLen + 1; i <= maxLen; i++ ) - { - base[ i ] = ( ( limit[ i - 1 ] + 1 ) << 1 ) - base[ i ]; - } - } - - private void initBlock() - { - final char magic1 = readUnsignedChar(); - final char magic2 = readUnsignedChar(); - final char magic3 = readUnsignedChar(); - final char magic4 = readUnsignedChar(); - final char magic5 = readUnsignedChar(); - final char magic6 = readUnsignedChar(); - if( magic1 == 0x17 && magic2 == 0x72 && magic3 == 0x45 && - magic4 == 0x38 && magic5 == 0x50 && magic6 == 0x90 ) - { - complete(); - return; - } - - if( magic1 != 0x31 || magic2 != 0x41 || magic3 != 0x59 || - magic4 != 0x26 || magic5 != 0x53 || magic6 != 0x59 ) - { - badBlockHeader(); - m_streamEnd = true; - return; - } - - m_storedBlockCRC = readInt(); - - if( bsR( 1 ) == 1 ) - { - m_blockRandomised = true; - } - else - { - m_blockRandomised = false; - } - - // currBlockNo++; - getAndMoveToFrontDecode(); - - m_crc.initialiseCRC(); - m_currentState = START_BLOCK_STATE; - } - - private void initialize() - { - final char magic3 = readUnsignedChar(); - final char magic4 = readUnsignedChar(); - if( magic3 != 'h' || magic4 < '1' || magic4 > '9' ) - { - bsFinishedWithStream(); - m_streamEnd = true; - return; - } - - setDecompressStructureSizes( magic4 - '0' ); - m_computedCombinedCRC = 0; - } - - private void makeMaps() - { - m_nInUse = 0; - for( int i = 0; i < 256; i++ ) - { - if( m_inUse[ i ] ) - { - m_seqToUnseq[ m_nInUse ] = (char)i; - m_unseqToSeq[ i ] = (char)m_nInUse; - m_nInUse++; - } - } - } - - private void recvDecodingTables() - { - buildInUseTable(); - makeMaps(); - final int alphaSize = m_nInUse + 2; - - /* - * Now the selectors - */ - final int groupCount = bsR( 3 ); - final int selectorCount = bsR( 15 ); - for( int i = 0; i < selectorCount; i++ ) - { - int run = 0; - while( bsR( 1 ) == 1 ) - { - run++; - } - m_selectorMtf[ i ] = (char)run; - } - - /* - * Undo the MTF values for the selectors. - */ - final char[] pos = new char[ N_GROUPS ]; - for( char v = 0; v < groupCount; v++ ) - { - pos[ v ] = v; - } - - for( int i = 0; i < selectorCount; i++ ) - { - int v = m_selectorMtf[ i ]; - final char tmp = pos[ v ]; - while( v > 0 ) - { - pos[ v ] = pos[ v - 1 ]; - v--; - } - pos[ 0 ] = tmp; - m_selector[ i ] = tmp; - } - - final char[][] len = new char[ N_GROUPS ][ MAX_ALPHA_SIZE ]; - /* - * Now the coding tables - */ - for( int i = 0; i < groupCount; i++ ) - { - int curr = bsR( 5 ); - for( int j = 0; j < alphaSize; j++ ) - { - while( bsR( 1 ) == 1 ) - { - if( bsR( 1 ) == 0 ) - { - curr++; - } - else - { - curr--; - } - } - len[ i ][ j ] = (char)curr; - } - } - - /* - * Create the Huffman decoding tables - */ - for( int k = 0; k < groupCount; k++ ) - { - int minLen = 32; - int maxLen = 0; - for( int i = 0; i < alphaSize; i++ ) - { - if( len[ k ][ i ] > maxLen ) - { - maxLen = len[ k ][ i ]; - } - if( len[ k ][ i ] < minLen ) - { - minLen = len[ k ][ i ]; - } - } - hbCreateDecodeTables( m_limit[ k ], m_base[ k ], m_perm[ k ], len[ k ], minLen, - maxLen, alphaSize ); - m_minLens[ k ] = minLen; - } - } - - private void buildInUseTable() - { - final boolean[] inUse16 = new boolean[ 16 ]; - - /* - * Receive the mapping table - */ - for( int i = 0; i < 16; i++ ) - { - if( bsR( 1 ) == 1 ) - { - inUse16[ i ] = true; - } - else - { - inUse16[ i ] = false; - } - } - - for( int i = 0; i < 256; i++ ) - { - m_inUse[ i ] = false; - } - - for( int i = 0; i < 16; i++ ) - { - if( inUse16[ i ] ) - { - for( int j = 0; j < 16; j++ ) - { - if( bsR( 1 ) == 1 ) - { - m_inUse[ i * 16 + j ] = true; - } - } - } - } - } -} diff --git a/proposal/myrmidon/src/java/org/apache/aut/bzip2/CBZip2OutputStream.java b/proposal/myrmidon/src/java/org/apache/aut/bzip2/CBZip2OutputStream.java deleted file mode 100644 index e7ed4bb42..000000000 --- a/proposal/myrmidon/src/java/org/apache/aut/bzip2/CBZip2OutputStream.java +++ /dev/null @@ -1,2050 +0,0 @@ -/* - * Copyright (C) The Apache Software Foundation. All rights reserved. - * - * This software is published under the terms of the Apache Software License - * version 1.1, a copy of which has been included with this distribution in - * the LICENSE.txt file. - */ -package org.apache.aut.bzip2; - -import java.io.IOException; -import java.io.OutputStream; - -/** - * An output stream that compresses into the BZip2 format (without the file - * header chars) into another stream. TODO: Update to BZip2 1.0.1 - * - * @author Keiron Liddle - */ -public class CBZip2OutputStream - extends OutputStream - implements BZip2Constants -{ - private final static int LOWER_BYTE_MASK = 0x000000ff; - private final static int UPPER_BYTE_MASK = 0xffffff00; - private final static int SETMASK = ( 1 << 21 ); - private final static int CLEARMASK = ( ~SETMASK ); - private final static int GREATER_ICOST = 15; - private final static int LESSER_ICOST = 0; - private final static int SMALL_THRESH = 20; - private final static int DEPTH_THRESH = 10; - - /* - * If you are ever unlucky/improbable enough - * to get a stack overflow whilst sorting, - * increase the following constant and try - * again. In practice I have never seen the - * stack go above 27 elems, so the following - * limit seems very generous. - */ - private final static int QSORT_STACK_SIZE = 1000; - - private CRC m_crc = new CRC(); - - private boolean[] m_inUse = new boolean[ 256 ]; - - private char[] m_seqToUnseq = new char[ 256 ]; - private char[] m_unseqToSeq = new char[ 256 ]; - - private char[] m_selector = new char[ MAX_SELECTORS ]; - private char[] m_selectorMtf = new char[ MAX_SELECTORS ]; - - private int[] m_mtfFreq = new int[ MAX_ALPHA_SIZE ]; - - private int m_currentChar = -1; - private int m_runLength; - - private boolean m_closed; - - /* - * Knuth's increments seem to work better - * than Incerpi-Sedgewick here. Possibly - * because the number of elems to sort is - * usually small, typically <= 20. - */ - private int[] m_incs = new int[] - { - 1, 4, 13, 40, 121, 364, 1093, 3280, - 9841, 29524, 88573, 265720, - 797161, 2391484 - }; - - private boolean m_blockRandomised; - - /* - * always: in the range 0 .. 9. - * The current block size is 100000 * this number. - */ - private int m_blockSize100k; - private int m_bsBuff; - private int m_bsLive; - - private int m_bytesIn; - private int m_bytesOut; - - /* - * index of the last char in the block, so - * the block size == last + 1. - */ - private int m_last; - - /* - * index in zptr[] of original string after sorting. - */ - private int m_origPtr; - - private int m_allowableBlockSize; - - private char[] m_block; - - private int m_blockCRC; - private int m_combinedCRC; - - private OutputStream m_bsStream; - private boolean m_firstAttempt; - private int[] m_ftab; - private int m_nBlocksRandomised; - private int m_nInUse; - - private int m_nMTF; - private int[] m_quadrant; - private short[] m_szptr; - private int m_workDone; - - /* - * Used when sorting. If too many long comparisons - * happen, we stop sorting, randomise the block - * slightly, and try again. - */ - private int m_workFactor; - private int m_workLimit; - private int[] m_zptr; - - public CBZip2OutputStream( final OutputStream output ) - throws IOException - { - this( output, 9 ); - } - - public CBZip2OutputStream( final OutputStream output, final int blockSize ) - throws IOException - { - bsSetStream( output ); - m_workFactor = 50; - - int outBlockSize = blockSize; - if( outBlockSize > 9 ) - { - outBlockSize = 9; - } - if( outBlockSize < 1 ) - { - outBlockSize = 1; - } - m_blockSize100k = outBlockSize; - allocateCompressStructures(); - initialize(); - initBlock(); - } - - protected static void hbMakeCodeLengths( char[] len, int[] freq, - int alphaSize, int maxLen ) - { - /* - * Nodes and heap entries run from 1. Entry 0 - * for both the heap and nodes is a sentinel. - */ - int nNodes; - /* - * Nodes and heap entries run from 1. Entry 0 - * for both the heap and nodes is a sentinel. - */ - int nHeap; - /* - * Nodes and heap entries run from 1. Entry 0 - * for both the heap and nodes is a sentinel. - */ - int n1; - /* - * Nodes and heap entries run from 1. Entry 0 - * for both the heap and nodes is a sentinel. - */ - int n2; - /* - * Nodes and heap entries run from 1. Entry 0 - * for both the heap and nodes is a sentinel. - */ - int i; - /* - * Nodes and heap entries run from 1. Entry 0 - * for both the heap and nodes is a sentinel. - */ - int j; - /* - * Nodes and heap entries run from 1. Entry 0 - * for both the heap and nodes is a sentinel. - */ - int k; - boolean tooLong; - - int[] heap = new int[ MAX_ALPHA_SIZE + 2 ]; - int[] weights = new int[ MAX_ALPHA_SIZE * 2 ]; - int[] parent = new int[ MAX_ALPHA_SIZE * 2 ]; - - for( i = 0; i < alphaSize; i++ ) - { - weights[ i + 1 ] = ( freq[ i ] == 0 ? 1 : freq[ i ] ) << 8; - } - - while( true ) - { - nNodes = alphaSize; - nHeap = 0; - - heap[ 0 ] = 0; - weights[ 0 ] = 0; - parent[ 0 ] = -2; - - for( i = 1; i <= alphaSize; i++ ) - { - parent[ i ] = -1; - nHeap++; - heap[ nHeap ] = i; - { - int zz; - int tmp; - zz = nHeap; - tmp = heap[ zz ]; - while( weights[ tmp ] < weights[ heap[ zz >> 1 ] ] ) - { - heap[ zz ] = heap[ zz >> 1 ]; - zz >>= 1; - } - heap[ zz ] = tmp; - } - } - if( !( nHeap < ( MAX_ALPHA_SIZE + 2 ) ) ) - { - panic(); - } - - while( nHeap > 1 ) - { - n1 = heap[ 1 ]; - heap[ 1 ] = heap[ nHeap ]; - nHeap--; - { - int zz = 0; - int yy = 0; - int tmp = 0; - zz = 1; - tmp = heap[ zz ]; - while( true ) - { - yy = zz << 1; - if( yy > nHeap ) - { - break; - } - if( yy < nHeap && - weights[ heap[ yy + 1 ] ] < weights[ heap[ yy ] ] ) - { - yy++; - } - if( weights[ tmp ] < weights[ heap[ yy ] ] ) - { - break; - } - heap[ zz ] = heap[ yy ]; - zz = yy; - } - heap[ zz ] = tmp; - } - n2 = heap[ 1 ]; - heap[ 1 ] = heap[ nHeap ]; - nHeap--; - { - int zz = 0; - int yy = 0; - int tmp = 0; - zz = 1; - tmp = heap[ zz ]; - while( true ) - { - yy = zz << 1; - if( yy > nHeap ) - { - break; - } - if( yy < nHeap && - weights[ heap[ yy + 1 ] ] < weights[ heap[ yy ] ] ) - { - yy++; - } - if( weights[ tmp ] < weights[ heap[ yy ] ] ) - { - break; - } - heap[ zz ] = heap[ yy ]; - zz = yy; - } - heap[ zz ] = tmp; - } - nNodes++; - parent[ n1 ] = nNodes; - parent[ n2 ] = nNodes; - - final int v1 = weights[ n1 ]; - final int v2 = weights[ n2 ]; - final int weight = calculateWeight( v1, v2 ); - weights[ nNodes ] = weight; - - parent[ nNodes ] = -1; - nHeap++; - heap[ nHeap ] = nNodes; - { - int zz = 0; - int tmp = 0; - zz = nHeap; - tmp = heap[ zz ]; - while( weights[ tmp ] < weights[ heap[ zz >> 1 ] ] ) - { - heap[ zz ] = heap[ zz >> 1 ]; - zz >>= 1; - } - heap[ zz ] = tmp; - } - } - if( !( nNodes < ( MAX_ALPHA_SIZE * 2 ) ) ) - { - panic(); - } - - tooLong = false; - for( i = 1; i <= alphaSize; i++ ) - { - j = 0; - k = i; - while( parent[ k ] >= 0 ) - { - k = parent[ k ]; - j++; - } - len[ i - 1 ] = (char)j; - if( j > maxLen ) - { - tooLong = true; - } - } - - if( !tooLong ) - { - break; - } - - for( i = 1; i < alphaSize; i++ ) - { - j = weights[ i ] >> 8; - j = 1 + ( j / 2 ); - weights[ i ] = j << 8; - } - } - } - - private static int calculateWeight( final int v1, final int v2 ) - { - final int upper = ( v1 & UPPER_BYTE_MASK ) + ( v2 & UPPER_BYTE_MASK ); - final int v1Lower = ( v1 & LOWER_BYTE_MASK ); - final int v2Lower = ( v2 & LOWER_BYTE_MASK ); - final int nnnn = ( v1Lower > v2Lower ) ? v1Lower : v2Lower; - return upper | ( 1 + nnnn ); - } - - private static void panic() - { - System.out.println( "panic" ); - //throw new CError(); - } - - public void close() - throws IOException - { - if( m_closed ) - { - return; - } - - if( m_runLength > 0 ) - { - writeRun(); - } - m_currentChar = -1; - endBlock(); - endCompression(); - m_closed = true; - super.close(); - m_bsStream.close(); - } - - public void finalize() - throws Throwable - { - close(); - } - - public void flush() - throws IOException - { - super.flush(); - m_bsStream.flush(); - } - - /** - * modified by Oliver Merkel, 010128 - * - * @param bv Description of Parameter - * @exception IOException Description of Exception - */ - public void write( int bv ) - throws IOException - { - int b = ( 256 + bv ) % 256; - if( m_currentChar != -1 ) - { - if( m_currentChar == b ) - { - m_runLength++; - if( m_runLength > 254 ) - { - writeRun(); - m_currentChar = -1; - m_runLength = 0; - } - } - else - { - writeRun(); - m_runLength = 1; - m_currentChar = b; - } - } - else - { - m_currentChar = b; - m_runLength++; - } - } - - private void allocateCompressStructures() - { - int n = BASE_BLOCK_SIZE * m_blockSize100k; - m_block = new char[ ( n + 1 + NUM_OVERSHOOT_BYTES ) ]; - m_quadrant = new int[ ( n + NUM_OVERSHOOT_BYTES ) ]; - m_zptr = new int[ n ]; - m_ftab = new int[ 65537 ]; - - if( m_block == null || m_quadrant == null || m_zptr == null - || m_ftab == null ) - { - //int totalDraw = (n + 1 + NUM_OVERSHOOT_BYTES) + (n + NUM_OVERSHOOT_BYTES) + n + 65537; - //compressOutOfMemory ( totalDraw, n ); - } - - /* - * The back end needs a place to store the MTF values - * whilst it calculates the coding tables. We could - * put them in the zptr array. However, these values - * will fit in a short, so we overlay szptr at the - * start of zptr, in the hope of reducing the number - * of cache misses induced by the multiple traversals - * of the MTF values when calculating coding tables. - * Seems to improve compression speed by about 1%. - */ - // szptr = zptr; - - m_szptr = new short[ 2 * n ]; - } - - private void bsFinishedWithStream() - throws IOException - { - while( m_bsLive > 0 ) - { - int ch = ( m_bsBuff >> 24 ); - try - { - m_bsStream.write( ch );// write 8-bit - } - catch( IOException e ) - { - throw e; - } - m_bsBuff <<= 8; - m_bsLive -= 8; - m_bytesOut++; - } - } - - private void bsPutIntVS( int numBits, int c ) - throws IOException - { - bsW( numBits, c ); - } - - private void bsPutUChar( int c ) - throws IOException - { - bsW( 8, c ); - } - - private void bsPutint( int u ) - throws IOException - { - bsW( 8, ( u >> 24 ) & 0xff ); - bsW( 8, ( u >> 16 ) & 0xff ); - bsW( 8, ( u >> 8 ) & 0xff ); - bsW( 8, u & 0xff ); - } - - private void bsSetStream( OutputStream f ) - { - m_bsStream = f; - m_bsLive = 0; - m_bsBuff = 0; - m_bytesOut = 0; - m_bytesIn = 0; - } - - private void bsW( int n, int v ) - throws IOException - { - while( m_bsLive >= 8 ) - { - int ch = ( m_bsBuff >> 24 ); - try - { - m_bsStream.write( ch );// write 8-bit - } - catch( IOException e ) - { - throw e; - } - m_bsBuff <<= 8; - m_bsLive -= 8; - m_bytesOut++; - } - m_bsBuff |= ( v << ( 32 - m_bsLive - n ) ); - m_bsLive += n; - } - - private void doReversibleTransformation() - { - int i; - - m_workLimit = m_workFactor * m_last; - m_workDone = 0; - m_blockRandomised = false; - m_firstAttempt = true; - - mainSort(); - - if( m_workDone > m_workLimit && m_firstAttempt ) - { - randomiseBlock(); - m_workLimit = 0; - m_workDone = 0; - m_blockRandomised = true; - m_firstAttempt = false; - mainSort(); - } - - m_origPtr = -1; - for( i = 0; i <= m_last; i++ ) - { - if( m_zptr[ i ] == 0 ) - { - m_origPtr = i; - break; - } - } - ; - - if( m_origPtr == -1 ) - { - panic(); - } - } - - private void endBlock() - throws IOException - { - m_blockCRC = m_crc.getFinalCRC(); - m_combinedCRC = ( m_combinedCRC << 1 ) | ( m_combinedCRC >>> 31 ); - m_combinedCRC ^= m_blockCRC; - - /* - * sort the block and establish posn of original string - */ - doReversibleTransformation(); - - /* - * A 6-byte block header, the value chosen arbitrarily - * as 0x314159265359 :-). A 32 bit value does not really - * give a strong enough guarantee that the value will not - * appear by chance in the compressed datastream. Worst-case - * probability of this event, for a 900k block, is about - * 2.0e-3 for 32 bits, 1.0e-5 for 40 bits and 4.0e-8 for 48 bits. - * For a compressed file of size 100Gb -- about 100000 blocks -- - * only a 48-bit marker will do. NB: normal compression/ - * decompression do *not* rely on these statistical properties. - * They are only important when trying to recover blocks from - * damaged files. - */ - bsPutUChar( 0x31 ); - bsPutUChar( 0x41 ); - bsPutUChar( 0x59 ); - bsPutUChar( 0x26 ); - bsPutUChar( 0x53 ); - bsPutUChar( 0x59 ); - - /* - * Now the block's CRC, so it is in a known place. - */ - bsPutint( m_blockCRC ); - - /* - * Now a single bit indicating randomisation. - */ - if( m_blockRandomised ) - { - bsW( 1, 1 ); - m_nBlocksRandomised++; - } - else - { - bsW( 1, 0 ); - } - - /* - * Finally, block's contents proper. - */ - moveToFrontCodeAndSend(); - } - - private void endCompression() - throws IOException - { - /* - * Now another magic 48-bit number, 0x177245385090, to - * indicate the end of the last block. (sqrt(pi), if - * you want to know. I did want to use e, but it contains - * too much repetition -- 27 18 28 18 28 46 -- for me - * to feel statistically comfortable. Call me paranoid.) - */ - bsPutUChar( 0x17 ); - bsPutUChar( 0x72 ); - bsPutUChar( 0x45 ); - bsPutUChar( 0x38 ); - bsPutUChar( 0x50 ); - bsPutUChar( 0x90 ); - - bsPutint( m_combinedCRC ); - - bsFinishedWithStream(); - } - - private boolean fullGtU( int i1, int i2 ) - { - int k; - char c1; - char c2; - int s1; - int s2; - - c1 = m_block[ i1 + 1 ]; - c2 = m_block[ i2 + 1 ]; - if( c1 != c2 ) - { - return ( c1 > c2 ); - } - i1++; - i2++; - - c1 = m_block[ i1 + 1 ]; - c2 = m_block[ i2 + 1 ]; - if( c1 != c2 ) - { - return ( c1 > c2 ); - } - i1++; - i2++; - - c1 = m_block[ i1 + 1 ]; - c2 = m_block[ i2 + 1 ]; - if( c1 != c2 ) - { - return ( c1 > c2 ); - } - i1++; - i2++; - - c1 = m_block[ i1 + 1 ]; - c2 = m_block[ i2 + 1 ]; - if( c1 != c2 ) - { - return ( c1 > c2 ); - } - i1++; - i2++; - - c1 = m_block[ i1 + 1 ]; - c2 = m_block[ i2 + 1 ]; - if( c1 != c2 ) - { - return ( c1 > c2 ); - } - i1++; - i2++; - - c1 = m_block[ i1 + 1 ]; - c2 = m_block[ i2 + 1 ]; - if( c1 != c2 ) - { - return ( c1 > c2 ); - } - i1++; - i2++; - - k = m_last + 1; - - do - { - c1 = m_block[ i1 + 1 ]; - c2 = m_block[ i2 + 1 ]; - if( c1 != c2 ) - { - return ( c1 > c2 ); - } - s1 = m_quadrant[ i1 ]; - s2 = m_quadrant[ i2 ]; - if( s1 != s2 ) - { - return ( s1 > s2 ); - } - i1++; - i2++; - - c1 = m_block[ i1 + 1 ]; - c2 = m_block[ i2 + 1 ]; - if( c1 != c2 ) - { - return ( c1 > c2 ); - } - s1 = m_quadrant[ i1 ]; - s2 = m_quadrant[ i2 ]; - if( s1 != s2 ) - { - return ( s1 > s2 ); - } - i1++; - i2++; - - c1 = m_block[ i1 + 1 ]; - c2 = m_block[ i2 + 1 ]; - if( c1 != c2 ) - { - return ( c1 > c2 ); - } - s1 = m_quadrant[ i1 ]; - s2 = m_quadrant[ i2 ]; - if( s1 != s2 ) - { - return ( s1 > s2 ); - } - i1++; - i2++; - - c1 = m_block[ i1 + 1 ]; - c2 = m_block[ i2 + 1 ]; - if( c1 != c2 ) - { - return ( c1 > c2 ); - } - s1 = m_quadrant[ i1 ]; - s2 = m_quadrant[ i2 ]; - if( s1 != s2 ) - { - return ( s1 > s2 ); - } - i1++; - i2++; - - if( i1 > m_last ) - { - i1 -= m_last; - i1--; - } - ; - if( i2 > m_last ) - { - i2 -= m_last; - i2--; - } - ; - - k -= 4; - m_workDone++; - } while( k >= 0 ); - - return false; - } - - private void generateMTFValues() - { - char[] yy = new char[ 256 ]; - int i; - int j; - char tmp; - char tmp2; - int zPend; - int wr; - int EOB; - - makeMaps(); - EOB = m_nInUse + 1; - - for( i = 0; i <= EOB; i++ ) - { - m_mtfFreq[ i ] = 0; - } - - wr = 0; - zPend = 0; - for( i = 0; i < m_nInUse; i++ ) - { - yy[ i ] = (char)i; - } - - for( i = 0; i <= m_last; i++ ) - { - char ll_i; - - ll_i = m_unseqToSeq[ m_block[ m_zptr[ i ] ] ]; - - j = 0; - tmp = yy[ j ]; - while( ll_i != tmp ) - { - j++; - tmp2 = tmp; - tmp = yy[ j ]; - yy[ j ] = tmp2; - } - ; - yy[ 0 ] = tmp; - - if( j == 0 ) - { - zPend++; - } - else - { - if( zPend > 0 ) - { - zPend--; - while( true ) - { - switch( zPend % 2 ) - { - case 0: - m_szptr[ wr ] = (short)RUNA; - wr++; - m_mtfFreq[ RUNA ]++; - break; - case 1: - m_szptr[ wr ] = (short)RUNB; - wr++; - m_mtfFreq[ RUNB ]++; - break; - } - ; - if( zPend < 2 ) - { - break; - } - zPend = ( zPend - 2 ) / 2; - } - ; - zPend = 0; - } - m_szptr[ wr ] = (short)( j + 1 ); - wr++; - m_mtfFreq[ j + 1 ]++; - } - } - - if( zPend > 0 ) - { - zPend--; - while( true ) - { - switch( zPend % 2 ) - { - case 0: - m_szptr[ wr ] = (short)RUNA; - wr++; - m_mtfFreq[ RUNA ]++; - break; - case 1: - m_szptr[ wr ] = (short)RUNB; - wr++; - m_mtfFreq[ RUNB ]++; - break; - } - if( zPend < 2 ) - { - break; - } - zPend = ( zPend - 2 ) / 2; - } - } - - m_szptr[ wr ] = (short)EOB; - wr++; - m_mtfFreq[ EOB ]++; - - m_nMTF = wr; - } - - private void hbAssignCodes( int[] code, char[] length, int minLen, - int maxLen, int alphaSize ) - { - int n; - int vec; - int i; - - vec = 0; - for( n = minLen; n <= maxLen; n++ ) - { - for( i = 0; i < alphaSize; i++ ) - { - if( length[ i ] == n ) - { - code[ i ] = vec; - vec++; - } - } - ; - vec <<= 1; - } - } - - private void initBlock() - { - // blockNo++; - m_crc.initialiseCRC(); - m_last = -1; - // ch = 0; - - for( int i = 0; i < 256; i++ ) - { - m_inUse[ i ] = false; - } - - /* - * 20 is just a paranoia constant - */ - m_allowableBlockSize = BASE_BLOCK_SIZE * m_blockSize100k - 20; - } - - private void initialize() - throws IOException - { - m_bytesIn = 0; - m_bytesOut = 0; - m_nBlocksRandomised = 0; - - /* - * Write `magic' bytes h indicating file-format == huffmanised, - * followed by a digit indicating blockSize100k. - */ - bsPutUChar( 'h' ); - bsPutUChar( '0' + m_blockSize100k ); - - m_combinedCRC = 0; - } - - private void mainSort() - { - int i; - int j; - int ss; - int sb; - int[] runningOrder = new int[ 256 ]; - int[] copy = new int[ 256 ]; - boolean[] bigDone = new boolean[ 256 ]; - int c1; - int c2; - int numQSorted; - - /* - * In the various block-sized structures, live data runs - * from 0 to last+NUM_OVERSHOOT_BYTES inclusive. First, - * set up the overshoot area for block. - */ - // if (verbosity >= 4) fprintf ( stderr, " sort initialise ...\n" ); - for( i = 0; i < NUM_OVERSHOOT_BYTES; i++ ) - { - m_block[ m_last + i + 2 ] = m_block[ ( i % ( m_last + 1 ) ) + 1 ]; - } - for( i = 0; i <= m_last + NUM_OVERSHOOT_BYTES; i++ ) - { - m_quadrant[ i ] = 0; - } - - m_block[ 0 ] = m_block[ m_last + 1 ]; - - if( m_last < 4000 ) - { - /* - * Use simpleSort(), since the full sorting mechanism - * has quite a large constant overhead. - */ - for( i = 0; i <= m_last; i++ ) - { - m_zptr[ i ] = i; - } - m_firstAttempt = false; - m_workDone = 0; - m_workLimit = 0; - simpleSort( 0, m_last, 0 ); - } - else - { - numQSorted = 0; - for( i = 0; i <= 255; i++ ) - { - bigDone[ i ] = false; - } - - for( i = 0; i <= 65536; i++ ) - { - m_ftab[ i ] = 0; - } - - c1 = m_block[ 0 ]; - for( i = 0; i <= m_last; i++ ) - { - c2 = m_block[ i + 1 ]; - m_ftab[ ( c1 << 8 ) + c2 ]++; - c1 = c2; - } - - for( i = 1; i <= 65536; i++ ) - { - m_ftab[ i ] += m_ftab[ i - 1 ]; - } - - c1 = m_block[ 1 ]; - for( i = 0; i < m_last; i++ ) - { - c2 = m_block[ i + 2 ]; - j = ( c1 << 8 ) + c2; - c1 = c2; - m_ftab[ j ]--; - m_zptr[ m_ftab[ j ] ] = i; - } - - j = ( ( m_block[ m_last + 1 ] ) << 8 ) + ( m_block[ 1 ] ); - m_ftab[ j ]--; - m_zptr[ m_ftab[ j ] ] = m_last; - - /* - * Now ftab contains the first loc of every small bucket. - * Calculate the running order, from smallest to largest - * big bucket. - */ - for( i = 0; i <= 255; i++ ) - { - runningOrder[ i ] = i; - } - { - int vv; - int h = 1; - do - { - h = 3 * h + 1; - } while( h <= 256 ); - do - { - h = h / 3; - for( i = h; i <= 255; i++ ) - { - vv = runningOrder[ i ]; - j = i; - while( ( m_ftab[ ( ( runningOrder[ j - h ] ) + 1 ) << 8 ] - - m_ftab[ ( runningOrder[ j - h ] ) << 8 ] ) > - ( m_ftab[ ( ( vv ) + 1 ) << 8 ] - m_ftab[ ( vv ) << 8 ] ) ) - { - runningOrder[ j ] = runningOrder[ j - h ]; - j = j - h; - if( j <= ( h - 1 ) ) - { - break; - } - } - runningOrder[ j ] = vv; - } - } while( h != 1 ); - } - - /* - * The main sorting loop. - */ - for( i = 0; i <= 255; i++ ) - { - - /* - * Process big buckets, starting with the least full. - */ - ss = runningOrder[ i ]; - - /* - * Complete the big bucket [ss] by quicksorting - * any unsorted small buckets [ss, j]. Hopefully - * previous pointer-scanning phases have already - * completed many of the small buckets [ss, j], so - * we don't have to sort them at all. - */ - for( j = 0; j <= 255; j++ ) - { - sb = ( ss << 8 ) + j; - if( !( ( m_ftab[ sb ] & SETMASK ) == SETMASK ) ) - { - int lo = m_ftab[ sb ] & CLEARMASK; - int hi = ( m_ftab[ sb + 1 ] & CLEARMASK ) - 1; - if( hi > lo ) - { - qSort3( lo, hi, 2 ); - numQSorted += ( hi - lo + 1 ); - if( m_workDone > m_workLimit && m_firstAttempt ) - { - return; - } - } - m_ftab[ sb ] |= SETMASK; - } - } - - /* - * The ss big bucket is now done. Record this fact, - * and update the quadrant descriptors. Remember to - * update quadrants in the overshoot area too, if - * necessary. The "if (i < 255)" test merely skips - * this updating for the last bucket processed, since - * updating for the last bucket is pointless. - */ - bigDone[ ss ] = true; - - if( i < 255 ) - { - int bbStart = m_ftab[ ss << 8 ] & CLEARMASK; - int bbSize = ( m_ftab[ ( ss + 1 ) << 8 ] & CLEARMASK ) - bbStart; - int shifts = 0; - - while( ( bbSize >> shifts ) > 65534 ) - { - shifts++; - } - - for( j = 0; j < bbSize; j++ ) - { - int a2update = m_zptr[ bbStart + j ]; - int qVal = ( j >> shifts ); - m_quadrant[ a2update ] = qVal; - if( a2update < NUM_OVERSHOOT_BYTES ) - { - m_quadrant[ a2update + m_last + 1 ] = qVal; - } - } - - if( !( ( ( bbSize - 1 ) >> shifts ) <= 65535 ) ) - { - panic(); - } - } - - /* - * Now scan this big bucket so as to synthesise the - * sorted order for small buckets [t, ss] for all t != ss. - */ - for( j = 0; j <= 255; j++ ) - { - copy[ j ] = m_ftab[ ( j << 8 ) + ss ] & CLEARMASK; - } - - for( j = m_ftab[ ss << 8 ] & CLEARMASK; - j < ( m_ftab[ ( ss + 1 ) << 8 ] & CLEARMASK ); j++ ) - { - c1 = m_block[ m_zptr[ j ] ]; - if( !bigDone[ c1 ] ) - { - m_zptr[ copy[ c1 ] ] = m_zptr[ j ] == 0 ? m_last : m_zptr[ j ] - 1; - copy[ c1 ]++; - } - } - - for( j = 0; j <= 255; j++ ) - { - m_ftab[ ( j << 8 ) + ss ] |= SETMASK; - } - } - } - } - - private void makeMaps() - { - int i; - m_nInUse = 0; - for( i = 0; i < 256; i++ ) - { - if( m_inUse[ i ] ) - { - m_seqToUnseq[ m_nInUse ] = (char)i; - m_unseqToSeq[ i ] = (char)m_nInUse; - m_nInUse++; - } - } - } - - private char med3( char a, char b, char c ) - { - char t; - if( a > b ) - { - t = a; - a = b; - b = t; - } - if( b > c ) - { - t = b; - b = c; - c = t; - } - if( a > b ) - { - b = a; - } - return b; - } - - private void moveToFrontCodeAndSend() - throws IOException - { - bsPutIntVS( 24, m_origPtr ); - generateMTFValues(); - sendMTFValues(); - } - - private void qSort3( int loSt, int hiSt, int dSt ) - { - int unLo; - int unHi; - int ltLo; - int gtHi; - int med; - int n; - int m; - int sp; - int lo; - int hi; - int d; - StackElem[] stack = new StackElem[ QSORT_STACK_SIZE ]; - for( int count = 0; count < QSORT_STACK_SIZE; count++ ) - { - stack[ count ] = new StackElem(); - } - - sp = 0; - - stack[ sp ].ll = loSt; - stack[ sp ].hh = hiSt; - stack[ sp ].dd = dSt; - sp++; - - while( sp > 0 ) - { - if( sp >= QSORT_STACK_SIZE ) - { - panic(); - } - - sp--; - lo = stack[ sp ].ll; - hi = stack[ sp ].hh; - d = stack[ sp ].dd; - - if( hi - lo < SMALL_THRESH || d > DEPTH_THRESH ) - { - simpleSort( lo, hi, d ); - if( m_workDone > m_workLimit && m_firstAttempt ) - { - return; - } - continue; - } - - med = med3( m_block[ m_zptr[ lo ] + d + 1 ], - m_block[ m_zptr[ hi ] + d + 1 ], - m_block[ m_zptr[ ( lo + hi ) >> 1 ] + d + 1 ] ); - - unLo = lo; - ltLo = lo; - unHi = hi; - gtHi = hi; - - while( true ) - { - while( true ) - { - if( unLo > unHi ) - { - break; - } - n = m_block[ m_zptr[ unLo ] + d + 1 ] - med; - if( n == 0 ) - { - int temp = 0; - temp = m_zptr[ unLo ]; - m_zptr[ unLo ] = m_zptr[ ltLo ]; - m_zptr[ ltLo ] = temp; - ltLo++; - unLo++; - continue; - } - ; - if( n > 0 ) - { - break; - } - unLo++; - } - while( true ) - { - if( unLo > unHi ) - { - break; - } - n = m_block[ m_zptr[ unHi ] + d + 1 ] - med; - if( n == 0 ) - { - int temp = 0; - temp = m_zptr[ unHi ]; - m_zptr[ unHi ] = m_zptr[ gtHi ]; - m_zptr[ gtHi ] = temp; - gtHi--; - unHi--; - continue; - } - ; - if( n < 0 ) - { - break; - } - unHi--; - } - if( unLo > unHi ) - { - break; - } - int temp = 0; - temp = m_zptr[ unLo ]; - m_zptr[ unLo ] = m_zptr[ unHi ]; - m_zptr[ unHi ] = temp; - unLo++; - unHi--; - } - - if( gtHi < ltLo ) - { - stack[ sp ].ll = lo; - stack[ sp ].hh = hi; - stack[ sp ].dd = d + 1; - sp++; - continue; - } - - n = ( ( ltLo - lo ) < ( unLo - ltLo ) ) ? ( ltLo - lo ) : ( unLo - ltLo ); - vswap( lo, unLo - n, n ); - m = ( ( hi - gtHi ) < ( gtHi - unHi ) ) ? ( hi - gtHi ) : ( gtHi - unHi ); - vswap( unLo, hi - m + 1, m ); - - n = lo + unLo - ltLo - 1; - m = hi - ( gtHi - unHi ) + 1; - - stack[ sp ].ll = lo; - stack[ sp ].hh = n; - stack[ sp ].dd = d; - sp++; - - stack[ sp ].ll = n + 1; - stack[ sp ].hh = m - 1; - stack[ sp ].dd = d + 1; - sp++; - - stack[ sp ].ll = m; - stack[ sp ].hh = hi; - stack[ sp ].dd = d; - sp++; - } - } - - private void randomiseBlock() - { - int i; - int rNToGo = 0; - int rTPos = 0; - for( i = 0; i < 256; i++ ) - { - m_inUse[ i ] = false; - } - - for( i = 0; i <= m_last; i++ ) - { - if( rNToGo == 0 ) - { - rNToGo = (char)RAND_NUMS[ rTPos ]; - rTPos++; - if( rTPos == 512 ) - { - rTPos = 0; - } - } - rNToGo--; - m_block[ i + 1 ] ^= ( ( rNToGo == 1 ) ? 1 : 0 ); - // handle 16 bit signed numbers - m_block[ i + 1 ] &= 0xFF; - - m_inUse[ m_block[ i + 1 ] ] = true; - } - } - - private void sendMTFValues() - throws IOException - { - char[][] len = new char[ N_GROUPS ][ MAX_ALPHA_SIZE ]; - - int v; - - int t; - - int i; - - int j; - - int gs; - - int ge; - - int totc; - - int bt; - - int bc; - - int iter; - int nSelectors = 0; - int alphaSize; - int minLen; - int maxLen; - int selCtr; - int nGroups; - int nBytes; - - alphaSize = m_nInUse + 2; - for( t = 0; t < N_GROUPS; t++ ) - { - for( v = 0; v < alphaSize; v++ ) - { - len[ t ][ v ] = (char)GREATER_ICOST; - } - } - - /* - * Decide how many coding tables to use - */ - if( m_nMTF <= 0 ) - { - panic(); - } - - if( m_nMTF < 200 ) - { - nGroups = 2; - } - else if( m_nMTF < 600 ) - { - nGroups = 3; - } - else if( m_nMTF < 1200 ) - { - nGroups = 4; - } - else if( m_nMTF < 2400 ) - { - nGroups = 5; - } - else - { - nGroups = 6; - } - { - /* - * Generate an initial set of coding tables - */ - int nPart; - int remF; - int tFreq; - int aFreq; - - nPart = nGroups; - remF = m_nMTF; - gs = 0; - while( nPart > 0 ) - { - tFreq = remF / nPart; - ge = gs - 1; - aFreq = 0; - while( aFreq < tFreq && ge < alphaSize - 1 ) - { - ge++; - aFreq += m_mtfFreq[ ge ]; - } - - if( ge > gs && nPart != nGroups && nPart != 1 - && ( ( nGroups - nPart ) % 2 == 1 ) ) - { - aFreq -= m_mtfFreq[ ge ]; - ge--; - } - - for( v = 0; v < alphaSize; v++ ) - { - if( v >= gs && v <= ge ) - { - len[ nPart - 1 ][ v ] = (char)LESSER_ICOST; - } - else - { - len[ nPart - 1 ][ v ] = (char)GREATER_ICOST; - } - } - - nPart--; - gs = ge + 1; - remF -= aFreq; - } - } - - int[][] rfreq = new int[ N_GROUPS ][ MAX_ALPHA_SIZE ]; - int[] fave = new int[ N_GROUPS ]; - short[] cost = new short[ N_GROUPS ]; - /* - * Iterate up to N_ITERS times to improve the tables. - */ - for( iter = 0; iter < N_ITERS; iter++ ) - { - for( t = 0; t < nGroups; t++ ) - { - fave[ t ] = 0; - } - - for( t = 0; t < nGroups; t++ ) - { - for( v = 0; v < alphaSize; v++ ) - { - rfreq[ t ][ v ] = 0; - } - } - - nSelectors = 0; - totc = 0; - gs = 0; - while( true ) - { - - /* - * Set group start & end marks. - */ - if( gs >= m_nMTF ) - { - break; - } - ge = gs + G_SIZE - 1; - if( ge >= m_nMTF ) - { - ge = m_nMTF - 1; - } - - /* - * Calculate the cost of this group as coded - * by each of the coding tables. - */ - for( t = 0; t < nGroups; t++ ) - { - cost[ t ] = 0; - } - - if( nGroups == 6 ) - { - short cost0 = 0; - short cost1 = 0; - short cost2 = 0; - short cost3 = 0; - short cost4 = 0; - short cost5 = 0; - - for( i = gs; i <= ge; i++ ) - { - short icv = m_szptr[ i ]; - cost0 += len[ 0 ][ icv ]; - cost1 += len[ 1 ][ icv ]; - cost2 += len[ 2 ][ icv ]; - cost3 += len[ 3 ][ icv ]; - cost4 += len[ 4 ][ icv ]; - cost5 += len[ 5 ][ icv ]; - } - cost[ 0 ] = cost0; - cost[ 1 ] = cost1; - cost[ 2 ] = cost2; - cost[ 3 ] = cost3; - cost[ 4 ] = cost4; - cost[ 5 ] = cost5; - } - else - { - for( i = gs; i <= ge; i++ ) - { - short icv = m_szptr[ i ]; - for( t = 0; t < nGroups; t++ ) - { - cost[ t ] += len[ t ][ icv ]; - } - } - } - - /* - * Find the coding table which is best for this group, - * and record its identity in the selector table. - */ - bc = 999999999; - bt = -1; - for( t = 0; t < nGroups; t++ ) - { - if( cost[ t ] < bc ) - { - bc = cost[ t ]; - bt = t; - } - } - ; - totc += bc; - fave[ bt ]++; - m_selector[ nSelectors ] = (char)bt; - nSelectors++; - - /* - * Increment the symbol frequencies for the selected table. - */ - for( i = gs; i <= ge; i++ ) - { - rfreq[ bt ][ m_szptr[ i ] ]++; - } - - gs = ge + 1; - } - - /* - * Recompute the tables based on the accumulated frequencies. - */ - for( t = 0; t < nGroups; t++ ) - { - hbMakeCodeLengths( len[ t ], rfreq[ t ], alphaSize, 20 ); - } - } - - rfreq = null; - fave = null; - cost = null; - - if( !( nGroups < 8 ) ) - { - panic(); - } - if( !( nSelectors < 32768 && nSelectors <= ( 2 + ( 900000 / G_SIZE ) ) ) ) - { - panic(); - } - { - /* - * Compute MTF values for the selectors. - */ - char[] pos = new char[ N_GROUPS ]; - char ll_i; - char tmp2; - char tmp; - for( i = 0; i < nGroups; i++ ) - { - pos[ i ] = (char)i; - } - for( i = 0; i < nSelectors; i++ ) - { - ll_i = m_selector[ i ]; - j = 0; - tmp = pos[ j ]; - while( ll_i != tmp ) - { - j++; - tmp2 = tmp; - tmp = pos[ j ]; - pos[ j ] = tmp2; - } - pos[ 0 ] = tmp; - m_selectorMtf[ i ] = (char)j; - } - } - - int[][] code = new int[ N_GROUPS ][ MAX_ALPHA_SIZE ]; - - /* - * Assign actual codes for the tables. - */ - for( t = 0; t < nGroups; t++ ) - { - minLen = 32; - maxLen = 0; - for( i = 0; i < alphaSize; i++ ) - { - if( len[ t ][ i ] > maxLen ) - { - maxLen = len[ t ][ i ]; - } - if( len[ t ][ i ] < minLen ) - { - minLen = len[ t ][ i ]; - } - } - if( maxLen > 20 ) - { - panic(); - } - if( minLen < 1 ) - { - panic(); - } - hbAssignCodes( code[ t ], len[ t ], minLen, maxLen, alphaSize ); - } - { - /* - * Transmit the mapping table. - */ - boolean[] inUse16 = new boolean[ 16 ]; - for( i = 0; i < 16; i++ ) - { - inUse16[ i ] = false; - for( j = 0; j < 16; j++ ) - { - if( m_inUse[ i * 16 + j ] ) - { - inUse16[ i ] = true; - } - } - } - - nBytes = m_bytesOut; - for( i = 0; i < 16; i++ ) - { - if( inUse16[ i ] ) - { - bsW( 1, 1 ); - } - else - { - bsW( 1, 0 ); - } - } - - for( i = 0; i < 16; i++ ) - { - if( inUse16[ i ] ) - { - for( j = 0; j < 16; j++ ) - { - if( m_inUse[ i * 16 + j ] ) - { - bsW( 1, 1 ); - } - else - { - bsW( 1, 0 ); - } - } - } - } - - } - - /* - * Now the selectors. - */ - nBytes = m_bytesOut; - bsW( 3, nGroups ); - bsW( 15, nSelectors ); - for( i = 0; i < nSelectors; i++ ) - { - for( j = 0; j < m_selectorMtf[ i ]; j++ ) - { - bsW( 1, 1 ); - } - bsW( 1, 0 ); - } - - /* - * Now the coding tables. - */ - nBytes = m_bytesOut; - - for( t = 0; t < nGroups; t++ ) - { - int curr = len[ t ][ 0 ]; - bsW( 5, curr ); - for( i = 0; i < alphaSize; i++ ) - { - while( curr < len[ t ][ i ] ) - { - bsW( 2, 2 ); - curr++; - /* - * 10 - */ - } - while( curr > len[ t ][ i ] ) - { - bsW( 2, 3 ); - curr--; - /* - * 11 - */ - } - bsW( 1, 0 ); - } - } - - /* - * And finally, the block data proper - */ - nBytes = m_bytesOut; - selCtr = 0; - gs = 0; - while( true ) - { - if( gs >= m_nMTF ) - { - break; - } - ge = gs + G_SIZE - 1; - if( ge >= m_nMTF ) - { - ge = m_nMTF - 1; - } - for( i = gs; i <= ge; i++ ) - { - bsW( len[ m_selector[ selCtr ] ][ m_szptr[ i ] ], - code[ m_selector[ selCtr ] ][ m_szptr[ i ] ] ); - } - - gs = ge + 1; - selCtr++; - } - if( !( selCtr == nSelectors ) ) - { - panic(); - } - } - - private void simpleSort( int lo, int hi, int d ) - { - int i; - int j; - int h; - int bigN; - int hp; - int v; - - bigN = hi - lo + 1; - if( bigN < 2 ) - { - return; - } - - hp = 0; - while( m_incs[ hp ] < bigN ) - { - hp++; - } - hp--; - - for( ; hp >= 0; hp-- ) - { - h = m_incs[ hp ]; - - i = lo + h; - while( true ) - { - /* - * copy 1 - */ - if( i > hi ) - { - break; - } - v = m_zptr[ i ]; - j = i; - while( fullGtU( m_zptr[ j - h ] + d, v + d ) ) - { - m_zptr[ j ] = m_zptr[ j - h ]; - j = j - h; - if( j <= ( lo + h - 1 ) ) - { - break; - } - } - m_zptr[ j ] = v; - i++; - - /* - * copy 2 - */ - if( i > hi ) - { - break; - } - v = m_zptr[ i ]; - j = i; - while( fullGtU( m_zptr[ j - h ] + d, v + d ) ) - { - m_zptr[ j ] = m_zptr[ j - h ]; - j = j - h; - if( j <= ( lo + h - 1 ) ) - { - break; - } - } - m_zptr[ j ] = v; - i++; - - /* - * copy 3 - */ - if( i > hi ) - { - break; - } - v = m_zptr[ i ]; - j = i; - while( fullGtU( m_zptr[ j - h ] + d, v + d ) ) - { - m_zptr[ j ] = m_zptr[ j - h ]; - j = j - h; - if( j <= ( lo + h - 1 ) ) - { - break; - } - } - m_zptr[ j ] = v; - i++; - - if( m_workDone > m_workLimit && m_firstAttempt ) - { - return; - } - } - } - } - - private void vswap( int p1, int p2, int n ) - { - int temp = 0; - while( n > 0 ) - { - temp = m_zptr[ p1 ]; - m_zptr[ p1 ] = m_zptr[ p2 ]; - m_zptr[ p2 ] = temp; - p1++; - p2++; - n--; - } - } - - private void writeRun() - throws IOException - { - if( m_last < m_allowableBlockSize ) - { - m_inUse[ m_currentChar ] = true; - for( int i = 0; i < m_runLength; i++ ) - { - m_crc.updateCRC( (char)m_currentChar ); - } - switch( m_runLength ) - { - case 1: - m_last++; - m_block[ m_last + 1 ] = (char)m_currentChar; - break; - case 2: - m_last++; - m_block[ m_last + 1 ] = (char)m_currentChar; - m_last++; - m_block[ m_last + 1 ] = (char)m_currentChar; - break; - case 3: - m_last++; - m_block[ m_last + 1 ] = (char)m_currentChar; - m_last++; - m_block[ m_last + 1 ] = (char)m_currentChar; - m_last++; - m_block[ m_last + 1 ] = (char)m_currentChar; - break; - default: - m_inUse[ m_runLength - 4 ] = true; - m_last++; - m_block[ m_last + 1 ] = (char)m_currentChar; - m_last++; - m_block[ m_last + 1 ] = (char)m_currentChar; - m_last++; - m_block[ m_last + 1 ] = (char)m_currentChar; - m_last++; - m_block[ m_last + 1 ] = (char)m_currentChar; - m_last++; - m_block[ m_last + 1 ] = (char)( m_runLength - 4 ); - break; - } - } - else - { - endBlock(); - initBlock(); - writeRun(); - } - } - - private class StackElem - { - int dd; - int hh; - int ll; - } -} - diff --git a/proposal/myrmidon/src/java/org/apache/aut/bzip2/CRC.java b/proposal/myrmidon/src/java/org/apache/aut/bzip2/CRC.java deleted file mode 100644 index 9eb51f130..000000000 --- a/proposal/myrmidon/src/java/org/apache/aut/bzip2/CRC.java +++ /dev/null @@ -1,123 +0,0 @@ -/* - * Copyright (C) The Apache Software Foundation. All rights reserved. - * - * This software is published under the terms of the Apache Software License - * version 1.1, a copy of which has been included with this distribution in - * the LICENSE.txt file. - */ -package org.apache.aut.bzip2; - -/** - * A simple class the hold and calculate the CRC for sanity checking of the - * data. - * - * @author Keiron Liddle - */ -class CRC -{ - private static int[] CRC32_TABLE = new int[] - { - 0x00000000, 0x04c11db7, 0x09823b6e, 0x0d4326d9, - 0x130476dc, 0x17c56b6b, 0x1a864db2, 0x1e475005, - 0x2608edb8, 0x22c9f00f, 0x2f8ad6d6, 0x2b4bcb61, - 0x350c9b64, 0x31cd86d3, 0x3c8ea00a, 0x384fbdbd, - 0x4c11db70, 0x48d0c6c7, 0x4593e01e, 0x4152fda9, - 0x5f15adac, 0x5bd4b01b, 0x569796c2, 0x52568b75, - 0x6a1936c8, 0x6ed82b7f, 0x639b0da6, 0x675a1011, - 0x791d4014, 0x7ddc5da3, 0x709f7b7a, 0x745e66cd, - 0x9823b6e0, 0x9ce2ab57, 0x91a18d8e, 0x95609039, - 0x8b27c03c, 0x8fe6dd8b, 0x82a5fb52, 0x8664e6e5, - 0xbe2b5b58, 0xbaea46ef, 0xb7a96036, 0xb3687d81, - 0xad2f2d84, 0xa9ee3033, 0xa4ad16ea, 0xa06c0b5d, - 0xd4326d90, 0xd0f37027, 0xddb056fe, 0xd9714b49, - 0xc7361b4c, 0xc3f706fb, 0xceb42022, 0xca753d95, - 0xf23a8028, 0xf6fb9d9f, 0xfbb8bb46, 0xff79a6f1, - 0xe13ef6f4, 0xe5ffeb43, 0xe8bccd9a, 0xec7dd02d, - 0x34867077, 0x30476dc0, 0x3d044b19, 0x39c556ae, - 0x278206ab, 0x23431b1c, 0x2e003dc5, 0x2ac12072, - 0x128e9dcf, 0x164f8078, 0x1b0ca6a1, 0x1fcdbb16, - 0x018aeb13, 0x054bf6a4, 0x0808d07d, 0x0cc9cdca, - 0x7897ab07, 0x7c56b6b0, 0x71159069, 0x75d48dde, - 0x6b93dddb, 0x6f52c06c, 0x6211e6b5, 0x66d0fb02, - 0x5e9f46bf, 0x5a5e5b08, 0x571d7dd1, 0x53dc6066, - 0x4d9b3063, 0x495a2dd4, 0x44190b0d, 0x40d816ba, - 0xaca5c697, 0xa864db20, 0xa527fdf9, 0xa1e6e04e, - 0xbfa1b04b, 0xbb60adfc, 0xb6238b25, 0xb2e29692, - 0x8aad2b2f, 0x8e6c3698, 0x832f1041, 0x87ee0df6, - 0x99a95df3, 0x9d684044, 0x902b669d, 0x94ea7b2a, - 0xe0b41de7, 0xe4750050, 0xe9362689, 0xedf73b3e, - 0xf3b06b3b, 0xf771768c, 0xfa325055, 0xfef34de2, - 0xc6bcf05f, 0xc27dede8, 0xcf3ecb31, 0xcbffd686, - 0xd5b88683, 0xd1799b34, 0xdc3abded, 0xd8fba05a, - 0x690ce0ee, 0x6dcdfd59, 0x608edb80, 0x644fc637, - 0x7a089632, 0x7ec98b85, 0x738aad5c, 0x774bb0eb, - 0x4f040d56, 0x4bc510e1, 0x46863638, 0x42472b8f, - 0x5c007b8a, 0x58c1663d, 0x558240e4, 0x51435d53, - 0x251d3b9e, 0x21dc2629, 0x2c9f00f0, 0x285e1d47, - 0x36194d42, 0x32d850f5, 0x3f9b762c, 0x3b5a6b9b, - 0x0315d626, 0x07d4cb91, 0x0a97ed48, 0x0e56f0ff, - 0x1011a0fa, 0x14d0bd4d, 0x19939b94, 0x1d528623, - 0xf12f560e, 0xf5ee4bb9, 0xf8ad6d60, 0xfc6c70d7, - 0xe22b20d2, 0xe6ea3d65, 0xeba91bbc, 0xef68060b, - 0xd727bbb6, 0xd3e6a601, 0xdea580d8, 0xda649d6f, - 0xc423cd6a, 0xc0e2d0dd, 0xcda1f604, 0xc960ebb3, - 0xbd3e8d7e, 0xb9ff90c9, 0xb4bcb610, 0xb07daba7, - 0xae3afba2, 0xaafbe615, 0xa7b8c0cc, 0xa379dd7b, - 0x9b3660c6, 0x9ff77d71, 0x92b45ba8, 0x9675461f, - 0x8832161a, 0x8cf30bad, 0x81b02d74, 0x857130c3, - 0x5d8a9099, 0x594b8d2e, 0x5408abf7, 0x50c9b640, - 0x4e8ee645, 0x4a4ffbf2, 0x470cdd2b, 0x43cdc09c, - 0x7b827d21, 0x7f436096, 0x7200464f, 0x76c15bf8, - 0x68860bfd, 0x6c47164a, 0x61043093, 0x65c52d24, - 0x119b4be9, 0x155a565e, 0x18197087, 0x1cd86d30, - 0x029f3d35, 0x065e2082, 0x0b1d065b, 0x0fdc1bec, - 0x3793a651, 0x3352bbe6, 0x3e119d3f, 0x3ad08088, - 0x2497d08d, 0x2056cd3a, 0x2d15ebe3, 0x29d4f654, - 0xc5a92679, 0xc1683bce, 0xcc2b1d17, 0xc8ea00a0, - 0xd6ad50a5, 0xd26c4d12, 0xdf2f6bcb, 0xdbee767c, - 0xe3a1cbc1, 0xe760d676, 0xea23f0af, 0xeee2ed18, - 0xf0a5bd1d, 0xf464a0aa, 0xf9278673, 0xfde69bc4, - 0x89b8fd09, 0x8d79e0be, 0x803ac667, 0x84fbdbd0, - 0x9abc8bd5, 0x9e7d9662, 0x933eb0bb, 0x97ffad0c, - 0xafb010b1, 0xab710d06, 0xa6322bdf, 0xa2f33668, - 0xbcb4666d, 0xb8757bda, 0xb5365d03, 0xb1f740b4 - }; - - private int m_globalCrc; - - protected CRC() - { - initialiseCRC(); - } - - void setGlobalCRC( final int newCrc ) - { - m_globalCrc = newCrc; - } - - int getFinalCRC() - { - return ~m_globalCrc; - } - - int getGlobalCRC() - { - return m_globalCrc; - } - - void initialiseCRC() - { - m_globalCrc = 0xffffffff; - } - - void updateCRC( final int inCh ) - { - int temp = ( m_globalCrc >> 24 ) ^ inCh; - if( temp < 0 ) - { - temp = 256 + temp; - } - m_globalCrc = ( m_globalCrc << 8 ) ^ CRC32_TABLE[ temp ]; - } -} - diff --git a/proposal/myrmidon/src/test/org/apache/aut/bzip2/asf-logo-huge.tar b/proposal/myrmidon/src/test/org/apache/aut/bzip2/asf-logo-huge.tar deleted file mode 100644 index 3f92609782473ce883258bc08c0578d146350e41..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 3215360 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 z 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 diff --git a/proposal/myrmidon/src/test/org/apache/aut/bzip2/asf-logo-huge.tar.bz2 b/proposal/myrmidon/src/test/org/apache/aut/bzip2/asf-logo-huge.tar.bz2 deleted file mode 100644 index 7c2d2154a82fcf2c4fd4bef32fe7fcf0051a66f7..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 58089 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 Donald - * @version $Revision$ $Date$ - */ -public class BzipTestCase - extends TestCase -{ - private final static byte[] HEADER = new byte[]{(byte)'B', (byte)'Z'}; - - public BzipTestCase( final String name ) - { - super( name ); - } - - public void testBzipOutputStream() - throws Exception - { - final InputStream input = getInputStream( "asf-logo-huge.tar" ); - final File outputFile = getOutputFile( ".tar.bz2" ); - final OutputStream output = new FileOutputStream( outputFile ); - final CBZip2OutputStream packedOutput = getPackedOutput( output ); - IOUtil.copy( input, packedOutput ); - IOUtil.shutdownStream( input ); - IOUtil.shutdownStream( packedOutput ); - IOUtil.shutdownStream( output ); - compareContents( "asf-logo-huge.tar.bz2", outputFile ); - FileUtil.forceDelete( outputFile ); - } - - public void testBzipInputStream() - throws Exception - { - final InputStream input = getInputStream( "asf-logo-huge.tar.bz2" ); - final File outputFile = getOutputFile( ".tar" ); - final OutputStream output = new FileOutputStream( outputFile ); - final CBZip2InputStream packedInput = getPackedInput( input ); - IOUtil.copy( packedInput, output ); - IOUtil.shutdownStream( input ); - IOUtil.shutdownStream( packedInput ); - IOUtil.shutdownStream( output ); - compareContents( "asf-logo-huge.tar", outputFile ); - FileUtil.forceDelete( outputFile ); - } - - private void compareContents( final String initial, final File generated ) - throws Exception - { - final InputStream input1 = getInputStream( initial ); - final InputStream input2 = new FileInputStream( generated ); - final boolean test = IOUtil.contentEquals( input1, input2 ); - IOUtil.shutdownStream( input1 ); - IOUtil.shutdownStream( input2 ); - assertTrue( "Contents of " + initial + " matches generated version " + generated, test ); - } - - private CBZip2InputStream getPackedInput( final InputStream input ) - throws IOException - { - final int b1 = input.read(); - final int b2 = input.read(); - assertEquals( "Equal header byte1", b1, 'B' ); - assertEquals( "Equal header byte2", b2, 'Z' ); - return new CBZip2InputStream( input ); - } - - private CBZip2OutputStream getPackedOutput( final OutputStream output ) - throws IOException - { - output.write( HEADER ); - return new CBZip2OutputStream( output ); - } - - private File getOutputFile( final String postfix ) - throws IOException - { - final File cwd = new File( "." ); - return File.createTempFile( "ant-test", postfix, cwd ); - } - - private InputStream getInputStream( final String resource ) - throws Exception - { - final String filename = "src" + File.separator + "test" + File.separator + - getClass().getName().replace( '.', File.separatorChar ); - final String path = FileUtil.getPath( filename ); - final File input = new File( path, resource ); - return new FileInputStream( input ); - //final ClassLoader loader = getClass().getClassLoader(); - //return loader.getResourceAsStream( resource ); - } -} diff --git a/proposal/myrmidon/src/test/org/apache/aut/bzip2/test/asf-logo-huge.tar b/proposal/myrmidon/src/test/org/apache/aut/bzip2/test/asf-logo-huge.tar deleted file mode 100644 index 3f92609782473ce883258bc08c0578d146350e41..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 3215360 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 z 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 diff --git a/proposal/myrmidon/src/test/org/apache/aut/bzip2/test/asf-logo-huge.tar.bz2 b/proposal/myrmidon/src/test/org/apache/aut/bzip2/test/asf-logo-huge.tar.bz2 deleted file mode 100644 index 7c2d2154a82fcf2c4fd4bef32fe7fcf0051a66f7..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 58089 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