From 17228f8539e58141616a26ef0dabd71fe5edf27f Mon Sep 17 00:00:00 2001 From: Christos Choutouridis Date: Sun, 22 Feb 2026 01:39:12 +0200 Subject: [PATCH] Level 3: small fixes and report --- report/.gitignore | 6 + report/figures/bitrate_per_frame.png | Bin 0 -> 149924 bytes report/figures/compression_per_frame.png | Bin 0 -> 174323 bytes report/report.pdf | Bin 0 -> 446606 bytes report/report.tex | 585 +++++++++++++++++++ source/core/aac_coder.py | 23 +- source/core/aac_decoder.py | 6 +- source/core/aac_psycho.py | 16 +- source/core/aac_quantizer.py | 12 +- source/core/aac_tns.py | 12 +- source/core/aac_utils.py | 36 ++ source/core/tests/test_aac_coder_decoder.py | 136 ++++- source/level_1/core/aac_coder.py | 23 +- source/level_1/core/aac_decoder.py | 6 +- source/level_1/core/aac_huffman.py | 112 ++++ source/level_1/core/aac_psycho.py | 441 ++++++++++++++ source/level_1/core/aac_quantizer.py | 600 ++++++++++++++++++++ source/level_1/core/aac_tns.py | 514 +++++++++++++++++ source/level_1/core/aac_utils.py | 36 ++ source/level_1/material/huff_utils.py | 403 +++++++++++++ source/level_2/core/aac_coder.py | 23 +- source/level_2/core/aac_decoder.py | 6 +- source/level_2/core/aac_huffman.py | 112 ++++ source/level_2/core/aac_psycho.py | 441 ++++++++++++++ source/level_2/core/aac_quantizer.py | 600 ++++++++++++++++++++ source/level_2/core/aac_tns.py | 12 +- source/level_2/core/aac_utils.py | 36 ++ source/level_2/material/huff_utils.py | 403 +++++++++++++ source/level_3/core/aac_coder.py | 23 +- source/level_3/core/aac_decoder.py | 6 +- source/level_3/core/aac_psycho.py | 16 +- source/level_3/core/aac_quantizer.py | 12 +- source/level_3/core/aac_tns.py | 12 +- source/level_3/core/aac_utils.py | 36 ++ source/level_3/level_3.py | 106 +++- source/requirements.txt | 3 +- 36 files changed, 4660 insertions(+), 154 deletions(-) create mode 100644 report/.gitignore create mode 100644 report/figures/bitrate_per_frame.png create mode 100644 report/figures/compression_per_frame.png create mode 100644 report/report.pdf create mode 100644 report/report.tex create mode 100644 source/level_1/core/aac_huffman.py create mode 100644 source/level_1/core/aac_psycho.py create mode 100644 source/level_1/core/aac_quantizer.py create mode 100644 source/level_1/core/aac_tns.py create mode 100644 source/level_1/material/huff_utils.py create mode 100644 source/level_2/core/aac_huffman.py create mode 100644 source/level_2/core/aac_psycho.py create mode 100644 source/level_2/core/aac_quantizer.py create mode 100644 source/level_2/material/huff_utils.py diff --git a/report/.gitignore b/report/.gitignore new file mode 100644 index 0000000..bd9a553 --- /dev/null +++ b/report/.gitignore @@ -0,0 +1,6 @@ +# Report related files +*.aux +*.out +*.log +*.synctex.gz +_minted-report/* diff --git a/report/figures/bitrate_per_frame.png b/report/figures/bitrate_per_frame.png new file mode 100644 index 0000000000000000000000000000000000000000..e946c1ff7d515a68d52d8055e42e1f598b8d4c65 GIT binary patch literal 149924 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¥Vrg}n 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 literal 0 HcmV?d00001 diff --git a/report/figures/compression_per_frame.png b/report/figures/compression_per_frame.png new file mode 100644 index 0000000000000000000000000000000000000000..d346ae28f66a5c5ff35a5bc33dd796f77a07bfa1 GIT binary patch literal 174323 zcmeEucR1GV|F;%0LP${;r9xH+WmCv3$zDZP_TE$|LefxHA|rddY$0Uty+iii`+1-4 z`~H3J=XieqJ@r^?IEj-}~~C#01m?I5;@OQg`n>z`?=8 z$H6(~g^vqA$w}4cfj{_c#Z_$;EevcO9$V|<$UU~TG_|lbHP)rG*SEGYwlL>nhS3@UC^o;J22*o0K)}`r!tEv^$U9;56UFk2y2e=LO#r=Jb zo~HOfcT4Ka<42Dk-F_VB-MqU;Q^hx}h^GZf%>6b^w|L~*Zjh4w z>!t9}=j1xU|Nf)l>mqmW{Od&_ewOa?rGLF%Um_ws{jZCViId^t`}+Lr6^(z)>t9#6 zb4S7Jh}gfba4DLx9OvS{FQGv3_}SZkUBQR(_5a+)f7auFR^vZw;q!kL8;sHZ7x>Tc zgrzJEb!X^#7E9l$&D-N?zCmmlVW&JgK}tj8cY)vjxJ%Bj=+IDV*+`)aU0MzoaEYnC z*5~@@+1MJ*G%VWU z@x;JDcVV#jS51wmlhduICMH4e-o3~*>$}9tO3d)Z@sjh}H07+)l}ndipN(|iW>QYo z>~VCd{lIi{=_k2op2U-mjUkUf4U1yRt*xyxZAyaMQc_Zm+f(rzcGC}WM69eh_V+hR zM=MB#iIzhlpS*?t%EZuwiyNntuaz} z;r4%oo+djnBz&-SPhfAgO*$~A$Mmkeyu?gr3JrrQ(FHz=i3kUb{H<{c;WQ?1zt+|V z0?WVX1F#y|M$ZkuI9>HIxue|hnd2C5zvb<870>ei0Nz0#6>X;z{0{TSaa?zos`KV@ z`>yN$^r1^TM@FXLsOPHyWgvP;>EXj++JjBJ0*8e+Vde!VZ6+F(2u>Xp5fwf1rztWp zK`}lWev~)zk|y0^NJu!11K!(mgP4+%@}}$N^<0agH|!;wM@fWtufHTZ_d@ZWAZ3<8 z1Ht;WQ2RDH-u#bJPbBg;w4JA}jQ#n;GgvYntkIlf(nXg_re?Ld_;`0M&7-4uA#e0e zg%m@Cm!kZw*rg%(8^thpj3pU4xhHH)^ipn|vE$~*E7%0s%An_e)h`@BD)y>pM~*E* zHI2&4>rU!QOiiuwKgV_5a##d@Cip!eVW~y^G?{p6Lm02#@>osY@7K)t6%@#3JEG`n z8X78R(n<#%`GtfqBtn~yNV|NJopF)l=*aZ`gsxn>&v zw89uqTw<|Tr!F){-NrKtefjR)>Di%DS{h#SpP}3)_qDX<){C~cor{*LXz~vBcS01z z?kL2%Y|P)4ky%kqHKvx9kqP?rX(FS^c5A+H!E$T-livRB*4?{z7dH|g_&DuvO(>|T z^*HVn%%tAlm>>8jS{LkhvfJbq?3pa(5ZcgvC7yQKe1V z^%^p{h~u!?D9rgXeECtjzs5eW(ImCzY($C7u$KC0V9p`eo(%tu*ZD+e%Mmf?-wi7jI`Chv& zlp9aYR&;K64s&&5|#|ybhP>ENM(m)ZLauCFb3!dmh#r>(fbTxW;C% z?d7zGeU{>5Yg?Pu#(;wh3+?qsILc|-a~-l{5RFt}JZ8F0(7aE?hg%brZ2h4L9RK+7 z<7Yt^d(uvy7iH$y(FWcjTaEQkrMp+|n%o||#>%>;8XO*e-itfxZkucAb&q}5*?~e{ z_%{f)!9ySr{oS_D3>y^}S7oNAu1@W~HBJ?|N+^5x?vHHaw#BW9$gEdq$bz18=v56v zMy#psx7`yy@z{*<>=`yqAHC`~+=Fj?eam8`-oMC`7z_9_p^Brb{lQgt>{rla%QwkU zGr6|K(t|zrzv8>3+Y`Zp=*AZ(2p1uDoLM{|cp#fqB1=?OIPV%fR8o38P+)h{dJKPg zWko?z(G&9LD}2mZK3m2DyO}=~+?0JKZv46C1FzwyQMtKiAh{|b+tn>*ClMpoG+v6D>eW`oSKHGeN8p7rjE(s=il{z%;@y`0(ui9EMcXuHI zLc*Z%aDQ}5p`>A`~+#56o~%*=$aK#&+v zr7C{ zK}bk=1Sf*et~~v5g=H;MJY%W6n%X%Y)9z;jg%00hVvg6;)J*p0b2Z)^B`S>&F33&k z@7ILo`v#E%TO?Wi<^qTAPkh^{)=I+#ZsXR=yA#3(#zlKQhLIy7hF>0&hWhyYVhMnt zWvqoFtbJ^FeF5@-c>O8&_V!F#&PnpCM!vqjn3wtRf4wB8$%YKmo@q~bZ>w=vN~$F_?>B)NBv;(QDXPMORJlkYEq;jW z?9ZRiPVI2-&8L>`JI_I_ZA(l_`Z#0)3D7G}r4>_IUCms44ary8C*M zVWHr`Y*th5Y6t}tmB~GUB`^E(lMHve*qNB5_!o*+vU{=&HJl^w32prx<=$8r8ge{< zdXQ7PH)o*^fW&*IIZlpdZqQ|+gMfg5CB>6>)txZXb=h~SD@4#Gw|WLZScr1~#QNOc z#!y#k!SuC?Az~cXix)*{xD5Q)*Sd5}PQALl<>tITn~*(MyU#tK!%b=4m&X3^;X@;U zRpv8m&^!88XP`^!6tH6W?PUu$23>NXG~f#dzPZ5v)M3ExQ!uo|_oXQ%CE7c~o+Q~& zWL0GD-hJy%<+iilfpJ?^NJ&p`Uft<;91So}>wxIQ?ohF)ehq*~@Cyj&aI;`8?TK4m zKW4B$Wj3+T*T@$kZ#G{0u@@j*a)f=avAU*a_{cVt8@Zjnq5ZfEH!Xj(PUzV-S_5#I zd&589{NTX@ubF13K66l4KbACgrf8sbmT9^OyPT4uncvzv)S{`R^l`nGInC&sWZ)Td zjZ_a$Jd#dr*Clb83C)H*Xj+)Gg``rL*%(9r8nYC}Ar?a$3|7uQ++6Ro@GO4X`==o+ zhm2n0Gv=YmP)YGRV1Q6};TDlzCxPZz1MSpG-HWHXf==L1G(}oWe{N6J;-3SE zwK%=74GWR&zPBB+kAcdU!#m{K*6!ka)N6cvyce1p(GXYoQLn-ChJe$qM(jRWWoKiP zclqthAS=h%d}HfY9iSlQ2%Og4p|P6xIWS^iyBzo;dSNfk&c@j6W%Zc$A{eCTaodL0 zb@6#8fQ+`t$MNzJ*%l>RRY@DEsj2JuFNC%yziAg=1xS5Emjq4Ludl8AY4D6QHm~Dz znD>`q%fEcrr2SD#wD`@LhP zwy7uIhGBo;Hg)~0Q+AVbe>@ioRjV7%`vg+HI9D_Wg+;BFbpF8)Z7GsFO{5k z#XQHKROjVU+b%#q&P%LgI~n8xm-7a>5=Bq1-oD>bV4^ z_0^YP^>qPOGcqwLxXV9&e6cE!Hjq^#*Ku$EdEACWTucn3u*ceTM|$5}@Q|>e;Dv7z z0p;(m$gq@3q;>TF^Hy7BihGChT;ZGME!Q$DsH-RLhQlu6D#pv36{Q$co9B<85m;+itnKrI zVFRY6r9WX7q1qFG%KKec8uDOnv0R;0XlrVM!2uAew_&7P=cx^jv#O8Q&Q|)W})n#dR6h*I2{iMP`_1+I2HG)Yt_}&qtLi2^C!OeLC#;gdKDL% z{%3v%HYhn0>;3-zL;?_ojx#CPbkiQre(O5cfU;WnH@)9KeGz!)v!C_p?NyJ7j~`7+ zD-pA|&+VIWg=uFK+Mrd3l8V|kO=qf>-{G`nuc>*yQE)>OjV;v|9L~d}Y&HDjNPPr9 zRq5V(Sf9$=34tCIHp}+!N490|?pja9}#R z^Ym$=rJD)dz<^zs({Te+9vX>2OaNDt06Eln@uyF(!BnE4to*XPTx_;Chfo7+UJ2j& zBc2gtX(B%(|C3*&h+}|wkc5vRrKJsAUbcpwhhP&#d_`3NO)>Rl-qB7Ci^^(RkJ$_X zKxPw>9zuVbVF55&6i0r?oq`{V$lI?NGw&%d>=L~w(E63Kqb_I>yC?$ zh|b?6o$JlH4d3R5+-(3r2))9LtlN>OWKPa}?b(H}U4n?NpD zm7Sov;a+{~)-5zJ!P~}j@3q|^#tzuiw6?aQy&c~u+FS2if)4M*au490*GY2A>4f-b zfbB5uU6GcSPPdtmXHn0_FLYS2ciG)pC=G<>JRJK;J99bya5=ZvW@s!N=6Wfqv>h+X z^G#ibIg1RfVD%jfJAj=jlG@_pCo(fL`!Q_*lt=7`(sYDlHevd2-ZR{*T4@pv3>4b_zEtu>(B*fuA6q#Z zMF7o30rZ^dN~`YD@tETYA;iHrjge{EwusjXo{5lWU@M&EWKm83Fi^FAA)lWlT0w_EUXtjC{JCwTVn@hwarVOzbXXMh=Wod3%CT00Yze_2uLO>>=e{ zk|huJ_da&&q-m7|4^rRxRgM>BxL(m&&TDrw5zW!ZB|4 zp&PUO&a21Z)gki*zX(HnuGlauxxmB9-4iWNI0xf%nzD)tgKJ5MQ06s%=lO)iH7n&d z>UFH!_G-%)m-$;}@FCJOkFk9@O+q`eGyVBleFfd7JmU}YoFgUMR#E}fYdDwK!l>;m z;PK|XZ znfhi)=(;3(BP4siATI#%zHH<7%R9VlFe^DF*Zr>aV=X=d7$#fyko%98Ff&UrFAdeN z3qD~Mftq9B+SEWHHu(K}y-m&dwggx&yMkjOFbKVD>Y}-e`&G-XLrLAut$1Vw$QGx- z37!kxuF#G??7xI5%dw~t*dn6HB;M{n+r0L(sAE%J67yT_QI(9nE0&7V@B_Vm=ZK)qdcM8Mfcr?~g4Xabzhlm;-cv(qC`0i%e3x z?nA{Uj!ZKS<+1rA8#oaN88nqYxGer`(UU}|d5@@mHEQMR=d~t}{kGApPjc6du2CHI zD(iPI&VeQyxRKMUqSCf{%!OVk?adS$V6%3_e`L%{ z4C$@RHLtPXx}~O3;+ns_v-7(25TbIYT%=1`4r{i7PMZSLgZa#IyzrjXRDPySaF@1= z+!Xif)uZ{1h3Yv^uMoQzLY*;&khF9OXm5WQyHeGWq~daX1>R@&bf{3j?hGq8cgGwz z@CDy@cjJI>nO<@dIM`hY*7gH%qMm_=1RwDL;16bkZ_oDU+mLp~ML7%udD>2HZr;NIT(Ucrptqu73=3I7L ze=w^~N&h!ZGse(cHdp71R^$W6KWSQ@go{M&@}+2CbBj&^w2A3+F%JEsoXOtq{d+x0 zI&A{Qm)kbxTEmyqx+wUw)Q?U~-uQ6Avefsc$B6i5@3zYj|=ot1I z>+mH$Pt$hyBSh>npD#I;;XEOex{?ZEK};|C=7wtkY{Bp6co<6!Wq?8u3N%6+fD~<* zYx;qlL#?X4WaERP{L&^774UxW#jcgU^c!?9mnAWSdFANeRN_VIF(T!(cZikMTinm> zGp~4i@%9HD5L!-I6fM21woY=xk93}9y3D}9EXc#bK}Mxz8&tgvoEL)FwF|eb$L1=m0KWqK1*Ij<(!GO@Ee6q<40G`f6$VU)Ods2+qD@6Tt~Wa1DpSw&-Es{vW> zix`U4?U=Z@-$2)Ju7%H}7B>O*KtT8=J`(=gEt!^8@Y^nTEiJP70!bttJRi_G~ z?SMSw9n9^U!?-)ooSPz;-Z4uliJA ziD#4WK~b#Dq)A%w8PwAHG8ak@23Kc**6jTjA3M131?1Mxzc)}pODm%e#_Nj!b}bP<@5Jl4XgxG>P>Ot$xq0K#Hhbld~5 zIxUpz^tDmvNYI~!Eb{?AU|vg$K2ZX~#Pszqj#S9$r{z!XyTLx_lGu9*CR0RXtxuzjgU6y;N z=zTwqCbL)m{P`8c8}qt5)vENP)q%WjB{96d^|KrO073&t{aP|~p<$}H_%v9ld;MN^Il7Bo;?NBQU$MOW_AKPMo&W+-t?-r zemp-Wc+@TN>b)=i5&RAXtQt8_DG`M?-gTDyDaG&6QMuwYZKwFGM!vds6C9B=?c#oO z$o$Xl#9uGcG)w<**xg(LQBWMX!%S1kB*HD2H2V>323HX10% z(WuE9a^E3_jn1vslYDc2YTY4KGygPH=$l{Mw~b>tvl2mRoKohrfH+2T>>><1TPaVz zpG#6sSyqkv^f(GcL9$7Z7S@63%QJ-$zxhT(dx^xt4ri-tGxal-*oC7FA9L(LY6uym zno9Wo{l{xc=5$ba(9GrS?aj!{d|O{XRwJY+F3=(o$l3h-{J7fNxVIV2OAT%eEEIe< z$V@tW(~=GZltdrNzId%RfqLe`|BFtKViaKMz16KqGB^Lc38*wD1 zGF>*zA1W&su+j**=8bo?)lu|7&?VqRef(kxx#RA1AxSgrCx>NKD#m%9A!I{7~&y z<8%U)KpKmp=TLZ$1E;q)08@oo(9zMca6TB??JwEN z=Y|xi`CDG3XJwUhaJqif%lSx{s3)$Pdoj8EP0=aAC%w65CfjanxYn*qe9CqA)N4*# zox5rIRpZ(Hwi^@_6rZmhbY$pBwk;&7XtN6n4y?}nqBwJAnvE71mHGS$OwoF;iFsXC zR@PFx;=K`Q2V#K8tpHo1=tfg72lS`QSFeUTA3zQd1J_Uu@M9uZfSsM>0F?VBV4P{p zdb5pP_do|h!#s)VxqOj5OasyH*Xt^r&ZX6lKK_~=EH0cMx(}@fq=-P4K#(?zpn)SQ z#(j55Qbsf%F-8DE909P~ave{>e}!X$(%|O#Q`o-L2iYaR=d7agi;4sW#v3+}0@z(( zmo&c7si>;@eOEC1X@|7ai#nhs3^NJR$--&tBGlLE2)dNov_g743wuhOZMa6nPJrSAPo>O5}g00#eZl z!ZSBc-K+-9wf(z79$dl-*o?10-$*a$iC;dzc#eZqQzpkd5aSXVXMFeGy=s7=i%|Lt z_20q@5F%<1Kp*%!y1KfMjQ^R-@C`O;eyJdejRLE~6>5kB3?b}8TITn#FK9w zSxQQuok+NxmGTP6UOC=?(|G>Wx|Ofwt~qXa!2 znJf@n0F=AwCNEH2!|{>sn#Gd2j|>druIDi>14BB6ix`qdV`F1qfwbV}Mx}dhs5Mrmcq{A0)qbo_@y3dNIxA_l_oIdCwav^x zQ^ut~3)k4#s$hVgBRlU8WSrAP#4AAFNBqvPmN!Q5D}ZDNs|EoZ=;r+qlQF_VfwlPb zXNN#%ogKMjaD$wxkSpynVuT9Tl#f0G)e_HDa5Xcv=%o9kpbB>u^E))Y zn3~tU!3e(2x0%4T6$EvAID-W$`SJ|pd7WN}uuHCYVtu`AUDE(;cApt|R^B$H!)jpa zpyv;7Y$$akC^E=~-Z+_7yiU!@#g$>)c2(1+fg2O3QRK)0o(7{WH|QdMgzQD6U`o0K zbJ0ssl1D*BlQcC=?i&TU+ZPzWU&}j_BMTgxFc7dI8=yO^pVrfo{L z16n|&dF04fz^9mr#wg1#)*v0+jF89b1K)kBwHH>#o8j+;0n^$sC~+&Q`*4?dwu0Lm z3xSBFVO@!%`i-XI;0WjGgkT+ZP3TQEtt;X34B#X9oom|sRaARz=>aziP<>|Q#)#Nn_Z>*<5ok!M9ySwObwL^54!J|p(Jp3qs75IXZnFHtp>Ul0b#f@HPB7F zz{IVq?!#z?cR0QN85_$Rz}&LFjIe521-O)Cg&8QkcGg{%YZzQu+6e2_^w;vfZuG;r zy1Fo=vylPa48~pUV%{y~mA&IQ;dY&BaXJ%-wFcsmU75-B@|7ziFojxa1c!t`_w1)j zQSb!eB2d4f>pe^{V}DOEHVefY&MX?4Pkfs^PjO~sWc)R%>pyw&XreJ9SbHJNqGUtgi30{d=z?3Elh37tCA zD>W#LP>n*}F*t!k7GGtQU+t^|($ooDK*JR%SgWhHGHPBR;bE%BK(3{`D&cWfzufC2 zrp}=0i`lkYjqvJKYSkVUR~RfxR3p;KU-xamz#|w8_3;wEi5U2LO8!{|m|cE@p=wpt z9boqe@To#>X~<{?2*0Hmw84b~f#6~oHsgjyfnBWxO}sxi!gaZ(AeNb43+#kKJF{GE zO-L9Q2$l=K*+P}{gb_#~dPZwdWndbnr(3X4f~1ffx@zII9S|fq9l$2GWmV(0L zDZAv?UUOKd^@zbArM#=_OUhs9`PnobN4zmtf`;5Sw9>Xk-!0r2x`*>;gAy?5CJ0|{ zIns~Ep|7o}u7ezom*a1~vUdl#K8{B}p3$WcLr-@6o0V*ZI`s-@cC0>39cOvX!_CiK z%YqWO2w(GeuSuG?mR7{PUYvZybjB&<<4Txi1hYh+NuBgT%H1X4@yNk7R2!(1q3bP~ zD+l3ZhgY#X4y^y8>N;HFrR%-yKS%6}wT(uWg^)5{omn_vKo}awR9Xdc28Y|WEmj{q zDW5s@Ut^P~xRFQ{$k_~G?+8if-2~vmuWt?rm~WYx54HpypxPittN%4m3rOSGJ~Yy- ziAjU7$4DN5 zXC-*h5R`O`=d=Au4%^WHUgr;Ch?cib--AH~$+)1j4Fn&IvwMhwxaXP^svyelw+KoX z4Ru=quzDdPPE81&Ye+gS`b0%tkSIl`tW`E#+$tKm|9U z^vPam2cEzOFuWttDd@4JP%_hXx)hs$xp~{h_rVmiEs0TId%p&O8og0v|M~}y;OmUxCku$ z-8yleHK39nA(FpT)Z_RMphvtR->UVt5X}dSF!EMy_QN&}qZ;^2Xuc!qlX<$|n7r_w zZQ$v8P-V+mO2Its^dta*xI>LihF>hYz0NC_M;#*n9L zM~{^3A&%plY~t)$qn9&zNKFiP`V)d6_F@LG5kEkf9&b680ek2;75j;3C<)YPN9afb z!5-j1M&u0wu(2Z2U?CSe*tOBL@6n&^N~0ZgU6HH1VwoTcwml>eV)dcY94@hS1(+Kx zA&?M7`Bc-uPKRtBNyylyvct&-f@6jwL^38lofIVFi$KRc1H$?omqGpYfx?`v{fofA z!s zXda-h2g=I9Yr^$4mg9B<5Fg&iHw+FFfbiwOyl}YhI{MS_o$Aypn@`7grEG!Sz`USk^!4_AA}tAJ2{Ya#_`}<^ce@#$YssqOO{4 z6lC5xg6a`OgZj3%OfX9s7*7@f6;Yx%1Vf`0648OTH)@L`K7R`D_3PINMpybFXF$d1 zVP)3@;xlev0?ZzElxVgO#3&*t4iqB?SQ!w$nFMbl(4y(EfM_1k$TeMZOaTE3*-Q{M zr_;&ZDhSNOCNR(g!6^R_Ko_{G1c-?ion<(5WsWxqZk$IZ9~iSw!+LRo#^Vh`2v7|) zXlMdbe^d{y?fXgF`6Mc@Q+9J;*hJoJY;qY4^e6^lRuzE;0*2PvAg2}3#dX2F95;0D zazAzm3ic^TbH~v+0N&;1SbDa`!pDAS3;@$J$g$VbO}f~SBM8|;5m^mp$749w*4Ak6 z4@uaGqrib8^Ov>pD6l_dQ&UrzBbA_W4TCxZjtoJ|##t^K1IOV-4vvhB*<}#rQLuy6 zCF~SF58(Epf`R?ggB@Yy^G@ml2li`;zllGv3RI&ZRu|d*t;c+-_kck`mKeEGa~Osf zv88)**abO7WFUqL;+d3MQ2WiI6NH-#rxk}{}xOOOs>4xj3WwKV`nfF)amVdb?!`Tqnnn|)7OR*5ZroGux zypGqnVAewZi`qc&qji_K6-oxb2_nBIKnCXDSREH46iGf{AOR=;aBdN}kU`|Gn(fIV z)}aTp1o|J4BSz9X{2f6bLawmkGqy;(I5hQ}&4K;08sLoJi&{95z}e4U1r8Db)uM39 zfi-OboZ~>ZTL-#10+`aE%S-?+pl*TTbYtHFpp6M0wRosh@T(P@OQXfk1B1mbdayR= zYz5e{z8X`*F$tAeQwGrRfZm{jugSUg1r1|pS_GTO5Ph@5;;`tztjBUG@;0NB1jq`9 z9hZ;KvU>2j9(kM~%KPXmZiT{NQV)6>bl^%bYb=o6hp_peY_aJ5`?qf3>7NZU>&QAm z9efseiA!P?^`mIogJjz%7F_8L*p+h{= z4!7lLHl+T!LUW4C!~sXk8*tH$f+1viG&JEBRM-q~?IEnCZOHlNEQgq?H8T`t7+P1R z*G5N2t)M9B!FIR4GXb)HecBDk8}p(i37~jdzY!&+A-xAsLp1^iFp`G4?|)bLmTo;R z4OO#|#Dq#~wN}G@wMDYvTry~LRZyv9@irlmUc+$hI8Zo^P#XyJEufaAX;*8EKxj<1 zROoq(Cw;L%dL=51iq#w0*}zoYBF7FoC&g|Qtu*p40n|e?ME0udr!%bTh^7;TTrG0G z@YE6w6_6SdVqz~6CgdXcD4}`W=Zp8V1iN zr~v$o%jyY2B|u~7yaPDM08jXUe1y(vfSNN2ofI*S@MY+DcsiF|fc<%*uYVB^H$ZU| zgRu*Yj5I^>ur)WQV%`fl{|FiX%ijn76)-~M0F(ATF;NUgHn1SKfJHbQhVV&%t11hl zGBDBn0I%2E$jCsLmM&kuj84N$_U15405Vl_l3oskf~5z*>sM2gBpBQP&$Xmz@S;nc zz5YlfU4{K?x$%x5MALw@Nh!p8fd03DCx(XK0F|28pUEsV#(o)cnk2rVc0az^qdA*GVskCNgg?peiY#rI{8L8#ZC;L%EsJ$)qR%fyY3D zVW+kLGx2Ybaa{g->+WBQ6N1YZN1-Mx<~975ywid-9`GawU}+tPk7NV%`TO|ZA@hRn zH2SR-z?nyIE;9g&g)=({C86Ib%Lbr_nnVB=#v;VpGye6~bN_nlGNRCcBY?|$>{_*V zbeymX@L^Q_;`ke|+kwZyjt&&GOMk!bpW~_M7Uk>~1~0(u^b=&t&O8=SKmp#6{8lGZ z_}bCl4phhyM}R6gI3WAx&1TlUD0~2KB71?>^zcP+3-BQmTk&e^qcmKy6ABL=oCeTT zgZ_t1;g0U%Y0tlZ6~5yCdFVUCI5h5r%N1Dj|GXHle-{1!O;l}2o&-nN=`U%N{}~R_h~efS|L65*ZlJI$ zC02c9Q<72d+1sOR92_lRrEuQ^qww${7xvF5lLc*rRtt-rlkxwb^Z);Z_5ZV{AuuI5 z+>A0-hjY~bwV6IXMWj@-lyuR}4$0ZLBn`c2#v&RWJ@n_D<8-?PAH5hE=Y>Wl#jSn8Rm6a-2+v}s} zW*S^J`PcP=sDYolEB!(AyYaJugo{F*>dzLFi1C&-ditV_iLox&dsS3ef3b;9DP@(9 z|M@f@igY-wD@FOR{p3QHxy4RRH=e(Y+ z;fxfxiKp{(2acO$68ty6<#o+u?t7vQ{z96KDj{jGa@PzSds>T*{6F~wf0k6h<1J3s zWa1r}Ip>x0Vq!|4@?RMfWP#RCOyY=`!q=v|a>ee-(F0}wejY|p>ESPIjoY>ExJ8Jn zE@ZDe|Lf{8Z;psvI$g_qjpJzsUKFF}{Wctix__tS7A4w)hxakv7%!Zxe?OaJHvqkr zb6V6$P~>~0D1JK0zaGO8RQlHr*^blblk)w1E)){#Z1pGz-f`*D!UdM(@?JOZ$+z!( z6x@2F#Klb0RsM+yG4#BT%TGRtsxqHkm5OAjqkD2#`qNyqIPd}+2T$!RxVhokNmZ^g z(Kj=3GyO6_hw9NQ>IDkI?_ZDO}c3K?%?2aO({Ezv*8=zYNe?v5=MC#nPE zl}RMVa9A$YK89#qEMgxuQp4%;`n3@*Pu%66ekL-F-v?4mH6M$^dtgDYJjaT^p7>W- zdS5_+uj1|$F`~EoPW0F5Z?Im$AG+E{Ev0f6_lczJFDl$r4GwvA;nl#g0sHuuO`RD0 z*1tQ8H~Zn6OK4^MYa!cM4X(fviSw(i)BV7?=w15h%zUTT{tO0g^zg$%Dk1!)t}$-t z`L;MOt(>1l9r%fqL8<^w9&cJWxfNsb+!@nR%AECol3igFC5$c88eO)!ZaW(rhkDar zH#p1li!|B6sQZ)7xvx1Fms1k?aF6`8ysk`a-OM6)qNJ{fFfvnKbNh1Hvw8lB!7BHF^Qo8mVa-pI|hKHeZMM4n&`AZ?MPq>e?d|b^G?K2ij^3H0&y8HM% zS+0F*SvJE=!*IbPLkLf%)n=(Pr-HO%59~q;cSlw)TxwOiuVA=&mRS&g<^uH%DWc{^ zj2EnY9HnymHT?s_^Q?qFdP%nitB(D~i5f^KtFgHY;B7JO#1v-YGNHry3Tzn331f8r z_bz(qO>1nY=l$@Lj1No}&lh@srH4<+R;Ee~i*c)TKN^^7!~2LPLo>x`-~ z@gEERM3*6tGltP|gS%(pdy;LDKz5BqWp=(vBx zj--sqeRZXU3AEz%Mb;m>x?=-_*7B}iivICAfBsqewdSB!>Uvchx*zDV5qCII{@{I_ z75&jGYjzj}TZ85h12|94>xC!~u+v=G!_)F_8NI{g-tBv`<(z4hfp^^IXhaWv3IPV5 z2vC!_CmpzFH10kY+_C9&xVk6Ms$A6J@NBLX@o%x2l|MBP?JLA8Ik_rbSVNJ8Lwe+L zS~Bh}@s5{)@Z6Et4@2Wd{MPU|?6z_Hx3&yedOp(3DqUJmUlQT4$0+cZeot`tofEn7 z@2f|B?T@@7G49E`R*%X6r#`mE|HnXe?Z^`;3j%T)%38mp^>i`6)>@+n9BtR_ci#oQ zg7Wh__#6#~%SzOvv@=0rQ%RX}g8NCtw;&-#B0nO*MgMT|p*HOQqO-k@o^SB$gDm;D z_>r%PjnBh>UlUFt4ze(-S0*G?56P3Dm`$CU&&gDxpgu3yP<|(xIBY@_F8k z$=9l&?t(lq`$2YJBzpMF9fHGsNjy@{_sSdRA{Q$CuGhF!JaG3HznFP9J*E{SpbDed zCPDYztfFM7QqpKGC9E7*XtvPEDrtA2Zu)`Irs>>~o5w$%1Wq2mAU>zL*rIG*uiO6n z&%nd7Ephk}Tkb3zPvPMV5aO3EDMH`8?UF6pWY221P#1~q*vu2i{kA8~TQT_1?Ke_wIo2h|M8^k7%K8)p^qtPkE* zB2uA)J~@_8G7xRDXvJQ=c+D4EtwuoFNpl=u4L$bcZb)0g$zxu7{IQQ7O;8N%aK1@6 zq2=?!SVrFWI&w9g#XKdHz-j20oftEG|fM{LZ*CilFA zl~VD%8*fAlAqNMKrnR&R(e%5-ozD@k--|#F{}Mj@w)-p`>U!7PI#O@qqx2Dxx1xM{ z{JjOPt$f+D#_eO)g>XORKdx5pd*Zl|KA2R`8~t9LDd1mYwDfpUj?)w?;w-j2IffRa_ zl*OMhYMC(a_WqTFWYW*Ps=f$~nT?C}%t=bMafrM;cmxHs|GNQ6!RO-ZAJXCN3*KXfUvs#J7|j^uDpkDw=TTsG z@ZHy4!sCWeb@W4=#u?Kxn1#Qb^P+hDWRCn{t{Uti<9oA6CMhd(EPw1(0@|=TPSgiQ z5x~l?VNc^)+f;v*-_r{X#6Tt(HMuNV(YF>q7LJs6pVb&W;Qi#DTyHTWK9&-26~dk< z_`cCQ{jGC3+BjpPcVJUYGv~N2@^sGGzf$(~$(Rxjc0)Py0`Ujd86EOK`p6^lYXI5APqNiY`&U1jQ!m7h8UAf&vrAHA2$NpNuC$Olf3& zY-r8>{Q^XHl(*HqoFItdsGVH+(rq|)KlW*dUxcxgGYI- zL=5+c%Ki29;i*(SVUMJRPj>V~AOM6C^I_+$>my$Bj{BMKn+x<^(^Xh?KYX5*ihUO# zPGPh*Xh15RmAaYbR_N-Dr1X06BP+5AK#t!h{- z?@QJqeBlpI{!AOgh$ za~nvhs9u>56riWvpl6zR7CTc&?CR)#IOm1#jc!`FyU;DO??*qKsILN!qerDs(SCfC zkPh~)vZ2H8J<1({U<-l!{%Jg8!@WU*FVdBRs%K+3aAg=NYI+&IAJ2(B=T&4LP4_uGgo43<>A|Z@BMo83NljP#q3@s^etTD@!>0mE}coZrQQ)TJUF$9rvH?I75@^Cy3$q*ijI0-N&&t>1$=5IqTcG zz%C}9vhTD}Cp=f>&EOz9bB2X`I>njxo)|p=ZqJxxEGouKUNyO8o2pGSp^b2jBM-Y&t7_(_%*t*eH4ZP#xQ*u3SS|$ z99qMYYzhXUHF`MAC}{2UT=vfEr^lKEBwYVi$B#eCfxZ_r!9W+1TuQ}o- z{?X2HbVBfmX4tPv*r}6G&M9-hn-!tL#b^59n_KoX@9aR$RD}8r9=mp}gBGwC?KQikS+lS3$`zRp5P^j6bL6+vu8PxmNc08Q%_CS zU+%NGs@B2}Llcrs+ks0RCA$PqsFbB>^&FmVcI~d>q$rG?jv&8EfcqsxPCV-FnbrGD ze$0fII2q;3uGYS#oQoH~BEe1ki>qfE9i?&gJW_r=3rK2k6*QRjfbG%~G}GTP@8zvE z2ElXL4+bRFT+?$PI1l9Qf^J<2MyX?&B^28A1|&!Su*(LpdG(-ME;+jAKTjF5<>=Bg zh?7Q4=1rr3`}p0XNAs^AS4X)e9Us_$jnGa*XPv$bY9Vfu``tmUOg;*CIQE}Fiow@WhWmeq;T>K-$J+$^2PeQ2xOPAeZ z%1VGt=fbCy_LokL_{=R+1~7r(>a`qmGWL45dRBdCH9m}IA!@lmF|sS%gGYtX@hE$c zeovq=&pQIVw?$F$lN$6Kw4sR^$r094&C-MW4_t|Qug(~r|9py+x_;gOpyJic=NIE~ z`&Y&-ei`OpxOAFy?)Du|3mnUV?_Z2UzIx1Wmc4dkv0zb9Rt#L*@%um<`BA5)HAR~= zf}8+uZabgsL}+qp!2@4~n*2-0yeLfVUYMy;&}H|SPWG#p)-xW$vKMIA(XkJ(+a@pB zo0_t)6)lRzPE>(#2Pd2?HF)5W8Ih^9-omhnJIcQ0oEM}0j*>z7t`WbXa9N?|8g#$P zVx7IJ*1|h6Ny-m(AHEgE$1zjCIy_A_V7Jhxa^JUdDqlzqdpFzq-jUg>8`TGD;l7#F zR=GEQec!yVd4Y4Wj`aa!VwT^=If>$)BTl3+=@am@xT{dm9e*azw0)#pPd}UjOk5O1 zM5Hf+z{F56Fb}p9crI1K?k+qwuX4_Q#q`c4g}4W=KHM3RD(NXZt42$V6NfkGQ?8Vw zo0g{JLbz1L?y_6NbBE&19l>MzFy$?N;&P$qsfu$M+F@RID%K8~p0M3pj*d`#Z`t!U zwP538M|Xzxz30Lz%(@}-qQ5Yq6fbr|VEV11Fg0+2hQ=U@`xx`r3ci39e4six=m(E2 zYiM8T1FxmM3#i0{si(z1mrG0GMlp&Q>HbNqNH`Zvnv?aDQQS9_Z|!+~m-}FaI}8t^ zH!NA|;JcceY5XpKUobg{oq}0_mU+W@;1U|mdd&B5Ms6MB|Ghwt7v(){b5B_PPm_|L z>i=Tttizgo-!@K;(Gw6y52OU7Q>l@X(gM<*f)XkX8xn$nfHZ7K3WBuKA)QJHh?F!) zgY$QM5vwS)2OhAz=CKzU;;O@M=jianjVsA8b^Q+D0J zL$RkD*DMY?HTx}|!r02DUiWN&YP~XXCJC%=GbkgSx9MuHy*ltKD!+CV6Il{`MTJ^Lsse^*LL zh0=`()vm^+hCkP_XukOGRjKdx$HFlMwrFt79}LygF4%diHNW6v!S)z2chsthyJ{yQ zyA=f@Ib0!_wm%wX*=;VrmtQ9uEw)=9&x7N@)>SQQ@8q#gBjHg0^jb~-{OHcm^SirZ zfjenVMIA21g&n+s|CL&VglO9j_t}n9e*-ffn07q~xdbPtT=LTL9%srWf)VDC1m|J) z5Py$!IX5K%FDh5DP9ogTtZEI-_S!D0jx4TA^Bm*n6&;0a&I`H#c7l0s4Bizpfsr z(a8udKJt@kfZ#q7_?aF9N?xafiAM(XkY79Mm4t?|yc93wt?H#=zH5_xt$= zin8;>wV|<_d*t=)F@eofxRyFHs(I$c{$(YB(Cw)K1ctaG+}=wJ>Yj>RU3Nx>m4_CX ztY(c@?AFvx5h&cRbU-GV#O$`6xv`v=+^Xs(&`EQGDT@ERq3#a*sHvB4UGEFo~j0S^l( za<-0snUtC~g&z<(PHhP!? zsc2Cb1!Z|0+_Ao!Pe~Z1XWclrEqN;Iu%w!P<~x8N)TG<|OW^`3Ze~i4AnI^b^XYT* zdvAC!6;uwV9-4a5JIjLyq_*9;lG2|EhBUvf-{gozY$8Do`h1zeW44I}Sc%;&`~hC! zSIF7c_Z6Hk4dMzLCy76p@fde+{9sd zvFf)gzE%1Tw~$D&B#B<4Yd0%8v|HLluwPT=X;@&Gu>Q_-HTP^`ukJx1Lr$P_|H{`h zbRL$+jQ>@Mos-WEeq8lv8yj4#ueL;^@x?`M=(3!gR(BOmb!#CZWn@qj0xmXf9i`6C zPhKy50aB7v$gk)9_Nn<2MCVbyUbO$N1H+plC>k&z!50KVEx1k#XM1Y5)zieq?s2Uc zu1*Brp&wiFUW7RIrV5Bo#crD|t}pZcWxqih^?tyyrc9nw&hn1Zav!hAtw#h(uz1N-=1z?_M}BjF%j?{C>jj zV^3V}dH@ON?b<*~Cvw=}!f~gGLC0uaU{$#rk6q&F2bIut*livTj(t-*ac!LA3gp{x zsfZoGQzZs&ufu2BPo9Y4OxGpW&8)zY%!`*(KHSJ`35Kf#pnyMB!Kr@6b|vK=$*D+{ zF(gwmL!OI`k=Xa zHc3CgLMn!|=@AaX$x1qntsUxSv;F2MdwcP}4;}CyOm2t9SFxrv-FaC1 zhimBmA21Lne)rN+1;4EUwt+OYFpC<$y>PAlhzEIds*@R~!JJSKqOW}b*e)DyWaknX zOzLM?L7>-;IPVSbX|z)}A!S~MiW#KoFDSeY2UqKV=B?gj^d0A?bg7*59^Ylz*;-a+ zJudAY-Ck3pi&bG*U>=pa58elZepZiXC6~{0*3nrmdS(R*;e0ZnrVdRY#!pzVzjnj^ z$4s`jwGt-(w@rGYB^!h1klJL-+j}M^#*(CK6LP03eTyW11PH-_0X$3wZ+%}~M2G}HX)8Iom~h~}?fK#vOWo3scp&vex8T_(dP_6^1LQnLuP%U*0YP-YPbQNvj$qi+ z*cFL>8GkLA^zFcc$0s!jlrWidyTO6}7IO88Q}Yqbn9|~H>h{MmEH6#mZRoJ3 zG4E=@nJE&2!F`E{I|^<^hE(RJp5ZGJ`7w}FPf3Ji=L?nA&k5NQJwI7=Kd{}Vz5I01 z>XM$Q^F}01mezIp?03Txi+`tO(o3n?-s?UucgMdsvaaw|$fL0C-Pu15&!}r2U3)z* zH%(vz!5FvE=p_f9vPDNDGdk(L$;pJsXgE?Y& zRqjdAwDmRPjb1W+aS5bjepIre?o2NfYKfei4#+R-ImK*RmFjcQ;*}x&w8X}$j>?C^ zivuZzMDjEm^?TCaVT@Ynx-zFgMgn_!mBXA1=K^Jc4Ih0fueGH%zhk4%mAf;95u`VgAu9 zSHmWFXxha65f2P97KjP+Rdi-9zImB0FbaGmx~zAg7N@N9QVMNut}R516B;aoF1tSw z?%0VI8F8R$q)?jwVt{r$A&PLZo+qP-?OWWdJbHhpo;LJsPfFm|h@O*>VCRbmWvmfe zx}+Bx1v09}|2CY{8F|>pWip;!tjMj-7F`#-GugZ$)c1@qjsV?xws0qkRzn0J=v@A5 zB1QuQvTL`XpBP6PcWXRC&7F_WOT=C!E#4~%X>t9v4TgogL~_aSq{=iToXK9fD^Z1c z?BvmtKG|B7B26aYzKmT@O&e4P2cIN*Hi<7~N`7rvdnN8Mb9;J>qu z@Ks*kGHp5!W(^8ufR|D+PMX@x1N|T_h!GhX`axFVU|3mt9!+~*9q=deJk}i7^9Tv_ zw^Xq`T}=9x`fO`O4(Qm8Z8i~QMr5K;OR+zZTxu6@kS@OLI&`G{N1zw4e6^iZ-%v3a zK0tEdTy;&t7<^yZVzSQPho*da5vg>C5u^xk3-T~l(K!;QJr_U;gcj2EpX%s}Uqk#^ zaZTgZ;uWl6UsP$>dSbmG^y9&{7X=joWnH1$AxK$U8R&5QlAz_zmf)!6r}48FHStShK3He@pUfwaSZr zpJYwixUtsGHHM$cHAJB_dyQDB-vJg|SuPD-HsAtX9q}mgN5gf6hz!GTR7qX+rf+YJHhZsrFmw#Z^N&Gh-v%BNy&RCcu|2M zUiz?8>NowCVG5FW+1ITtrV-ooO~+4jY+E_y#veS)>Rsn@X=$_^RK`ICpZiXh)U4Wm zpZjO0Y-j5>Z10_4duwX4moxshk{tTwJrjS+lanvi3lF9?72 zI#cLXmi!EAX4dm&eEEk8p%32~M>n5)DKECPg}3o}+%<}Q{xrMCpeTfs{CrdW(Sb|~!~|DVPkx8l zNKJ_CigzF4PgsavGyxi@DB;|9q&%Cz6`b@JZSg*JgUW8^lB2*eGl~ zi1^dPs*1lm*CeYbmLD28vouZp9?Kgiy3;h}J-p~}XVLUa`H9rYixLYngs7Jat)g_H zR~GQ^f{Rg|UOO%k>Fkx-gGhALE=)EnfMDaalHruBBh^aMLCe^fHb<)rP3$*}1dWs-P6gK{*B=&9p=UpHJ*ihrG)a_W!6lq2 z-8r6wkHdz8AnZl7Tdyy9MfjkwCwLQH#Y7Wi^TIBIUk6D$K6Km(b%v>RH<|yM)-Vjn z_#KRm@v$`L!8{E-{(Q|AVjE4|;=V;CEAGyu*0>|~Dd;JsZm>UTvJ;VWm|4x%^LNM; zo^BH=x)BNU%=We8V%%U{w4)uz%d@wFPvD8{|FEF^I4hRg8 z;BA6HE=bI_05GM#$+&P~8esF|6GCi&a)eu&0h>tde=-m|zPL?p3W_lNLvlkf^F2iY z1p{yRW3Xtzhw6@2EZ^%hTo;*O`1RD`;#^0ZN!$SPRmr$q462HxDH!+8c=?{0q$ks5 z_`4CcQqSkcn%|`5d~(G^E9wFGO0Lz!f2Xyt5gStk!bD*kH`4Mkn!;h%sTj~$gVu0f zedp0oqob1|+^Oq81w33a{c+1H$$k+-l3YDLaBbg97B~DIU}ow7BN#@n2cuJur=8Qw zm$z52mi!l4A(tGtMT+$d>V4cV-o=3vWORxppO52TLP?^FPGj!lAoMxl%Jx(fcE$0Q zqZe-sXxXMq3xa>;Ggkpo?rHfH8}W_T9=4wVSz#4?V8Ct}#A%X%T-|0cxE_IDZW2Su zv)lwfFkn%f^AL{pP0Nn~l0M{k=uVTI)2F+upU)@cPHcZjX;;nesMAk>{?6EN{^OBH z&n+aF-FkQZ43XZIz6iJi@}0nRCP|cGyKCc*;XFU`?6Uj9JrEkgcSzol*J%MHXZO<( zeBpTp;~THLVvnUV2Bs88>$L%JRD6z+9rZ7qV~UOITs}teCrY>jvVT*x)DpyO-0oLU`RzsI!T0q5?GP`CC$Yu&;-hC*e)sX4>KA_9-Uv}W6(rvcFReI9Ay4{G4&h+|QM8{$ zKF41P1!e%DKu3)R99bB=x_sB}-m=j~p)!G;;Ijs5SZp61@E1M1jwmUqUS#v}p9AH1 zm1bP~SbP2AC!e!h#N>`Ey;#z$Rs%5kxo_fRKhQ+rtEtnLxpJUPI$f5{UQGj7>5-gt;JHWDj*IF)W zuP=jF?x9tgqCsZ(N~yKz6DAZ&a7n^HsD9E1a`eu}zwS`3sIYo*ce_S?^h2bL6KwqM zQW=|D<$-eM>b|C^euCC-)SFrL#`asXT^i%ygwEvO-4|E4u&bK?$+KSF(^3-}ZGH`J z{%!Rw^Q$-Ah=Ym_mk$oGUIKibE49g$$@5BBa7e(CkZPB*eocrlFl>>3yo3{DFIuPZ zY(I8L&pesI^X~5pTd`J{Mo*?w=YA+=jf(xa+q@{Os+cAm|9 zxFdx9?RK|Qb}p*c-RPD-c(AL_$mCd` zeyD<^Q_-FIW=3d8!q&Dacycc*n14#C`)Xe&*6o*1o{f@q*Ywge9QTP~KrcrR5>p1k z_I!@WC!cFc6E&mE>_)*wUDZ*j878b$^W4=b$MUw~>RTi)87z%ggi({hKH#FuGU7AK zs7yz8yyh1lkTe{O5NP{VVLr3O_bO?8ZbFWjwXfOpd%eEeQD)S4hno1wZ>F`)-JWKd z?J+lQI1#zV2i>o+1Vbp|G#4e^eZ1_+UF}z)2E4$7!;2;oL+Kd>bV(>%Nv`JIi3Vz& z3Z)9y23}6267WI5eS%14mNt%VM1Hf$-1+Y_xL$o2vGn(>VJ|JfcKFG}wF`v3bb`+4 z&he&CE}ktf)~CBmq} zP4=`RwW#=_z4Ks#8a6(eDQ!;kPoC4sC5^tE6^-5N86df<`kF8-^BNr@5r}=yy?ej_ zh~#MC8l_F@8WPk*aF@4loMG#=Pi_Qfy%mjS3er(lq0WoglptegnCH5D^#iS>hcxIi)xxqyzox!N$ z!x{vf;DX%&F08P`V5j<5Y6f9?-|M>uDcZa_P8&eKNz56ZEZj}DSIgJa5uO}#dghkg zbU-=sB~L$Q#D&u1!Pw-kPkSJc{0)(}MBEnkudj`oE1-5viw^NH0`3##f67`{ z;F=6Sw#?T^9^l*j9>0liL3{N!m@T{;kLQVq&!$MA1yv^zHFo)+povCbuUj*YF|$8F z*?&Icmjj*vyCmfBPGy~u;5~62dkFi;HkfyWl7CK64D!KlURTVbyg}x`)7q3pDm2wB zAtb^#P5rm$wtDFdJM$YVo(iO3s53j9IP|9D8!<0-wTjC;u^h-OxE|ul@d0`H; zB<5t0cd2jJn6UW2(Vf7CBVk#w$G=l>Ji$@cfN_3c{)FICYDqj}w6uEYw{kLgTw7_c zO>Y03CG6KNa7xKr_4Jy%w`OU?bHbc<8Sga6u9_Wh<;bj0t%UHc*=07PZbNvGV2{PG zBeX}TVPB7&O}cB|2GrBSy2dD)H}rsnaB(!T$**E%MtO%!v+f1?3dP^mE&R>s3FC z?&Gy5lV8sQwRQ9OVg+t$fY~ZE=&}hxxh{T!bqMupKU`)jGj!(&^ zE8NeTPO-DFGot(X>eE&YFl5g@(UeWz?)lh)S>W?^=ND9eq_(dip+hWI-wUSF=Mla^ z^(Qd5jZEqKP?B>%vAU-d>lGBYnbAGJQUl>L)^|8FPrC5_Kp~(>7#a&aL8Z3o-a4GZ zV<^2Rn-q~0N?^EmlWPHd9o>q%sxc!#$@Y8yVB#*AE$?+`)EY{_0+B zxQOypfBb`?k+4egl6_hTsE5P}4fh{CbA}}wjoJE{urJtoz{hGcr)B6=Ul)?X0Cw*N z$RLw}Wp!&c4Qmu)6Fpr31wnuZqRJGkAg731KM?**Lt`EzyqC2ekaoE|)k{6>Y18@49~vbn^~-7A}r^z3NaBIXj&8|MPt zJvI9-(~tPww%TZtiLd*~lf!yHU5_|Py?^#tO5XfS^X?HiaP>erHsr-HR;OL_S8Yk5 zG4F{*Qg8@gs{7jtuebME4as4Wzsg$uOlgB9186B6CXX@RAy2BR)B@s}6DgF~65(Uy z;{;i)R$>m*(IXBLz{ZG4M7r$MdH}B>kWi#Q>Ab`%eY-ujR#p3WcmJGtNK8D)qW!H`5@ZMwgEHnzdb3RTUkOGj0nupFhDN z7}N5f6A@cpSy;R_YYLJ9=}Cig5SLa1AxmMCZ0wstYK($bTr8yXVMiB7jmD&*?W8~? zVOlErN1LG>_B|<})`+DYK|M9;>BxzloaUZu(f@M~$R2U70nO|5R_*((Z(qs;x;(`s z=g+~6G_dL4z&2rg6Jh{y08EakZOJLfQ6u{qt7@uoTNgP*RoNEIeT#|CB9rMwp*J02 z3VP_q_JyCQ@>`RS3$UF}R|qgEAbrKybhTC9wKrxKDQ$kLo}W~*`L&sPnr}tC!amyo zVvDwrDsl>D2+rqgRcXXCv9q91>2bs8*@+jJT3FFRXK8XPes7qRkvil_#dk7Lh(VQY z9(wD`cx5$j-NPI22>rl-w)LJ-eXH!x;{Md_(PFhznJY@>@}yVW2o}+zi+4n#lbRY z+%=mhk@asIn0s6m{`yZp7?=qlvi9uWeG-3hA3VdyG`TN=t>JGBxcDDC));**EMX+9 zQOpC8tnzK*2L3MHP}mV74is7WAMlmfbm z2eqd3k;H+qxK;B#(%3#wbm6n*`XuF-+2?l@4mi=WQY+7&bEw!0vNZwnBCfOVh-))rP&R)RmG z76gD1|Ms)5;sDv9P7b#Rw{AJjJ>r5#pAObRauGnl$*Aa(mHB7DChiM`Qr4!v18q`) z$lda60bZX6*A_sOf&tycG$-7f+XzVr@sB7Sdl)2%-Ks#t(nZISgAe5Yzw^l50+y8KN8QD~A@9Al86j&+v@srJaO7~SdM5?#z0 zH354v(uG5jH?U;n>214wIvXD~dwL8^z+d0Bul&OM*3k{L7Z&AF?*yW;J*%c0{+l9S zw#mjHHxyRrKK+u9&y_?0Q%jGggk1uzgK3>N<{|eS4lV*FGjo+g^6dbzE({QfIOZat zcPIlG2JV;IsiMR<0|iNt#@&=u=DSR6)CFqdwQQE|#jKg~4!mIcc% z%O=852STPxK`(G^iTgq#(PooaNPF>jAo0$7Czv_-9#r{J>tA<@{4u8|=j9SXeR04aA4!%wn;v*; za|a6RchF0{d2O@c;KwD4}w!9ZRS1 zuzlc4x~E_+*r34dZ;2d0hyw@qIllBqpiu0rrFrz5zVkGN^xp_dL-Gm~(KpRTl|_p} zA3`f?@wW$)R;jV!@CVI&lX$-3j?KLlT&i48N`)DD$vShsY^E6h=9K0;V?LK_@h~!< zR`p6Zo_Tc>MBSKzJWr(?@RN{(pt~F_zVCK zz**4rd3FvgY={GtkIC=uIIs!;8M;%@eR^0+1;CnM0cPXS`1`_JBPUe~TD(x8XKBUp zIl|K5E=G+h+++_Hkk0QI&=CUkNj49JHTv$I><~@zDw@ul*cq{-c3e`0-D&Z@C(!!7 z4{a17sgz_@GSiXkq+Uli$17Ofv7gFzAbfQxxXoO|fChnCkgs~t*%JCh2_oO*N~Ct= zx-zx_)Lt+t#8aH5DrFpU$7ef6&;bEvXuJKrN_eD0PlzI&cYGr9T=5zU&w||_ph`~E zFm1mcBa^An@LPg7)(pHE5GCo)Tse!~w7|N??DC-&>wgrntBo$UY83}Zx^3xl@_ZFC zq*PJq{X;m`W3LwKRSL$WykT5ZWoRY6ZkIiM;Q-SynFECzhFoe~EA1w=o|7jfBVP*j zU$^S5BMVPYHV1Ea{k30$56gTTa{m)p(JYeI8x!>r$Q<*nUNw>spS$^-3zg~W*wBLR zDSG_so?CoFl$@?W$i;mbFS{w)j6a&RuAS$aodP)1(=w}}!=MNB^MG#AXr<0^ZK6fp zhfhwRgl2$B<53oJ)i_3pDL^>*{#|686+irp92jz@cP&FG7l!1~YN`8z0TUV{ zxKwspLr3952xbJa#Wq_o$@(1lRZWeZ)sc}QWxVe}LvR4wRPEB7+Eu%-QtR zp_M4lc{3*?`pv_q)Mk6Sz{+{`FC^+=zO&Wy+h8Po_Zj~Zac)f2qsAvXBv4f4?Y;^k z<={4%6Dt)6^fk*}NDh0>1lX;KTZHj(Vgrnbz#jE6xVLP8c#z@2tpm~pRLB6r=(b22 zFSzT!2ut{gvXl^V>gW6`Cb8X@#|UCVly2}bppzakpgU0tCrj19zQxgCEhKjEV{DSO zZ~2j2gdNh*JM^71?6kh45Zpei6kiK_K?b$yT=Vr(y-%OMscmE2;DxoPYUgK#-btrr zlQ}QzN3IRG$-+3lb$xYYECx3}Mf-O9go>EEV`>LBTt6fWCp^(wfG04|H+QWv*^;f$ zq4T3?ZyKp)j6T}|g6RCAlTo!t%5Ql~iD4E}e5KqY8mEA}MF;$J|4q1BFXDV+iz(S? ztPNM6}0 z1-ZJbo?#mF~ruzt2Q9*=!@In`dpA|DU18j^#Fm{HMIrbt_GiKx-G^LQt2&8lj4B6i!e>%*1 zjH-8KzY{h-E8f`pVO*BUf$1n5@fyD^){by7DiglP-)l~*GfIB6tCv^%SWgtH1F<>m z4uF{piMTapH0cXV|D0AbbmBhR;xDA=%d)EoR)%+`U^O2nT{`?UuNV8%#dnaBo`G$C z9NYOQ!jJiVF!g+0Gh$oCfw~QFf21x$f7oE8(wcO^zQFrd@9w=WBzXaj*Jy~y!;=aU zOiVc8*h^QeH`gZ8bxRp2jfqgmK(NhTKF?HJx)1O4*`clZPSiW^%!Y^r% zKgkn0o=+mY@wDj0!C(oK0&I*GW%NMm5{_oO=NEAi$v>?kiN~UIA?7HT5@e>+;*wJ+ z2}LafvlvA&O&i7G%^hI{qwHCWb;3$&q{`&x>9@ zq*iM6PtSn8{O&f?lZV_u@}9gp7s*n=+-?YY8w>VA6Xjr%gTV$+V4HgZI?{(BjR03< z3)Y6jqmn*N@a&Q3Pkm{BO+q<>7okqABm}uOkfF`wm<1{$;M!venRG4gVpR;%xlILwIGmwTF8sTA5??@n6s6}l*V1A0OwJjl zkKPB>gMMnto%$a;oJTgcNe{h;mjLO->gqZ5;PdAUfcU~L_r?0_-J#J_$xqq(F;r}p zEsXEsp8r_gw)TDpIf2%;mmqP>4+&Nnc2Ou57`C7BS9mYo{rGq$YGY?BUzzo_2xB6t zO3c^#rhlb4WD2@-G81%hVV18eqgeRR&PW6$Oi=SQchNEP zq0l#^M5CFZ8y> zEAdCYODJr`pT9LjW3*TibjRM*#!j6=|CvDRQGU!f;x+L55pinQ7=X73qWqZFy2A z=+$c)(=7(I1XfnZSm56m^N%w8$D&DyZtF1`xp}2;+wc zB7)}IpdrvX;=K{fcDaglIY<}pM^IoEUrz4FddpIam^&Y_Q&=uRxYXL?^|_dnw4dq| zC)lubIj%gt4nEjB*O(9)qK;%Qs94ByFaj=~p0{zz;laiPH7*T^6LJ$16YJy(fCPpE z5h`4r+{b}vfhU{|P;42k?LjgVpv^UNuIOR`6#|p(q~3EH%PGZ#w_n^*7(@HrChsRL zaqQ}XSPx*zOd_iF&7js4%bs#Zc58M&KvwCsppCIs-071S7C%y-eP=~qGqS5H9(*-4 z!FFJJx!Zg3s5V}(1Ta?ufBhZRGct2tlW=T()Ys_4S+?fJE!1061=3CoUSAy? zpQ=nw(ts1AvxUU7uw(uU{8tDsx1PuUlwJ@Gm8<4QWvb1uo#q_e5|9qtSu3i}=GYQcn+#DeP zMv32u3x@)pqPngw6$ng#^}XQs%nCj-lRew4#0yJFf#WcPz_a~mGIDBLOy6Q?W3rM5 z2cu4Gj>Kw}6p~=F3D6bz9$RdiRJU6z~S-y*djR&=7njYYWctsmz~` zKhOcQnZ%*27|+k&dZ3g3LD9xt#&t#&p^xn@L>K61Q@@q_a{cSHp}+0*{~Y*qvpc82 zh;rDwuu2x|6D|LXqa2d+8d8fnda*OvGQTb+`Px zapP5&T5d23w7l$ElKN82V$fiHvWLKEK?GFSDLwr^u|Fx4@T5T~8^@&0@Sk#x=Tfr7 zSC~)$o5{g)Puy0eB^|cA;F<*ca)kg|(Y^eNGnPOEADn^%WJdxbd?`hx26m$z$f3<1 zL4E1BlvogDq=|zu?dteR)%k=BZ1~D z4vAZ{=~f8hyC}UH%c8+Ssr@t)h5M5^wYD+(fK0>H<$pVt#L5AAO+N6fXOY71fzUD z6J;1P!c2?b_NE6R&LI2phK^E=sqsBVg!oVAUP%9dZ0BrA(8T;RRy#Ur+nAAIu6in= zk5tW@;)^}ED5tR{+D$GIw&mQX-4S6X(_VW2Vpjo42FGg0!MefaHVmre+Hk4|u<|v9 z8#+IR!NP|IK+-n_`{@FX|FXo574XvCn8U+(%;h}yPmn@cEsH{*W7Xek(MP-3)^rqd z!flM`+xk@(KG@E9YaUB}J@%{`juN)vQllgYO{%7pdl8(9{OK!f0PL-C;Ck40J@k1m zSGM-lQ~acT7L`#kQG4efPoG}-9VR2me`{Y&X+0INn)LSM!1mqRL)pbHv z2O-H$J+H3mkYt^hF;Txd#ZucAI>8u&hptQb=iv*6TH53Pb_7*JY2;!~sE-pEWI8iR z24z=l-4rniWfKGkr=413D&Rh8!c0!U@x`0taw4ng|H!HQqL5iZ3DXvl)RPzxI^DU+ zaemTX4L{nn`}J=(V6*4;@wfGpI9muiPjXbro(sRo>6yqwf0hYN;nwos7-B~Qr|LiF zx{eXoRgtO6h7=mn z_&dz%xik6=^*JPzeSK3`TN)#Vqn>8vCaW!9ogc}P{@&Hbg;;f99^NTyu?(fdS}pAlFJ%5Jas zaNi6B{%zMaiJRdb&4`VwUJ9k{TkqkA*b3DTP!-UEA0ZO2wj3q=3*%VMDpfMwjOiLZ zkYf~pb@SukxoM#Y=tUD!F^qF>J=wtI4#j{dF$pQzJa1(Sx{jdBJU+<iuL=z=1Us!r0Zu+MpKHZBHWmV|vY_c8KZ>-N0g}jYKUp{yGDC49WYzQ9Q@i51|Ii(s`ef z>N6ol-iP-;E@2(O-A4E@A$2<`o=Ytl*m4=VKNdYj93HbKjO1(X1ZqUbzkQS&(`Mj0 zuK?T-6~Ump))!mJm=_cV@}%`mc=nf(!>IMyze5{TW5}Qxn%vl-v8oq}9}3H?r1b{+ z!9@Z8=EDRAg7OL@&Rl7}uzt{u09o^no=_U6qrBqkG~k|XKy!TplKL$_zUvL@>93B_ z+Slapsb$`+vl1vSX@7n9_5A5bV}qGow#Zb}sTg5K!%ZO(MsV*f#t3wFWtk+fE`x_< zEx4c-*c2E*p`rcyCYeYZMH}8R!s8m-#%IB{aCqdqr(!ou0G#Oqbh!^07~cpydo|LM zGHKQfXhe}V$LM&H{v-y8^;-)swVCSMi^TN|%-nArxqJNJzz5Wzlz`cMM;%AM3uORv zSy=h>3#DfZe(E7r$zg}XU`Lc*vQ~|z)epaZdKSamAPOq0E`j2rF(y4C$AS$B0+Z`< zlPigH$;fUG9o&ISvD5v^QLq)7QwTKi%d?AgWZ}`5)!-1Ph)+%HGt2^ND?FhNPVmqN zpJMJ}FBF0PMyve?3P>DI1Za~8H51n~?(;ZRT1ORvDbz3z1G@F9(Tp@qN} zpE)bV3of-ul(0ijF?Hfe&iV5kFx}Z;tep7vS}WNJ2Jvskx~6%Hat;gYCvXMjk^?># zyBZyk!SwBuUFH+t>nBp3{*GnRjIqK$GGb`d3A&!KVBeVz)aIf4( z4O@d59(^;l83eOLlbbN%0WLzgbh0C1YC2_ZNNNTKxnF>YT#4*`CVvPo0B(I^HqXo5xpZF$LJyHBI= z_JUo+i9a>4GofQ%yMw{SDiTgG$r5fS9$x$P)|9*HFa@|Q3s(RLH67v`rgC4pRrQtuKLo_$gD}Sw3Ykqa>8IU2q z4!Pce-(pIkP ztoKMBtaAU3KqIt@PM&g~QW;lt5`J?@cXCb}b{Jj%&@fIFWk~xf_ytEUCuE|AZ@Q~0 z(L$N1LPb2s|Iq_8clD^m4!jb|NCMnL8Mlg9E1T5E5~8fa^rjwk{Uze;q7u9Dg%8!O zGOtM&T@EJ2upt$(J8PARNZ#%=!Z00@SP?*u`hI-A*myCE8eVPd$SWRXr{Ml7{}9+2 zE6<*K*Wb68s@8zmc7p>fWGEo&hcA8Frc!rfN1+lxZIT>0PA7p_NAlXA*A#7Jfax;( z9!{Bw#46Gblt@fH5K~;0GdoiMp&@|X|L(GW=pr7jcWBC+n-F;;&OXiKEWN03P3TVcLJ5zqGHAi1Ki|F{{sf9dgj% zP*$!ponl>j@<=?)W~Ih82UtKdd@MA+oKK{eqV0{*C%xYd0P*T+UaTWXMXa{M{3)xb zVlmMpK_e#+X2PE_9cdsba$^0H7uX1d1H)nMWSJis z;;7-dFxO>{3F`~`7$u}%=A{>M^tdCMH~ky0yP~h{tvX zRj1r`-ZJIx(<~|RQT!opJ2wdKVen0$0f%W@Y1xsRkatA^cu)*5*909=0#nd1* z!^p&wx(pAqph7<>$q!6kbBlGo+p>vA#D79y2VV?0p^nbNTew#z#?Sx%!;HD+ zVSky%!o{dE!E}D)WYSPXp)?+w1LaQ3baS*}gJrug4*a`8l>zNNugjR?r&OiTJ-PGq z-UoHxfrYYnY$LkX;PAi0Zxs~wSX#mmH3%xtw0sf7{c9THcgLQ@=p!Xxj*w>Jk{iO< z2M_yykis4*7{#UqL>c6W!GL5%4An_A_t)na;j@aep~yc4V?~ezE)Rr_pX8Jn`BZq0 zt^0c%G{l!QS8_y!?wboA5HsrV#-hZYdENG2s*4;ShdVmjMASFlmw{;E}cU*j!I=`L`Xxo)YPsXJYn+4~rl`3(kAFGC04S17LEexUjHiT%!Z@(6j<0w~o>B4Q@m-=65sD|4rD zN5C~yf^KO#2gPH6)50h$A%cnW@r}V>z$UbT83g9gWa#7kSB!NH1!~MW*G9r_zfTG| zt0#I7S1_%YoO>MFcJnfydrArcsD|-Hdu3|yK;{C!ps(t1EI1(W9H_2P>zkiZh*VWH zzwuUCQ^v^4wiyMS%((i*;d^wT=KMW&2K-<)qAmnuzRn)L?8?efx_aIfq z41ODcyFac5vikp8mAe!%)-QqkETY;efP+}VvN1(W;UmcN5@hK!4U_BiN}@= z&ud=#LCJAyhDK$yugp6I!kkr>n7aVB>u@bumoUEwfHU%Rfb?MQkc~th1(5uHh4y zOZitQzw_h24q%&mKW#n_j6nYgijZvQ%*k9Y$>)RG)#F=a5q`l02rVA$>Tm2*E>XNr zt(9Z|gj5VlmyJA!8btvPAu-^*@#Bwh*M&jXnbCkx%7~SehEc^)Q*#pR4`cZiKL)1p zKXNrN#Q+wf%mGf8pP%(=Z()o}0S4EAyCE=bcnuH>25QA4-KWq{@&A-(%r!6Om=>JF zBtz+P8$`H+Ie1Dl{iH$2nQiMWd2sZ1h(2&K%<(~@R6`86Wk2=GajrenV07qqM5^O2h4Jwr$W&-5LG za2kUD^+z6(hgBOPHc-Qt?hHWntJirw@YE)m3)1b+!1^)VW~TH9wxl|AsHCSTDeVV) zx8I)iV<#cCis`D^#@XmA62CHfSr&Vsn2O}$&oby1PZ@mdnftn?)B>T;%*i~I=une| z-in#`tE+P1=gr`~S2>BVEJiy(eVBNyI*ZwO5yK6k-1cm9`{&O`8PS9Uo zgxaaUEI$H#m<$nFZe6qKpFWjL1goH`n1D46HpMywwE_j*WK&+8M9G3l^$XLW@ve&? za4(;0C48x2`;%_Nr4Kg?8sBlp3SpH@%69k&(4pPwF42?HX~Y+yZ#7fVz)rk&*0}xk z1SivYzw7^8EejOql1S+zJzN2LANZ7%2+m5Ye*76ZN2>KoBxhqEyGwj_jRA|$B!!g7 zvbK?HURp#YdeG!M_VK6HurI)W9n|_ev(-uGfBQBAzqK=Izlgy2FNDamIpDwle2U@@ zfRS*RhC-}3rim5?PX&)W$py!w^b}HUpkLasrlG*DHegre^R{dP#2GLK!N>!#7vMlD zdT?WEgxcJL+;0k=>lJIq!A|3CD(62dT=iaICoRPKU#p;je^>kZIBz6kb;*zC!T@6=c& zH4QVZQ+^V1AVzu}-3SU8UA(Grxggr<1*qaqO#&=(JnATM)_B@K=DYbo@8qL9f4>UM9mOyTe~}?) z+MdjBZ&pzuL*jufM}I?B`jbL|pg2?6mvIdZ-??5;Y)!mfo~6L;v^AA&DzfzkE|5U- z%BkZ0TW;xkS9a4uT6yZ90AU%!*KNq|wCCL`rK&KpvVKOE;5m77(9Dh=otLH9Bt-<6 z=hi~BF+R8tMSt~VX=l;i6M-y0x8~!(KLVq={nhbB{Z_@0A7@4;mJC3Q*46%c^O#8a zXG~NzHNC>aEe{?fJ`&7>C;l2UpY;)vLtXl!A zThLiP6VNa~fbs`tzPE9`z>~VVHH`=Wf-w#KeZObm?(DPGay-;DCm<<*Wiipp%RRxX zCPM-igX3_z9@r5+Dsp8sR8) zrF~4G{z66$cqP&s#h=OeT+6G|Q2O&WkxRNYn$VsjYW$?E!AzZdUYWTP8a{OkobDcRo zVlZe{-8ck{iu{tArzR^xgB*)2EbaJVuZ3@DoW8RIv!3qXmsZj|X}N!| zxxRen6EM)X7j>WREy;1!tiO1=+e2=mNhYi#IC@>1n6Y=El-2#XSQ8i=*m+Sry{gdv zF`37_%@l||Y4B={D2qQsglce9DhUM%e{`v%;M&zr9Y^Gi0>&%-mdB4k6WV($KsXv> z0o27H{*U!>0L#bKaw*hGLnidZE-M&l2d z0qWxixZB9rJQPJYugo5*+!lZb(-O{0I&7)1h6+gn`OW4X z>jg{;jIrjbC~z2Y1cNH5p3|i zIl#$fg0pP~d+Y|+2~(~Tl%Kk&?>?AsiKbNX{~{GFYC7h7eyP_0Oze{jx5-3x>pstC zrJGn2J$e0>AE>1Urq8W)^q5?kjWT?vr22-})N(;u=3QLLK^?Y=Ep8eUE9%bz*l^7lJ2dl^`@y*o(*KfBggC2EtCLC z-Cgdog_;l=DQQfIwp9WF@T`eY57b&p#32nIB*q%5lvim0DHY?PC*%8b|7C>Qxgk0> z1|!<$OD$CF&uH_Wb_ijN%|L$_c!kD7PxwJ?QhOXw@SN8jw>+0VDQHsW>C+Q%gVyO#9gLUssymrrqBIKX@a%% zq^+Cfojie;Fdj|3PrIjM2Wa^&WB<$#w0xG1b3!<}2Vw3)3UL9Jq6jrEg|R67f*0{X zx%ZEq{K(xI1z8r{uC^n=bo7WU3N55<5-^0QPx#AjS7={|Gi6lZJ4G-PVQoqc`MZ3k zk`E=wBm$@}*;+6=XW1kOQg*ogo~@g<6GpOmOUeJv7p zlUu7@lN%0Vej|VOJJh~dl{8RPhD zi(s4sd-OmnXu4o!D%m$@@WCP4euU+TZ_ByA{{*Z?>zH!ybr@#PKmR4>yGta(kV={pZ4 zcJ)bscLrWjzm3alt;>mw_b$MhO6C1~3lU&B|AV+~q2!I#^v=%*d&F#fz|(tdj0gq- zo|nOFxKP>thH?$X9~sfUnq+9ve<3o{{fzjFuHfxQ0DL7zuVkC z0LMc#XBj5uaExozXE28sjRG|w^>{q`NJAE+OD4~NCD%oTB*wgQKl3 z+zU!prgFafZ!rxbECG<#!xz?@KKWCR%7F=z0&W+_m}0de7!yDL1~wyo*>E8P+GK6t ziiwarT?)5C)T5f*CNYFW8_;~S-EnI(ESH?4;BzJfkb)HpNp@&ul8lJ)iC+%|VA%2Q zpImSK6)*D{1F-+MbIW0D8NDp(*?FkFT0M<7`cW^?RxY$GtWHok5sjoH6qjeh!)73- z_#!X6hDrKZ+BVxh9TXDmO)32ho&e`!xSq!X=6pF{LS6H zxa|13$PZ29fEm#nt*o-jHqHIBb;Q=nQQHsgVwJ4g**Eqvvo63DnGksj>0$-(-DZ}_ zk#MNCxl$t@A9?#uZ}<@>Y!F6yR9c0()Owci*^gT|-r@u)_~Rlu>f#DNxtQ69Jh%gUepi1M7M7DNn-?T;340>_9jCg~78Xw>HAe!$T{ahgDZ@Is#n zVx63RzG>(+j@jG;QzD{3Das1tm$KdoQXsGfXD5h06Kf7I;y0~p%jCa4(|1FN zK=Jixjvvuq3~fZ162<5NRy^L|O!AB_@8E zIP4oiJQ}BLP;-tTp4Km8D-2{whQ~D(bzUULA*8>-hFvM&-O~O* zpt%xt4iU-w=)Mr7@swtL<%KxCs$cY)Flk%UVtc{*;w0dx@9_LvzoXiHEDKekAYYt} zk)VdwI@W|-BwS5{L&<_O-3?=XrAerD>tR{^oe02el#>KilrVz zNDSfv5iH4Ca1KOBe3}w!Eht8n%-G}{88UPuqve=x_1)77`$p_8)_#elXt_9Q&#F7dV>7OMToQ;n1bp?^X#K49 z-R=9sn;O~z<*;86$zZseZV4|vM6mo#{;2!#nSaT5x$sx_f-N%79EhY-o{Z~BUHKE1 z%nf{OXHbklL@7649xb20`mp-FO-1s^$Zw2lL9kW6zv5s_f4d@mN-HHlx@5;^lMpF~ z)xHhN_YRri6%EtRgzMD<`lcf~JYc~$~)V43w{8#xSl^|nZi`cdsnjNq>-6iqBP+<{;SQ< zuHO7(UPH$VfhMal*~J2broykJBf%FN9}8g)^&+1`HZQIYpJBnrr9Jsru_Sjz8|M44 zy58bskigaKlD^G3L}eynVT)l!spC-g@5Upa->zZq{@M8O{G6IdZ%Z7jiw7d9B|u)a z9wKr%%%=;D)l!UuZld%&Atcpt=?$T~4EkfesF$e( z6PmWVkB<*Dv;*#JDo*vvE`ruS@Ds-Tc5ZjrWHFuDm^7g5xbM{p`DR5(&fxl}vnT`i zAnljWrpXd#!8wL7a96M9cVan|GU>3e`9rf|=K&^v#Rlx@9w?qaFD7aK(|eA1ejBuM zJ@fVHjv=u?JYc0veIb=Wqn@IEUd%$pCT?$;!py#xtIts0ih?e=1_`GlE|5PAjclP* z=y#m#4$shM(7#obmww83`@6}9<3Ae6Hie`5y=3wpYw2?K?pDv)ABWD$-V$_lYG=+e zvDN00tQYIlH z!RBw0Zk6PR4Zyb(b2})qk9aaUKie=$5whGQ)Icg@f5A$`wDZbk&&OZU z7m-Z902iC!iJAk?8xqo|*!3#sm|}l|e{Z)PPu1q!9aQq}0LSb1LV%3fo3r1{9`oVD z6i|WLg1rP4F}A@d4eEnx65&Dwg7&R?O+wM|FGxZpx`f_aGWfoziUlWDX)6h(L#D`GJhoK$kkiO`a%{SGCx*gFM{dyPAgqq;FmdhrP z2mhjFRwd!GTxb82ni?`S95;d=FX*2)QDkzETI3#UnAM5b8>XNcU)VW?mOWd2sWQn^ z3STlKTr_<5SW@l5!9tIOLw|8IPd`_jkJJu+LN?|dy5nh`?Njup9vustTumai>nA2N zBn?F`GoPdw#)^t=YRYNwRuHZYEsB!}pMEZ%C1GL48F^%!W8nB<@bT?Mf>#%#`fIec zie%L2V0*q*n}`Y@t`Qiamrw?=@kONi>W=#cSg7LHal( zGJ@7!voV|y+2tejBuafCm4ALZ5F|w`xC;lCWN9yx`nG=Ib#@VP%-IET>%*&eQ>w>{ zaum9;&f-zFGNe0L#X03ehGxYSc3!lErOPRyOOUfeqG*F#r%G^K+eztw! z&gfc8BvYR@#Fi)l+bYh!?PkKsT_Y^)X)4vxOJ})2B03w|T%~rwlAJoG1HS_;uanz- ze4kc@dMM_!8%y&3kMeKpDfll@eRhBdF?`rRUQF?WkJDYvCBw(h{C!uy9_PPYx`ndw zES#Sw%uHgk3m|l2wLkl}Mf8>&%_F!WwG=}de(E%@MwQS*QKg(Y2PG`|4RXa-KGI8s z*WfiCd=_ZXFL~l!_){_}Q4-u`LHIsjOl{s%5I?mt*NB^z7(}AUHJP@zPzO+6*(S#- zNDxp*z+EIjFy=vU(4*(6a4vAwl3EfWD|&4bjL&u})FOT|LC}+J$e1A;bH1LdLrjnl zJ@q`y(F#OJo6kKXjz!3f!V

T^WPyQ#|E-tRYwg!1#btBkyuj}&T+Cce-dMuMjMGkCqQuW?o~~ySe|0xoP@R?j3+Xc}xSDS^ zIh&xw+yIO8+4nUzS6}#^Gb2@X*^iOU=?2pRffO3d7Vz@-k6Dh$0!NW6PYdYZF zv4YwWArXw|bQ?ZR73!aG=x0~I@^8{AJf%g?qlcg5RJEmuUUxfsyvJ0EdGeoNF3@b zI0lObms_0-4;cdg(!qtsToS8g+JYs=}oA?(_iVnHG29(}bzF#w`E>l}Pa0)q<%wp`{hf;1 z(R|>mSp8jt65k?Cg0$a^2T0(XdTo;NZ&1){y3C{kUeZ;Q(06&IhBIw66Anq{$JbXW zl)%pKR9tmtH)Gy*VJX`fRFs*J!G`{?`)p5kb_(Wa*xlRSY5EN zH~jtB${6ch>QKe)6HwM=JQomGeP!!7C`b65!9F(a(=RmB#WUMiFqE%{S;gkMAL#EX z7>EmmNTLP&&=xu7pQko{BqVhrL|c#BNH%oJ3%o84%zqiM`&z4Nc6~oqaErA0&(Ek` z+=mlf+lxJaKb_~h;=~0-8A^}U_#vRSw&cXp)})u0WlibWMM3Wp4{0bwqo$D=|A{-l zq&-yGm_}C#A1{Q`)xV1AQo+cRmMD2YGHj+fRrSBr#5cxAsNrH5h)B>pv^@_Agn#&Q17T>4!7?TTz{19+@k`!OS ziZ;qx|NSb!Ym{$!S}ub{0Db)}tL#lXOPxD!W6D$3k|$dF3m3gIfSdb*8L~*#5Imjb zm!V^1dng!haZQXR*}K2cmI<@ybFA;FYHG5gnC>V>@gQ1=Q`MAf%tg9k|?cnDW8I+NexORL0rIabp*=j5nc(KWQkP&vC$X; zLwoI}UZ&A$kqVer)naWuDI2INuB#o`WK&)Vj}^54iE7V18-4Xb^ek=c%P$z-1dv+p zg4OZ`Q!1}w+U^dWtvwRafBuJud_#^#y%)F51=-MxcEggKdnEXcVi^S;I&S4AU7{!< zjwPuDlfaTBFodb7_jsk`^JHwe+{XS`?RVMo-OM=uPJ{_ZBf(cbt zH+r2=JHGN7l@wEJO}r+~z3ll#U?tRNqB`ONsazNjBV=*#A^9z7 zA2a;C$r`Lm#zQif|K!kvkH5`|qeH~mdr(xFqJs;{ZC?{(zg~v2O={-E$sEq5mKm6E zE0OOod&2C(7aF@^lVR;Kb|PF7N_TbRX3GrhEAa7*16SJ!KhOy(k$XDoMKkEXmZx^~ zIMg#W|1Em^5OB=v5Gs$t9W~K8hK^p-iB}G*nBC_Q5&29%qc!)<#~n+~B9y=V@5uSX z{p!R1&EL5>(kz#*$2>wpiZ_>s1zpfaK1EoPL>?Jr>^pBXgn36{N}Xmr3LjH6AMJH8 z!^0X+C`n2Tb@EvmBDWiYD(}=2co#ff6#lk=9@A^Ysw^B*t|RnZK)r!b^Hyn+ z(~Hn7^JnFu`hfB(F}NeaNGRv7tiv3e8rY>KCLy0G-4f3u&3BWHRDTy1G>$?CVW zCz@#}%Hz?{mWO&o&J!#P1Z^nn+kR!sP9#fZ?tWE!wo~hcj)7h{iO!zD(|QAh<#_w~ zr#k$(xO4n^L291RB6jYq%?RPwyR2U_7K4Nh7nUT#TCyU&=bvoZ`q)8Ra)1p$CG!A+h z197T^jrfr=H1*Gu*dBB$i>0J^L2Y~pS5c=M6aB*QVMOnfAKrdmP@@)g6mZi5#!6(wdu084V# zv*bW%5Mx~nBAEmqcln%Pl@N`#lZ~4l@uTK-;kYCv1H@CA^nHFKCPmz^eLO>&Y0!Yc zm4AN5(W>g0pl3iNNF}mpc|_=@w^p<-qPZZvp2@;`(isOnXSodQaX87Xy*t3|diT@I zfEOZ1t{)13eDm%+A?Fqe){zWc-OW8v@T^=^zPq@+$#fshqj3KA@y!XGEl@63&Vwkxx1L>z_f4FO4klKUMBw|qqmKFGZ$=-~txXhCu zdQUfCYL7f)rNp6I;u5Kaemo!H97QzVO(+Im01yhmn6-Cu%0GQxTaO_7&eap_7AH@Z zN?BZrODhq?1(DWT>14?4oQI2&IstO9^TftSc6C)x;(IjpvNaB(*Csxc!o!I{ZrVP< zR0q1i^iB375>`=7Trk;Q)lSlQnnw>wJC6IIXA{Ip&W}5vTqX^!GN%oq zvHAvb-GP8C^-QjgwCL(k)!l*H&I}0sZ5bb#gw=6BSNyRLg1Nv)m6`{_DSFuxfCZy{*)2S^X^gX;SR2YfFeRVxsuP5pk;s}&b{%zO>Bg_nD4(l_R9XBfAyb@g zuG8njtTxKD`dlWBX*MPZ{a<2ci;oiFSW^28ay>bmolK>u(U0GBQv)GlA|Wy!P>`?K zUO@ih3}V+(Cq);_bnjDBSI4j!66i-W0JK08?WJyROznBL+;+lHnB?sHI*lS%aizVA zv~i-ERF2B8TSuK5I zeyzkk!de%hvxw-?bD{FQT#UbAui`5+Wqlr{UVD7n(dHfNt>0nMNMLbE%3^al_BP{JXo9pVNU%o$$+FcKOeiZK?yD^@SeNHC?w&?D<=iC@w zS&#XxoY?>$l)Au&_tzIyfy%Gm9Ua`qhVLY5s^l?>>?$Ds(%>zDa};@4sk0@>@;hqE zzq(&Jz5|<>3Z5U{`vKP=oe!Ubp25(m)x+p`!Xf6Jj@N>`8vpQSqYCXM(f#iKMtFp^ z0ocYdPQ&{dY!bepd8W^kwiP-(xaa?5Ms_S0^(FgwpT(V4%#pX=B^fv%t-2Jm(jTM4 zz$c^H3^-QpPG81|k}yLE08W43X3O9Bi#vuW?QvhgQe{AXH?sZrd#ayZ?nb%18XDlA zVXai6wP954X;+uenrlOZe5+K2>Ta5$mvV3>{N^8)H|3N1P9u7z<{HPs~aG_6(Yg>!_*7)hl0e~~ea;%mH%pu_62 z8wg20cSARogsTytYD`!_i*Q!2(lS4L+nd{CNp>#fGGAsi%VWn2Zyce1j#|vaQ%d4wRraTb~2OTm&S!*rrA&Ux}OqvQ=@%h%X>Z|r0x9o zbmALdHrWwEq;z+N6jN(|I-Bb4v+Yzsy5!E>5a2;c9MIrZG(cOoP$5LJjfJJHoDw1D z^`pz)m^*L^b=2d%i}55b=oF#TU&L83)8a}_c`Rn50^Lfji63I_)8lITqP1 zOxVeJ_?xpEO5v0{lEI&_?Q_0z)t0hy8vCx$f7-V~uR4EwH7Y9V=asBUi`St6OTShJ zyOD~7&1qVvV!?)Z~7;`s$*<L zX|*k@!EsSmI_v3|_WS+zBib1{fwN)mU4Xxee%7mogI9w4{siH1@k4h})M&#TYvW&& z|M#!YgrD=b)4uG$9KgqFcv>DLN2m@jlo80|Xjn_Y+&@!*OeJ_Cg$ zG5XoyUhE`i;n8HtKtQh^5h=-X>k`;B~rzy>4w>*3Hm zIFv~Cg1F!@Hw1@YJbsL4givAf?}tc<-&eHg>mM(KxA?B`_f2V5%y5>YKx6_xG#2L2 zP`wapp9~3?SiVapb{*Cq&UgW_?0*+D@SKhu1wC)tj7OGpLM!jBVi8Dh3zUJjy!7cp z?Z}L`xxGxqu;IUYGI55{zCRhbdAwd-=HbKDM8aOrK92t>!XKK~Ys2;&OEMY8`uIrxWe);8^^|~iu#0ML)}8e(f-zhE;R^IU zV5GU_eBalF*Vhj=Zts+;2H0J#UifB-p6B7(uIg6J?*4l_e($}&il#-;Zz#ka_(tEHo=?WbzG2$FMG=MCEdgYR{g=`7>&xs9tF?8c5oW@ zXGC9!^Adz;(NFt0auJ#85X+dsIly69Epn$%0VwykMa2Da#+xXBreKx+U4NnS#l$Q#R6+7?x0!Tb=320H!O^MN{ z-KToAq50$p+m#XvCp8i4&;hf=SB%%#l7bQf-!o-s=JnpN0~Gg8_l*LDCIDRX(@2jW zBPfP0xgdv|t8TH%`Vn+W)15{3ohaQ=-~}A5w6@%=_EY(>em1C&3}_uKIs+~y`5L9t zU>Knqc&)imZ621i5gm2adK~bpIqc=~r<6B}x^H~w{qN4td0KBbUlzYQ{#JWa3w#%I zM#Ua(wLa8}3m3{juiI3w4$}$%c=m6 z8=mJBfq^)8hqHkJJw$3xdQgX96%2ut1zq)J3AjX`%Vr3XU}5(LdtB3~OetsrnU;}C zTGT8zRJPOw6I`|YA057>JC4aK1c!&oj98`Ck|sqnPTAw}Z-+|7$2fozKtl<;=Jk8% zS~%zK9hKa2@cTC`Ej;KB=z@j}M}CyOP^7ytfZT}-mP87)pfnV`>!;6*ei0#k7$Ki7 zQ(YsyiqPfHuqE%8+!FG^IB1$mdzj z5^*I#Bh!cfs<|MzpH*L1N|ji=oqA6a{K{)rFcyVqL^-K3e~Ycxo|wWakg*EXXxLr8 zDKJVnwq$3$lKuTCIe1YzR$hq=Yvi623*6PcOy#gT?$FK4nd@7_(dvP^Y9@B2qeB7W z3-nNefo^xV@ZDWon!ULwD$i;4!P)5OXtmZij5L!59+mpFp|N83-V4p1EO>Z#2i9T* zV6Wun<3c`SKk@P%6&+1Jql1A& zyKBA>LPM8y+ud`R5LqAjnn?G~$7d9Fds2TjantVp?rK%n=;6P^tn#V$*1d{HRNBF& z{|&?Ha$(ZH+REhNZmLQx@69ct~+`i_=8ARjLGeT-B+N;3aJL2SxMg7jg&zjQ|W_$5gDJx0w6zvW#u)y8u5H?92e6>qcUoc36;843$;93bkcOTNI#ouNh+wbZdkcG^I(&$rH3@t>*y{I@#0yXQ}XMt{xGDfU!Y1dUyvgqrDA;z|6=gj z>!HO+C$P7)^uN}Du{rxZ$@2d_aNh8>HRe5N z#0b>;4S2ukYOiyC@WF1~cy^r24|**TtRA{K@KX-wYx{RZI(=AkF|3ctzDn(V0Bf&O zDCuafdt(vjQO_`ws-8{#+MgSRQSwEpuU_re@;e;g{C&9H!xQ3I&DGw}?rp&$-1%=A zR{<dvI2fmUlF9FgfkGS&%#8t~e`n5FxZ>k_7Y{O?S8; zXDV^8DfU1s9wD^-`r2sPn0BUesR+(dk1csaTri|5!K7tH%47hn@m!uhe>5g#tC>O< z7DfBpgA6I1#oH1O8x{|yp)OH+1YpM6>W$AMN{2jWWv~i6LS(RJIBSNV%OLgYm5lur z^(YyzjKk;O|4jgZtI@*%y$WzeB8i4-RG6>T89?4iFOEcp+8IZtN_nx%JHVB z>iMk0o+DTcGswP#ZE@kk(`(c!^Q!n}JE&oMYDUD}+X5+>WEY&*2j1#I4oSNqfu zPn?=e?gm$L%T^kwr$c|EHJ*rqcaJ!Te~w1nL22ezm0}!58J1YsP!0d`Yci6v5Y|KC zUn$S|hOHAEq{Hj2A}~b2n{{%Hv}aJ`O`;!xWzJYYx3WAw#v8h_%1*Qf5#mT^Z9k-b z(N)oH+_;4DwH!>jv2lv@y{&Yt7x7jaQkP&dc2E5U%L}F172DKN!q^ z(*LmyDo>38Fphp*FrjGqV84JJpB(uHMFE4_pO0Mc;_0MW-R9qgKJolbbI!=V!?M%J znoH^F`LoKbxTXyY^wb;!mMKD)?o?CYV0J==)MtU5u0GM4G$L@)u~(V$^J`myyJDgz z<0jLigXhRdpkBOh0XD7;&I+$TR^4gaYTmCj7jquV7V$W4z4Br!)~V1lJq1I3+UI{E z|M1`QU|jzodceSGa9&kOF>-qhwm`d{N2vPK6wtClF)J;jCYHH93$At(xxIi7n2l6o z^0KOi3+@!{=Wv4#%3XtK8g$c#RcVUuNB~d)qCY3e_Y!;I)Wx_-E^L5CTeRv-3TG5@ zXhRqL9l_Wt4X|t6kq)w-0#}h=lHR`~=y8m7r4*f#M3Ls8vc-~=_D>yt61&0CD|oTp zUrm~&@6d%!?lGqII?L*D-O7`SQ-PMP|7odfpnaY8`nH zmV+LC5DnV9N9C~SQm*PBJghVjqLE0O525J@41ispF&8@Ayfb6eGoDoSpi%+C%II3yyUn z0#5}>gTUPx*{`xQQ7KM3~NiodDAa2w@v=ky8|RnJJH;u zxrhuXc*d;w>dVY?lYi0s=`UYAo!4=bIZ&Cd#Nw3F9Ht@B{4 z9lzsP~EPcW5O1tm4Y|91`;L!QJwEtGew`nYE>gK>h?lkHrO6|tdNMImbjDu}=+Zlu{%PV5Q6qeR+j1HOS)M}E2t~t|{=`-8V%yE5E-d>Vn!(4kMXfLSFhDOlPWI zL*MTkuI|x7WxJnk{!1QpT07Ir-3=Kx`grh5Np zz0z&mmD0DHVny8C++05}i@mb-(x4gGyR|&L`Rep6;4EXcupm|_GGI08&H4YA+5aZi zEnOUmxM^1{C@84@V7=VzS?9FeJa_zZ9Cs1)av{q|S)2`lr`oS8-KN^yeLt>T zRJ9lRQDyDlV|!wuhsc+}hS%0fF^x{WOu!nR4*?Ir^IB;tw7H64oy%bOb67dcaod zdg)}Unw~+r&0V9>w1sX{kp^b3i+O!+G(3>^Q%b zJ{>@E>qsrN@Z*0T2KxY3VY~gS)f7t}ya86+0zHRx7Kn1BYx8OMHrXPDAK;6Q8`yu- z$-g_>yPD4U_HU4y{I;A;V8Vz@{a5DR}?iUS(Yml4W#v!17w&DneueU zywyrcl_uI%Qtl*n;U{;aBG%@2mRJhO!Zg%-Y^p0fnAwl?#hcqWcEpBx#|5eqjmWE# zl6(djnkw{7iFx)^ViQek4b9+jBd|J4PG&7Ayx!frZEKHBpU1nWRKHJOikMWC_4U8` z&FaJ5Dr5d=-!7o;k{>R&d_Cqp4t%)TO*N0DrrBdga|V;ZYhYKYYI3)yYYU>f2*pr> zicrM;(eXWd%geluFo0EL2R=+Zzx$X>iS05WLo#9h{ATW`{pxU0&gAc)ZUvP|@GmC) zQ5X+Bgud6QZteC2x8V}Zp5~6&cK*on2{PCvum)3IOCv^TnBoFmHc&0IQpI%-a8R8O zaGtDj+(hhNld$`55DTaY{IU4T0>3ymd} zZZnTKEJ;1+2&Y6mP%92g*W6BWD6yvM!@nGKRoc^h8-=5pYFl$MGeV}+pl-wkW%*dT znMuQb%?BC6;0Q0#<&DQ4c}CZQ1cN0xa`wTQZ%|Akd`Yc~PL=RNC*y9V-pw|*M~(cu zBqtus79-DNghAafmveZzoB)i{u}N?Z#RCh{gFpjNxyeq?9Hm|Xlh(7t-pZEpD?LdK z8sTPZdrTc23V{01kr1?;&%!+OreW5_Q#66V`SMwgry^#L1!urh3Li0Wg zJ9~qvAQMqaZyUVc1K3Yv!e>g?vw?TIz7IF6s>koIT5Lf@6;P#LYlUO%cUbT7GlJ18 zqQfP{_GA^{9ck9t3ad9OS2k{LT(!s05CGGT@Xns!9^9Udk+iRR8vCw4F_}B7eSUuu zrW5-)NTe~D2w9ZSByEf!&cr=1gg#__l%jwnYR2h``LJV_!yr#w*80M-uqEG;6d!P5 z&hS`rqnlFt(E=ayVU&I&W8;HEFiuN{4MVyBK+ei4s~jc65TZL^&A*VX{)ht*zxAR) z>C9#rt(X)QX7W4*rlcy7Y7M8u$&EQn?ffQg!6)Xn-Du!tTc`oIuR_42a1Ek$P@^UQ znTFgPq1jkI9h6BU@8*xmLtNm~;K(zupKV{)Tq&TD%gMv55gf~C1;~B%lw{o4Sdu&s zs$A{^8VO^VH`+R7|EHV5aI#GVf%b4kc z0v=X-{{Lp^V}bW)9#hKv>g7M0Ob0i)z+g%>f41$i{=9j%HFj{bGrRI14-4$C1(4wF zX+K4P?D_wZbe2(3wQUqeWMD{#ZX8ltx}*kaLFoqR?hpYH7`nTW7Le|glRB<XIwm0~9(cgRua_rQchRv%uSUfN^=jJ& z!sAU(;>!ml7$s13^z=DV!~zqYQN>3#@2$ngDf8EW5a%|TMhVO=Hk%`ePBOH3m;lBr zzJuf`6EIZZu$92gFZHM)v=Wbn z+mT~L0$4lK^QA_iU;WC+AnUmsG7P$>ad3Md(=vl05jcnZZt!*j0;<^($}X!(wsnE< zKbx0NZy3ojw4Gw@|KK0!I9}HDxi>ng2scMndiTI~NRy^198Ab^K3Hua{hm2l&a zwVgw~tSQHoVqs0jYCm#tDrf>fxBiG9eQSyZGCIHA*Eno}fW8x ztRYpxUXCQXw%3HlFB<3%7DKSwn9fk+b$_L_#Uj1DAaE$q*{c4NF_IR0bffl` z`jQJDwRzRT-P|th+KH&42t)%q=sJ#6{>wUj1E3gLWhKFt6qjYd?|+eT|Mj#LT|$@~ zY{#jbxH|T>`n7Ptrcgcbg+%sC3S4FI2t3$T3li36u^dr%j8q*q3RZ7fU_hwRL%Vlf?V`MA0uPXq!h~+jMuz)p+bygW;U{{Br(Q^9h!=Yv* zLe7@~1_*1Zn`rX5a6mD&XnRg+0Wil%zmT z>kNC?QPzze89p33250Z1ht`Oh8*@iszw9{q!rsp{%^U*)*B94Y+4`+?C7gb7%xjx# z?yrsYl(yt83-tulV78U7fD)I)z7Nw?{He1Mi7MGZyP z1i*KyYZ{0|BNAzD2Ht5n6t{dnv6oB|vcC6|8Cu5J4sr06=Yhue2t?FVh}NP5gGjmS zn%*H7)w@tCv4JNqVPMqs_9Q>^%${#EKjbk>zFR@`H793t1NG9umdpK{jfC@c&3E2; zh@5;rL-)p+@EUjXzWY1z?{;EkRGRw!)^_vbmEZ7tqk!(fbqq6tpas+YE!@QO?9}X+ zsjuBR+wW`!B1taVNWpR zR#)uw5pTitHOaelooWT~*ykiGEk%^{-@KlVH9F0n=hc%Dk5_rsk@17{64jL!0PBdl zNAUNu`82U90r)Bj;}r0UROOo(`>J0*doJITUYG}$KIjC13SiT3|B7DuDTi}> zstsozRDF&sXu+2Lv31^cqO#CS(xh-M5gegd8MEk{XM6XvjkBBb>W2wyKM!n?2mN4! zPF+ZyLAkYXqL26yvUMy)Mgh96A3PI{s2Ja>-&N^g6tFYdhrD2BVlc*&E|*- zGc*;bR=dZ6ml@zw$v4B|(I`06K}jm+2sjq6pNh%^mf+2Dh))nWJ!L&ZTRI>DZxK2c zQpLXt06FfU_jl&S>l?M!?G$}t$%!xG5`M^Jh|)m(RQ-!koLGVE;Q3`Y!SV>xb_HyfDc| z)rBV;;iY?~AF!naA21N1ry-z%O!T2pDNx1IeVZl}$Q9U=X7h`KI&!KIOKR~pLLhA# zHx(1X%+jCXcy6j6wKRy1-d9LpaSe&5E4mU<)A`hoM)4#$;rVeM|N1PHxs;3*8Ymn$ zQjxssWK(kRvxQ3=wtrmw5C8^w;eE_<1hGqMuzhyfmWH6dnp6*Tla{TXvw6V&)RT?< z(%Ftt`0A^WV0$b;g2Ku#!DOHnA1#|o<_8%L^0 zLE*;0u3pT-$c!Y;=xSREmR~c%0**{SHM-B$W^1BxaPdoZdVXc1GbQ@(2($%e0)o9ZtFHvtSu1tQCGy#;vGSLj%+Re%iC@_* zLT!x95ofzT;D)y7&#bHj+<7Nw;g_sr9(LH6J-t{`dBME3CGmQV?BrkrmEdKA&=%(t z_@Oi0o?VN+#KyK>G0$aZ+Bj+l6Dqmmkg#a466r!DPOp5D*td9c5uy;Z=jb+`v3S+wh@6s?pWQ2?}}K-GNuKIV*0Hb#sD0j5e6UE{pPkZ2i10jJRjAcWK2y_AkYQIkHAbN2%$3|CZw`uQPB zazi*Z!&#qR$WPy#%GP~WZ@^7G2Oxk|Dp7s>BMWSh;j;PxOlsB@zkh#Ma{m4vkSN*( zeiGsm_)j#ixcK3+_H}{@a7w^rP$Ik(M4#U@iHM#+FyG$M>NI{#ROX%fz=>>qU`4UzWI#d+LuTngCmTG4vIVRQNcyQyw0Wsj)UcFl20Nw zk}pYJGR;nyDEny0Ym7C}xffZR!>046Bd4svIm4gQ>Wd{_;zkeZ@0SJbocX09t z6~49>sWrZ%q=>=oDv)C^W@oGgEUJvdVMC%ot@N&)J^lwk`}%&6WdqBMlev315!bgV~_`4lAw6ARzk!z;ZVi2R{z$CW^E>PLt1TQ`@6B91T3?H1D01$m5pX zY;n`cD__>s5nqy=z^)Kn$~~ar7u;V<+>aXOFK-Z8))fQlrZ=BwJhVBc+Kg`BZre?MsYzFd&}wsWt7a1ko%##J zH?qrun5BVSyDAo2__u6;VeOC)a)>auZ!lX6ZDF~+osNg7AcC6w(IKtX zA&uy*5b^BWu@n$Ro>lkL`gTV9DfI~w#xf>C9+YM*(`&<3?EE$0OBg$c>_;D+N-w9H zDa*{EW;!pjJtM?P?A;hbZwzEef`W<_X7omJq#QXZKDCDPu*~@PdiX~MajV+lDhe~S zr;PLgxMx-7OnKFHeP{oz0R$IMy9InTyq?$9I2DiZN*3`gZ`BVTRl)3-S7PgY-ub;mbX*e*l-n_MXXH zl?Jw2VggyY2CMseFzNKOwd9;jNGkupMk*GN542UwitMMyoc5S$~b5Oqye zB3&XPbbXi&ctN^-Z&7V;A|beP5YXKoh6`Fhr!P-`p17ux;% zY4yG4T_G%J*=^a~k&9)OP702RfD#9VR?-WS9+MCR>9Rt-kk!)Ce|NiO(M_@yNN0Ql z@DYPVG`f(y?zAvF?%}cBvVpRno=_u2U;={4vm^yCxH)9cKrxfK9XIPJ+&nw9wZF2L zJcy#~79|iIK04#gITFCg!)K-NUO%&-AvhJ-YqH^6gL=ID*T!K1^k9h}@N2F{DBD_P z5jSUT8jso7raldDpldB42Um_98f zz`}>vOFH*lLU*GKS zt(^C|yL&f;bn@_!edXQR7?^$_kdd8T1cdsGjEsD6gPkPI{)r}XR6jEakyZ-0%|j#W z5t@h$exMhXU2CHDhayRE^7Pg~FC*_vK?4>9c?)b9dBB;nVfIX}?O;R26{_1nRNSQvNqPrnF;d;z1SPAuSNJBm zE)HsGu?K2Md9VC&aSkW)AQcCa;e_4(oAQ7U1w%LAmyDdXyn~(H;iV_SyjVjKtBk=GNmt@U()k68U{p7Ys=$zUNQG3UgVVVoRP= z0lFww{D!&xdd#Wl-`&Z-qI&}_xAS(S^N_?5dC$O1Qm*}$y*ZQk=O%KqS5SAWSi>zW ztS|x2PJ6oGXYQkq{*WY;bV{p-*u+600^TNJm_5;`5ZbzUYaj7UVP0r1c!)YtB;Ny| z=K8?sZ~hLXedkOobvyX+MQLAiIJI7u6sc2q(Zou^tx<4|Ez27OQ)EBtCXUpIKy`GZ z)v^~kM{AnBlExw{ur3!bz6+fB`n4UYH?aGpDAW-Ye2++1tH$b~XE00k>CddpRLRru zSd%~OQ33qOlQs*7FrwXlm+$ay7CO%f&hE9~cv%;sPtkx#cCPgBdJDoHw=urzk*bNN zbZQQ<+9O*+c+ZE2`=ujmo=M#5N+Jdg5{0mO&Uv771G=2T)t?Fy5g?K2_;@)red;4|6oL}m z!j%9z2(9{08!vJ0i{Su&eFjpj9#pF7aX3TImR6e3Cdm{aflE7Q?8!knj7}6XUy(oQ zN}a7u;|;a^aW5@&pv)rUE3>LB8{;n;-c|P%b0G3CH-i6%YVnzf63jK|=69Y{@qq}C zGFU1?K==q;K_=V#^rHGTV2bRrXXS9d6%zOc0>T%9Ja*;Vl_w5LIE%nD4j+m%aN#gBLGGIO=pZclN64pMzXt{>I^ z1Pb!wflXvb>M*>Y!gzIG%Pe#-Z0g$$;-?_f-ID}CYrp#it*?$(3|*b(N;S{#k;`*n zd32sMoOpqT3H`MjlJ?7ns*iw1JN3=^?{+9!_2&*0)O>Qk-cBXGeg|<4AgHF}^)-5% z9s3yN{-cwp!2v>mgC2jWuVHXaheP98s#h=Zik?w%Guz5L5}{guqM}9)SxrD4NAp4# zM{Dm+>}vO-)wz0PlD`a)oAcALC5Dq-mlGUx&uwag=8}c0GXREwI-+A0N-jp)J}fC4 z+M;c8s{=asE1 z3bQCVU|^iQw5JXxH`s_VrGRFS)iQt(~3cjXGat>^eaWU3*PS=s0oc}P6^aSSb? zCXhJjZN34oi4n81-tXsKUKx0q>rl*|=ety_mTvdkVkUywM@#Dkr*Mqkhe973@ZgBo z+Qtr73KmrYN2_~EJ^$bi0_a*+f>6+)55aK*3v&WmS;a@ZyKt6Iqp3Y zh_DV^&>4}p!26C%fxT!$^3+(!VzZFhEu1ZaKJyboO1qF#BM1Vk?kj1R<8CCwwSe(N zn%C>de3!?ZGhH@Md~C%XYyTmC#hKY(|3VLw0l?e!O3%LZo*OJ_!@T>05BIn;-MPx_ zZ3|`Sg%Q>guXq(yCuDhXffzg9Q^ztX#MTy5)3YRv2;+r5^6S@WKy%A1K%=#S5IHg+ z-12}3Mjr?xl55^2Ebf;|bE=o=Rmq;KD;gFY4|#^AL4*h0VF&a8f3!dclMBF(W6cy3 z{6~^{$b)DYUZs}xmDoH~C6JHI1P6R5*=B3I5eUr17=TI@5V;}-$cc~G>zAks^Qu$x z>&p{r6aVDm+i;|45n)M2tT;*t=FcfMqbs_Be<}^oX{Wwd#$tuNC1HV@0S&lcVcJrF zQkis$>2O&uipR{Ma*)>Gl1vZz6Xcg^^T#)iKmi517{Dm!I(D1hA2jWOT7s?YaA*&%dj7-)mbi__dB4o_TqL;$2_oS3 zAwZsqgTj74BE4x2b|0%gOa1n)G@{hfu zvngb1SJcO}+ABvK#Cn(s+5*(!Pz3LTR9%PsuQ<-eMpZNn!-79dZ_-ASkt)(K)JWB$ zFXDIz`J@;u$S0{`PABfxLh#+3jGgJo{PdMjx6>d*#oiwO@l|8GoN4ZA2P$=c1~_A> z=@Wox6NbIGrIl8YGsHn#D#ML{OJ9Wjy!K4*XCmaWRB4C?f%GKxKJ5|COmYrQcB=={ z@C#`0`Cgu>Uny>!;#=nV67BdS8wckzn{QM~*K!Bo)=s6XzvBan(I`LmYg z$`$dw;eo>Md+KA0ha?oVfuPDGtXok`D{2#9K}gOUb%FgejPT#c*iRb_4)P>}pl=1` zL3Fed4-^okwKfk##UOcOU^0Me@IlOr7l>wWDjy}LmFB%Ta0j|+8EdrqypHMD_=)FP zX%SCNNc`b{&QI;{L%t0Z|gkEMEyH0^8Wc#?CPRXkE&43K>i3H`*h3Zg)#M zh_}|+a#vC*y6+p~K6=LuvfKHfjk2}UHJ*#Bk8x0iKQ_$K%9Alf2ZcyH&~&@Rei7Dp zoqHKVXDJ9~RTzN_L(px*v3fwgh<)ngC!s1l zFB1r^vmoU}Q$8+nSk9XDDDg&!uvKm2Yh&y58ZeUd&A&grgs+G?PYM%X?q6Ry-R(H( zJu5Y~dPl)?-aoIw_%HQi$_??zXx9y?!>DkcJ38>g>h|)H!XpUWQ-!9XoYTql{Hf`bFGH# z3>jXETgpubLDSF)XNBT_qWMeXveU*jtqRKkM+`L>g?s64@>_0C5}U{?0s~oGRax>N zc?5LzKuDTx!1vOj#Ov0(K~g z@e4Ws^VPF=t!L}xt#=*m4-c}aWWPIdWTMfkz_8e5%NPZ}o+Yul%9tp@C^~4~aBAVQ z%bJyxF>ZBdVA}hnG>VLzizkzq_NKhzc%)ZB8-(o)ur_7vxP;Es5JSfV_@acLc`nWv$6u%ipfl+Z9tJD{I7d{1QW zDhxhs@s51ovI&o#S3Lh+pxw1R^m+ZeRHBh*U-bFe(Tub-ARdZdbsUR|_>7cx(=5PH zJmz8-fb)peGr5rb=7XZibH+epy+a^Ex-#U}x6tB*)A?*$2U8WR!y=?go5LbOS5In& z!}iq^mxY$ixv#+h22bUXzK(=Vka&y=bx`%1LTZv)x|LwH{2 z8R{24FoVE_3bA^upDSivb4F> z$~XWUzNI44zI&q$wj;T$aJOCHE?3>40t^NUa=?yX?{z`8^6RJ4+Ck%qAb71v3Wl(4dS{dEBW))?lv=gt0~>psGjOrI(ip2$A)C|JHs zt&6I4xJo2q&Sb_Jl3nlrb2X!XcSf=#xc0-yucwIk{L_4n9NWNYmG%1*zqLgGIEw`T z7WBKZY+e5_5pD4*9fO@u?>w)pX&U$Hq(Hf>e=on-F|V$vyzxd*&*71yUIi=EL_EL< zL3U)Hh)Ud|;Wvwx}YJh)Easu#^I=^uqeyVBq0R^%0No&6z%P}T_Kim54f+e(e)es$~Mj#{O-o@>@ z_ddNm*=E9C0wKhY9B6asBW`;CDG6Y`YGu*HK@`a9Y;`sRJl(_$rZK)S*0AbWE~9)cq!4VO8q1liE1IapGZ(d<(`_?EDuTcxf2bVM}S9RDfbS1h2Yf#w$# zW8ngvFp?QO7Q^@Q273b9#g0k9eDq`-&H>$=d|%s(<}UXhRkb#}z$3u_YdU}cOqgfa z72h`+hqb0jD+K}QyMNKG>5~;FxXM%H@Z`%5Te`pQ@jt0(9z4;+Q|+$hI9ZK?!G$$S2RyO?-wQP*j2tqSb@zIsmn@9-8SWTY_d^61CT=shW>Ve+# z7Ag|ZPi54(*+oYc`lK>*?^;lsDAtO*)NewkL5be@SZT$S=-u6xe0mY-P2|?}8Kd%|CR-h>PdxT6GsN#yJ} zWx5&q>bsKTyS@{;cjojStHOduLRj7*g7JF>XZ{&ID^xnt=M+bZd`dVy4t{?79?0jC zS0q*nkDmlOgFfH~UAp`l?5NE!3{Te1kSLZ_4GrjuDwjDJNXR!gsrke!T#9 zu5+}!6EMf_m7mC^&l>1FA@8gLv|?d2fsT0wr~l+bxN@ZG{Er26`R+xvM%S-39J=rW zBe#=d-R+5D(hLo!2A_z!e}6~h_I%em%Kn_lS?#<3N*0`I@VjJRsy3B=JA2v1A!(Jm z_2IWykHe!2(zq~rT^&W#7@@{ba4NHicI;>pdT}j z=+g2LsznsUNRAL9WQ2BKg$WcgXu=3Qc1S5@22n&#<${HJFCWObp-CAL2My{LZry8m z7uz)iL&PtwaejalG13ZeZ5Gb4z%oyuf>;({`grkAhs(4(lw+K#MpW`H1%BZ~WLr(5F7@h+eiA zFeWk|VnN|`8=mYQtRBYdW9(yf&Zix#(}L0qX!E%w)N7j9V`dM5t;Zqj_Em)jgTT&1 zX=%&M*T|`1eHjMQB3SpKOg-!Rs9qeN0i^kvNeXC0t061;-ai7svLw&+*cvUk7|z5# zewPc?sqfmJU(BZazbC$r@Nqv_$OWuJSkK9=U;=Y8{)G{Yj=%htmt0ExHM(7>7PuEi z7m=@OQD)jLztJ>6=v4hoPW3wvPh5>`z1>&D{@Q+F?^;w-;3zu{u~y~xKk9PgoLwwJ z#?j*=YZm?Yqtejw5SQv1kf>g!Z7W{)aa zh46^p;XGfJ7QH1W(q>_f97@^0R1V0w4$-2C#| zv2Adan5ZlY8TZVSKN=aw>?32OR#=e&{o?Z5<2g}@Nl4}+CF~MkP=OneNDndjP~-5* z)bqF%@3Z(PFv;F1QhrVK{;&O|`o-Mb!g!NaZ^|tK56%EZey_Llbzm&eZljquV|1KC z7JBYg1L2r7OKWS*!w3TU`1+x#kUr}i&<&kwBSA=t@C6uf8^5*2JTpk%KYm^Tk9x7t z=k*$aM>0t86)F|^;irjn3;{h1)e9Z_aB;a$X?NHfXIxaLgx#KR{uGF1wB*zu^l zR86HPRtH71mw|RqN^6pI2-I9Y>rteMV8=gG2g_UVO9wQ*J4W)LgJN0h-FolrEM40- z$zO{WQ}c182r1cqUH7K*EQ>+^I8Ps7l^X9&-X zGKskOmqAThOkRtSM6hIa{<|jKA$_H3g71hUt17^F-N5`4PiGoTI|0=<+ z2ZN+QmF+#BU-4h1-s|bm-DZ=)HugBYkQDgmpFP+ZzEB8OA-Ww9Iv&6U4yF5vBmedLW0$|W39m%oFji2Mo$HQ@9c+2X4v&!>A5cYeABu!-mOCk|KRdK36-yk z>Bo8B0n-@=p{=Lx1VWx7;MH1CkdvuDV7SwMR4<-HUsc97H}Vpn$Ai^byuTQ6!ehP zSa% z{b^zj)j2Jwn4&P4T(MqSiC_SPVr|cNl7CkAdN#LS7RI1wZrq750YX*`H?Xfa;m$1a zQx7B23#5A~thrKc38RZt&5uDf!-6pvNg8@=&Lzwl`7&n;TqPt;Y!!?;1dURNFF%H7Jk)9=6MBUsyW~P$8H{&*_qF)rpLfS zVgkv#ZVhMKkehhIi8n+XWTHk@p*^hvDn=y-0O3g4gh85VURyX`#)@5mVMzLo;KkS4 zSgKydw&Vh8f{eOlLKbMSTgi}~R8tIs{6zYaI7qoDy{ZS)K7uu9$XL-RT5GOq_bar> zHhb?XM+OupkOvhV&=6K%wqRmPoi8h8Y?n)w$$_fP*VRlLryDblr;*4%F{;xGApku- zEf*NexHZJI7xctIEun3sD2>l+w=^OOGH?rua9*nQUdBQ&Yr@b~&0LHr;`60sO5pd0 z#G^-2e*!+o0)f{A2)w9}6yCV}arXy7t*}k^p3oW-+n|_?@~P}a?}>>gwie#~X0beX zpLyO&;wiF(!hgUF%mpy7PWtu{`FF-X(yh1=LNb|J`M1BJAyO*6Te4@wyq+&Rr7o3K^2d7KE57K{bi)vR3ixiy?o$B>oB>j$x)W$Ie?_< z;UfylUenc=brAnpT>w99CuNg_uU{vz(mt&v12MwSC7RfU7(N^W5GeMUdmAqIjTCv`3fjUT@gh=>HXi%4ZQ)_gRbEa#<^jW5)Q5P)Nd# z>t4YK7$X&{xpQQ5B$nILcW$Hi(+k8%3cB*ep8#6!9KglcM1!;{p=CdIh&jkMNLqW| zegR~n9aHIfa?VL%!olR(c=d-PaDy0< zf>9T@2nBWX7qArTPSX;|0Gvbmh3fN^AVo+XEokM&z3z*#**+N;b4;EBHCU=2kk$R3 z@ZwMKE%8kCNBrMtk`3;B7U9uMwzjqO2L79acu7M7gf`7w0fVNqxlqP2$t`;(FCY8u4qxP{WQvNFZcV!+|8(v7&*btx89y3?+Lefc!r<&Jcu|CLd~LMPZq2kVSWoSUwS`{~6M>rl_)b6X7`eI_ z6AoDiD-bF4R$+)LfP-*XVs{dIz_5AIWY(-H5f}tuS)w>ZtEnfIv77wIzAz#lHNJV; zh5AWg_2Q*5;Tsh`PpZ&+65(BH12BG^C_*@pTnAKA!MKkmk5yS?nnppa;Y# zUsjvapX9Ic@e&Tvy{byVvRCM4*!}}QI?QMZ<6i2yz?`qn*K1lr0!bsHl{6?X6`cTK+t%!4K@eV7$20~Dbrb| z^b|&+?E>(^?=QqA+I{?@19A7Irs!;b!M$2UL+qfrk22GfY+mpW)Pt<|7#73pg8><; zI215|&kV&d;T|S7iEp?1DZaAPEBgRz<>5Lim54;a9M7mZaJe($yreHVWLr#Qws@bB z6#Uj(tc{~H<$=1%$K?u(94`g<^dD&SKud&3$F;Y2Wab(Sx%KiwOLDp}p*=C0tkqVK4WptNy1yu{;ZMTi z+xwXBe5UwAIk0a)SSr!WUKoV?02d~WJtm-xn+BJ*b9G-1gWK1Od7E2e$_Aac8pTBpGmTsyzG{!jJ#B{En z!iS3XB_CHMM`PA;*)KV{p5f`S5&R$ua-iE6vnm4CLG(YANz+-6+$G7{MsR{Jg$utn z)#s8?eR?bsLJxIt5}wo(s~!fUZtQ4J`&_6>Q)azp0-2yEYtLR)b#4?n9^U}D=zdOu z_wlELz4Rwl2brCRI?1Ur47gV6D8$Y0F0E%8_#;*0AlW2JJHgw=+^lLa9_2nTo}sOH1l9UZ z%5C1#m|JnShCG=dXv4Aqp&vy7kSlN+m-T9XA0)q$GVdZ4gnubxBn|0^md}Tw6HE3OeTx*k%FE>9^>0-h`+)0_{Z8{s! zTp(-3dD{GWvi+qh2u)PjZTjv#Mp!J-2~9?Uo-M61mqt z2wD&*OO@e(UBI;jAMC{&1dP*+2o2a%!f33vnWCU}>eY(rEQyNt+m!AL0)`qgU-zQQ z29JGB*v7_O7g5mYhTEqf-D9psdG!1s`D>YqD4~a{=J5(3pd{f;jmFR^Geg@(pVqx^ z*{_;J-%4Juy7AVM;&$OfH#2agUV3E_Er&osoCFiB*Vrn=^AlKjg7tRgb*p7Jc6=m4=BRW8P@7 z(xyPmQ-<()Ryj|U@O-%~v0r?|4*JgKUA|}K>5mBL(TIt(72bX@1dQlG=fAq<&sun( z!tx-l7RB+|09N#N^+uW2o4(+yk|i2}$2iXAcVqK@E6?#{r%vAi zw<6kllivmOeqLC;Uk74B^qTobVnRH;)PgioA>z!*RaqAAs7m9YOjIAF2eN~+MkH4s z5C`S`3HXMQrbk&EAT&0asU15N5FF?$vDV>-xb^&Ke%eJG6#r{TH~+;4s|}Pf&jK;> zpyncOZKtWyU!@nDtZ|RFA{m)ga#8S2kdwU3-u!7@N6WfVbW(g)pJo#JxV@uaipkHm zRVxIv`3wbu+PtxLo{e4nuLdwd=xjdH2Aiv4) z#~UC)w*x70<{;;d=-+?YzH|;NVi*J4!und|e=7>VV`&5=A41c7)En+IV+%2|h5zOJ z5D4ZPGJdg_m?n0o>C;je+UGRQNUlvhFKQtIc1J?oMkHt7u~O=2EReug(sm<00IC+V z7EG1vBdX*op?I`|)$zbJr>u6KORg7@aM z&7NDk7XI5^zEckV=?epmK`ePB7%rIJmCz z=!z?>XxrVBFme;PjVY}$u5BtyF=S0O*d}{f7Z1R8DJH8T^?rXmy6rD^ncSA*!+}Ux ze9|(7+gXN7tFN2{;`euPVbJ3g$fOQq%6wJ!@$Q|LV|&jc^a*5HT^lf7QQ$Y!k}KKx z|MfPEfLS_yVa*v^I7wB28E#i1$^!Psc@oVqXOm;`2MFddIMuAzl!LcbXf%A58S0=H zH69>yhBlK&OzIt}3feflTzcFO!8ZX4^GM%s$hQ8O(xuziNxL1HyP6LCv-2Z7bB@9I ziW!kE%<{R;;Z>QOW~O&}(9N9y0sz{2>`DO<2KLq2Rh<{S~XHoCoR! zp}qTHE6Pp@p@lanayBx4t=N8}wAr(4%mdvP_8~y#18?*CTOp=8D&HebIxH!Wu;k6s zM>poa`PnUVQ&x31{M)xljL$(Po%TaP3)4el*aM)(Fve`D(~733@|si}_FOx`Hc=Kw zG8c5|%)!`8W@vhbLK=hYMIv9uEtvim&>iZ3IiQc!n4PD{f~(eW=m;t=#$*e4KZV7bHaguN@t9I0adVbDz%!(<$>aNlWO7C zzG)=CpM)Uue+yaq@8-iaQMTsem|s}{gT>7}5{+XhX%bcS)GOHbh+HyRZn84^V`PKA zo|}~1s$3Q0JVFWL#KFT!L_|T>4=L^a9rPcXNFk;!oSN4`9sSMRcsi#rSwAqtWVF{> z^shT+Vs%Y4H5n0fkyAu-y4KG%*xC;HQ!VZhWR`{Ux_rr zS_PJH=X<=mb!cR7iTI8q^;Dbusr}0;2Z#yME8|&C>A#qsLDTa|-e?Dy`m)pVLPA&3 zUwaDBp)tXy3EN4AOBZSZ*@LF(h4O_6Kg#f91AeU^f0XR;ec$2;e4}ZJnYp^!A}Mf% z7!CkC75Yb21nUIvV z{%u347db`C2tCV(Yd9DylYRzf_|?gmD?BXe2@yZg7ai4-f>0%P_?+m@zweKQ+29&} zRFq1jn@~DD%&4vIe^#Q_^JWp0DZDcp|Ej;`CEikLCVI>;|D^<)Tz%HA=Gr#@;=;4V z%{sz*T$2pUG!_08(7Lcq zQNb_0aHGG49OuOoKK4zLoSNfhMpmXZq!8Pl`u4_ttR5}|bB;dHsxEGyJtZkf{rCI* z{dPLMmTVAeblGdR*Xeg%?P`>vYunTFTc<)g8nWn#Zv~^MbZgnoD_uDB63_Cpv(R>E zf80nG9ls7S6b1R+yzhVN0qMz%l`Uu;``EB9vlnf2PX8PubxpF#G3WU1kkN`p`QQ04 zZv%q~I12Lb9IDL#AcALLcDVA*qjX}W-I{f67}AU0RU+y?-lJ8N8R}B;Ft!^^>|yZ} zZ=Wm#(>_#{}^>;E)5PQ!qTJIVHYbU7RF@gfOMWAybr7n^6#7yyVV`|U&(so*k>0+ou9o@BY_c23oo zmh+=$dq@W zUUUl6gFg&Wv?ixF>aYeY%cjI{o0K?Y^N`Lp3fZAYldADdKimd^x%G^6FeW>!iOhl3 zfD{h}vfc{Cq!+G4ASdAF?D<_fPk@VOrUjO7S;X6^CrlFfIgV6vHQY~;6B6Lb1MZ_A(24&X z8$kgR+TN^NepPTcg48@^lX~{--tU&TXa6^uI;|q&m<>e9fI_|Z z%-WtC{f8-bGCkJ;TfPU3b8ehYOYqHOL3M0&tiJiCTaASX zR5snN(c(NnU0`yaSl?BmDN=+fHOZK5-)usS!xy>73}S*XcVZ?P&?u2uDT1MaNaZZt^-c`;kq-WQMt zyDf#@S|AsRP6`Hxa8V=0=l_vsPgmN$ZI9;iIjetNWQ-%>$92!}fEX(MzZ<;pR6BM2 zn1-nu?33>9;0PY!0&b-+-lN=D4$0F^k@}0D31+8B^pv=LBZ{4J(V^j12DcR7SRj1? zw-dbuj;lN>eQVxa3kUK=8s*D0;7b<^|Fj!Yer&=ni?rC(x!NU9btKRIa>s}IHN6>wKch}*#`o)S zfVi9iUsQsO6#nX^aaf!!_ox;0GJxS-dMhO}#BHvD5S2#LXt9WU0!Y-M*+8fLD_(pj z*#8{34*|0d9INWEM6)S$(8ew#pW6@BTuj!Briy#@llTvdLF`Ak0-8NI*Z;@`iu0;j zkDsg5i#B!jhR2>lWsvZt2r&v1lTbgym*CzgM@yunxY#r(je!<6FtUyf**64wOKs zSNq{ALUm^Ww?L#cWlL7^dAJzK+S|Ig_&*sM%HwZZ;d|#k1u!;ZIBuO5{(3A(xc9}I zIyppD@?*{leIxR=St{X29&2J?TbG@1<@zvt-9zhCCmn83tSr!lEPl2yj5q(!}$z~w!$vAx5+;0@kehVDnzR&z0Rr2AS z-ru-K#~R_fsp0)U93S>yB$lw-4|P3))qvEc-%IJ#4Pvz?+6G-BS1 zpIvsg85yuR!FxUqY`f1vm=k5sr43tVr99PAn`9#SF2>2)jaA0T56y8jD|9KMQ);2x zHC_|pfLTw9S7dAe*sK6hEuw6L)w7sol%4Zt-j@71^)E|hY@j5%C!-T znqK(>RWiejA1gsM{U2XncG>v@l=U1YqOi(yL+S8tV3y?DrVR-bQF|FCT1JExnL_!fXJX3SAvK)-eTaY5aF!Y11v!K4~Pe`Kua z!2R8mt)7+srQXjyet*lwqlBKSF9_R5MkkC87kE@hBZ#;0V zpC7XQ8*=(wG9Swvcx)k?8udgN3uqnFo+s-ET2-MH2+eS-vv+*^Q=^2kZMoSUN=W+S zv|Y${9l7V%QKDL}=X?E-f?0EJ^nCl=7gVEKit}cga#o+=zy;BNC8rF{-cx&USPk&` zl{Nfv^BCwV_a#6zX9-NAT9sL+oDLJ4pnan1^<*{b^PsBDsh+MWXb#u%UA@U+0q#@a z>ezee)rJ$R=R{Hi(hVfKkM3BobOi)_%1j#a*7qNHy*d|Ip@RMqkf!Xxvw$jdCLdfk z7#o?is{zwH`Yx3JH}};3Ytr3(`q3yD`4ij-lNq7K3K(z0C?^#0T9R*qgQv^T<#v%vj6QMyh_vtvf^k1Yfh(W&g2*D7FHI+h+c9jV3 zEUG|T0tQ4X=fx!#;3gCu6TWqu0cJiXWoMMLxT;jmJG3c3TlgH z^`fAd8bEytAkgf9yHKQ>HyVmPO7CN^@Ie)W?) zV?rT4g_aRwE~=n5;pvX!dUh&wb6$TZb-nUSpTxjAVqe8eIg243kj=u7iwdVlc^TPk zib$fR9aHDqfH~e6VhtgMb(;i#{>vta!R$NVj^L+;Ng$XOS-IMAb8Q)~XzYJIX zG>7WNon{-CTCL8W2A3W;{q*m&ZdE?Jy)<(F8v69`Z_Ca_Ux6!P-djz$48vq0$Wf&VyqSvd#k%pd7GhUC4&e13QMiCe&$lT<5!Yi z*-(yHpvUkPMvjyd3CzEGs$=)7=PI-`#jJrhFdzr$IeBk>$UZ3wfAgg(D90f5g+OC9 z&8tM1OhJtX^m~i~e~e21CS_GSug=+{e@}SRlTTzMmCAy=o~j3oK2*uZ)3#E?asob4 zHuC2Ak}l+t0D0ogrcMJHuPyg3CU>vCw2DKeJ?w^QE>*#pH@+PwJaW(s3WY!|G2{ze zYl7E{lzc60fGhl@WKkxkS`~G>`WHG|d3ic+4nA;KpdUUgqv41BQ;g_$52-;XI9iru z%bALe9(&Ko2)>j^ioIr<>r#5FmBK6@LM^BGgHL|Ime`t9YoJj{--S^tPr+vzyDQv#A z=e*h1DtaM!%)rT6v}^7&P(ut>%A=YNTAHyuZzZNk3UN6;U8a1)C72=c2<8^q627vN z-R>s6aOb~ssHp$?Lm=`zhrHCiNsLGEMk6n&JaB79__&TR6@s>?C z7-WGRZimLAz}ppFWpKm(#b_Ehb%ay;98wE={e-b|a15b0_W&)shF~Wm3ic;ianuu- zit6Dj41UOTvnk#L#Rk(!er@cD5YiaMDB)JjY^We7-tCki*treojGHy0!^KG=JIb`p zz~UFN)PwVl9$S+Fd%LX?W2mYXcgzI$J9xWY_bX2EbK=fJfdnE-+fG4!(>_@l_c@E& zu71{chBg(p#c8|-Xa*hj*6n=*-5A;WXXMdJ?g z;O$ZUEsbJY+7OzZs2#5rsRI83$c5Vx)XguKglbzagk_T@yv5>&7v#|U^t*|FPCQWu+@K44t6YgF|$c(kcdrT>e_?8_^IB~#f ziJ02ya|pWtX@pv^(x*#D5Oq`tLyosewg-^;p0js?-`89o1B4&rO49pwzN5M+D3(;H z!)>zRHkV^^7@?!E?jJ>=qXiPrn`EdS`u#7g`~08ddMtDX-i5FF{EMD=8}R3y`{CnpNgu1f@ki^MARfqc=Dg+jGhB+Vf{zZHeIUJQ%?B1^!tS~*=G(bz^7pOI`UMoM zQA?_tlTlb9O-61U{P0OE;MwymX2Nwv)ta;@{PT`dg*H$-UnTKc%Ju8H;0|i6n47T&4>GA= zhsp8rX0#7b(m<>U4TeC7n>DUFbY<*7!HgT|IFdgEJ%{MTY0G3Zcq7t5kYd$b#*})5}jN(Hb-L~*@7Nd5hLF#%Dv-_Kk*`mHO}7E zg2kV&{D0k0)$TaVv8KS}Yt5VWi#BpY?C60+quK z2yL6%z+_6FPqkS>wUz*M+E}czHeKIHMg5=$T13Q776z_gh*#U3EB?h+|HDyq{%BqO za&>?D_ziY?i;mBQveC_;1KpoC!*@hQH7$zPc-GOLmRf)0W)2rJfn zXPSv?+g6H03b0fj1u6PLeoPb2^8;QEv~5AbNBZhqDT?V(8KkiSIqgNcb@rC0U8aBR6q7LJMXjKZV7LQ{#24S9xxxc4P z$GdyzG>aP9AHT9({$PWY4FdIWIYbp4Tsjz#bEIWk~352RCx%< z(s?diFe6J#qsL9&Q|j1pjU8{9diMf5R5c+y_>zTzBy8=#W!%Y>*b+KK14)$#WE6~@ zmR|gNb+7y463!$)+d`bq=Tm8t3qM?@hLEw>TXSUaj%|R$;jf4`eCgwPg&kXa9j()o z+H|8e%@l3~OS^Ojg(u>ZbH1ePi4Ug+Z>Nxa501`yy&3)1f8Z$1>Nu}6Kjf^n#~W+# z5@8C5LMMy{P({+D|0YF%5rP8ptJg9g-LBZ}CR6|d#pi*)7RTAJsFlQD7uQwQ#2fZ{ zo-cN(&6!H%b-@GjbT#)od+}N>QrV=U~Bf*WVWzV31>W z_Gv5qzs(3}*Nh_|DJJM!}^={ zCs(mM{h4!JpR!W_b4Qg#)EH(PgnA}E&3sY8y1w{#;o_Gf)PKP_iGmv4)%f@E4+Z(cv zk%}pW-SP%azcErx$YPxX&K9c{FP4u?4kup2h#lvr6EXvIQ$g%+l^bPpW*yemooM+2 zU;1h7m`AI^_sMEc1>c=ew4LUc^tgHGi%j>aY-u|5CgzA0y{g((*Vwx0*Na=gNiM9k zGA9!zN@a4;lR1uRJ=^%jw0`|1t~L56uo1-u9Q-1aIez(&wcx8XZP+m7a3#vv6d})0 zi=ML>H$9HqrA<@(^y-%fFGxQuvf^)6*}mjF6ryv4$y{0C4Z4%F1^tRo`@|%U!k0=w z9KdD}@^eOkv+VY?t3Hx=4aC*St)zg$RyC zV3J`|2*lgu0hPd8G=Tvb2nOhAei6Wb{`E~07-Y5K%Gu$3afBs+7NT2LdJ-bDU?(#o z90-=4<0+#lKYw!n?Zr8>b?0awfQ~kk@RAP~{pYxNIaodiI$DNHAhGN|eL*%@@k$3C zB|rPZ;vEIcnqp9htjpt@*6@<_l$7>w{Ey?rv2bYhPtG)a{gca7xn&jn>5kFmz77 zszV|GadEc(o=^DI`;QkuaPC%?< z0Fu&NOihD1`tE*na36MZ^xUqWmH&(Mu1GQ2Q7!yfh#*j}4H>vwzm((7VgxeNJUwDD z^nspzlCaMBL0BUReGbLunR`Q)17-W9W3#BfolipzGg`Y}B$tD(=UDIup5)@}x6S(6 z&%%J?>p3XyP1B#WEybH}zk7*Nge>P8oE9JtV#07Jo;JG85a>GquXzlg!#gGbI_nJl zK#}^4)tP=`Na<~_B3r}^YHz`xNjQh~6d^q7_v`?dk%Y_c5|9xoejv~jcUtAa*&Oyy z1kzArZxSN}#vSCS{&Q2t5q4 zTmJE0h4-^;*-1<^b18KHXUMF;OrNov^W=wjhLIcBAsV({zjOP1s&HBe7?P=d-(yTZ zoe2ck&4dl9aN<4_r%nlM<3!D?=|9vj=OX0A&}iz|955Zj`d*HJfZv(oaU8`w7 z3c<>LhQ5By1X!+@z3SAH&QV*J^7FxE-AIx2$*lr79J=Fa{|SP_Sr~*&44JwYWU}$5 zrokE-HK}EA ztr>4CF#%ZoYiWEo!;g!9GXhjZ-ec5r%n&u&6g#63wh|Wl$OYz;#^`T*O<7h@yg${N zN^^uP?LcjLx2bc#gycudKc3TJ@b+>W~0%|&vm^XE=3E(f97=^2~l-t z1nivE7vcCFI2|fO!^heBWWSbNJqS#&VD@3df!+S|0b@CqoG4mOQF4e&?{v9;5R~z` z!8@=ms7uDZ$F3z4vQFR7U|gjQ6&G%z>#ab?B#LP2Ebm9c5tWq5 zJ8cE=r-2U#f#OR@fT9AWH%YZ<^rm2lRjY)N10BMIJ=I!U;aD&&jj;JF`rc$2h<7`v zd?g?<rIiDW0$O4jR2Tp29etLV_05Nh}jZ_ z+wgPN64&l>V7x-t49ZC2bbZofhKOQ1hKfa&^Uh>V62)}ZywMbUQ{vDV{q(i_`}7or z67J{JJNO&T!1w*aIY+J>w%g>kkNjPNf)0gzHlFn=%N2hDVXDKyJK!B#yoQ6A>w4G+ zvqbw>(_)E3HT2r-RyF<96evY(7;WEv%SaP`j%7}=qY)&ETGQ?@E4=HEXO%5#k_S-} z%U)=!WI2`Wnn^55N@gqlBEZWyq>JLI+>Z=CBuOYuKPq1 zc4Hs3&IA->E}YmUfZTm9_>bG;h1rlv6H@`pb#9I$GaIl+I~A5&;7)?YO?w^OivQCp zOkY131N_SPk{%~)35YBhb9hYgsy$aa?h zV)NhY7=aA5E`G3)y?qZZxN*;Sf?i9gbP#r49?Kl~l5P8-GQs`i3*LlJx38XEWs#ko z(I@)7F8B}^G?dB9stqbNWfK;qeD5kO>Ea}B_{W&C?FK7S7T4K(w_gupII8{*={Cd+Ellnbhe)P%+| zX^g|$eku3!Y;JwN@>AX%a6m^l>gc>8$}1-<5&p&vXg*73ni^5Pm#1R?Ug4GVrog|K z>+a`Z#P+EC{VUbeL-B*>kW_r-BqdAdMG4BLa*Lzg!=HFz9bmugKMPG-2Ir-2BiQeO6 zy_+klwZ-$Mc8H0W$v%75^Vs#)USc@S!uMfEU`k;^G=f9$ zK-Xt&`uqM_7iCu2+4?W0JIu>0!VXV@a#xy!n`y!nerb^eBuCjk@7qs5{TX&j&Ew;n zenfM5M}2pi>13ffa^-gv_7Hc^n=-bxYsT!`siTQ>(fgNGUXlCe)m7iyvkkG2w9Kk7 z%A~g9YOZeqM z7>X13=xgxn)dmdt9q1&wKavsTm-XJc2A#TT=Dwv^)8a&+!5_eQJ0UggZk&zhNw<$H z=bGFS(on7j{XX}cKPHJF7*MsZeE@Y*lw9|tn_SCh3+PHKu~HH|vt{s54osILp3L1F zBSw#IT#%Zw9$K99E_P6@NqfkAv#+~l9s<>g3IH-*897uPr|h-@&2Ly`w0;8R0~vPx z-#NeG^(KXjjmO?p<3GO&rhR)op8m*}@AC@LbPj%o)>&80XG9JV|LroFwQX^o579ma ziHE{zhA*2FlJQ3H3i-C?-=134Iyjm@m)#KB#Sk>1Lk+~~YgdN--Df-+J{b=W9XZRJ ziHomRtZ+5g-tB&>-n!n`Ud8hQ@M58vF&N!U;txS&>X+4(C%6@op=K(mMF=AoO^!W4 z69y!8ey55M_hDBX%=fWs=ia0?#Qe#~Sd@nTy9Rw;x?sQ{L>B(Rvsm`b`{-y_Fwc5& zGxt&O@5=FMKcDR^D*Von3Iq?uTOH0m>G%0#)OD2q(mK75XF0Z2v;dpSJ3{9BjcVa< zZMc3P7ya3}8TWTVY)8YQ32MJ~RVar7Xe53L1fC1n`uXL8bfc$Keo2(xySVo`==fi7 zr-ZTh^kn)8_|Ge0GGsnSSL29apAk9H$D$JyWiu{=#d(@xfj;0lv}+4S1)Z=Dv0JF6nIEC<$LvoxYBg*Zsxpz88LX{7zGns7KZC)i0} zMWhEBA~;ICggyt!GAq!*TVMejAO}KqJcAj%+8hJ78W{49Vs=5uN29K-4VhBnMkj2S z->4qkD8WtT;2VB}E~W8;7}1Un7Z^`(wGVUWoV z+0We*&6vypi%Qp<3k;B^U!mds0T9kNvC}{q9UYbLyCTeA3o%7?5RNH&a+S@ZQQ0)BXaWL~;^>WL5 zxW0T-*s63tY$(8CfJ@?K}i9Bj0#NKN9f==M;8mskd};0!cMZ#curBq+SV^- zX5~QMHorIW}V<#XB>*k{L=gpN{Z`PA!== zpFeiCY!WO=e4I$EjJRwssW|Ke6=%@pDSm5sYRd| zJV*bLm0GEiiWt8tAF4mBp`t5Y!8*Z=I~};*no23YwE5Y>XYwq64~X5qq6w6@4|Q=( zb!W7^aL+CGNR!sJfO4pSGXZR?oF6ZpZO`||fy(P1fd7&10biHuf|`H{hN?a%-(|4u z)Q&G7-5&HJFBf#7Eh}6FlGis3D$qL8ngJ#Ek{|svO2n@3lfFq+Q_{tla#w#~-F|+a zB5CJVVcP*|OyvSUM(*-B3&)_PLq4;5LCf;{>Lm zQcpH=f4apHpcD<6xqDWjoE0?GVh99WPM&w*r(iEhAn~%Ao`}Ua3K@Ms8pWwuyahnrthia+N+bvKQ;r+M zh$?)#JZ=&8Krmn7%|UC>LP#C(qlxZ!Na0k#=$GtiAYCTpg2(6blbxj2bGZ;1dQozorF85D2G^{`E|Cuaoi_t8cRbY5WtOoOJv zZqY%uQ-XDRG;p@2hz>~L*{9H_TJ+D--fTQ?$eWEcU$|h zI#A)Mp=4GQbG%Q%S%y9+)cLcluy=y&?-7x=#nFIX=Lv|+;A>%e8Lwrl9|sasl74R0 zcO45~Ed6;_yfft?WDj80S7>7xEx?mx#f^@y1%g|o-Q;o&wVN~KyGp2V!-8KWG>Ksn zU3iiMAA5pyGp>8$)2;W`xO8sv#0r3~-}p5F5!_FF3{RD{;_Jj-&gDqHvwg?#-=RPd z)~Pu4sU9Oc?_yD6Ty*o zocL@Be?OoAL1+Rmi+ZSToch*W8*Vp8K(!1+o?#2$SBUk=l*2^Xv9YvXk3k@SlsbDBA7_mQQ zSMiOn2&T7EUm688x1p^Sw;ZfIM^(Jcje`+(S=1OuwpP{j04>gahL zYeUR1mK}Z@z`+zlv8ZxAmu}wT0lf1c8-g!9Yc)g66E)o5(4mfn$9Ri_j3mP5SwwXx zrJ;j*&5sW#PFh!v7d$D5RXPJ8C%)VgWt>0}Fk0|D-arC-{q=8!jodPo%kV@sfM8;o z*HQrv2rEo9iJ^UJtnX|xZibPrDAcCuJwjB?K_Fj5*dilSpv$_2l7XSD5-z!76N&G6 zT=27y21r7LI=MA=9Rf;!hGjFyEQiu(wXQ6FPY?9^H#7D6o~9Wm+l%G5Z2ngYlq&J9 zFE_9M(C*&KOp04l-0!eXo={RrHT~#6SSgkD&gvMn8AX@6%p&0lb?MfRxYcN8AgRen zzf7$VtV?VfQJ8SLamBit_AH80n z*G8-b0O{t{>TfEw-?R(|*U@(hD80aY-Q)4}euT*B?BTXaz@g&Sb8`A%^Dgalk}!J- zH=gzlm}zbLg=S>`&{Z-+`5kMi0Hu7p<|>Bc@m~!2e@Q1pWX^H-9SJ+CHGG1B2Z%3G zp{BBP%OBtLF%HBgrLZ=cjF5gIWKmVDCOp&|(1ah}<|W8n^a5(W=O;!qy~+9z)!q-u zejKB3<3IirW*OC$=}UF0yO`LPydz&wBvOw&K@;-E?@agx(% z-~z!K_=mJkWPu zkGE;Aboy1*L8g0*iVVw9KD?XWx)mhw0fw=C^EX2+px_9=X&lWHyAT2{_gnL?*{<~P zc8NKgBrqoi^m4Dueuq;`!0Wvt4*ry3@#ElDrr_o%)cxqX;?G^~X4BVvx2W!&h1yHN z@cTgA0)HRz>vvOPS>Vk>=$W5C^$o(F-1vlR96@#;iy-VylXPnb2Uzo}C9jOG$gBr=*~pMbLt_St@l*?jZ0Oc4JX&y7b*=C5>t^O6Sc$J zfZ|62rX+qrL{+n3B%U0Wvfxxl7MGl0(Mn+K;y+PGW`3&6r!B9D%^ryrKG+tWQNzi2QYPEB{qm0iOQUw?_vIO zmL-%_oR(hio$E)-6orHC0${DxMp8ivft(?aa%+q)D`gK2e=6kJ3*JB;oY2MW# z$lpbmvU*&wwTO0hc4W0WnuxScljx(paC7o=85aW;epLNiLSkhga7n5xfU>E=&bB~K z;xq>P)^8imS7DAtQDcq+Gm^OpY!mN%=XKLr=!x)9@GP<>ZAxM9zsAzzrEtV!4zwP` zvVD&d&gd0Y3mQHM_Qrx|HvAk5{<^A4-Ge#cqK32D>FO4Q{&m`nH-5sf&PJkG4QhwR zjuBq*bDszdisCeV6UjWTXv$)C-1Ei0kXn8S?xV6sLqpR6Vei3jM)|elcWz@f9^_*7 z)c^25O&+W?MWxpKtg9<JVyffJbGpqsNxP=&W6r^mDUVg6VPG}B;q~wMUQe7O_az}RP8N{!Q;FbBq zj(Tw!>j^EbVM~=Zr>m#Os8bHlB94U>H}JKgZ-7kSA|qFQY|-E%w9E6q~uo{g=b3fT!6%Dl#NiT$L-cr57}dDWOjJv z7;G1u2aRuT1DyKJntxpX+`ybG5xP$?ox z{MHq8XDzSG;xK~9lZ0)dty{o%$zW%>S6)C5LAfmAhe#!dOf|GOKS?v@Ur=gkRA`DR z5Lf}`X`BPG=x>&Ly6OCi@l&+fCuZwcQ_I%z_5gClmf{M`18^qV0M&d&$+ge6*^(&F zXa7VnCw*tnwG=mI1>D|;#V`0_h_Tbi<4)>f!#a3_?6@1|-Vw)k%1Yz?3%U6%Z`d$P zUw2auaZ>_}c6Gbd`-+ zh>)4ZPzh#*O1%h+he&}BA1ek(rGc1FGN{Du?Zb?ZYWm}XNm zF&}+fDDYWN@5CHa6)uW;D=ZpejN9+E4VwXaeyk$`m=nLx+l zQTBpB9kJGFg%DgOcw0t%84=^}E~A9dp)`{!j9)i)nht#+6X&S8-($Abtq7)Bpu)jp z&v;mwMOx(^`|VlF^B;W8dgvxAdhd{J_2OQM99t9SG+RmKc@sP>&ro$!VAp@zj-d@q zaY4vt*_XvK%OHDm+*)O^Z%DX~1#*pTVyBhP2>S z@dfr7ePGuOOXo>L@`3yB2zdl}rYhX4QkNy`I28usS$&i)gyP=!vjPCd1%*G=TW7!x zE)`(rM2w^v8LOLlD+UI)XH`Kf_(+ZCT2nhchYaEv0 zfwzJ8ko$=p0b+?`ci#_LgI1dxDlehgOzS0;Lk=uhp*cJQ9zyPUL)ACse@b-Xm>d<~ zQm}zu6D#yJGXX$V;N-3wivaDeGMdzca;dG&vkX+#Ve)sgVZwF;XVc3=E?>ZWq|xzk zdosOe!4n%?l3y$#uCYT%7+BfTMhncV_h7#Cj8NH~&`0KG4VG$7?1W zCeNwiMgLUF<~@5K?4PHxTOl1zMzG5!<1y%lioJ0`3s43O!0l@ufNDy3_Q@NqYSyD+ zFDkk9P24AP-Is2Yfr}m{0S5T$tEx2KfC`XbW?E?9y5#Vwr^`agl69CRrsm8~)1jox z4)ZKpDOk?E2Z*S`{*o7aVE9Ilbg zoY9Kn32ZS3%Nq+4N8!kDu691!&S9n6`67VLM>d^7?fSRlz);z&yjw@Q-H-nA&{Vf~ z?QdsGMp$yl=XIKqXznzTi6vGut*<%L-0Qj*_4@#ah$QSQHjt+lN@DkWY{^Ga%h<$Y zgXnnR+fTOq6f=#^##{Jwzd9-MZAy5mZLc~W*jAA_CXS08UmI>qd9LuonHu^rLPeCF z{3tV>XAsvMN^4=ftagmR%k>q8`Phd&--w~*_36p!5lEm0aWF%|;IS(^a0ZSwk;Q#tNc8J0{RY-@NSsumBaSa8;_HA1f|NlZuBBH?2C){_TzrO4Hjw(`Q^{6i$MsU7Y+(sP^SH` zIQEMxIqRbc$O1*Z_dw^8%+aA)9(d{*wW|sLGO}_G^1zG9JM7S^RXl^AT6vilHpOoz z?Rmpl1d(m8O5CY^xvX$eO&8|O(r6)BW;?;*s7*G??_e_P1rT|8NZk`k$#)-MViBg= zIC!Rmq__pXL{BRVDSD09h9X#pTnJ0lWdsyw$fdNlhumpNmy%tt&^sw}v1owh|6QIr zPvAUq&G3BdgyCsM^EFL0i(y44M$nu6w0cML;)x+cfYx=?1<{r8`rdTjc$XI;TlaGJ zCJOhMKO|lN9L`kn%^4Ho?OPi(j0B}NkXdLGnE?ZseHTNfRO>;T7rYPCnU(2Aw3dRn z8x>*a?$aJg6X~F%`Nbydp`FPmurOqiiGIhG+(k+#mj8JveH4#V=*uq9a&=R__=BA)`vE{FD&ry>>!#aZVBwi7qME8l zCJ4&S7E|H=?%zz~FUx@mpB;TCO4+C5t@!2Zvh4qnuPEH!cxnEXB(x5Uto}1PN{jEw zps2rWv71CK4)S*i%L)UJpvSTYow_EkPq!&mSLcXRrBq#NjX#!}qpl|` zk;xk$*N0mbHrG%(ZhVs>kQ@(YJ#|GMy^snuY*1+UV6$(M4KOpO@Q;8cqo$(2X2AU! zFd)0l#u-3IF8(9GHq>0uudZVNUb2T9Y(RpG$Y3r~O(|iygMYtuDzOkCNT6omq(fSEfm+19{Oui2j6#Q_K9_Nqa^WKMzE0{Idr|c4d0H??~1lq4p8^%6W-b3R2{d zB;KG<=W9iRFxKGE&&@Oi>{u?y)T0%c`_8E?RBD_g7Sd=3g4ppoUq^-T_AD?pq%bvh(uFMn>fITkHrNmm9-Dk|poqCk2YW+pazl zP?ddzf#{|pBo>9jV(esZMqSdNF#9sa5-tB>A7X%`0#n0HGZ9=T$bgcVPHXZ#(}Qq zb&^7?5S-YVvT6C^gITkb2tn3?Enb*mdAXA#D@gCMC9gqu{O-siu!Bets%DOw{5}i6 zUL@rQftvJQ?1X6cKj6VLfBvWLwNv87x4v8gKPM>m?U$>jV}7rVaqyW+%SqAdvgA-IP3ocXnpp13bNJ_?0zP^?G7~t zNyWr{XB)m}WeOY}r3cnTM()XFB`is(x*@726hTs@j_v~$2poyDwjVpO3Q^XH&ADTs zt%UMYc&;xvR=Ivyr8zm3j(#>BhvgdEe2f?S{?HVzzf8X<B85D?JpuoA#4gnhtcRuin5h@!=uxv{=RXF{pKlgyXkcIFgeaP*N$e$@)HC+DgT$ zX}JzGBQOvHSv`mnR1{!tzL{~jm^wQzhlwVEbrF-^FMYc{OLe+$Cx3_7#^!CDYT86I zba|*FRW`Ur@WP(Qs@-L8JxFClw9ZZ1IMS*arK40oOAzD$NXL((cB;VN&r2o#`f%l` z{p!6WS{wQpf|}@A^PdZq&8~{bU8XMV`~K9#5->YSI^;owAu_+;kijCIxkb^B%hsPA zq=R&n%V`u!1!N;rw=uL@bNfVr^9cg9ciyVdkh9SI8u~@tsy-7!OR3u)J+6duJi#qF z=;HHq`{wF2a@v73Un|d;?fcJnW9mGuAuf-8sVn(7=Sd!w8Ag>S(v!{ki(x~{F>3EA z3ydA6Z20n#!th-o1E0{Pq(i3gg7N%&M*C6tWOMj?8iXSM@Ykwcos^==#8lV<+@tOP zF?E(vQN4e(7i3@n!J$iFNa>J9YDPdhhb{>L=@bF!K{^EK?(PObK@jN{X$c7_k@}I| zhyPu7t@{Gj;)N3DoacOF@6SGHND82R2deAR_mJUrW6LOyuC+5c@Oa}^PhFM~xjkak zq4JqMVU&E`>G01K{!f$<+GBR}Tkn5S;*Kp#^0I}e*2_)y6eb`}-eX2bZ^FPPOHR+& z6(V`y8aMP)!8`Ny{40<7S0z-R4%6+ccP`FJa{iOOi-~-(TZ>nC&q`Tgy6*Kv(9rM@ zlTv0dAI_athcXT>@lj08f5Gfj$(6e{$R zZ8!|iWZuw-@Gyt2-YaoPEp)!c6p_v!PUma&wG{-tBW9E)K$ucdm~@mTNNI~asOq!D z91b}yTC(oY4wirTSCccGhS*1yG zuVYJlw%MT0%M>fkw1&R5v{&0<nm+sXW*Kv?3&C67cabjbTQ;FSeE(z~5;1~Ia3bC| zz!B_nrsI;=1bJ>v4i4+JgXw+Se>kBs8pFM$29T=<80M~;;pH4X>#lpjP3=GqX)mK!c=i1e;vyaC_+pkvY zKu(HBiI<^CqGli zOY1s&-^sP3Y(U0N(V#oYIY#5F*N@VKN(cdz{M}ttA3Mz(-(~*pbD49Eq79Ev_qAY* zo>{nW=@;a7_U=d2KB)j!YHs^*Y}sH!CB!!(v=dMZU8Y0&L%HRDd7lCiWekCbzFkciYoldz5j+~?)Kd*S=GdOF&qAkec7erdcAD1pE@ywD*MR zTK{g6PHz*nD2hCAS_WaZ9cpTdWc4(9vE{hP&=GHNSGa&x+JC?GJ}EiB`9f2=#>S?WJAHS~7Mx4M=zjmm!xC}pG%dN?K(M4wfq19kCNDQr`ES51HzeIAq{CJMjTT9Y>$CBomH~*uNdcP0K$6BT6P zAX5o%eBnHDqc*=?y5Ku9W7OzYnVt%l@acmtRlCHj=&(Uk$db7ctoWvYMD$I zvVU^TI^gmvN$>3X$}8a9>(%~z(|z%DOf45GG%@}oE{3tkAjg*WKlm8HcD{tg>MDP2 zi#3nZ)ZQ)PQ^BWFyd~sFU{b(uos7}QWPE@FgrcMzJo>HsqPYjG^aRrpne9CY>~j8Ziz!}0xf;Gf zodaN4mqM#!zZNL~#>k_}!=AZNNdXV=Gny$w?XY8lVWr`!uu|(n8A6OzM!2D`BDeR1 zMuKP~ny5s>$*Aw$2Pwr(ecJJPKjRl+>|^i`HTXqxh9pCqjW5J&l+PnvX%aF0@`G2W~{urK3lNL26D-dy1KCxQ|U1TKL(vpd0#ieM!(kuyVUE(E=9AA!ntso zPp;kLm=4=mP0GZz^wcv-j;ere~s*&MgkAdzfb?GcH{2=r> z^j#TB0QRECnJ$=}=beW|X8$f{JuY`jymZ0@1O!g*ZV-bFquSDc;s7**duj}(%jE&NwELiYEuO(uepaT!MS`X1?M zTU~U$DGWiEi&1@(ON!QJBGV5?ppn^J@~VqCla0?AEv9Klgg?fqM9qPho8_$f=M`n~ zpA+Wcck&ofukODW)EnPu3h_xkdlbTcHy=;!^^fz- zE&;Oc#6MObLoB08Gz>odjql4#7@g0r93wTtSoay|u!dC`VN z@OV@Syt3t^lRK-AZU(Ul$qRZk_2{})e1VV&-|gF#vEfk8kq6*D$sO6=)55PFN*LC> z!9$*=a?pUH%Vn1wY-g-vsP@`wZ|XDIpo+1O1+TZdqYa>{TM`O;CX$oH00_-u^2&$rsBSAmFs^;_B%8fNaiUEX-|XI z@fvqbM9OZZ#w`R9gd6n@l#ph3*)S2GcG&AzuFhg?P)!VKAun0iIg!I$oU>JA&wK=j z->s^8o`}Q^Kd>uFR^Jzm4bgFC2Y_8NbUK$1W0UyzRQQ7!Z&dBv!|9=M!p7(*jZ>`9 zD#T~cEV@2lN{-;#M7<9{IJXBCW+%?ek12b04--|`Bx%=(!T+e>)w>n(l*G#OadK$(o0sgsa%}wzRJ0A8 zvlv3mKG^Q^i;QiK33f0lbZt0K>-WigN4|fGqq88tEi2OU&r9B^uW<+t=))(m_dq_S z)d!pMcY=hA=?Nq7>39{+ZujJH+pDhslpY9dPa^eq4VzK_74{-1@aCR1id9 zZ+UP5Le__&iD`r#zad%qY}<#uVcCm@( z_I8_$=_FJ{I#lhcp?V`kCKTdyD~HyrTI<1dAT9R}=+h64H7LtA!Ys{xSxm*SNj=CKjBPW+KjWKggMfa{Q=v3G~>^H&{$-+PoxI0mXt!mP=l5W(_lb!MZNhR)G{5Sw&NUkik3huxUUD92_eBdpy(G~{n z5zKgq=`u^i@mYup&35&^RN#BtW!kG`y2ev%`ygxwSnn8qqts1@^OE8nm=?tM=7L|k z%V$^Z@=Jx&`a@9+fWp^7D4=O#Hj{zpIe`^h8!RWs=w>~MJ4$!Hrvm(c^1T$($KVa! zA|W0hRNpEiOnI%u4q5a)>|FYnotm0U@#(+52&qFkULPV=HM(Vw756d82q|8Cho$zU zyELwo>pjmJ-=)CV;z0J+`EsZGL+l!VK@1LEwXvy+?$2pRLiP2%3Ds^57&2zw(x!;?&;U8r1YnZXjZ$VmBq^|Kq!7{MDUJ%4LzDaCu(j=FemA8=7 zbM|(5AZ@)b>UYGgUey06v+`%&6auAj3GLyXEZU?r>u^on>YS{?FNQ1!)eGMP$EfEL7@F&HLMQXkJ85)gn2_2=RW?s1-amv46D{6U+a=$zdk&)NjoGl1m<;yLOLTzTzdowRr&|A#P7d z^xs4_HPD5Z*a-4|J%29$1==_ zt(#M zwMC_8>iu%;)0p@!m-x-e6pn`=L}gV}1=_G_&^;%-3H(Qs7n0CMNqXzuXlg(%*`Fsi zh_;r6F*4@wi8sE^$6hX2kw|?#t=`Y|RkjW+4D;vZpADf*x^tef;vqx0S_?x-`dxq8 zCzny%R9hv$74#XB%nb9flBE|}EZ%Ez2&Greq;Pc?9;A9GD~ z@H{vzofA{*4IJS2mYTSKwU#*csP#0a%Gy@;TLC3BzYwoy*`}mANPq`}@+On5kbn+g z_p|S%h)Y&xl_Huf-#=@8%Xh6K44Kc9h)c+|ln?&1^+rrX(DjdBj?`(H`swu^Xit=W zIqxrbW}NNKS)OErR;AdDYlwiQKTr6Sm(n9rTo;iF%1b=1y$8u~Ss-%Qq(V;+blVom zRzI^aYUWGWP)ZFv=G@|<_u$(v%`vr|EY^{C)(ke1H3yNlZopkx9FGWhC{&F?LMz@AyH~$Y-Gdfr zx$PX9{(a-KpwsfYA#ql1dfSB8=i|gyW|KErR+GWaXSt2EL$A$H=0f6@>h}@_wIrc6 z*N1#P$M4IipQn^agg@xf0wa;OzET3fQJoXFDjcr(ysH`~&r#G{ZuAsbs<6z3?-p3z zXZjTZRrga7Y;4%-sG$u}tRzzmi-1W)60gcBLq@emc-+i2&W3cT-ReJZ%Mm+|FXIl-`dSj%|{=U}WIM9%+pP8572 zXqf$dEx@|2kK|`hItp-VZ>FL9s8R^9`vgg($#r&XxF54H|)^5FuE&JcT5g_^f+?-3cq+pC>#y{dh$HH6zB)Kb?Z0@ zaxM5%C=wy9FKod3t5gZZ41pz7OywM=RS|px4G)Q-3>;>11vZ~3nal(V{*r(CIT6OtTWz=T}qe8#|&Q~%El(<3*@_5(xwCek;{ND+$B~y!ydjr?4 z`7>4S&CKh?sqa%>x7#8+@2<|Z=RCI!N-7)D7Y2y}Pj!*OFxa7N{hqLcnunjW_}qT3`i6DJZ*x8>~$lrG3=5Otlu_8l;(Rf zjnk31*$yyy;JFrFIAH$T0p2Ov5xqKft_13l}r^XJo=->_RHQ9Bx=ROiFtT>&gwFv58- zeo20DDL?jK!tUg>0+n#<9CQ0P9X&gAUG_n$Fm*{2;cEEfSMSORZRr;K1<|aUfcBkp zN5}M>HH!W_i)@K|HpZif3bs-&)PoJyOigfNAl}ph;5`2Ss?dJ=fVbzLN=iz0epl3} zop|e+`3cdAy2xByc*{M)vl#7C{lU^!3h#R}Sm1|BPO&(|XPV`!!QkEElMw3-D z5Ntm_#-WTkn{7hmpSYPwzN3BYPZC}Sg1Vrgp_FQfR_{|v-?-eb(XHeKrIcM@5}JdN zNlotOWfJz7bsR@zc}ffR)!XmhtM^|DBd|GsaSOS*SVbwx$$Y3x_1go~jf=UAZ5DNj zuN-0uvXwoYuL#W(HGd6}qFbRPY`2?)*a*BK7UocDqu8nqb8lSHYH;T@#0p9w#|KXcuBGc|&% zHHnqOGDOf*!`?=i_0gR8mJY;(m0CYrN#p!p`h=%-P0qN2mo`WW`tw20tt$sr2N1cK zDi4syIz(cM@w&`8vi|%!%LH#>dT2*MrXNc2%`_o+D1}&vmhX3E?)^tXSxJC-!RVQ1 z8)WbpfM{inO;`xypPbr2rF8O#gKOU-=bmtmwaGWGM}k*9M@Ty(LaI){?z0dF(0~U)Ubj#p+Z(y7$8xXdk~5!@h3u7%PD!i4xSeF zSKmZ{o|2wf$&TOdlkNSEv2`|RDDdvg%$L!WY&VA$1J>dbXc08Prdr?qMc0Il^zfZH zYm}h}?+b!h?wil)XJmo>9OdT^e*{=a@54`(NWm)mb$gCptZr@}6EoCZV^}w6BwSe| znzcuca<+uZ8=qj^(+0orf>GJo#Yf_kmj zff(%uF^_O;H?s3dzc!-62>co`&@S#YWk}6D1GH)TqT^y$6vs8w>=PR{ek}7CF=XSy3HYP`G5+)>(HJ_)ZvjH zuuuQ|I2WxI(O{z{t{!^MR=NzxbgFL-`<6tALGm;|hLcZLtf^T3^+h!j(drQI{1uL| zd~@J61-eT)JK+p)Quv*BtQ2XhOD6Gj>^<@M#c8H!X=(YV6CWS{B$W4U5Krfc)_j}0 zjb4O)m9BeEi&r0+-pTdVOpU*1IeHT~x7yRsNCfLoJ(*E zxm>bFE#`YUw2BzRmC0EKJ_%qLYuMs873&0#>*n2OhnC0>?loz6n)Wq)YI@n07ZMRX zElpF&a5bM-9o$l4!4!X9Wr>Mh`&vDJ2eVN-_mj?gfXuzuPz2{n zF$NWwW&$2?6=-V_5QDWbxL7;K5xyoe4;YErj3tCMVLZYMgWgP$7e2n9vGV5Hzi`}H zqIAJp!clcJb?+&l`jV3uByg!}=Qh1I#9|m`RYxF7^{iV5|7}XS$Mc!k184RTKwa2Y zrS*wFA|Iwo$`uY7|9PpLUS1;4+4y|IBM*s^%L0I)`Xl-q$$Cnb-=&G#EYP+GNY!^- zC|EmTjBah;_9K0quMF+2Tl;SdX54Rp+MdR<^`fUSh?_eY#>qSN7%IlxH2Y9Qp;6F& zs_?g`pok(@J_~t)fC^wOXso(EugS$9U6ut~w8;rhd7s-)pZ|XTTiVF(vgq1BvGVU` zWeQ}BK~(dF@7?niVkXyTdxT4Y#RVq;Rt$c)ncM~bxpUCUrX@Pfa6-1ZAniPZL44d(B_ z=DFcIpUQG(=ma%W4IXkC^9jg$+iCkriZ;384@#<0Lr}i^P@7#L5}~l<4c-#seC=U; zEFF%-AOW{c_w}5;iL(#aYM#9~ZXhFpio*+?F$nHtYfS?ywBZ|wf`1wsAWcez27cCj zG0q4w=0?hq7qqeA9;4#MDgQenhQMJ|xn6{2?(xaN-Jc-dsu4yTQOK`WcLML}`BnzOhTu zzIosA7%%-W^S)F!+TN3gP|HAqK@mk#NcAV`>m)}YD`A1;7 zKK9Gm+}he{->ohHxG=Q~sec-$3~=&@@Y~Cpf9cC-%`Gq8fASxdsr!}tew3B9$?_!6 z^1s}&vrOp3U9TUU^-1uOv{?W zp*=sXaGm{uJr!E!7xCK^z`glhb=wp7`>I!`1wcwsb|ZZlWU;>hi^o!5ioD?W;pzo# zhOLvS!ZQRkO8JF*ehcM{nQ~Ub+KDRXHi%_6!`KAMN|!`uYySDGEWMZt+#WyoPU+nr z80HB)3^PIKJ2$N!n>p}v0LNB)GRthx*|2Qq*z=`!ribq3?27D5 zOsoU7NSUjmMQhk^C^E#ImmyST^x27cwF*PXxS*xR`PGC{L^+Gz9L%PDSpd?W+?0U7 z^-4VjvEAf_}wx*L=|W+Ocxu1g`5PuVIUmNeid+V%p)A|9JpLkJZ}c>F&<1 z**~9yDmkz(RrmX?Eh+5__NOAb1?(^GJ2?c8o8q97WukH`!}+i(;d`0t4WNP}04c3K zAPM&SAd1tH6OpBp|Eg}-5Ic|c6M-WZN=}9(REg4n2+ex_aXLNf{(R=30CeB!+wp@e zNnV_jE9MLaePg?dL+!>q?l!_C<9;P<^D5)~Pj7G8B|{HDuJYYtYt>hU%PZfVVvr%4 zL(T(Y=Ts1WfH8J#u4x&MwW?5rwe`OAw7e~N{G-0PEDSH_{b@1|HzP1i5vLhN{>n?O z3SNIfEa8pKFzBtA%>7(;T1t>^{D$V1=3|WAA-~cROvQwR8O$bV1&qBa=~`^)ACJL3 zd~c;Ai&$Ap!Z+Mm=FJpSJh~32Jccp74XMx^g_^xvP}f&^nv=t%!~C)9wPVwf@jp_o zrSMbfLOedj7k-Wg`z{0h=yXmy>fu8Umj3X}6p1U<^uPJ%*eSlW6cGYYCe`fNbs6Ny z_v}YOO_Vd%u>2d`=Kd@bD=tdQy}9QcJPb^!wk8qoR;vmtiL>gHR2jPAaqN;&6DJXm zr?7u04e&?a(?S3<;@#C2Rj&8Yi3d1}?Myx(yh($#L6UJ|!--sPFSe$DC3|}+=T^|f z|Kiulan8TY`N(`d8RBFm7V)dSh8+UuH}^X)XKIQkCa!&dn|dvIdi=XN_xfj2rMsg8 zrU>`qN@cWq_g&;NL^49bW+JlBfXEygrSX1FEN2oDzFsPFC0Qs1~5h7 zUy2EKVz9IGBq~X*#2lU8Hm32AMD^2nt!L@9B!hq{5J1LOj!lK$Ha)Ng{Lw=LQr7x= z>ab>8riQH{pfl4zuUX_jsI@ zvtGQM90N93;ONh*`*D6Obr*t;B>B}Qs2o_`74CzLgc@Z+b)Dy$Oa`!W4)|qgt z!LQuWII87pq>Ndv(3%vFS$jmi9{bEsc!uPiZ=lfq0l388a2|)xjFIV{g&k$-XD-Lf zbN~VRi}yt#1THIgEeIk|Cb&&PQuToy{5whM#S1a;2ng;*@Huco#hyq-$x9ZtMijs+ zKZvj0OY~LGZxwbGj98}0^ee$*V|p6hONEX+Zg8ta`fgo1qNbWDgxwtIt;We9ac_B9B0`7AdgM4~e=wgD?zQoAJL_iI%2IsKz%eBdc1lOAjEIn#~wRk^ASy)yuDs)E#&`7Y5>@#_P#sE z6lHIEpex5o^~zZJ%b-0DL9OG&C;X7L-laNOS_i22V=?@Sf1;7pj?qEgosZ|F6~DR$ zNQmfBaa$r%-v1cWRW*D~TGAhcDY@`aWf)9s_%2~;2{6Rzs(;`Ii$;+SD zJj%m4<372Oh|SWj*q?}NJ}3e^)|;;p_OJG33H)deU!m%MSD#Nf`#nGneS=7zocL<{8YNCEbo zLv<-%b6>Yjfh*B14e(Q6h*by2)7ZEMJ(4r-yY04es!TQkYew(w@HBw zEoW~Tmt3NRpQp;qQ(9sc$}1IwkHvWHyk*yhi4Xoe2*|3qb|(AFSCanYB18XE-f2T` zz8Ykd=*5pGP|hAke@aG39x$wJ7{=;6C8E{B^jcTKMSN2?c71|3v6vu#jG(OSWApg& z`&xS5KG_7PeOz#%ON(8R^pn4^DJRLuS%7sTVqShqxwQ;3ljJc{;u@5m;~?&m>aW|h zkpR4WJI28-iCE2)lBiGP2uDDuBC}$F-}fZtSrVUPg?4-*7?y3ofq$EXRn@C zcfQAcyE4lGC1TGrs?CM`;;)cT!dgWZOo{O<{XER7n4&lKXIi@W^MJ^c-1*;0qyWPO zu}834AVE&~Gfp0FN4rxp3f7BMVU&_+NbORSmo@`DF_syUw=OCu_V-_%*Rr`AN^d@( zV%=)Qwor4F2=W2J2ql7~ZphRVe8pPNeBqe+nX)G43$<@2{u=_}R7iBnAMZ{q%Q-8D z`T>N30%l&Okazp;mF0BRLAH3y!G87c>I46Pu`eOTCC^knX9%`3&m|`?1|G{WwH>$- zY=ux7Cy+W<&wMz*@RKgT7y%B2I87z=FaPJ|Quh25kUWoN6j`r7o0`hFrY>t@v;GOc zwM&)_E|P>S`CuM#nr%w1tE2P~nY)5H8PP+A{w>ApgeE&zvKwI@S!lCA&=*CUhP@_T z5|ewAFeJ;<1@d;*-%WvA%)y~5uC07qW&CCj6=*mYqCvzrm8FeRS7vrBA|_+wLTraI z8t)-~%tTpDlKb*(hD_6at`cP>$?`Pb6w38kDcwAFTWLV0{CiVT zK_3DS4piIqC3Z*HCvWjwRxB|>*^jR^MwJoH3&~63f92{|r*tAPeRf4nUcOM#eg*yD z&jT6$>d8xtZq718lnF{dM<&0vk3qu7gd(rZnlT#dZ)-x-h705A(1DLAz7+{m%Qt*= z$KUVX0pVz0le6fWZsNZ^N2GeNV@9%Z$z!~T3YmZS&CHx-|J0of?IaggtPr}jFNtdw zIkbc~(Ai@Zmm%&vDXtc#Le^CN*n0EdQtb15@SnH$*-YLh;vo~1cl4AB;oqxGqQdC? zMR)nc)wu6_Qyrj2>VgE{} zX?a4Ej)M5ndC#aM$PZ!7K|UbUa?OdLi5wN@sc6ZyAe{CyJ#beJRZN()s>$`>`DR(e z*j_a)FPTNbQh3E&Lx+AZL5ilvMFLO2EpE@d^ziRCZJby$0f|$)a#w3w2GJa(=rS== zyg2kThL>7;)R(GzZ4G96t-*Xb{1yB>|6=?rpD|x~)I{aQaHTMnSrlCNzom_u@QC_= zIn!}*VyvoJ`V>NfW=@%``JjNfKJfZ9glEjHUwf~?dW2(@h^Qu>T*fIwPxD9@9r+0v zkNLDuW3ViqxH=906Lm}s`bP-gSgt=maS6xM$Qw!MaU&(!XoV7@)Trs^Pew+JNbeQ5 z{ArcgU!4~6sZm6~^>hUm`b28U4>yG%zUlDaL4O_|I*DeIRn7Cz8@G3Czh7I`lk<8t)zJI!{JLwso(!!t@8L&SrJ6FNsnU&+e;94zqY+Jyw~i zb}Ge8PP3X17MoZ~iPu45pGScoU%+V(_C4P*#&vd9$%#EQ*O0>75yEB=osKo(`9Uvj zrDW2ganT2s4)|r;2UA-`B1i&&BKh@{`~NxA{O|*L0dq=y2ctij-V(goTXY|r@yXT` z^)oGNz1YlX@GthMb#rOZh=-A&F>>x%^;x~*mS?%DGmPVsKdxG2mv@$*$!GFhoV3;~ zmx7#~3X}S;%)>}%T6S5X^lx4kd_R6N=geR3oR_{p#^$LbL8+kwsM+wg}4qVGnq1h8jd0CWk6~ zb2Fwtef1;mWqu8OS~>F4oS$RPoV*(Dq3)5Eo3X7>g~42;tXK0fna`lVG`QNymrF($ zrbayt`vEuX9g7Jd#~!F*yp*>Nz0h z%*!Vgo-wmYHjp4PFf;+N{(17?tpJ%t1>}%t+ z`25hp!Jg_NLtzi|A(#Bf+0V3AvW*S|gkhj)uR0v0^*DdFUST)iI+3V>Dh2;J>Zk87 z*QuD4?ziB7ds0Bp4IWKi*YbPV8`(_kvQZO(=kO04y~nCOZ$hp3)4ioUM;)UyLT$8y zQWZ79lVT-X-aaYonvxIBCb|GiRjiRF&3<^4T5drHZ&29E;@ag$V=YO|-fRrQ^CVJR zkAl=F{;Z8Ay&zlm(%JRNknzIymUw3U@o)XvdY)!vZcbLGB~}qT5O(05@S}Dl`HNie`d;5dSC0a#XScv*YZp3J3bAy}Vh9T%POEB;j{#F@!$g_$eNiD(EZ0&OWtl zbmi8-hi_?=%it&o(w(1O#ZE}Yx+8BX#ASsVSr5@}BT8N5RpK;^8F;1zi?u5w!(W`t z+5hr}j?e%+jH1=FAJt$=k_4*3-Ffk$?^=(Kioab;=|p4=_of;JJeM}cS2-H8K)D6o z`>O-PBQKDvztHp3>x^LT$qNdoS-3W@Po88ii!w*Mqsw=Dwpzde67> zoiLTJ#ZD9Ys@=vznKs+3#r^ZTVuu;?I4mxAcEn32`+^F?j(%Auunah6r zmcnZ;`KA7a3GVv*CrvHjPec&P_3OX2Y#9&#s%dwz8{ZU62ij6Na~qb|c^O>b)z+B= zuXJL(1tSYo2ct%IlAMg5wL3@)mK-e3a)4mtgn}-l=<^HaN0UB&Jnc70c!);gL4B1C z%fwPc4dGrU+iEfna)?oh%HKMQCazqDqHs{V6LxpLb?`;ytm24ELOu5v7UP9e%e%bO zat_HwIdy-z)!jYNNfN^?IqbR6cUzA9hSU&-+)wNyHyPYR#8r<6U6`sO) z;UEOm&JGlA_RVEq7l4z!k1e;wpH254sSFRP8zbFM3n;j29u_IFTKrvNMzE1(6iq|c zY&MvoWDwr8ZEVGJa@+gA&>x1~#Bo@62@_?T356!&b$N?GnXZWVk%5X$YF8lS4$KbL zsHb$Sj%qW+z0%oWKEpfyh?6H0Y2O0(+w{>WdOIkYGb#Rr4MMRR4_T5(8c0`b@;__F zF?apGI*2a$bKXjpnreJsoP3=X7r*34Z`PvG46%K?i1dLeo$EKONu9R;cW*nc<#sjA zi#9;SRYB4^)`7VH5EVSGgRljhs|5>`2lFI|D;Isd!5BkZEce=JyD|SL@+}^#onS(x zCHB)6#Jx*=mIOtk=(Zj5`ckf347o9#l)8ne!$e$A2G5xgeY)9qmh_`zK**KHYdM-0 zDZR;kONJJ|UGQf-g%3;Qh$~VKSdea;$-X{I*GWmK$1&gR(JpFD+C)&1DCa`2bM`?$W+58-8T zp~rUCImr1R3U&l-YdR}D-)m%E{kthTxDOFEbLKwfcUW8!`gx=RW*s;m>NEvWR!SM4 z;aEaAGx9|Bm;0~X6j`7}a1U)qEP^9w55rb=^d>H{VZ;S#8J&!$`%xE$`T502ARHEb zXo>{DC*%GNM!i?S6VXmOdm5?O^e9R*^yO<-wX=1#)cN(_@O_+2%u-h0do|qh+!ZTY zll%VaS?)=pRTP#*cGc4cv->b&G`A=J>}`zyh_4pIyDjnpy3-6d( zAul`*Z0^EYWOTfVm$QrTIHC;2}+-CNO&f>G zn;)vTkY6jmrYrdPWk<|{;_)vv(vaC=2EAVW8AHDY#a>kpfabTU@805dEty zMskgA@#WqbvTwI(GVz1-OA5!U-p5j_JI7F54z2iSF9Vp$mI8lrLRpMTE!cjc6t)Bf z*h>rUp&YTO?HPZx&r0TIDe`m4_hFfXYQ($ydrITPOooR_b~!h@Rg`9nOn-xYvt`DY z;2$x=k@`uJ=DuEP!F*$M=sx4LIEsyEyW{fs<)*CMw29V*wjNVt{@ zUsZ^xzsrQ9sgk5vkvxmvu<_-2Ui=qs?|8*{%=tD_BZRG1FQZX3Ys0PdAI}SRsAr9$ z38xmxun#O*4FQ!AKx~6`1LyhEzo4Faj`(qK?Ik!X*C)mtYBqRb!2gNU~pMq4lT zE4`Gj{;T)K3AQ;&suj0ptTI~m`_V4}o*{RiI^e62gsRf1n=rB3kBZ0mrK|Cdkg9Rt z^XQ-Z+G-j+zE2&;X+bubx}Z-&mYD0$24y*YA!@by<@h;9VCiR7?(;%Vvs=8L>$5#A zO|=8V+~?a%#^0zlxR!-IR$ZPYxtz39&dX|MDLwej1`QMJ)gfXOD%M3_7vXXoI3hiPKIpf5_02#cdkS`^atOZ{6X;zmY9; z=wue><)G{G%E&x8DQBnvIZ63Qexu8K%m+sb&?XzQiEollrNT29Byg(ZNQsh@I{PSoZYA{%4=E5e(TXT) zj&RJy6`y_k&F%K>0H)iOsTagt#j=2{vl*n22Yyy&hFmvyvV)tTPE6>~o9yFR0ZyJC zhBGZTXZevk?x5EpIsmVyCsEqz>{?5UTcob^cUeZn>xVtrQez7`sm#!IBFPMO8J-Vp zSXp9&Rn8hM&+(8t`Jb!U>O|g?UWp3L%9(`Rnu-a7bFoe<|FN0GE~3;09saIC2U&jj zI=8QMJcLhXz0Ap(ABY6otN+$hlKH~O2P_10=+HdJVNOp&6%-C$rbVf(T8LVS#lE`4 zLw3@kIXF#a9F2JPS9%zfQ8-tcZ(Rg^bHakmLU9 z)SGCc^xSn$c{q8h#T7LH8iY347r)X? zNm@oC$@2PQ72p4bi&n58704&sWq<<2CQ5UTyd0=GXd_?fZT5_fSTvS_*zy;fNpLRY z8me4yN)v`zFD`4SQA{3?5Uc@2tqa0*Z)fIAJ&Y^%cpq9hztN%jyBO*z#Q|h4QJ8%o z6mt3T`$jpIY9|*QHdFA9jX%ihTylfY)nMgOJ{W7k$xH6D1we?&BSqXyS_4Vw(u{v` zq{_hH4DVBMZ9~Yf1%F81e5?u{M>=-R4H(^3WnAkEq@BP|IN$$-XpI+XK+NM@=u=Cp zL21%tJ*l%BdG3;pi(E*aDZgN3X~@KTz&$kCUi^h&h@z=$bpElYN!i}uOGw_W5F^sg{qQzY znqOTtc5(UC(w=92fmhc|Rc6c!8>Cuw2|WM*h0`jkX~!|AGK$7awBaWQWg`Kn zWgtT8?`{4GoRmBv4c~gEPB}tm=V%)FGQO5-j^)G;BT#Q;CFb<$Q`&&@qJokaqp8+M zO=$z1Nl6OTvt83e3Za8N(+}-DftfkoW;eflI-CQd{5s)3aQx*$OEzutc!lvImRm<=&Pp66vcIB9^Q+3Wb) zsR27*!^2c zRhd`XiZ%Y&Ohq;mkE~U+xtY+S&^C10jEcaN|0NF}le`4e3dJ2^t36cZGo#-Y)#q>K zKqH8EtwMs1JT*SJE<;&AP+%387GdiX4)p)I;z9Vt#H%!(3@ukrsdI|@;A7cAYPdsA zl)5+NL7Fsqu1}9|Ppkb*BKQsSp3hRN$$EKjW4T_2e&cRk-!^@=XEO!uB&=U^YGG1Z z8A7K>krFt)t8$hQ%B)d1d&as~>8n*z(+0+ulTq28Y2lG>^xww_2!%U|udb*nW+4m} z|NK)D;yOAmKh)7VMomaug|r(*lb`ur9!b9c`}qGpmgaSjbFQh`OCRAH{2#8qDj>?P zYnzmkkd{Wtp#|x97)9xvp&OAd0YSQz?(T-6ySqfCyG!Ym?r;14Xa6Y&9L(PLUTa;o ze5*AaprtpQM)*)YsRA9)7MjT!HCH{kz-YO9TdV(5Q+jHk+gJjLHF>Q*>lgFrNhjOz zMNV{7U~VCPPa$3=OZ(^X(VMf5jb~qa5`d4Vo`|qdKa508vS{8zc4pjX*A5i)Zo&Xd zcm1u?Kj0KnXss8%JWb$ucUvJ)MiU^;%34bp(7nP&;`rfWWMb}Ds_jK<<U+TdAUIXrJzFd6!O zilJ--yaUzG721{$YII`>5NO#iqE*AH{u~UsAKx{nM|9jC->GPs_?^9OhG3q8(EeT- zXuSEbu8Zu9BfUw2HIH_h-!lng>URLo!tO4ZXMxhomC;Rth>1LmY=pE%-!e*v5))=H zQ7h!t_V#usN5i5YP?uBbG}ubX$>ET)Yx+cbo#m4A7{4vXkAyuRpVy2h-(}B%C(KA& z#&}p$wLy!&haJ+2Tj>s0EIgs(LN|IA7jOLPg^8q**1f`f`u^MenHDW#88J*3=ZhD~ zwI_))0-$NH&#ht#=_z>H)ygw;RWs^sKbWWf6cK8C{mY1ans}gKX$duh*IHQt+`W@; zCIl>(ji)mDTMPT522O{b6_AosS%S@{PL`o#KV%6IFmLx}Hy+WgW;7o$zdqwNY^V_V zM5;92m3}W>nIwKUopzY4iF1LUa(&}Z1IeP(jQqE<1O>yPeA9)8T3jgd*D°Sn2 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 H*na3=giJ|4 literal 0 HcmV?d00001 diff --git a/report/report.pdf b/report/report.pdf new file mode 100644 index 0000000000000000000000000000000000000000..8fa5d3c71b59fc4354169c9bf62ec08f461ab1d1 GIT binary patch literal 446606 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 {Qx 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ⅆ?E5?Rk`a844KSQdO2OKz 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%0AK!b1ze~p9Q^7mco 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 HV2u9*_1iLn literal 0 HcmV?d00001 diff --git a/report/report.tex b/report/report.tex new file mode 100644 index 0000000..8be112f --- /dev/null +++ b/report/report.tex @@ -0,0 +1,585 @@ +% +% !TEX TS-program = xelatex +% !TEX encoding = UTF-8 Unicode +% !TEX spellcheck = el-GR +% +% Information Systems Security assignment report +% +% Requires compilation with XeLaTeX +% +% authors: +% Χρήστος Χουτουρίδης ΑΕΜ 8997 +% cchoutou@ece.auth.gr + + +% Options: +% +% 1) mainlang= +% Default: english +% Set the default language of the document which affects hyphenations, +% localization (section, dates, etc...) +% +% example: \documentclass[mainlang=greek]{AUThReport} +% +% 2) +% Add hyphenation and typesetting support for other languages +% Currently supports: english, greek, german, frenc +% +% example: \documentclass[english, greek]{AUThReport} +% +% 3) short: Requests a shorter title for the document +% Default: no short +% +% example: \documentclass[short]{AUThReport} +% +\documentclass[a4paper, 11pt, mainlang=greek, english]{AUThReport/AUThReport} + +\CurrentDate{\today} + +% Greek report document setup suggestions +%--------------------------------- +% Document configuration +\AuthorName{Χρήστος Χουτουρίδης} +\AuthorAEM{8997} +\AuthorMail{cchoutou@ece.auth.gr} + +%\CoAuthorName{CoAuthor Name} +%\CoAuthorAEM{AEM} +%\CoAuthorMail{CoAuthor Mail} + +% \WorkGroup{Ομάδα Χ} + +\DocTitle{Εργασία Εξαμήνου} +\DocSubTitle{Απλοποιημένη κωδικοποίηση-αποκωδικοποίηση AAC} + +\Department{Τμήμα ΗΜΜΥ. Τομέας Ηλεκτρονικής} +\ClassName{Συστήματα Πολυμέσων και Εικονική Πραγματικότητα} + +\InstructorName{Αναστάσιος Ντελόπουλος} +\InstructorMail{antelopo@ece.auth.gr} + +%\CoInstructorName{} +%\CoInstructorMail{} + + +% Local package requirements +%--------------------------------- +%\usepackage{tabularx} +%\usepackage{array} +%\usepackage{commath} + +\usepackage{amsmath, amssymb, amsfonts} +\usepackage{graphicx} +\usepackage{caption} +\usepackage{subcaption} +\usepackage{float} + +\captionsetup[figure]{name=Εικόνα} + +% Requires: -shell-escape compile argument +\usepackage{minted} +\usepackage{xcolor} % + +\setminted[python]{ + fontsize=\small, + breaklines, + autogobble, + baselinestretch=1.1, + tabsize=2, + numbersep=8pt, + startinline, + gobble=0 +} + +\setminted[bash]{ + fontsize=\small, + breaklines, + autogobble, + baselinestretch=1.1, + tabsize=2, + numbersep=8pt, + startinline, + gobble=0 +} + +\newcommand{\repo}{https://git.hoo2.net/hoo2/Multimedia_AAC_Project} + + +\begin{document} + +% Request a title page or header +\InsertTitle + +\section{Εισαγωγή} + +Η παρούσα εργασία αφορά την υλοποίηση ενός απλοποιημένου κωδικοποιητή και αποκωδικοποιητή ήχου κατά το πρότυπο \textbf{Advanced Audio Coding} (AAC). +Το AAC αποτελεί μία μέθοδο κωδικοποίησης μετασχηματισμού (transform coding) η οποία συνδυάζει ανάλυση στο πεδίο της συχνότητας, ψυχοακουστικό μοντέλο και κωδικοποίηση εντροπίας, με στόχο την αποδοτική συμπίεση ηχητικών σημάτων υψηλής ποιότητας. +Η βασική αρχή λειτουργίας του βασίζεται στη μείωση της πλεονάζουσας πληροφορίας μέσω του μετασχηματισμού \textbf{MDCT} και στην εκμετάλλευση των ιδιοτήτων της ανθρώπινης ακοής ώστε να επιτρέπεται ελεγχόμενη απώλεια πληροφορίας που δεν είναι αντιληπτή. + +Στο πλαίσιο της εργασίας υλοποιούμε μία \textit{απλοποιημένη εκδοχή} του προτύπου, όπως αυτή περιγράφεται στην εκφώνηση, παραλείποντας ορισμένες βαθμίδες όπως το Mid/Side stereo και το Bit Reservoir, διατηρώντας όμως τον βασικό κορμό της αλυσίδας κωδικοποίησης. +Συγκεκριμένα, αναπτύσσουμε διαδοχικά τις βαθμίδες Sequence Segmentation Control, Filterbank (MDCT/IMDCT), Temporal Noise Shaping, Psychoacoustic Model, Quantization και Huffman coding, καθώς και τις αντίστροφες διαδικασίες αποκωδικοποίησης. + +Στην παρούσα αναφορά περιγράφουμε τη θεωρητική βάση κάθε βαθμίδας, τον τρόπο υλοποίησής της και τα αποτελέσματα που προκύπτουν από την πειραματική αξιολόγηση του συστήματος. + +\subsection{Παραδοτέα} +Τα παραδοτέα της εργασίας αποτελούνται από: +\begin{itemize} + \item Την παρούσα αναφορά. + \item Τους καταλόγους \texttt{level\_}, $i=1,2,3$ με τον κώδικα της εφαρμογής. + Ο καθένας περιέχει ένα αντίστοιχο script \texttt{level\_.py} που καλεί την demonstration συνάρτηση του αντίστοιχου level. + \item Το \href{\repo}{σύνδεσμο} με το αποθετήριο που περιέχει όλο το project με τον κώδικα της εφαρμογής και της παρούσας αναφοράς. +\end{itemize} + +\section{Υλοποίηση} + +Η υλοποίηση οργανώνεται \textbf{αρθρωτά}, με σαφή διαχωρισμό των επιμέρους λειτουργικών βαθμίδων, ώστε κάθε στάδιο της κωδικοποίησης και της αποκωδικοποίησης να μπορεί να ελεγχθεί και να επαληθευτεί ανεξάρτητα. +Η δομή αυτή μας επιτρέπει να αναπτύξουμε σταδιακά τρία επίπεδα ολοκλήρωσης, από την πλήρως αναστρέψιμη μετασχηματιστική κωδικοποίηση έως την πλήρη απωλεστική κωδικοποίηση με ψυχοακουστικό έλεγχο και κωδικοποίηση εντροπίας. + +Οι επιμέρους βαθμίδες του κωδικοποιητή και του αποκωδικοποιητή υλοποιήθηκαν ως \textbf{ανεξάρτητα modules}, τα οποία επαναχρησιμοποιούνται σε κάθε κατάλογο \texttt{level\_}. +Αν και η δομή του παραδοτέου δίνει την εντύπωση ότι οι κατάλογοι των επιπέδων περιέχουν αντίγραφα των ίδιων αρχείων, στην πράξη αυτό δεν ισχύει. +Η αρχική μας προσέγγιση ήταν η ύπαρξη ενός κεντρικού καταλόγου με κοινή υλοποίηση για όλα τα επίπεδα, ωστόσο οι περιορισμοί της εκφώνησης δεν επέτρεπαν τέτοια οργάνωση. +Αντί της χρήσης υπο-αποθετηρίων, επιλέξαμε τη λύση των hard links, ώστε τα αρχεία του κοινού πυρήνα να εμφανίζονται σε κάθε κατάλογο επιπέδου χωρίς να υπάρχει πραγματικός διπλασιασμός του κώδικα. +Με τον τρόπο αυτό διατηρούμε \textbf{ένα ενιαίο σημείο που συντηρείται ο κώδικας} και αποφεύγουμε αποκλίσεις μεταξύ των επιπέδων. + +Κάθε module αναπτύχθηκε ανεξάρτητα, με εκτεταμένη χρήση αυτοματοποιημένων δοκιμών. +Η ανάπτυξη ακολούθησε προσέγγιση \textbf{Test-Driven Development}, όπου τα tests σχεδιάστηκαν με βάση το δημόσιο interface κάθε module και περιγράφουν τη λειτουργική του συμπεριφορά. +Τα tests έχουν λειτουργικό και συμβατικό χαρακτήρα (functional and contract-based) και ελέγχουν σχήματα δεδομένων, αριθμητική σταθερότητα, οριακές περιπτώσεις και ιδιότητες αναστρεψιμότητας. +Η πρακτική αυτή μας επέτρεψε να εκτελούμε εύκολα \textbf{regression tests} μετά από κάθε τροποποίηση, διασφαλίζοντας ότι δεν εισάγονται ανεπιθύμητες παρενέργειες σε άλλα μέρη του συστήματος. + +Δημιουργήσαμε επίσης wrapper module για το δοθέν module κωδικοποίησης Huffman. +Κατά την ενσωμάτωσή του \textbf{εντοπίστηκε σφάλμα τύπου off-by-one} στον μηχανισμό αποκωδικοποίησης escape τιμών του codebook 11. +Το σφάλμα αφορούσε τον χειρισμό του bit διαχωρισμού (delimiter) στη μορφή κωδικοποίησης των escape τιμών. +Συγκεκριμένα, κατά την αποκωδικοποίηση μετρούνταν σωστά τα N διαδοχικά bits τιμής ‘1’, όμως το επόμενο bit ‘0’, που λειτουργεί ως διαχωριστής, δεν παραλειπόταν πριν την ανάγνωση των N+4 bits του payload. +Ως αποτέλεσμα, το bit διαχωρισμού συμπεριλαμβανόταν εσφαλμένα στα bits της escape τιμής, οδηγώντας σε μετατόπιση κατά ένα bit και σε λανθασμένη ανακατασκευή του μεγέθους. +Το σφάλμα αυτό δεν προκαλούσε εξαίρεση εκτέλεσης, αλλά αλλοίωνε τις διαφορές των scalefactors. +Η διόρθωση συνίσταται στη σωστή κατανάλωση του bit διαχωρισμού πριν την ανάγνωση των N+4 bits της escape τιμής. +Η προτεινόμενη αλλαγή κοινοποιήθηκε στους διδάσκοντες και έγινε αποδεκτή. + +Συνοπτικά, τα βασικά modules του συστήματος είναι τα ακόλουθα: + +\begin{itemize} + \item \textbf{\texttt{aac\_ssc}}: Υλοποίηση της βαθμίδας Sequence Segmentation Control. + \item \textbf{\texttt{aac\_filterbank}}: Υλοποίηση MDCT/IMDCT και διαχείριση παραθύρων. + \item \textbf{\texttt{aac\_tns}}: Υλοποίηση Temporal Noise Shaping. + \item \textbf{\texttt{aac\_psycho}}: Υλοποίηση ψυχοακουστικού μοντέλου και υπολογισμός SMR. + \item \textbf{\texttt{aac\_quantizer}}: Υλοποίηση μη ομοιόμορφου κβαντιστή και αντίστροφης κβάντισης. + \item \textbf{\texttt{aac\_huffman}}: Διαχείριση κωδικοποίησης και αποκωδικοποίησης Huffman. + \item \textbf{\texttt{aac\_coder} / \texttt{aac\_decoder}}: Σύνθεση της πλήρους ροής κωδικοποίησης και αποκωδικοποίησης. + \item \textbf{\texttt{aac\_utils}}: Βοηθητικές συναρτήσεις και μετρικές αξιολόγησης. +\end{itemize} + +Για την επιτυχή εκτέλεση του κώδικα απαιτείται η εγκατάσταση των εξαρτήσεων. +Για το λόγο αυτό από τον κεντρικό κατάλογο πρέπει να εκτελεστεί: +\begin{minted}{bash} + pip install -r requirements.txt +\end{minted} + +Τα αυτοματοποιημένα tests δεν απαιτούνται από την εκφώνηση και δεν εκτελούνται από τα scripts των επιπέδων. +Παρ' όλα αυτά, ο αναγνώστης μπορεί να τα εκτελέσει από τον κεντρικό κατάλογο του project: +\begin{minted}{bash} + pytest -v + # to run a specific module (for example filterbank) + pytest -v core/tests/test_filterbank.py +\end{minted} + + +\section{Level 1 -- SSC και MDCT} + +\subsection{Απαιτήσεις Level 1} + +Στο πρώτο επίπεδο ζητείται η υλοποίηση ενός πλήρως αναστρέψιμου συστήματος κωδικοποίησης--αποκωδικοποίησης βασισμένου στον μετασχηματισμό MDCT. +Το επίπεδο αυτό δεν περιλαμβάνει ψυχοακουστικό μοντέλο, κβάντιση ή κωδικοποίηση εντροπίας. +Στόχος είναι η σωστή υλοποίηση του Sequence Segmentation Control και του Filterbank, έτσι ώστε \textbf{η ανακατασκευή του σήματος να είναι αριθμητικά ταυτόσημη με το αρχικό}, μέχρι αριθμητική ακρίβεια κινητής υποδιαστολής. + +Το Level 1 λειτουργεί ως θεμέλιο για τα επόμενα επίπεδα, καθώς οποιοδήποτε σφάλμα στο μετασχηματιστικό στάδιο θα μεταφερόταν και θα ενισχυόταν στα επόμενα στάδια. + +\subsection{Modules που χρησιμοποιούνται} + +Για το Level 1 χρησιμοποιούνται τα εξής modules: + +\begin{itemize} + \item \textbf{\texttt{aac\_ssc}} για την επιλογή τύπου frame. + \item \textbf{\texttt{aac\_filterbank}} για MDCT/IMDCT και OLA. + \item \textbf{\texttt{aac\_coder\_1}} και \textbf{\texttt{aac\_decoder\_1}} για τη σύνθεση της ροής. + \item \textbf{\texttt{aac\_utils}} για βοηθητικές συναρτήσεις και υπολογισμό SNR. +\end{itemize} + +\subsection{Sequence Segmentation Control} + +Η βαθμίδα SSC υλοποιεί τον μηχανισμό επιλογής τύπου παραθύρου (OLS, LSS, ESH, LPS) με βάση την ανίχνευση spikes (attack detection). +Η ανίχνευση βασίζεται στον υπολογισμό της ενέργειας σε υπο-τμήματα μήκους 128 δειγμάτων και στον λόγο διαδοχικών ενεργειών. + +Η υλοποίηση είναι πλήρως συμμετρική για τα δύο κανάλια και ο τελικός τύπος frame προκύπτει από συγχώνευση των δύο καναλιών σύμφωνα με τον πίνακα μετάβασης. +Επίσης, δόθηκε ιδιαίτερη προσοχή στη αριθμητική σταθερότητα, ώστε να αποφεύγονται διαιρέσεις με μηδενική ενέργεια. + +\subsection{Filterbank και MDCT} + +Το module \texttt{aac\_filterbank} υλοποιεί τον MDCT και τον αντίστροφό του IMDCT σε διακριτή μορφή. +Χρησιμοποιούνται παράθυρα τύπου SIN και KBD, σύμφωνα με τον τύπο frame. +Η υλοποίηση διαχειρίζεται σωστά τις μεταβάσεις μεταξύ παραθύρων, εφαρμόζοντας overlap-add (OLA) ώστε να επιτυγχάνεται perfect reconstruction σε steady state. + +Τόσο η ιδιότητα γραμμικότητας του μετασχηματισμού, όσο και η σχέση ενίσχυσης: +\[ +\text{MDCT}(\text{IMDCT}(X)) \approx 2X +\] +ελέγχθηκαν αριθμητικά στο πλαίσιο των tests. + +Ενδεικτικά να αναφαίρουμε το παράδειγμα στον έλεγχος της σχέσης ενίσχυσης: +\begin{minted}{python} + X: MdctCoeffs = rng.normal(size=K) + x: TimeSignal = imdct(X) + X_hat: MdctCoeffs = mdct(x) + _assert_allclose(X_hat, 2.0 * X, rtol=tolerance, atol=tolerance) +\end{minted} + + +\subsection{Φιλοσοφία Ελέγχου Ορθότητας} + +Ως γνωστόν, στον προγραμματισμό και στο quality assurance, \textbf{δεν μπορεί να υπάρχει απόλυτη απόδειξη ορθότητας}. +Υπάρχει μόνο μείωση της πιθανότητας σφάλματος μέσω στοχευμένων ελέγχων. + +Για το Level 1 ελέγχθηκαν: + +\begin{itemize} + \item Ιδιότητες γραμμικότητας MDCT/IMDCT. + \item Απουσία NaN/Inf σε τυχαίες εισόδους. + \item Σωστή διαχείριση μεταβάσεων παραθύρων. + \item Ορθή συμπεριφορά SSC σε edge cases. + \item End-to-end ταυτότητα σήματος με υψηλό SNR. +\end{itemize} + +Τα tests μπορούν να εκτελεστούν με: + +\begin{minted}{bash} + pytest -v core/tests/test_filterbank.py + pytest -v core/tests/test_ssc.py + pytest -v core/tests/test_utils.py +\end{minted} + +Η επιτυχής εκτέλεση των παραπάνω tests διασφαλίζει ότι το Level 1 αποτελεί αριθμητικά σταθερό θεμέλιο για τα επόμενα επίπεδα. + +\subsection{Demo και Αποτελέσματα} + +Η demonstration του Level 1 μπορεί να εκτελεστεί με: + +\begin{minted}{bash} + cd level_1 + python -m level_1 material/LicorDeCalandraca.wav material/LicorDeCalandraca_out_l1.wav +\end{minted} + +Η έξοδος που προέκυψε ήταν: + +\begin{minted}{text} + Encoding ...................... done + Decoding ...................... done + SNR = 257.437 dB +\end{minted} + +Η τιμή SNR άνω των 250 dB \textbf{υποδηλώνει πρακτικά αριθμητική ταυτότητα μεταξύ αρχικού και ανακατασκευασμένου σήματος}. +Η απόκλιση οφείλεται αποκλειστικά σε \textbf{αριθμητική ακρίβεια κινητής υποδιαστολής} και όχι σε δομικό σφάλμα της υλοποίησης. +Το αποτέλεσμα αυτό επιβεβαιώνει ότι η υλοποίηση του Filterbank και του SSC είναι συνεπής και πλήρως αναστρέψιμη. + + +\section{Level 2 – Temporal Noise Shaping} + +\subsection{Απαιτήσεις Level 2} + +Στο δεύτερο επίπεδο ζητείται η ενσωμάτωση της βαθμίδας \textbf{Temporal Noise Shaping (TNS)} στη ροή κωδικοποίησης. +Το TNS εφαρμόζεται στο πεδίο των συντελεστών MDCT και βασίζεται σε γραμμική πρόβλεψη. +Στόχος της βαθμίδας είναι η χρονική ανακατανομή του σφάλματος κβάντισης, ώστε το αντιληπτό σφάλμα να κατανέμεται χρονικά με πιο ευνοϊκό τρόπο. + +Στο Level 2 η διαδικασία παραμένει πλήρως αναστρέψιμη. +Η κβάντιση των συντελεστών πρόβλεψης γίνεται με συγκεκριμένο βήμα και σε περιορισμένο εύρος τιμών, ώστε να διασφαλίζεται η σταθερότητα του αντίστροφου φίλτρου. + +\subsection{Modules που χρησιμοποιούνται} + +Για το Level 2 χρησιμοποιούνται: + +\begin{itemize} + \item \textbf{\texttt{aac\_ssc}}. + \item \textbf{\texttt{aac\_filterbank}}. + \item \textbf{\texttt{aac\_tns}}. + \item \textbf{\texttt{aac\_coder\_2}} και \textbf{\texttt{aac\_decoder\_2}}. + \item \textbf{\texttt{aac\_utils}}. +\end{itemize} + +Το νέο στοιχείο σε σχέση με το Level 1 είναι το module \texttt{aac\_tns}, το οποίο εφαρμόζεται μετά τον MDCT και πριν από την αντίστροφη διαδικασία στον αποκωδικοποιητή. + +\subsection{Υλοποίηση της βαθμίδας TNS} + +Για κάθε frame υπολογίζονται συντελεστές γραμμικής πρόβλεψης τάξης \texttt{PRED\_ORDER} (4). +Στην περίπτωση ESH, η διαδικασία εφαρμόζεται ανεξάρτητα σε κάθε ένα από τα 8 υπο-frames. +Οι συντελεστές πρόβλεψης κβαντίζονται με σταθερό βήμα \texttt{QUANT\_STEP} (0.1) και περιορίζονται στο διάστημα $[-\texttt{QUANT\_MAX}(-0.7), +\texttt{QUANT\_MAX}(+0.7)]$. + +Το φίλτρο που ορίζεται από τους συντελεστές $\{a_k\}$ έχει μορφή: + +\[ +H(z) = 1 - \sum_{k=1}^{p} a_k z^{-k}. +\] + +Στον κωδικοποιητή το φίλτρο εφαρμόζεται σε μορφή \textbf{FIR}. +Κάθε νέος συντελεστής MDCT προκύπτει αφαιρώντας γραμμικό συνδυασμό προηγούμενων συντελεστών. +Η επιλογή FIR μορφής εξασφαλίζει αριθμητική σταθερότητα, καθώς δεν υπάρχει ανατροφοδότηση. + +Στον αποκωδικοποιητή εφαρμόζεται το αντίστροφο φίλτρο: + +\[ +H^{-1}(z) = \frac{1}{1 - \sum_{k=1}^{p} a_k z^{-k}}, +\] + +το οποίο έχει μορφή \textbf{IIR}. +Η αντιστροφή υλοποιείται αναδρομικά, επαναφέροντας τους αρχικούς συντελεστές MDCT. +Η διαδικασία αυτή είναι πλήρως αναστρέψιμη υπό την προϋπόθεση ότι το IIR φίλτρο είναι σταθερό. + +Η σταθερότητα απαιτεί όλες οι ρίζες του πολυωνύμου: + +\[ +z^p - a_1 z^{p-1} - \dots - a_p = 0 +\] + +να βρίσκονται \textbf{εντός του μοναδιαίου κύκλου}. +Ακόμη και μικρή υπέρβαση της μοναδιαίας ακτίνας θα οδηγούσε σε εκθετική ενίσχυση κατά την αναδρομική εφαρμογή του φίλτρου και σε αριθμητική υπερχείλιση. + +\subsection{Φιλοσοφία Ελέγχου Ορθότητας} + +Όπως και στο Level 1, δεν υπάρχει απόλυτη μαθηματική απόδειξη ορθότητας. +Για τη βαθμίδα TNS ελέγχθηκαν: + +\begin{itemize} + \item Σωστά σχήματα εξόδου για long και ESH frames. + \item Κβάντιση πάνω στο επιθυμητό πλέγμα τιμών. + \item Περιορισμός συντελεστών στο επιτρεπτό εύρος. + \item Ρητός έλεγχος σταθερότητας μέσω υπολογισμού ριζών. + \item Ιδιότητα round-trip: $\text{iTNS}(\text{TNS}(X)) \approx X$. + \item Απουσία NaN/Inf σε τυχαίες και οριακές εισόδους. +\end{itemize} + +Ο έλεγχος σταθερότητας υλοποιείται αριθμητικά με την εξής λογική: +\begin{minted}{python} + poly = np.empty(p + 1) + poly[0] = 1.0 + poly[1:] = -a_q + roots = np.roots(poly) + margin = 1e-12 + assert np.all(np.abs(roots) < (1.0 - margin)) +\end{minted} + +Η ιδιότητα αντιστρεψιμότητας ελέγχεται μέσω round-trip ελέγχου: +\begin{minted}{python} + frame_F_tns, coeffs = aac_tns(frame_F_in, frame_type) + frame_F_hat = aac_i_tns(frame_F_tns, frame_type, coeffs) + np.testing.assert_allclose(frame_F_hat, frame_F_in) +\end{minted} + +Οι παραπάνω έλεγχοι δεν αποδεικνύουν μαθηματικά την ορθότητα, αλλά διασφαλίζουν ότι το ζεύγος FIR/IIR λειτουργεί ως ακριβές αντίστροφο εντός αριθμητικής ακρίβειας και ότι η κβάντιση δεν εισάγει αστάθεια. + +Τα ακριβή tests μπορούν να εκτελεστούν με: + +\begin{minted}{bash} + pytest -v core/tests/test_tns.py +\end{minted} + +\subsection{Demo και Αποτελέσματα} + +Η demonstration του Level 2 εκτελείται με: + +\begin{minted}{bash} + cd level_2 + python -m level_2 material/LicorDeCalandraca.wav material/LicorDeCalandraca_out_l2.wav +\end{minted} + +Η έξοδος που προέκυψε ήταν: + +\begin{minted}{text} + Encoding ...................... done + Decoding ...................... done + SNR = 257.437 dB +\end{minted} + +Η τιμή SNR είναι πρακτικά ταυτόσημη με εκείνη του Level 1. +Το αποτέλεσμα αυτό επιβεβαιώνει ότι η ενσωμάτωση του TNS \textbf{δεν εισάγει απώλεια πληροφορίας στο συγκεκριμένο στάδιο}. +Η υλοποίηση του FIR/IIR ζεύγους και ο έλεγχος σταθερότητας εξασφαλίζουν \textbf{πλήρη αναστρεψιμότητα} της διαδικασίας. + + + +\section{Level 3 – Πλήρης Απωλεστική Κωδικοποίηση} + +\subsection{Απαιτήσεις Level 3} + +Στο τρίτο επίπεδο ζητείται η υλοποίηση της \textbf{πλήρους απωλεστικής αλυσίδας κωδικοποίησης}. +Προστίθενται το ψυχοακουστικό μοντέλο, ο μη ομοιόμορφος κβαντιστής και η κωδικοποίηση Huffman. +Σε αντίθεση με τα προηγούμενα επίπεδα, το Level 3 \textbf{δεν είναι πλέον πλήρως αναστρέψιμο}. +Η απώλεια πληροφορίας είναι συνειδητή και ελεγχόμενη, με βάση τις αρχές της ψυχοακουστικής απόκρυψης. + +Στόχος είναι η μείωση του bitrate διατηρώντας αποδεκτή αντιληπτή ποιότητα. + +\subsection{Modules που χρησιμοποιούνται} + +Για το Level 3 χρησιμοποιούνται όλα τα modules του συστήματος: + +\begin{itemize} + \item \textbf{\texttt{aac\_ssc}}. + \item \textbf{\texttt{aac\_filterbank}}. + \item \textbf{\texttt{aac\_tns}}. + \item \textbf{\texttt{aac\_psycho}}. + \item \textbf{\texttt{aac\_quantizer}}. + \item \textbf{\texttt{aac\_huffman}}. + \item \textbf{\texttt{aac\_coder\_3}} και \textbf{\texttt{aac\_decoder\_3}}. + \item \textbf{\texttt{aac\_utils}}. +\end{itemize} + +Το Level 3 αποτελεί σύνθεση όλων των προηγούμενων βαθμίδων με προσθήκη κβάντισης και κωδικοποίησης εντροπίας. + +\subsection{Ψυχοακουστικό Μοντέλο} + +Το module \texttt{aac\_psycho} υπολογίζει το Signal-to-Mask Ratio (SMR) για κάθε Bark band. +Η διαδικασία βασίζεται στους πίνακες B219a και B219b για long και short frames αντίστοιχα. +Υπολογίζεται η ενέργεια ανά band, εφαρμόζεται spreading function και κατώφλι απόλυτης ακουστότητας. +Το SMR καθορίζει το επιτρεπτό σφάλμα κβάντισης σε κάθε band. + +Δόθηκε ιδιαίτερη προσοχή: + +\begin{itemize} + \item Στην αποφυγή διαίρεσης με μηδέν μέσω χρήσης μικρού όρου \texttt{EPS}. + \item Στον έλεγχο ότι όλες οι ενδιάμεσες ποσότητες παραμένουν πεπερασμένες. +\end{itemize} + +\subsection{Κβαντιστής και Scalefactors} + +Το module \texttt{aac\_quantizer} εφαρμόζει μη ομοιόμορφη κβάντιση των συντελεστών MDCT. +Για κάθε band επιλέγεται scalefactor που ικανοποιεί το αντίστοιχο SMR. +Οι scalefactors κωδικοποιούνται διαφορικά (DPCM). +Η ανακατασκευή γίνεται αθροιστικά και εφαρμόζεται εκθετικός παράγοντας της μορφής: + +\[ +\hat{X} = \text{sign}(S) |S|^{4/3} \times 2^{\alpha/4}. +\] + +Η συγκεκριμένη μορφή καθιστά το σύστημα \textbf{ιδιαίτερα ευαίσθητο σε αριθμητικά σφάλματα}. +Για τον λόγο αυτό χρησιμοποιήθηκαν: + +\begin{itemize} + \item Έλεγχοι πεπερασμένων τιμών (finite checks). + \item Έλεγχος αποφυγής overflow. + \item Προστασία με \texttt{EPS} σε παρονομαστές. +\end{itemize} + +\subsection{Κωδικοποίηση Huffman} + +Οι κβαντισμένοι συντελεστές και τα DPCM scalefactors κωδικοποιούνται με Huffman. +Το bitstream ανακατασκευάζεται πλήρως στον αποκωδικοποιητή. +Ιδιαίτερη προσοχή δόθηκε: + +\begin{itemize} + \item Στη σωστή \textbf{διαχείριση escape τιμών}. + \item Στην ορθή \textbf{κατανάλωση bitstreams}. + \item Στην \textbf{αποφυγή out-of-bounds} προσπελάσεων. +\end{itemize} + +\subsection{Φιλοσοφία Ελέγχου Ορθότητας} + +Το Level 3 \textbf{δεν μπορεί να ελεγχθεί με κριτήριο ταυτότητας}. +Ελέγχθηκε με κριτήρια λειτουργικής ορθότητας και αριθμητικής σταθερότητας. + +Συγκεκριμένα ελέγχθηκαν: + +\begin{itemize} + \item Ορθότητα DPCM ανακατασκευής scalefactors. + \item Συνεπής αντιστοίχιση ESH packing και unpacking. + \item Απουσία NaN/Inf σε όλη τη ροή. + \item Απουσία εκθετικής υπερχείλισης. + \item Έλεγχος μηδενικού lag μεταξύ αρχικού και ανακατασκευασμένου σήματος. + \item Έλεγχος μη ανταλλαγής καναλιών (L/R swap detection). + \item Έλεγχος απουσίας clipping. + \item Έλεγχος διατήρησης συνολικού gain. +\end{itemize} + +Ο \textbf{έλεγχος lag} υλοποιείται μέσω εκτίμησης χρονικής μετατόπισης. +Ο έλεγχος καναλιών διασφαλίζει ότι η \textbf{ενέργεια του αριστερού και δεξιού καναλιού δεν έχει ανταλλαγεί}. +Οι έλεγχοι αυτοί διασφαλίζουν ότι η απώλεια ποιότητας οφείλεται αποκλειστικά στην κβάντιση και όχι σε δομικό σφάλμα. + +Τα tests μπορούν να εκτελεστούν με: + +\begin{minted}{bash} + pytest -v core/tests/test_psycho.py + pytest -v core/tests/test_quantizer.py + pytest -v core/tests/test_huffman.py + pytest -v core/tests/test_aac_coder_decoder.py +\end{minted} + +\subsection{Demo και Αποτελέσματα} + +Η demonstration του Level 3 εκτελείται με: + +\begin{minted}{bash} + cd level_3 + python -m level_3 material/LicorDeCalandraca.wav material/LicorDeCalandraca_out_l3.wav material/aac_seq_3.mat +\end{minted} + +Η έξοδος που προέκυψε ήταν: + +\begin{minted}{text} + Storing coded sequence to material/aac_seq_3.mat + Encoding ...................... done + Decoding ...................... done + SNR = 9.454 dB + Bitrate (coded) = 216710.22 bits/s + Compression ratio = 7.0881 +\end{minted} + +Παρατηρούμε πως η τιμή SNR είναι σημαντικά χαμηλότερη σε σχέση με τα προηγούμενα επίπεδα, γεγονός αναμενόμενο λόγω απωλεστικής κβάντισης. +Παρά τη μείωση του SNR, ελέγχθηκε ότι: + +\begin{itemize} + \item Δεν υπάρχει χρονική μετατόπιση (lag). + \item Δεν υπάρχει ανταλλαγή καναλιών. + \item Δεν εμφανίζεται clipping. + \item Δεν υπάρχει μη ελεγχόμενη ενίσχυση (gain drift). +\end{itemize} + +\begin{figure}[!ht] + \centering + \includegraphics[width=0.75\linewidth]{figures/bitrate_per_frame.png} + \caption{Κατανομή του bitrate ανά frame. + Παρατηρείται σημαντική διακύμανση που αντανακλά την προσαρμοστική φύση της κωδικοποίησης.} + \label{fig:bitrate_per_frame} +\end{figure} + +\begin{figure}[!ht] + \centering + \includegraphics[width=0.75\linewidth]{figures/compression_per_frame.png} + \caption{Λόγος συμπίεσης ανά frame. + Η μεταβολή του compression ratio επιβεβαιώνει τη δυναμική κατανομή bit ανάλογα με το περιεχόμενο του σήματος.} + \label{fig:compression_per_frame} +\end{figure} + +Η χαμηλή τιμή SNR δεν αντικατοπτρίζει πλήρως την αντιληπτή ποιότητα, καθώς το ψυχοακουστικό μοντέλο επιτρέπει μεγάλο ενεργειακό σφάλμα σε περιοχές όπου το σφάλμα καλύπτεται από το φαινόμενο απόκρυψης. +Η παρατηρούμενη απώλεια αφορά κυρίως λεπτομέρειες υψηλών συχνοτήτων, χωρίς δομική αλλοίωση του σήματος. +Το αποτέλεσμα επιβεβαιώνει ότι η υλοποίηση είναι αριθμητικά σταθερή και ότι η απώλεια ποιότητας είναι αποτέλεσμα ελεγχόμενης κβάντισης και όχι υλοποιητικού σφάλματος. + +Όπως φαίνεται στην Εικόνα~\ref{fig:bitrate_per_frame}, παρατηρείται σημαντική διακύμανση του bitrate μεταξύ διαδοχικών frames, με τιμές που κυμαίνονται περίπου \textbf{μεταξύ 160 kbps και 250 kbps} και σποραδικές κορυφές υψηλότερων τιμών. +Η συμπεριφορά αυτή είναι αναμενόμενη, καθώς το ψυχοακουστικό μοντέλο κατανέμει περισσότερα bits σε χρονικές περιοχές με αυξημένη ενεργειακή ή φασματική πολυπλοκότητα. +Αντίστοιχα, στην Εικόνα~\ref{fig:compression_per_frame} παρατηρούμε ότι ο λόγος συμπίεσης μεταβάλλεται δυναμικά, με \textbf{τυπικές τιμές μεταξύ 6:1 και 9:1}. + +Οι χαμηλότερες τιμές λόγου συμπίεσης αντιστοιχούν σε frames όπου απαιτούνται περισσότερα bits για την ικανοποίηση του SMR, ενώ οι υψηλότερες τιμές εμφανίζονται σε περιοχές μικρότερης φασματικής πυκνότητας. +Η δυναμική αυτή συμπεριφορά επιβεβαιώνει ότι \textbf{η κωδικοποίηση δεν είναι σταθερού ρυθμού} (CBR), αλλά προσαρμοστική ως προς το περιεχόμενο του σήματος. +Η συνολική μέση τιμή συμπίεσης περίπου \textbf{7:1} επιτυγχάνεται μέσω της συνδυασμένης λειτουργίας ψυχοακουστικής κβάντισης και κωδικοποίησης εντροπίας, χωρίς να παρατηρούνται δομικά σφάλματα όπως χρονική μετατόπιση, ανταλλαγή καναλιών ή ανεξέλεγκτη ενίσχυση. + + +\section{Συμπεράσματα} + +Στην παρούσα εργασία υλοποιήσαμε μία απλοποιημένη αλλά πλήρως λειτουργική αλυσίδα κωδικοποίησης και αποκωδικοποίησης τύπου AAC, ακολουθώντας σταδιακή προσέγγιση τριών επιπέδων. +Ξεκινήσαμε από μία αυστηρά αναστρέψιμη μετασχηματιστική κωδικοποίηση με MDCT και Sequence Segmentation Control, επεκτείναμε το σύστημα με Temporal Noise Shaping διατηρώντας την αριθμητική αντιστρεψιμότητα και ολοκληρώσαμε με την ενσωμάτωση ψυχοακουστικού μοντέλου, μη ομοιόμορφης κβάντισης και κωδικοποίησης εντροπίας. +Η \textbf{αρθρωτή σχεδίαση} και η \textbf{εκτεταμένη χρήση αυτοματοποιημένων δοκιμών μας επέτρεψαν να ελέγχουμε ανεξάρτητα κάθε βαθμίδα και να περιορίζουμε συστηματικά την πιθανότητα σφαλμάτων}. + +Δώσαμε ιδιαίτερη έμφαση στη \textbf{αριθμητική σταθερότητα} του συστήματος. +Εφαρμόσαμε ελέγχους σταθερότητας φίλτρων, προστασίες τύπου \texttt{EPS} σε παρονομαστές, ελέγχους πεπερασμένων τιμών, καθώς και ελέγχους απουσίας χρονικής μετατόπισης, ανταλλαγής καναλιών και clipping. +Η φιλοσοφία αυτή αποδείχθηκε κρίσιμη στο Level 3, όπου μικρά αριθμητικά σφάλματα μπορούν να ενισχυθούν εκθετικά μέσω της απο-κβάντισης. +Η συστηματική προσέγγιση testing και οι round-trip έλεγχοι διασφάλισαν ότι η παρατηρούμενη απώλεια ποιότητας οφείλεται αποκλειστικά στη σχεδιασμένη κβάντιση και όχι σε υλοποιητικά σφάλματα. + +Τα αποτελέσματα έδειξαν ότι το σύστημα επιτυγχάνει \textbf{λόγο συμπίεσης περίπου 7:1}, με μέσο \textbf{bitrate περίπου 216 kbps}, διατηρώντας αποδεκτή αντιληπτή ποιότητα. +Η ανάλυση ανά frame κατέδειξε ότι η κατανομή bit είναι δυναμική και εξαρτάται από τη φασματική πολυπλοκότητα του σήματος, γεγονός που επιβεβαιώνει τη σωστή λειτουργία του ψυχοακουστικού μοντέλου. +Η σημαντική πτώση του SNR στο Level 3 είναι αναμενόμενη σε ενεργειακούς όρους και δεν αντανακλά πλήρως την αντιληπτή ποιότητα, καθώς το σφάλμα κατανέμεται σύμφωνα με τα φαινόμενα απόκρυψης. +Συνολικά, η υλοποίηση επιβεβαιώνει ότι ακόμη και ένα απλοποιημένο μοντέλο AAC μπορεί να επιτύχει ουσιαστική συμπίεση, εφόσον η σχεδίαση είναι προσεκτική και αριθμητικά συνεπής. + +\end{document} \ No newline at end of file diff --git a/source/core/aac_coder.py b/source/core/aac_coder.py index 07034e6..5987712 100644 --- a/source/core/aac_coder.py +++ b/source/core/aac_coder.py @@ -111,21 +111,6 @@ def _thresholds_from_smr( return T -def _normalize_global_gain(G: GlobalGain) -> float | FloatArray: - """ - Normalize GlobalGain to match AACChannelFrameF3["G"] type: - - long: return float - - ESH: return float64 ndarray of shape (1, 8) - """ - if np.isscalar(G): - return float(G) - - G_arr = np.asarray(G) - if G_arr.size == 1: - return float(G_arr.reshape(-1)[0]) - - return np.asarray(G_arr, dtype=np.float64) - # ----------------------------------------------------------------------------- # Public helpers (useful for level_x demo wrappers) # ----------------------------------------------------------------------------- @@ -476,10 +461,6 @@ def aac_coder_3( S_L, sfc_L, G_L = aac_quantizer(chl_f_tns, frame_type, SMR_L) S_R, sfc_R, G_R = aac_quantizer(chr_f_tns, frame_type, SMR_R) - # Normalize G types for AACSeq3 schema (float | float64 ndarray). - G_Ln = _normalize_global_gain(G_L) - G_Rn = _normalize_global_gain(G_R) - # Huffman-code ONLY the DPCM differences for b>0. # sfc[0] corresponds to alpha(0)=G and is stored separately in the frame. sfc_L_dpcm = np.asarray(sfc_L, dtype=np.int64)[1:, ...] @@ -503,7 +484,7 @@ def aac_coder_3( "chl": { "tns_coeffs": np.asarray(chl_tns_coeffs, dtype=np.float64), "T": np.asarray(T_L, dtype=np.float64), - "G": G_Ln, + "G": G_L, "sfc": sfc_L_stream, "stream": mdct_L_stream, "codebook": int(cb_L), @@ -511,7 +492,7 @@ def aac_coder_3( "chr": { "tns_coeffs": np.asarray(chr_tns_coeffs, dtype=np.float64), "T": np.asarray(T_R, dtype=np.float64), - "G": G_Rn, + "G": G_R, "sfc": sfc_R_stream, "stream": mdct_R_stream, "codebook": int(cb_R), diff --git a/source/core/aac_decoder.py b/source/core/aac_decoder.py index be705df..378294e 100644 --- a/source/core/aac_decoder.py +++ b/source/core/aac_decoder.py @@ -42,7 +42,7 @@ def _nbands(frame_type: FrameType) -> int: # Public helpers # ----------------------------------------------------------------------------- -def aac_unpack_seq_channels_to_frame_f(frame_type: FrameType, chl_f: FrameChannelF, chr_f: FrameChannelF) -> FrameF: +def aac_unpack_seq_channels(frame_type: FrameType, chl_f: FrameChannelF, chr_f: FrameChannelF) -> FrameF: """ Re-pack per-channel spectra from the Level-1 AACSeq1 schema into the stereo FrameF container expected by aac_i_filter_bank(). @@ -167,7 +167,7 @@ def aac_decoder_1( chl_f = np.asarray(fr["chl"]["frame_F"], dtype=np.float64) chr_f = np.asarray(fr["chr"]["frame_F"], dtype=np.float64) - frame_f: FrameF = aac_unpack_seq_channels_to_frame_f(frame_type, chl_f, chr_f) + frame_f: FrameF = aac_unpack_seq_channels(frame_type, chl_f, chr_f) frame_t_hat: FrameT = aac_i_filter_bank(frame_f, frame_type, win_type) # (2048, 2) start = i * hop @@ -427,7 +427,7 @@ def aac_decoder_3( X_R = aac_i_tns(Xq_R, frame_type, tns_R) # Re-pack to stereo container and inverse filterbank - frame_f = aac_unpack_seq_channels_to_frame_f(frame_type, np.asarray(X_L), np.asarray(X_R)) + frame_f = aac_unpack_seq_channels(frame_type, np.asarray(X_L), np.asarray(X_R)) frame_t_hat: FrameT = aac_i_filter_bank(frame_f, frame_type, win_type) start = i * hop diff --git a/source/core/aac_psycho.py b/source/core/aac_psycho.py index 4ecaafc..8069e45 100644 --- a/source/core/aac_psycho.py +++ b/source/core/aac_psycho.py @@ -189,7 +189,7 @@ def _predictability( # Band-domain aggregation # ----------------------------------------------------------------------------- -def _band_energy_and_weighted_predictability( +def _band_energy_and_pred( r: FloatArray, c: FloatArray, wlow: BandIndexArray, @@ -238,7 +238,7 @@ def _band_energy_and_weighted_predictability( return e_b, c_num_b -def _psycho_one_window( +def _psycho_window( time_x: FrameChannelT, prev1_x: FrameChannelT, prev2_x: FrameChannelT, @@ -288,7 +288,7 @@ def _psycho_one_window( c_w = _predictability(r, phi, r_m1, phi_m1, r_m2, phi_m2) # Aggregate into psycho bands - e_b, c_num_b = _band_energy_and_weighted_predictability(r, c_w, wlow, whigh) + e_b, c_num_b = _band_energy_and_pred(r, c_w, wlow, whigh) # Spread energies and predictability across bands: # ecb(b) = sum_bb e(bb) * S(bb, b) @@ -333,7 +333,7 @@ def _psycho_one_window( # ESH window slicing (match filterbank conventions) # ----------------------------------------------------------------------------- -def _esh_subframes_256(x_2048: FrameChannelT) -> list[FrameChannelT]: +def _esh_subframes(x_2048: FrameChannelT) -> list[FrameChannelT]: """ Extract the 8 overlapping 256-sample short windows used by AAC ESH. @@ -408,7 +408,7 @@ def aac_psycho( # Long frame types: compute one SMR vector (69 bands) if frame_type != "ESH": - return _psycho_one_window(frame_T, frame_T_prev_1, frame_T_prev_2, N=N, table=table) + return _psycho_window(frame_T, frame_T_prev_1, frame_T_prev_2, N=N, table=table) # ESH: compute 8 SMR vectors (42 bands each), one per short subframe. # @@ -419,8 +419,8 @@ def aac_psycho( # # This matches the "within-frame history" convention commonly used in # simplified psycho models for ESH. - cur_subs = _esh_subframes_256(frame_T) - prev1_subs = _esh_subframes_256(frame_T_prev_1) + cur_subs = _esh_subframes(frame_T) + prev1_subs = _esh_subframes(frame_T_prev_1) B = int(table.shape[0]) # expected 42 smr_out = np.zeros((B, 8), dtype=np.float64) @@ -436,6 +436,6 @@ def aac_psycho( x_m1 = cur_subs[j - 1] x_m2 = cur_subs[j - 2] - smr_out[:, j] = _psycho_one_window(cur_subs[j], x_m1, x_m2, N=256, table=table) + smr_out[:, j] = _psycho_window(cur_subs[j], x_m1, x_m2, N=256, table=table) return smr_out diff --git a/source/core/aac_quantizer.py b/source/core/aac_quantizer.py index 5bc8526..f2004b0 100644 --- a/source/core/aac_quantizer.py +++ b/source/core/aac_quantizer.py @@ -35,7 +35,7 @@ MAX_SF_DELTA:int = 60 # ----------------------------------------------------------------------------- # Helpers: ESH packing/unpacking (128x8 <-> 1024x1) # ----------------------------------------------------------------------------- -def _esh_pack_to_1024(x_128x8: FloatArray) -> FloatArray: +def _esh_pack(x_128x8: FloatArray) -> FloatArray: """ Pack ESH coefficients (128 x 8) into a single long vector (1024 x 1). @@ -58,7 +58,7 @@ def _esh_pack_to_1024(x_128x8: FloatArray) -> FloatArray: return x_128x8.reshape(1024, 1, order="F") -def _esh_unpack_from_1024(x_1024x1: FloatArray) -> FloatArray: +def _esh_unpack(x_1024x1: FloatArray) -> FloatArray: """ Unpack a packed ESH vector (1024 elements) back to shape (128, 8). @@ -226,7 +226,7 @@ def _band_energy(x: FloatArray, lo: int, hi: int) -> float: return float(np.sum(sec * sec)) -def _threshold_T_from_SMR( +def _psychoacoustic_threshold( X: FloatArray, SMR_col: FloatArray, bands: list[tuple[int, int]], @@ -425,7 +425,7 @@ def aac_quantizer( SMRj = SMR[:, j].reshape(NB) # Compute psychoacoustic threshold T(b) for this subframe - T = _threshold_T_from_SMR(Xj, SMRj, bands) + T = _psychoacoustic_threshold(Xj, SMRj, bands) # Frame-wise initial estimate alpha_hat (Equation 14) alpha_hat = _initial_alpha_hat(Xj) @@ -482,7 +482,7 @@ def aac_quantizer( raise ValueError(f"For non-ESH, SMR must have shape ({NB},) or ({NB}, 1).") # Compute psychoacoustic threshold T(b) for the long frame - T = _threshold_T_from_SMR(Xv, SMRv, bands) + T = _psychoacoustic_threshold(Xv, SMRv, bands) # Frame-wise initial estimate alpha_hat (Equation 14) alpha_hat = _initial_alpha_hat(Xv) @@ -566,7 +566,7 @@ def aac_i_quantizer( if sfc.shape != (NB, 8): raise ValueError(f"For ESH, sfc must have shape ({NB}, 8).") - S_128x8 = _esh_unpack_from_1024(S_flat) + S_128x8 = _esh_unpack(S_flat) Xrec = np.zeros((128, 8), dtype=np.float64) diff --git a/source/core/aac_tns.py b/source/core/aac_tns.py index 06227b1..4ba78ac 100644 --- a/source/core/aac_tns.py +++ b/source/core/aac_tns.py @@ -39,7 +39,7 @@ from core.aac_types import * # ----------------------------------------------------------------------------- -def _band_ranges_for_kcount(k_count: int) -> BandRanges: +def _band_ranges(k_count: int) -> BandRanges: """ Return Bark band index ranges [start, end] (inclusive) for the given MDCT line count. @@ -66,7 +66,7 @@ def _band_ranges_for_kcount(k_count: int) -> BandRanges: start = tbl[:, 1].astype(int) end = tbl[:, 2].astype(int) - ranges: list[tuple[int, int]] = [(int(s), int(e)) for s, e in zip(start, end)] + ranges: BandRanges = [(int(s), int(e)) for s, e in zip(start, end)] for s, e in ranges: if s < 0 or e < s or e >= k_count: @@ -117,7 +117,7 @@ def _compute_sw(x: MdctCoeffs) -> MdctCoeffs: x = np.asarray(x, dtype=np.float64).reshape(-1) k_count = int(x.shape[0]) - bands = _band_ranges_for_kcount(k_count) + bands = _band_ranges(k_count) sw = np.zeros(k_count, dtype=np.float64) for s, e in bands: @@ -347,7 +347,7 @@ def _apply_itns_iir(y: MdctCoeffs, a_q: MdctCoeffs) -> MdctCoeffs: return x_hat -def _tns_one_vector(x: MdctCoeffs) -> tuple[MdctCoeffs, MdctCoeffs]: +def _tns_vector(x: MdctCoeffs) -> tuple[MdctCoeffs, MdctCoeffs]: """ TNS for a single MDCT vector (one long frame or one short subframe). @@ -430,7 +430,7 @@ def aac_tns(frame_F_in: FrameChannelF, frame_type: FrameType) -> Tuple[FrameChan a_out = np.empty((PRED_ORDER, 8), dtype=np.float64) for j in range(8): - y[:, j], a_out[:, j] = _tns_one_vector(x[:, j]) + y[:, j], a_out[:, j] = _tns_vector(x[:, j]) return y, a_out @@ -443,7 +443,7 @@ def aac_tns(frame_F_in: FrameChannelF, frame_type: FrameType) -> Tuple[FrameChan else: raise ValueError('For non-ESH, frame_F_in must have shape (1024,) or (1024, 1).') - y_vec, a_q = _tns_one_vector(x_vec) + y_vec, a_q = _tns_vector(x_vec) if out_shape == (1024,): y_out = y_vec diff --git a/source/core/aac_utils.py b/source/core/aac_utils.py index 0e18ed1..26cdbdf 100644 --- a/source/core/aac_utils.py +++ b/source/core/aac_utils.py @@ -163,6 +163,42 @@ def snr_db(x_ref: StereoSignal, x_hat: StereoSignal) -> float: return float(10.0 * np.log10(ps / pn)) +def estimate_lag_mono(x_ref: TimeSignal, x_hat: TimeSignal, max_lag=4096): + """ + Estimate time lag between two mono signals. + Returns lag (positive means x_hat delayed). + """ + n = min(len(x_ref), len(x_hat)) + x_ref = x_ref[:n] + x_hat = x_hat[:n] + + corr = np.correlate(x_ref, x_hat, mode='full') + lags = np.arange(-n + 1, n) + + center = n - 1 + lo = max(0, center - max_lag) + hi = min(len(corr), center + max_lag + 1) + + best = lo + int(np.argmax(corr[lo:hi])) + return int(lags[best]) + + +def match_gain(x_ref: StereoSignal, x_hat: StereoSignal) -> float: + """ + Least-squares gain g that best maps x_hat -> x_ref. + """ + n = min(x_ref.shape[0], x_hat.shape[0]) + c = min(x_ref.shape[1], x_hat.shape[1]) + + r = x_ref[:n, :c].reshape(-1).astype(np.float64) + h = x_hat[:n, :c].reshape(-1).astype(np.float64) + + denom = float(np.dot(h, h)) + if denom <= 0.0: + return 1.0 + return float(np.dot(r, h) / denom) + + # ----------------------------------------------------------------------------- # Psychoacoustic band tables (TableB219.mat) # ----------------------------------------------------------------------------- diff --git a/source/core/tests/test_aac_coder_decoder.py b/source/core/tests/test_aac_coder_decoder.py index 54207fc..18d54d7 100644 --- a/source/core/tests/test_aac_coder_decoder.py +++ b/source/core/tests/test_aac_coder_decoder.py @@ -21,7 +21,7 @@ import soundfile as sf from core.aac_coder import aac_coder_1, aac_coder_2, aac_coder_3, aac_read_wav_stereo_48k from core.aac_decoder import aac_decoder_1, aac_decoder_2, aac_decoder_3, aac_remove_padding -from core.aac_utils import snr_db +from core.aac_utils import snr_db, estimate_lag_mono, match_gain from core.aac_types import * @@ -151,6 +151,29 @@ def test_aac_coder_seq_schema_and_shapes(mk_random_stereo_wav: Path) -> None: assert chl_f.shape == (1024, 1) assert chr_f.shape == (1024, 1) +@pytest.mark.parametrize("mk_actual_stereo_wav", [0.5], indirect=True) +def test_level_1_gain_close_to_one( + mk_actual_stereo_wav: Path, + tmp_path: Path, +) -> None: + """ + Guardrail: decoded signal should not have a large global gain mismatch. + """ + x_ref, fs = aac_read_wav_stereo_48k(mk_actual_stereo_wav) + assert int(fs) == 48000 + + out_wav = tmp_path / "decoded_level3.wav" + aac_seq_1: AACSeq1 = aac_coder_1(mk_actual_stereo_wav) + y_hat: StereoSignal = aac_decoder_1(aac_seq_1, out_wav) + + n = min(x_ref.shape[0], y_hat.shape[0]) + x_ref = x_ref[:n, :] + y_hat = y_hat[:n, :] + + g = match_gain(x_ref, y_hat) + # print (f"g = {g}") + # Allow some slack but catch big scaling regressions + assert 0.75 <= g <= 1.25 @pytest.mark.parametrize("mk_random_stereo_wav", [0.5], indirect=True) def test_end_to_end_aac_coder_decoder_high_snr(mk_random_stereo_wav: Path, tmp_path: Path) -> None: @@ -207,6 +230,30 @@ def test_aac_coder_2_seq_schema_and_shapes(mk_random_stereo_wav: Path) -> None: assert coeffs.shape == (4, 1) +@pytest.mark.parametrize("mk_actual_stereo_wav", [0.5], indirect=True) +def test_level_2_gain_close_to_one( + mk_actual_stereo_wav: Path, + tmp_path: Path, +) -> None: + """ + Guardrail: decoded signal should not have a large global gain mismatch. + """ + x_ref, fs = aac_read_wav_stereo_48k(mk_actual_stereo_wav) + assert int(fs) == 48000 + + out_wav = tmp_path / "decoded_level3.wav" + aac_seq_2: AACSeq2 = aac_coder_2(mk_actual_stereo_wav) + y_hat: StereoSignal = aac_decoder_2(aac_seq_2, out_wav) + + n = min(x_ref.shape[0], y_hat.shape[0]) + x_ref = x_ref[:n, :] + y_hat = y_hat[:n, :] + + g = match_gain(x_ref, y_hat) + # print (f"g = {g}") + # Allow some slack but catch big scaling regressions + assert 0.75 <= g <= 1.25 + @pytest.mark.parametrize("mk_random_stereo_wav", [0.5], indirect=True) def test_end_to_end_level_2_high_snr(mk_random_stereo_wav: Path, tmp_path: Path) -> None: x_ref, fs = sf.read(str(mk_random_stereo_wav), always_2d=True) @@ -294,6 +341,90 @@ def test_aac_coder_3_seq_schema_and_shapes(mk_actual_stereo_wav: Path) -> None: else: assert np.isscalar(G) +@pytest.mark.parametrize("mk_actual_stereo_wav", [0.5], indirect=True) +def test_level_3_estimated_lag( + mk_actual_stereo_wav: Path, + tmp_path: Path, +) -> None: + """ + Check that the estimated lag between reference and decoded + signal is small (zero), to prevent catastrophic misalignment. + """ + x_ref, fs = aac_read_wav_stereo_48k(mk_actual_stereo_wav) + assert int(fs) == 48000 + + out_wav = tmp_path / "decoded_level3.wav" + + aac_seq_3: AACSeq3 = aac_coder_3(mk_actual_stereo_wav) + y_hat: StereoSignal = aac_decoder_3(aac_seq_3, out_wav) + + # Use only common length + n = min(x_ref.shape[0], y_hat.shape[0]) + x_ref = x_ref[:n, :] + y_hat = y_hat[:n, :] + + lag_L = estimate_lag_mono(x_ref[:, 0], y_hat[:, 0], max_lag=4096) + lag_R = estimate_lag_mono(x_ref[:, 1], y_hat[:, 1], max_lag=4096) + + # We allow zero latency + assert abs(lag_L) == 0 + assert abs(lag_R) == 0 + + +@pytest.mark.parametrize("mk_actual_stereo_wav", [0.5], indirect=True) +def test_level_3_not_lr_swapped( + mk_actual_stereo_wav: Path, + tmp_path: Path, +) -> None: + """ + Ensure the decoded stereo channels are not swapped. + If channels are swapped, SNR against the original drops a lot, + while SNR against swapped reference increases. + """ + x_ref, fs = aac_read_wav_stereo_48k(mk_actual_stereo_wav) + assert int(fs) == 48000 + + out_wav = tmp_path / "decoded_level3.wav" + + aac_seq_3: AACSeq3 = aac_coder_3(mk_actual_stereo_wav) + y_hat: StereoSignal = aac_decoder_3(aac_seq_3, out_wav) + + n = min(x_ref.shape[0], y_hat.shape[0]) + x_ref = x_ref[:n, :] + y_hat = y_hat[:n, :] + + snr_normal = snr_db(x_ref, y_hat) + snr_swapped = snr_db(x_ref[:, [1, 0]], y_hat) + + # If the decoded output were swapped, snr_swapped would be significantly higher. + assert snr_normal >= snr_swapped + + + +@pytest.mark.parametrize("mk_actual_stereo_wav", [0.5], indirect=True) +def test_level_3_gain_close_to_one( + mk_actual_stereo_wav: Path, + tmp_path: Path, +) -> None: + """ + Guardrail: decoded signal should not have a large global gain mismatch. + """ + x_ref, fs = aac_read_wav_stereo_48k(mk_actual_stereo_wav) + assert int(fs) == 48000 + + out_wav = tmp_path / "decoded_level3.wav" + aac_seq_3: AACSeq3 = aac_coder_3(mk_actual_stereo_wav) + y_hat: StereoSignal = aac_decoder_3(aac_seq_3, out_wav) + + n = min(x_ref.shape[0], y_hat.shape[0]) + x_ref = x_ref[:n, :] + y_hat = y_hat[:n, :] + + g = match_gain(x_ref, y_hat) + + # Allow some slack but catch big scaling regressions + assert 0.75 <= g <= 1.25 + @pytest.mark.parametrize("mk_actual_stereo_wav", [0.5], indirect=True) def test_end_to_end_level_3_high_snr(mk_actual_stereo_wav: Path, tmp_path: Path) -> None: @@ -310,5 +441,4 @@ def test_end_to_end_level_3_high_snr(mk_actual_stereo_wav: Path, tmp_path: Path) n = min(x_ref.shape[0], y_hat.shape[0]) s = snr_db(x_ref[:n, :], y_hat[:n, :]) - # print(f" with SNR={s}") - assert s > 7.0 + assert s > 8.0 diff --git a/source/level_1/core/aac_coder.py b/source/level_1/core/aac_coder.py index 07034e6..5987712 100644 --- a/source/level_1/core/aac_coder.py +++ b/source/level_1/core/aac_coder.py @@ -111,21 +111,6 @@ def _thresholds_from_smr( return T -def _normalize_global_gain(G: GlobalGain) -> float | FloatArray: - """ - Normalize GlobalGain to match AACChannelFrameF3["G"] type: - - long: return float - - ESH: return float64 ndarray of shape (1, 8) - """ - if np.isscalar(G): - return float(G) - - G_arr = np.asarray(G) - if G_arr.size == 1: - return float(G_arr.reshape(-1)[0]) - - return np.asarray(G_arr, dtype=np.float64) - # ----------------------------------------------------------------------------- # Public helpers (useful for level_x demo wrappers) # ----------------------------------------------------------------------------- @@ -476,10 +461,6 @@ def aac_coder_3( S_L, sfc_L, G_L = aac_quantizer(chl_f_tns, frame_type, SMR_L) S_R, sfc_R, G_R = aac_quantizer(chr_f_tns, frame_type, SMR_R) - # Normalize G types for AACSeq3 schema (float | float64 ndarray). - G_Ln = _normalize_global_gain(G_L) - G_Rn = _normalize_global_gain(G_R) - # Huffman-code ONLY the DPCM differences for b>0. # sfc[0] corresponds to alpha(0)=G and is stored separately in the frame. sfc_L_dpcm = np.asarray(sfc_L, dtype=np.int64)[1:, ...] @@ -503,7 +484,7 @@ def aac_coder_3( "chl": { "tns_coeffs": np.asarray(chl_tns_coeffs, dtype=np.float64), "T": np.asarray(T_L, dtype=np.float64), - "G": G_Ln, + "G": G_L, "sfc": sfc_L_stream, "stream": mdct_L_stream, "codebook": int(cb_L), @@ -511,7 +492,7 @@ def aac_coder_3( "chr": { "tns_coeffs": np.asarray(chr_tns_coeffs, dtype=np.float64), "T": np.asarray(T_R, dtype=np.float64), - "G": G_Rn, + "G": G_R, "sfc": sfc_R_stream, "stream": mdct_R_stream, "codebook": int(cb_R), diff --git a/source/level_1/core/aac_decoder.py b/source/level_1/core/aac_decoder.py index be705df..378294e 100644 --- a/source/level_1/core/aac_decoder.py +++ b/source/level_1/core/aac_decoder.py @@ -42,7 +42,7 @@ def _nbands(frame_type: FrameType) -> int: # Public helpers # ----------------------------------------------------------------------------- -def aac_unpack_seq_channels_to_frame_f(frame_type: FrameType, chl_f: FrameChannelF, chr_f: FrameChannelF) -> FrameF: +def aac_unpack_seq_channels(frame_type: FrameType, chl_f: FrameChannelF, chr_f: FrameChannelF) -> FrameF: """ Re-pack per-channel spectra from the Level-1 AACSeq1 schema into the stereo FrameF container expected by aac_i_filter_bank(). @@ -167,7 +167,7 @@ def aac_decoder_1( chl_f = np.asarray(fr["chl"]["frame_F"], dtype=np.float64) chr_f = np.asarray(fr["chr"]["frame_F"], dtype=np.float64) - frame_f: FrameF = aac_unpack_seq_channels_to_frame_f(frame_type, chl_f, chr_f) + frame_f: FrameF = aac_unpack_seq_channels(frame_type, chl_f, chr_f) frame_t_hat: FrameT = aac_i_filter_bank(frame_f, frame_type, win_type) # (2048, 2) start = i * hop @@ -427,7 +427,7 @@ def aac_decoder_3( X_R = aac_i_tns(Xq_R, frame_type, tns_R) # Re-pack to stereo container and inverse filterbank - frame_f = aac_unpack_seq_channels_to_frame_f(frame_type, np.asarray(X_L), np.asarray(X_R)) + frame_f = aac_unpack_seq_channels(frame_type, np.asarray(X_L), np.asarray(X_R)) frame_t_hat: FrameT = aac_i_filter_bank(frame_f, frame_type, win_type) start = i * hop diff --git a/source/level_1/core/aac_huffman.py b/source/level_1/core/aac_huffman.py new file mode 100644 index 0000000..3d2eeca --- /dev/null +++ b/source/level_1/core/aac_huffman.py @@ -0,0 +1,112 @@ +# ------------------------------------------------------------ +# AAC Coder/Decoder - Huffman wrappers (Level 3) +# +# Multimedia course at Aristotle University of +# Thessaloniki (AUTh) +# +# Author: +# Christos Choutouridis (ΑΕΜ 8997) +# cchoutou@ece.auth.gr +# +# Description: +# Thin wrappers around the provided Huffman utilities (material/huff_utils.py) +# so that the API matches the assignment text. +# +# Exposed API (assignment): +# huff_sec, huff_codebook = aac_encode_huff(coeff_sec, huff_LUT_list, force_codebook) +# dec_coeffs = aac_decode_huff(huff_sec, huff_codebook, huff_LUT_list) +# +# Notes: +# - Huffman coding operates on tuples. Therefore, decode(encode(x)) may return +# extra trailing symbols due to tuple padding. The AAC decoder knows the +# true section length from side information (band limits) and truncates. +# ------------------------------------------------------------ +from __future__ import annotations + +from typing import Any +import numpy as np + +from material.huff_utils import encode_huff, decode_huff + + +def aac_encode_huff( + coeff_sec: np.ndarray, + huff_LUT_list: list[dict[str, Any]], + force_codebook: int | None = None, +) -> tuple[str, int]: + """ + Huffman-encode a section of coefficients (MDCT symbols or scalefactors). + + Parameters + ---------- + coeff_sec : np.ndarray + Coefficient section to be encoded. Any shape is accepted; the input + is flattened and treated as a 1-D sequence of int64 symbols. + huff_LUT_list : list[dict[str, Any]] + List of Huffman Look-Up Tables (LUTs) as returned by material.load_LUT(). + Index corresponds to codebook id (typically 1..11, with 0 reserved). + force_codebook : int | None + If provided, forces the use of this Huffman codebook. In the assignment, + scalefactors are encoded with codebook 11. For MDCT coefficients, this + argument is usually omitted (auto-selection). + + Returns + ------- + tuple[str, int] + (huff_sec, huff_codebook) + - huff_sec: bitstream as a string of '0'/'1' + - huff_codebook: codebook id used by the encoder + """ + coeff_sec_arr = np.asarray(coeff_sec, dtype=np.int64).reshape(-1) + + if force_codebook is None: + # Provided utility returns (bitstream, codebook) in the auto-selection case. + huff_sec, huff_codebook = encode_huff(coeff_sec_arr, huff_LUT_list) + return str(huff_sec), int(huff_codebook) + + # Provided utility returns ONLY the bitstream when force_codebook is set. + cb = int(force_codebook) + huff_sec = encode_huff(coeff_sec_arr, huff_LUT_list, force_codebook=cb) + return str(huff_sec), cb + + +def aac_decode_huff( + huff_sec: str | np.ndarray, + huff_codebook: int, + huff_LUT: list[dict[str, Any]], +) -> np.ndarray: + """ + Huffman-decode a bitstream using the specified codebook. + + Parameters + ---------- + huff_sec : str | np.ndarray + Huffman bitstream. Typically a string of '0'/'1'. If an array is provided, + it is passed through to the provided decoder. + huff_codebook : int + Codebook id that was returned by aac_encode_huff. + Codebook 0 represents an all-zero section. + huff_LUT : list[dict[str, Any]] + Huffman LUT list as returned by material.load_LUT(). + + Returns + ------- + np.ndarray + Decoded coefficients as a 1-D np.int64 array. + + Note: Due to tuple coding, the decoded array may contain extra trailing + padding symbols. The caller must truncate to the known section length. + """ + cb = int(huff_codebook) + + if cb == 0: + # Codebook 0 represents an all-zero section. The decoded length is not + # recoverable from the bitstream alone; the caller must expand/truncate. + return np.zeros((0,), dtype=np.int64) + + if cb < 0 or cb >= len(huff_LUT): + raise ValueError(f"Invalid Huffman codebook index: {cb}") + + lut = huff_LUT[cb] + dec = decode_huff(huff_sec, lut) + return np.asarray(dec, dtype=np.int64).reshape(-1) diff --git a/source/level_1/core/aac_psycho.py b/source/level_1/core/aac_psycho.py new file mode 100644 index 0000000..8069e45 --- /dev/null +++ b/source/level_1/core/aac_psycho.py @@ -0,0 +1,441 @@ +# ------------------------------------------------------------ +# AAC Coder/Decoder - Psychoacoustic Model +# +# Multimedia course at Aristotle University of +# Thessaloniki (AUTh) +# +# Author: +# Christos Choutouridis (ΑΕΜ 8997) +# cchoutou@ece.auth.gr +# +# Description: +# Psychoacoustic model for ONE channel, based on the assignment notes (Section 2.4). +# +# Public API: +# SMR = aac_psycho(frame_T, frame_type, frame_T_prev_1, frame_T_prev_2) +# +# Output: +# - For long frames ("OLS", "LSS", "LPS"): SMR has shape (69,) +# - For short frames ("ESH"): SMR has shape (42, 8) (one column per subframe) +# +# Notes: +# - Uses Bark band tables from material/TableB219.mat: +# * B219a for long windows (69 bands, N=2048 FFT, N/2=1024 bins) +# * B219b for short windows (42 bands, N=256 FFT, N/2=128 bins) +# - Applies a Hann window in time domain before FFT magnitude/phase extraction. +# - Implements: +# spreading function -> band spreading -> tonality index -> masking thresholds -> SMR. +# ------------------------------------------------------------ +from __future__ import annotations + +import numpy as np + +from core.aac_utils import band_limits, get_table +from core.aac_configuration import NMT_DB, TMN_DB +from core.aac_types import * + +# ----------------------------------------------------------------------------- +# Spreading function +# ----------------------------------------------------------------------------- + +def _spreading_matrix(bval: BandValueArray) -> FloatArray: + """ + Compute the spreading function matrix between psychoacoustic bands. + + The spreading function describes how energy in one critical band masks + nearby bands. The formula follows the assignment pseudo-code. + + Parameters + ---------- + bval : BandValueArray + Bark value per band, shape (B,). + + Returns + ------- + FloatArray + Spreading matrix S of shape (B, B), where: + S[bb, b] quantifies the contribution of band bb masking band b. + """ + bval = np.asarray(bval, dtype=np.float64).reshape(-1) + B = int(bval.shape[0]) + + spread = np.zeros((B, B), dtype=np.float64) + + for b in range(B): + for bb in range(B): + # tmpx depends on direction (asymmetric spreading) + if bb >= b: + tmpx = 3.0 * (bval[bb] - bval[b]) + else: + tmpx = 1.5 * (bval[bb] - bval[b]) + + # tmpz uses the "min(..., 0)" nonlinearity exactly as in the notes + tmpz = 8.0 * min((tmpx - 0.5) ** 2 - 2.0 * (tmpx - 0.5), 0.0) + tmpy = 15.811389 + 7.5 * (tmpx + 0.474) - 17.5 * np.sqrt(1.0 + (tmpx + 0.474) ** 2) + + # Clamp very small values (below -100 dB) to 0 contribution + if tmpy < -100.0: + spread[bb, b] = 0.0 + else: + spread[bb, b] = 10.0 ** ((tmpz + tmpy) / 10.0) + + return spread + + +# ----------------------------------------------------------------------------- +# Windowing + FFT feature extraction +# ----------------------------------------------------------------------------- + +def _hann_window(N: int) -> FloatArray: + """ + Hann window as specified in the notes: + w[n] = 0.5 - 0.5*cos(2*pi*(n + 0.5)/N) + + Parameters + ---------- + N : int + Window length. + + Returns + ------- + FloatArray + 1-D array of shape (N,), dtype float64. + """ + n = np.arange(N, dtype=np.float64) + return 0.5 - 0.5 * np.cos((2.0 * np.pi / N) * (n + 0.5)) + + +def _r_phi_from_time(x: FrameChannelT, N: int) -> tuple[FloatArray, FloatArray]: + """ + Compute FFT magnitude r(w) and phase phi(w) for bins w = 0 .. N/2-1. + + Processing: + 1) Apply Hann window in time domain. + 2) Compute N-point FFT. + 3) Keep only the positive-frequency bins [0 .. N/2-1]. + + Parameters + ---------- + x : FrameChannelT + Time-domain samples, shape (N,). + N : int + FFT size (2048 or 256). + + Returns + ------- + r : FloatArray + Magnitude spectrum for bins 0 .. N/2-1, shape (N/2,). + phi : FloatArray + Phase spectrum for bins 0 .. N/2-1, shape (N/2,). + """ + x = np.asarray(x, dtype=np.float64).reshape(-1) + if x.shape[0] != N: + raise ValueError(f"Expected time vector of length {N}, got {x.shape[0]}.") + + w = _hann_window(N) + X = np.fft.fft(x * w, n=N) + + Xp = X[: N // 2] + r = np.abs(Xp).astype(np.float64, copy=False) + phi = np.angle(Xp).astype(np.float64, copy=False) + return r, phi + + +def _predictability( + r: FloatArray, + phi: FloatArray, + r_m1: FloatArray, + phi_m1: FloatArray, + r_m2: FloatArray, + phi_m2: FloatArray, +) -> FloatArray: + """ + Compute predictability c(w) per spectral bin. + + The notes define: + r_pred(w) = 2*r_{-1}(w) - r_{-2}(w) + phi_pred(w) = 2*phi_{-1}(w) - phi_{-2}(w) + + c(w) = |X(w) - X_pred(w)| / (r(w) + |r_pred(w)|) + + where X(w) is represented in polar form using r(w), phi(w). + + Parameters + ---------- + r, phi : FloatArray + Current magnitude and phase, shape (N/2,). + r_m1, phi_m1 : FloatArray + Previous magnitude and phase, shape (N/2,). + r_m2, phi_m2 : FloatArray + Pre-previous magnitude and phase, shape (N/2,). + + Returns + ------- + FloatArray + Predictability c(w), shape (N/2,). + """ + r_pred = 2.0 * r_m1 - r_m2 + phi_pred = 2.0 * phi_m1 - phi_m2 + + num = np.sqrt( + (r * np.cos(phi) - r_pred * np.cos(phi_pred)) ** 2 + + (r * np.sin(phi) - r_pred * np.sin(phi_pred)) ** 2 + ) + den = r + np.abs(r_pred) + 1e-12 # avoid division-by-zero without altering behavior + return (num / den).astype(np.float64, copy=False) + + +# ----------------------------------------------------------------------------- +# Band-domain aggregation +# ----------------------------------------------------------------------------- + +def _band_energy_and_pred( + r: FloatArray, + c: FloatArray, + wlow: BandIndexArray, + whigh: BandIndexArray, +) -> tuple[FloatArray, FloatArray]: + """ + Aggregate spectral bin quantities into psychoacoustic bands. + + Definitions (notes): + e(b) = sum_{w=wlow(b)..whigh(b)} r(w)^2 + c_num(b) = sum_{w=wlow(b)..whigh(b)} c(w) * r(w)^2 + + The band predictability c(b) is later computed after spreading as: + cb(b) = ct(b) / ecb(b) + + Parameters + ---------- + r : FloatArray + Magnitude spectrum, shape (N/2,). + c : FloatArray + Predictability per bin, shape (N/2,). + wlow, whigh : BandIndexArray + Band limits (inclusive indices), shape (B,). + + Returns + ------- + e_b : FloatArray + Band energies e(b), shape (B,). + c_num_b : FloatArray + Weighted predictability numerators c_num(b), shape (B,). + """ + r2 = (r * r).astype(np.float64, copy=False) + + B = int(wlow.shape[0]) + e_b = np.zeros(B, dtype=np.float64) + c_num_b = np.zeros(B, dtype=np.float64) + + for b in range(B): + a = int(wlow[b]) + z = int(whigh[b]) + + seg_r2 = r2[a : z + 1] + e_b[b] = float(np.sum(seg_r2)) + c_num_b[b] = float(np.sum(c[a : z + 1] * seg_r2)) + + return e_b, c_num_b + + +def _psycho_window( + time_x: FrameChannelT, + prev1_x: FrameChannelT, + prev2_x: FrameChannelT, + *, + N: int, + table: BarkTable, +) -> FloatArray: + """ + Compute SMR for one FFT analysis window (N=2048 for long, N=256 for short). + + This implements the pipeline described in the notes: + - FFT magnitude/phase + - predictability per bin + - band energies and predictability + - band spreading + - tonality index tb(b) + - masking threshold (noise + threshold in quiet) + - SMR(b) = e(b) / np(b) + + Parameters + ---------- + time_x : FrameChannelT + Current time-domain samples, shape (N,). + prev1_x : FrameChannelT + Previous time-domain samples, shape (N,). + prev2_x : FrameChannelT + Pre-previous time-domain samples, shape (N,). + N : int + FFT size. + table : BarkTable + Psychoacoustic band table (B219a or B219b). + + Returns + ------- + FloatArray + SMR per band, shape (B,). + """ + wlow, whigh, bval, qthr_db = band_limits(table) + spread = _spreading_matrix(bval) + + # FFT features for current and history windows + r, phi = _r_phi_from_time(time_x, N) + r_m1, phi_m1 = _r_phi_from_time(prev1_x, N) + r_m2, phi_m2 = _r_phi_from_time(prev2_x, N) + + # Predictability per bin + c_w = _predictability(r, phi, r_m1, phi_m1, r_m2, phi_m2) + + # Aggregate into psycho bands + e_b, c_num_b = _band_energy_and_pred(r, c_w, wlow, whigh) + + # Spread energies and predictability across bands: + # ecb(b) = sum_bb e(bb) * S(bb, b) + # ct(b) = sum_bb c_num(bb) * S(bb, b) + ecb = spread.T @ e_b + ct = spread.T @ c_num_b + + # Band predictability after spreading: cb(b) = ct(b) / ecb(b) + cb = ct / (ecb + 1e-12) + + # Normalized energy term: + # en(b) = ecb(b) / sum_bb S(bb, b) + spread_colsum = np.sum(spread, axis=0) + en = ecb / (spread_colsum + 1e-12) + + # Tonality index (clamped to [0, 1]) + tb = -0.299 - 0.43 * np.log(np.maximum(cb, 1e-12)) + tb = np.clip(tb, 0.0, 1.0) + + # Required SNR per band (dB): interpolate between TMN and NMT + snr_b = tb * TMN_DB + (1.0 - tb) * NMT_DB + bc = 10.0 ** (-snr_b / 10.0) + + # Noise masking threshold estimate (power domain) + nb = en * bc + + # Threshold in quiet (convert from dB to power domain): + # qthr_power = eps * (N/2) * 10^(qthr_db/10) + qthr_power = np.finfo('float').eps * (N / 2.0) * (10.0 ** (qthr_db / 10.0)) + + # Final masking threshold per band: + # np(b) = max(nb(b), qthr(b)) + npart = np.maximum(nb, qthr_power) + + # Signal-to-mask ratio: + # SMR(b) = e(b) / np(b) + smr = e_b / (npart + 1e-12) + return smr.astype(np.float64, copy=False) + + +# ----------------------------------------------------------------------------- +# ESH window slicing (match filterbank conventions) +# ----------------------------------------------------------------------------- + +def _esh_subframes(x_2048: FrameChannelT) -> list[FrameChannelT]: + """ + Extract the 8 overlapping 256-sample short windows used by AAC ESH. + + The project convention (matching the filterbank) is: + start_j = 448 + 128*j, for j = 0..7 + subframe_j = x[start_j : start_j + 256] + + This selects the central 1152-sample region [448, 1600) and produces + 8 windows with 50% overlap. + + Parameters + ---------- + x_2048 : FrameChannelT + Time-domain channel frame, shape (2048,). + + Returns + ------- + list[FrameChannelT] + List of 8 subframes, each of shape (256,). + """ + x_2048 = np.asarray(x_2048, dtype=np.float64).reshape(-1) + if x_2048.shape[0] != 2048: + raise ValueError("ESH requires 2048-sample input frames.") + + subs: list[FrameChannelT] = [] + for j in range(8): + start = 448 + 128 * j + subs.append(x_2048[start : start + 256]) + return subs + + +# ----------------------------------------------------------------------------- +# Public API +# ----------------------------------------------------------------------------- + +def aac_psycho( + frame_T: FrameChannelT, + frame_type: FrameType, + frame_T_prev_1: FrameChannelT, + frame_T_prev_2: FrameChannelT, +) -> FloatArray: + """ + Psychoacoustic model for ONE channel. + + Parameters + ---------- + frame_T : FrameChannelT + Current time-domain channel frame, shape (2048,). + For "ESH", the 8 short windows are derived internally. + frame_type : FrameType + AAC frame type ("OLS", "LSS", "ESH", "LPS"). + frame_T_prev_1 : FrameChannelT + Previous time-domain channel frame, shape (2048,). + frame_T_prev_2 : FrameChannelT + Pre-previous time-domain channel frame, shape (2048,). + + Returns + ------- + FloatArray + Signal-to-Mask Ratio (SMR), per psychoacoustic band. + - If frame_type == "ESH": shape (42, 8) + - Else: shape (69,) + """ + frame_T = np.asarray(frame_T, dtype=np.float64).reshape(-1) + frame_T_prev_1 = np.asarray(frame_T_prev_1, dtype=np.float64).reshape(-1) + frame_T_prev_2 = np.asarray(frame_T_prev_2, dtype=np.float64).reshape(-1) + + if frame_T.shape[0] != 2048 or frame_T_prev_1.shape[0] != 2048 or frame_T_prev_2.shape[0] != 2048: + raise ValueError("aac_psycho expects 2048-sample frames for current/prev1/prev2.") + + table, N = get_table(frame_type) + + # Long frame types: compute one SMR vector (69 bands) + if frame_type != "ESH": + return _psycho_window(frame_T, frame_T_prev_1, frame_T_prev_2, N=N, table=table) + + # ESH: compute 8 SMR vectors (42 bands each), one per short subframe. + # + # The notes use short-window history for predictability: + # - For j=0: use previous frame's subframes (7, 6) + # - For j=1: use current subframe 0 and previous frame's subframe 7 + # - For j>=2: use current subframes (j-1, j-2) + # + # This matches the "within-frame history" convention commonly used in + # simplified psycho models for ESH. + cur_subs = _esh_subframes(frame_T) + prev1_subs = _esh_subframes(frame_T_prev_1) + + B = int(table.shape[0]) # expected 42 + smr_out = np.zeros((B, 8), dtype=np.float64) + + for j in range(8): + if j == 0: + x_m1 = prev1_subs[7] + x_m2 = prev1_subs[6] + elif j == 1: + x_m1 = cur_subs[0] + x_m2 = prev1_subs[7] + else: + x_m1 = cur_subs[j - 1] + x_m2 = cur_subs[j - 2] + + smr_out[:, j] = _psycho_window(cur_subs[j], x_m1, x_m2, N=256, table=table) + + return smr_out diff --git a/source/level_1/core/aac_quantizer.py b/source/level_1/core/aac_quantizer.py new file mode 100644 index 0000000..f2004b0 --- /dev/null +++ b/source/level_1/core/aac_quantizer.py @@ -0,0 +1,600 @@ +# ------------------------------------------------------------ +# AAC Coder/Decoder - Quantizer / iQuantizer (Level 3) +# +# Multimedia course at Aristotle University of +# Thessaloniki (AUTh) +# +# Author: +# Christos Choutouridis (ΑΕΜ 8997) +# cchoutou@ece.auth.gr +# +# Description: +# Implements AAC quantizer and inverse quantizer for one channel. +# Based on assignment section 2.6 (Eq. 12-15). +# +# Notes: +# - Bit reservoir is not implemented (assignment simplification). +# - Scalefactor bands are assumed equal to psychoacoustic bands +# (Table B.2.1.9a / B.2.1.9b from TableB219.mat). +# ------------------------------------------------------------ +from __future__ import annotations + +import numpy as np + +from core.aac_utils import get_table, band_limits +from core.aac_types import * + +# ----------------------------------------------------------------------------- +# Constants (assignment) +# ----------------------------------------------------------------------------- +MAGIC_NUMBER: float = 0.4054 +EPS: float = 1e-12 +MAX_SF_DELTA:int = 60 + + +# ----------------------------------------------------------------------------- +# Helpers: ESH packing/unpacking (128x8 <-> 1024x1) +# ----------------------------------------------------------------------------- +def _esh_pack(x_128x8: FloatArray) -> FloatArray: + """ + Pack ESH coefficients (128 x 8) into a single long vector (1024 x 1). + + Packing order: + Columns are concatenated in subframe order (0..7), column-major. + + Parameters + ---------- + x_128x8 : FloatArray + ESH coefficients, shape (128, 8). + + Returns + ------- + FloatArray + Packed coefficients, shape (1024, 1). + """ + x_128x8 = np.asarray(x_128x8, dtype=np.float64) + if x_128x8.shape != (128, 8): + raise ValueError("ESH pack expects shape (128, 8).") + return x_128x8.reshape(1024, 1, order="F") + + +def _esh_unpack(x_1024x1: FloatArray) -> FloatArray: + """ + Unpack a packed ESH vector (1024 elements) back to shape (128, 8). + + Parameters + ---------- + x_1024x1 : FloatArray + Packed ESH vector, shape (1024,) or (1024, 1) after flattening. + + Returns + ------- + FloatArray + Unpacked ESH coefficients, shape (128, 8). + """ + x_1024x1 = np.asarray(x_1024x1, dtype=np.float64).reshape(-1) + if x_1024x1.shape[0] != 1024: + raise ValueError("ESH unpack expects 1024 elements.") + return x_1024x1.reshape(128, 8, order="F") + + +# ----------------------------------------------------------------------------- +# Core quantizer formulas (Eq. 12, Eq. 13) +# ----------------------------------------------------------------------------- +def _quantize_symbol(x: FloatArray, alpha: float) -> QuantizedSymbols: + """ + Quantize MDCT coefficients to integer symbols S(k). + + Implements Eq. (12): + S(k) = sgn(X(k)) * int( (|X(k)| * 2^(-alpha/4))^(3/4) + MAGIC_NUMBER ) + + Parameters + ---------- + x : FloatArray + MDCT coefficients for a contiguous set of spectral lines. + Shape: (N,) + alpha : float + Scalefactor gain for the corresponding scalefactor band. + + Returns + ------- + QuantizedSymbols + Quantized symbols S(k) as int64, shape (N,). + """ + x = np.asarray(x, dtype=np.float64) + + scale = 2.0 ** (-0.25 * float(alpha)) + ax = np.abs(x) * scale + + y = np.power(ax, 0.75, dtype=np.float64) + + # "int" in the assignment corresponds to truncation. + q = np.floor(y + MAGIC_NUMBER).astype(np.int64) + return (np.sign(x).astype(np.int64) * q).astype(np.int64) + + +def _dequantize_symbol(S: QuantizedSymbols, alpha: float) -> FloatArray: + """ + Inverse quantizer (dequantization of symbols). + + Implements Eq. (13): + Xhat(k) = sgn(S(k)) * |S(k)|^(4/3) * 2^(alpha/4) + + Parameters + ---------- + S : QuantizedSymbols + Quantized symbols S(k), int64, shape (N,). + alpha : float + Scalefactor gain for the corresponding scalefactor band. + + Returns + ------- + FloatArray + Reconstructed MDCT coefficients Xhat(k), float64, shape (N,). + """ + S = np.asarray(S, dtype=np.int64) + + scale = 2.0 ** (0.25 * float(alpha)) + aS = np.abs(S).astype(np.float64) + y = np.power(aS, 4.0 / 3.0, dtype=np.float64) + + return (np.sign(S).astype(np.float64) * y * scale).astype(np.float64) + + +# ----------------------------------------------------------------------------- +# Alpha initialization (Eq. 14) +# ----------------------------------------------------------------------------- +def _initial_alpha_hat(X: "FloatArray", MQ: int = 8191) -> int: + """ + Compute the initial scalefactor estimate alpha_hat for a frame. + + The assignment proposes the following first approximation (Equation 14): + + alpha_hat = (16/3) * log2( max_k(|X(k)|)^(3/4) / MQ ) + + where max_k runs over all MDCT coefficients of the frame (not per band), + and MQ is the maximum quantization level parameter (2*MQ + 1 levels). + + Parameters + ---------- + X : FloatArray + MDCT coefficients of one frame (or one ESH subframe), shape (N,). + MQ : int + Quantizer parameter (default 8191, as per assignment). + + Returns + ------- + int + Integer alpha_hat (rounded to nearest integer). + """ + x_max = float(np.max(np.abs(X))) + if x_max <= 0.0: + return 0 + + alpha_hat = (16.0 / 3.0) * np.log2((x_max ** (3.0 / 4.0)) / float(MQ)) + return int(np.round(alpha_hat)) + + +# ----------------------------------------------------------------------------- +# Band utilities +# ----------------------------------------------------------------------------- +def _band_slices(frame_type: FrameType) -> list[tuple[int, int]]: + """ + Return scalefactor band ranges [wlow, whigh] (inclusive) for the given frame type. + + These are derived from the psychoacoustic tables (TableB219), + and map directly to MDCT indices: + - long: 0..1023 + - short (ESH subframe): 0..127 + + Parameters + ---------- + frame_type : FrameType + Frame type ("OLS", "LSS", "ESH", "LPS"). + + Returns + ------- + list[tuple[int, int]] + List of (lo, hi) inclusive index pairs for each band. + """ + table, _Nfft = get_table(frame_type) + wlow, whigh, _bval, _qthr_db = band_limits(table) + + bands: list[tuple[int, int]] = [] + for lo, hi in zip(wlow, whigh): + bands.append((int(lo), int(hi))) + return bands + + +def _band_energy(x: FloatArray, lo: int, hi: int) -> float: + """ + Compute energy of a spectral segment x[lo:hi+1]. + + Parameters + ---------- + x : FloatArray + MDCT coefficient vector. + lo, hi : int + Inclusive index range. + + Returns + ------- + float + Sum of squares (energy) within the band. + """ + sec = x[lo : hi + 1] + return float(np.sum(sec * sec)) + + +def _psychoacoustic_threshold( + X: FloatArray, + SMR_col: FloatArray, + bands: list[tuple[int, int]], +) -> FloatArray: + """ + Compute psychoacoustic thresholds T(b) per band. + + Uses: + P(b) = sum_{k in band} X(k)^2 + T(b) = P(b) / SMR(b) + + Parameters + ---------- + X : FloatArray + MDCT coefficients for a frame (long) or one ESH subframe (short). + SMR_col : FloatArray + SMR values for this frame/subframe, shape (NB,). + bands : list[tuple[int, int]] + Band index ranges. + + Returns + ------- + FloatArray + Threshold vector T(b), shape (NB,). + """ + nb = len(bands) + T = np.zeros((nb,), dtype=np.float64) + + for b, (lo, hi) in enumerate(bands): + P = _band_energy(X, lo, hi) + smr = float(SMR_col[b]) + if smr <= EPS: + T[b] = 0.0 + else: + T[b] = P / smr + + return T + + +# ----------------------------------------------------------------------------- +# Alpha selection per band + neighbor-difference constraint +# ----------------------------------------------------------------------------- +def _best_alpha_for_band( + X: "FloatArray", lo: int, hi: int, T_b: float, + alpha_hat: int, alpha_prev: int, alpha_min: int, alpha_max: int, +) -> int: + """ + Determine the band-wise scalefactor alpha(b) following the assignment. + + Procedure: + - Start from a frame-wise initial estimate alpha_hat. + - Iteratively increase alpha(b) by 1 as long as the quantization error power + stays below the psychoacoustic threshold T(b): P_e(b) = sum_{k in band} ( X(k) - Xhat(k) )^2 + + - Stop increasing alpha(b) if the neighbor constraint would be violated: |alpha(b) - alpha(b-1)| <= 60 + When processing bands sequentially (low -> high), this becomes: alpha(b) <= alpha_prev + 60 + + Notes: + - This function does not decrease alpha if the initial value already violates + the threshold; the assignment only specifies iterative increase. + + Parameters + ---------- + X : FloatArray + Full MDCT vector of the current (sub)frame, shape (N,). + lo, hi : int + Band index bounds (inclusive), defining the band slice. + T_b : float + Threshold T(b) for this band. + alpha_hat : int + Initial frame-wise estimate (Equation 14). + alpha_prev : int + Previously selected alpha for band b-1 (neighbor constraint reference). + alpha_min, alpha_max : int + Safeguard bounds for alpha. + + Returns + ------- + int + Selected integer alpha(b). + """ + if T_b <= 0.0: + return int(alpha_hat) + Xsec = X[lo : hi + 1] + + # Neighbor constraint (sequential processing): alpha(b) <= alpha_prev + 60 + alpha_limit = min(int(alpha_max), int(alpha_prev) + MAX_SF_DELTA) + + # Start from alpha_hat, clamped to feasible range + alpha = int(alpha_hat) + alpha = max(int(alpha_min), min(alpha, int(alpha_limit))) + + # Evaluate at current alpha + Ssec = _quantize_symbol(Xsec, alpha) + Xhat = _dequantize_symbol(Ssec, alpha) + Pe = float(np.sum((Xsec - Xhat) ** 2)) + + # If already above threshold, return current alpha (no decrease step specified) + if Pe > T_b: + return alpha + + # Increase alpha while still under threshold and within constraints + while True: + alpha_next = alpha + 1 + if alpha_next > alpha_limit: + break + Ssec = _quantize_symbol(Xsec, alpha_next) + Xhat = _dequantize_symbol(Ssec, alpha_next) + Pe_next = float(np.sum((Xsec - Xhat) ** 2)) + + if Pe_next > T_b: + break + alpha = alpha_next + + return alpha + + +# ----------------------------------------------------------------------------- +# Public API +# ----------------------------------------------------------------------------- +def aac_quantizer( + frame_F: FrameChannelF, + frame_type: FrameType, + SMR: FloatArray, +) -> tuple[QuantizedSymbols, ScaleFactors, GlobalGain]: + """ + AAC quantizer for one channel (Level 3). + + Quantizes MDCT coefficients (after TNS) using band-wise scalefactors derived + from psychoacoustic thresholds computed via SMR. + + The implementation follows the assignment procedure: + - Compute an initial frame-wise alpha_hat using Equation (14), based on the + maximum MDCT coefficient magnitude of the (sub)frame. + - For each band b, increase alpha(b) by 1 while the quantization error power + P_e(b) stays below the threshold T(b). + - Enforce the neighbor constraint |alpha(b) - alpha(b-1)| <= 60 during the + band-by-band search (no post-processing needed). + + Parameters + ---------- + frame_F : FrameChannelF + MDCT coefficients after TNS, one channel. + Shapes: + - Long frames: (1024,) or (1024, 1) + - ESH: (128, 8) + frame_type : FrameType + AAC frame type ("OLS", "LSS", "ESH", "LPS"). + SMR : FloatArray + Signal-to-Mask Ratio per band. + Shapes: + - Long: (NB,) or (NB, 1) + - ESH: (NB, 8) + + Returns + ------- + S : QuantizedSymbols + Quantized symbols S(k), packed as shape (1024, 1) for all frame types. + For ESH, the 8 subframes are packed in column-major subframe layout. + sfc : ScaleFactors + DPCM-coded scalefactors: + sfc(0) = alpha(0) = G + sfc(b) = alpha(b) - alpha(b-1), for b > 0 + Shapes: + - Long: (NB, 1) + - ESH: (NB, 8) + G : GlobalGain + Global gain G = alpha(0). + - Long: scalar float + - ESH: array shape (1, 8), dtype float64 + """ + bands = _band_slices(frame_type) + NB = len(bands) + + X = np.asarray(frame_F, dtype=np.float64) + SMR = np.asarray(SMR, dtype=np.float64) + + # ------------------------------------------------------------------------- + # ESH: 8 short subframes, each of length 128 + # ------------------------------------------------------------------------- + if frame_type == "ESH": + if X.shape != (128, 8): + raise ValueError("For ESH, frame_F must have shape (128, 8).") + if SMR.shape != (NB, 8): + raise ValueError(f"For ESH, SMR must have shape ({NB}, 8).") + + S_out: QuantizedSymbols = np.zeros((1024, 1), dtype=np.int64) + sfc: ScaleFactors = np.zeros((NB, 8), dtype=np.int64) + G_arr = np.zeros((1, 8), dtype=np.float64) + + # Packed output view: (128, 8) with column-major layout + S_pack = S_out[:, 0].reshape(128, 8, order="F") + + for j in range(8): + Xj = X[:, j].reshape(128) + SMRj = SMR[:, j].reshape(NB) + + # Compute psychoacoustic threshold T(b) for this subframe + T = _psychoacoustic_threshold(Xj, SMRj, bands) + + # Frame-wise initial estimate alpha_hat (Equation 14) + alpha_hat = _initial_alpha_hat(Xj) + + # Band-wise scalefactors alpha(b) + alpha = np.zeros((NB,), dtype=np.int64) + alpha_prev = int(alpha_hat) + + for b, (lo, hi) in enumerate(bands): + alpha_b = _best_alpha_for_band( + X=Xj, + lo=lo, + hi=hi, + T_b=float(T[b]), + alpha_hat=int(alpha_hat), + alpha_prev=int(alpha_prev), + alpha_min=-4096, + alpha_max=4096, + ) + alpha[b] = int(alpha_b) + alpha_prev = int(alpha_b) + + # DPCM-coded scalefactors + G_arr[0, j] = float(alpha[0]) + sfc[0, j] = int(alpha[0]) + for b in range(1, NB): + sfc[b, j] = int(alpha[b] - alpha[b - 1]) + + # Quantize MDCT coefficients band-by-band + Sj = np.zeros((128,), dtype=np.int64) + for b, (lo, hi) in enumerate(bands): + Sj[lo : hi + 1] = _quantize_symbol(Xj[lo : hi + 1], float(alpha[b])) + + # Store subframe in packed output + S_pack[:, j] = Sj + + return S_out, sfc, G_arr + + # ------------------------------------------------------------------------- + # Long frames: OLS / LSS / LPS, length 1024 + # ------------------------------------------------------------------------- + if X.shape == (1024,): + Xv = X + elif X.shape == (1024, 1): + Xv = X[:, 0] + else: + raise ValueError("For non-ESH, frame_F must have shape (1024,) or (1024, 1).") + + if SMR.shape == (NB,): + SMRv = SMR + elif SMR.shape == (NB, 1): + SMRv = SMR[:, 0] + else: + raise ValueError(f"For non-ESH, SMR must have shape ({NB},) or ({NB}, 1).") + + # Compute psychoacoustic threshold T(b) for the long frame + T = _psychoacoustic_threshold(Xv, SMRv, bands) + + # Frame-wise initial estimate alpha_hat (Equation 14) + alpha_hat = _initial_alpha_hat(Xv) + + # Band-wise scalefactors alpha(b) + alpha = np.zeros((NB,), dtype=np.int64) + alpha_prev = int(alpha_hat) + + for b, (lo, hi) in enumerate(bands): + alpha_b = _best_alpha_for_band( + X=Xv, + lo=lo, + hi=hi, + T_b=float(T[b]), + alpha_hat=int(alpha_hat), + alpha_prev=int(alpha_prev), + alpha_min=-4096, + alpha_max=4096, + ) + alpha[b] = int(alpha_b) + alpha_prev = int(alpha_b) + + # DPCM-coded scalefactors + sfc_out: ScaleFactors = np.zeros((NB, 1), dtype=np.int64) + sfc_out[0, 0] = int(alpha[0]) + for b in range(1, NB): + sfc_out[b, 0] = int(alpha[b] - alpha[b - 1]) + + G: float = float(alpha[0]) + + # Quantize MDCT coefficients band-by-band + S_vec = np.zeros((1024,), dtype=np.int64) + for b, (lo, hi) in enumerate(bands): + S_vec[lo : hi + 1] = _quantize_symbol(Xv[lo : hi + 1], float(alpha[b])) + + return S_vec.reshape(1024, 1), sfc_out, G + + +def aac_i_quantizer( + S: QuantizedSymbols, + sfc: ScaleFactors, + G: GlobalGain, + frame_type: FrameType, +) -> FrameChannelF: + """ + Inverse quantizer (iQuantizer) for one channel. + + Reconstructs MDCT coefficients from quantized symbols and DPCM scalefactors. + + Parameters + ---------- + S : QuantizedSymbols + Quantized symbols, shape (1024, 1) (or any array with 1024 elements). + sfc : ScaleFactors + DPCM-coded scalefactors. + Shapes: + - Long: (NB, 1) + - ESH: (NB, 8) + G : GlobalGain + Global gain (not strictly required if sfc includes sfc(0)=alpha(0)). + Present for API compatibility with the assignment. + frame_type : FrameType + AAC frame type. + + Returns + ------- + FrameChannelF + Reconstructed MDCT coefficients: + - ESH: (128, 8) + - Long: (1024, 1) + """ + bands = _band_slices(frame_type) + NB = len(bands) + + S_flat = np.asarray(S, dtype=np.int64).reshape(-1) + if S_flat.shape[0] != 1024: + raise ValueError("S must contain 1024 symbols.") + + if frame_type == "ESH": + sfc = np.asarray(sfc, dtype=np.int64) + if sfc.shape != (NB, 8): + raise ValueError(f"For ESH, sfc must have shape ({NB}, 8).") + + S_128x8 = _esh_unpack(S_flat) + + Xrec = np.zeros((128, 8), dtype=np.float64) + + for j in range(8): + alpha = np.zeros((NB,), dtype=np.int64) + alpha[0] = int(sfc[0, j]) + for b in range(1, NB): + alpha[b] = int(alpha[b - 1] + sfc[b, j]) + + Xj = np.zeros((128,), dtype=np.float64) + for b, (lo, hi) in enumerate(bands): + Xj[lo : hi + 1] = _dequantize_symbol(S_128x8[lo : hi + 1, j].astype(np.int64), float(alpha[b])) + + Xrec[:, j] = Xj + + return Xrec + + sfc = np.asarray(sfc, dtype=np.int64) + if sfc.shape != (NB, 1): + raise ValueError(f"For non-ESH, sfc must have shape ({NB}, 1).") + + alpha = np.zeros((NB,), dtype=np.int64) + alpha[0] = int(sfc[0, 0]) + for b in range(1, NB): + alpha[b] = int(alpha[b - 1] + sfc[b, 0]) + + Xrec = np.zeros((1024,), dtype=np.float64) + for b, (lo, hi) in enumerate(bands): + Xrec[lo : hi + 1] = _dequantize_symbol(S_flat[lo : hi + 1], float(alpha[b])) + + return Xrec.reshape(1024, 1) diff --git a/source/level_1/core/aac_tns.py b/source/level_1/core/aac_tns.py new file mode 100644 index 0000000..4ba78ac --- /dev/null +++ b/source/level_1/core/aac_tns.py @@ -0,0 +1,514 @@ +# ------------------------------------------------------------ +# AAC Coder/Decoder - Temporal Noise Shaping (TNS) +# +# Multimedia course at Aristotle University of +# Thessaloniki (AUTh) +# +# Author: +# Christos Choutouridis (ΑΕΜ 8997) +# cchoutou@ece.auth.gr +# +# Description: +# Temporal Noise Shaping (TNS) module (Level 2). +# +# Public API: +# frame_F_out, tns_coeffs = aac_tns(frame_F_in, frame_type) +# frame_F_out = aac_i_tns(frame_F_in, frame_type, tns_coeffs) +# +# Notes (per assignment): +# - TNS is applied per channel (not stereo). +# - For ESH, TNS is applied independently to each of the 8 short subframes. +# - Bark band tables are taken from TableB.2.1.9a (long) and TableB.2.1.9b (short) +# provided in TableB219.mat. +# - Predictor order is fixed to p = 4. +# - Coefficients are quantized with a 4-bit uniform symmetric quantizer, step = 0.1. +# - Forward TNS applies FIR: H_TNS(z) = 1 - a1 z^-1 - ... - ap z^-p +# - Inverse TNS applies the inverse IIR filter using the same quantized coefficients. +# ------------------------------------------------------------ +from __future__ import annotations + +from pathlib import Path +from typing import Tuple + +from core.aac_utils import load_b219_tables +from core.aac_configuration import PRED_ORDER, QUANT_STEP, QUANT_MAX +from core.aac_types import * + +# ----------------------------------------------------------------------------- +# Private helpers +# ----------------------------------------------------------------------------- + + +def _band_ranges(k_count: int) -> BandRanges: + """ + Return Bark band index ranges [start, end] (inclusive) for the given MDCT line count. + + Parameters + ---------- + k_count : int + Number of MDCT lines: + - 1024 for long frames + - 128 for short subframes (ESH) + + Returns + ------- + BandRanges (list[tuple[int, int]]) + Each tuple is (start_k, end_k) inclusive. + """ + tables = load_b219_tables() + if k_count == 1024: + tbl = tables["B219a"] + elif k_count == 128: + tbl = tables["B219b"] + else: + raise ValueError("TNS supports only k_count=1024 (long) or k_count=128 (short).") + + start = tbl[:, 1].astype(int) + end = tbl[:, 2].astype(int) + + ranges: BandRanges = [(int(s), int(e)) for s, e in zip(start, end)] + + for s, e in ranges: + if s < 0 or e < s or e >= k_count: + raise ValueError("Invalid band table ranges for given k_count.") + return ranges + + +# ----------------------------------------------------------------------------- +# Core DSP helpers +# ----------------------------------------------------------------------------- + +def _smooth_sw_inplace(sw: MdctCoeffs) -> None: + """ + Smooth Sw(k) to reduce discontinuities between adjacent Bark bands. + + The assignment applies two passes: + - Backward: Sw(k) = (Sw(k) + Sw(k+1))/2 + - Forward: Sw(k) = (Sw(k) + Sw(k-1))/2 + + Parameters + ---------- + sw : MdctCoeffs + 1-D array of length K (float64). Modified in-place. + """ + k_count = int(sw.shape[0]) + + for k in range(k_count - 2, -1, -1): + sw[k] = 0.5 * (sw[k] + sw[k + 1]) + + for k in range(1, k_count): + sw[k] = 0.5 * (sw[k] + sw[k - 1]) + + +def _compute_sw(x: MdctCoeffs) -> MdctCoeffs: + """ + Compute Sw(k) from band energies P(j) and apply boundary smoothing. + + Parameters + ---------- + x : MdctCoeffs + 1-D MDCT line array, length K. + + Returns + ------- + MdctCoeffs + Sw(k), 1-D array of length K, float64. + """ + x = np.asarray(x, dtype=np.float64).reshape(-1) + k_count = int(x.shape[0]) + + bands = _band_ranges(k_count) + sw = np.zeros(k_count, dtype=np.float64) + + for s, e in bands: + seg = x[s : e + 1] + p_j = float(np.sum(seg * seg)) + sw_val = float(np.sqrt(p_j)) + sw[s : e + 1] = sw_val + + _smooth_sw_inplace(sw) + return sw + + +def _autocorr(x: MdctCoeffs, p: int) -> MdctCoeffs: + """ + Autocorrelation r(m) for m=0..p. + + Parameters + ---------- + x : MdctCoeffs + 1-D signal. + p : int + Maximum lag. + + Returns + ------- + MdctCoeffs + r, shape (p+1,), float64. + """ + x = np.asarray(x, dtype=np.float64).reshape(-1) + n = int(x.shape[0]) + + r = np.zeros(p + 1, dtype=np.float64) + for m in range(p + 1): + r[m] = float(np.dot(x[m:], x[: n - m])) + return r + + +def _lpc_coeffs(xw: MdctCoeffs, p: int) -> MdctCoeffs: + """ + Solve Yule-Walker normal equations for LPC coefficients of order p. + + Parameters + ---------- + xw : MdctCoeffs + 1-D normalized sequence Xw(k). + p : int + Predictor order. + + Returns + ------- + MdctCoeffs + LPC coefficients a[0..p-1], shape (p,), float64. + """ + r = _autocorr(xw, p) + + R = np.empty((p, p), dtype=np.float64) + for i in range(p): + for j in range(p): + R[i, j] = r[abs(i - j)] + + rhs = r[1 : p + 1].reshape(p) + + reg = 1e-12 + R_reg = R + reg * np.eye(p, dtype=np.float64) + + a = np.linalg.solve(R_reg, rhs) + return a + + +def _quantize_coeffs(a: MdctCoeffs) -> MdctCoeffs: + """ + Quantize LPC coefficients with uniform symmetric quantizer and clamp. + + Parameters + ---------- + a : MdctCoeffs + LPC coefficient array, shape (p,). + + Returns + ------- + MdctCoeffs + Quantized coefficients, shape (p,), float64. + """ + a = np.asarray(a, dtype=np.float64).reshape(-1) + q = np.round(a / QUANT_STEP) * QUANT_STEP + q = np.clip(q, -QUANT_MAX, QUANT_MAX) + return q.astype(np.float64, copy=False) + + +def _is_inverse_stable(a_q: MdctCoeffs) -> bool: + """ + Check stability of the inverse TNS filter H_TNS^{-1}. + + Forward filter: + H_TNS(z) = 1 - a1 z^-1 - ... - ap z^-p + + Inverse filter poles are roots of: + A(z) = 1 - a1 z^-1 - ... - ap z^-p + Multiply by z^p: + z^p - a1 z^{p-1} - ... - ap = 0 + + Stability condition: + all roots satisfy |z| < 1. + + Parameters + ---------- + a_q : MdctCoeffs + Quantized predictor coefficients, shape (p,). + + Returns + ------- + bool + True if stable, else False. + """ + a_q = np.asarray(a_q, dtype=np.float64).reshape(-1) + p = int(a_q.shape[0]) + + # Polynomial in z: z^p - a1 z^{p-1} - ... - ap + poly = np.empty(p + 1, dtype=np.float64) + poly[0] = 1.0 + poly[1:] = -a_q + + roots = np.roots(poly) + + # Strictly inside unit circle for stability. Add tiny margin for numeric safety. + margin = 1e-12 + return bool(np.all(np.abs(roots) < (1.0 - margin))) + + +def _stabilize_quantized_coeffs(a_q: MdctCoeffs) -> MdctCoeffs: + """ + Make quantized predictor coefficients stable for inverse filtering. + + Policy: + - If already stable: return as-is. + - Else: iteratively shrink coefficients by gamma and re-quantize to the 0.1 grid. + - If still unstable after attempts: fall back to all-zero coefficients (disable TNS). + + Parameters + ---------- + a_q : MdctCoeffs + Quantized predictor coefficients, shape (p,). + + Returns + ------- + MdctCoeffs + Stable quantized coefficients, shape (p,). + """ + a_q = np.asarray(a_q, dtype=np.float64).reshape(-1) + + if _is_inverse_stable(a_q): + return a_q + + # Try a few shrinking factors. Re-quantize after shrinking to keep coefficients on-grid. + gammas = (0.9, 0.8, 0.7, 0.6, 0.5, 0.4, 0.3, 0.2, 0.1) + + for g in gammas: + cand = _quantize_coeffs(g * a_q) + if _is_inverse_stable(cand): + return cand + + # Last resort: disable TNS for this vector + return np.zeros_like(a_q, dtype=np.float64) + + +def _apply_tns_fir(x: MdctCoeffs, a_q: MdctCoeffs) -> MdctCoeffs: + """ + Apply forward TNS FIR filter: + y[k] = x[k] - sum_{l=1..p} a_l * x[k-l] + + Parameters + ---------- + x : MdctCoeffs + 1-D MDCT lines, length K. + a_q : MdctCoeffs + Quantized LPC coefficients, shape (p,). + + Returns + ------- + MdctCoeffs + Filtered MDCT lines y, length K. + """ + x = np.asarray(x, dtype=np.float64).reshape(-1) + a_q = np.asarray(a_q, dtype=np.float64).reshape(-1) + p = int(a_q.shape[0]) + k_count = int(x.shape[0]) + + y = np.zeros(k_count, dtype=np.float64) + for k in range(k_count): + acc = x[k] + for l in range(1, p + 1): + if k - l >= 0: + acc -= a_q[l - 1] * x[k - l] + y[k] = acc + return y + + +def _apply_itns_iir(y: MdctCoeffs, a_q: MdctCoeffs) -> MdctCoeffs: + """ + Apply inverse TNS IIR filter: + x_hat[k] = y[k] + sum_{l=1..p} a_l * x_hat[k-l] + + Parameters + ---------- + y : MdctCoeffs + 1-D MDCT lines after TNS, length K. + a_q : MdctCoeffs + Quantized LPC coefficients, shape (p,). + + Returns + ------- + MdctCoeffs + Reconstructed MDCT lines x_hat, length K. + """ + y = np.asarray(y, dtype=np.float64).reshape(-1) + a_q = np.asarray(a_q, dtype=np.float64).reshape(-1) + p = int(a_q.shape[0]) + k_count = int(y.shape[0]) + + x_hat = np.zeros(k_count, dtype=np.float64) + for k in range(k_count): + acc = y[k] + for l in range(1, p + 1): + if k - l >= 0: + acc += a_q[l - 1] * x_hat[k - l] + x_hat[k] = acc + return x_hat + + +def _tns_vector(x: MdctCoeffs) -> tuple[MdctCoeffs, MdctCoeffs]: + """ + TNS for a single MDCT vector (one long frame or one short subframe). + + Steps: + 1) Compute Sw(k) from Bark band energies and smooth it. + 2) Normalize: Xw(k) = X(k) / Sw(k) (safe when Sw=0). + 3) Compute LPC coefficients (order p=PRED_ORDER) on Xw. + 4) Quantize coefficients (4-bit symmetric, step QUANT_STEP). + 5) Apply FIR filter on original X(k) using quantized coefficients. + + Parameters + ---------- + x : MdctCoeffs + 1-D MDCT vector. + + Returns + ------- + y : MdctCoeffs + TNS-processed MDCT vector (same length). + a_q : MdctCoeffs + Quantized LPC coefficients, shape (PRED_ORDER,). + """ + x = np.asarray(x, dtype=np.float64).reshape(-1) + sw = _compute_sw(x) + + eps = 1e-12 + xw = np.zeros_like(x, dtype=np.float64) + mask = sw > eps + np.divide(x, sw, out=xw, where=mask) + + a = _lpc_coeffs(xw, PRED_ORDER) + a_q = _quantize_coeffs(a) + + # Ensure inverse stability (assignment requirement) + a_q = _stabilize_quantized_coeffs(a_q) + + y = _apply_tns_fir(x, a_q) + return y, a_q + + + +# ----------------------------------------------------------------------------- +# Public Functions +# ----------------------------------------------------------------------------- + +def aac_tns(frame_F_in: FrameChannelF, frame_type: FrameType) -> Tuple[FrameChannelF, TnsCoeffs]: + """ + Temporal Noise Shaping (TNS) for ONE channel. + + Parameters + ---------- + frame_F_in : FrameChannelF + Per-channel MDCT coefficients. + Expected (typical) shapes: + - If frame_type == "ESH": (128, 8) + - Else: (1024, 1) or (1024,) + + frame_type : FrameType + Frame type code ("OLS", "LSS", "ESH", "LPS"). + + Returns + ------- + frame_F_out : FrameChannelF + Per-channel MDCT coefficients after applying TNS. + Same shape convention as input. + + tns_coeffs : TnsCoeffs + Quantized TNS predictor coefficients. + Expected shapes: + - If frame_type == "ESH": (PRED_ORDER, 8) + - Else: (PRED_ORDER, 1) + """ + x = np.asarray(frame_F_in, dtype=np.float64) + + if frame_type == "ESH": + if x.shape != (128, 8): + raise ValueError("For ESH, frame_F_in must have shape (128, 8).") + + y = np.empty_like(x, dtype=np.float64) + a_out = np.empty((PRED_ORDER, 8), dtype=np.float64) + + for j in range(8): + y[:, j], a_out[:, j] = _tns_vector(x[:, j]) + + return y, a_out + + if x.shape == (1024,): + x_vec = x + out_shape = (1024,) + elif x.shape == (1024, 1): + x_vec = x[:, 0] + out_shape = (1024, 1) + else: + raise ValueError('For non-ESH, frame_F_in must have shape (1024,) or (1024, 1).') + + y_vec, a_q = _tns_vector(x_vec) + + if out_shape == (1024,): + y_out = y_vec + else: + y_out = y_vec.reshape(1024, 1) + + a_out = a_q.reshape(PRED_ORDER, 1) + return y_out, a_out + + +def aac_i_tns(frame_F_in: FrameChannelF, frame_type: FrameType, tns_coeffs: TnsCoeffs) -> FrameChannelF: + """ + Inverse Temporal Noise Shaping (iTNS) for ONE channel. + + Parameters + ---------- + frame_F_in : FrameChannelF + Per-channel MDCT coefficients after TNS. + Expected (typical) shapes: + - If frame_type == "ESH": (128, 8) + - Else: (1024, 1) or (1024,) + + frame_type : FrameType + Frame type code ("OLS", "LSS", "ESH", "LPS"). + + tns_coeffs : TnsCoeffs + Quantized TNS predictor coefficients. + Expected shapes: + - If frame_type == "ESH": (PRED_ORDER, 8) + - Else: (PRED_ORDER, 1) + + Returns + ------- + FrameChannelF + Per-channel MDCT coefficients after inverse TNS. + Same shape convention as input frame_F_in. + """ + x = np.asarray(frame_F_in, dtype=np.float64) + a = np.asarray(tns_coeffs, dtype=np.float64) + + if frame_type == "ESH": + if x.shape != (128, 8): + raise ValueError("For ESH, frame_F_in must have shape (128, 8).") + if a.shape != (PRED_ORDER, 8): + raise ValueError("For ESH, tns_coeffs must have shape (PRED_ORDER, 8).") + + y = np.empty_like(x, dtype=np.float64) + for j in range(8): + y[:, j] = _apply_itns_iir(x[:, j], a[:, j]) + return y + + if a.shape != (PRED_ORDER, 1): + raise ValueError("For non-ESH, tns_coeffs must have shape (PRED_ORDER, 1).") + + if x.shape == (1024,): + x_vec = x + out_shape = (1024,) + elif x.shape == (1024, 1): + x_vec = x[:, 0] + out_shape = (1024, 1) + else: + raise ValueError('For non-ESH, frame_F_in must have shape (1024,) or (1024, 1).') + + y_vec = _apply_itns_iir(x_vec, a[:, 0]) + + if out_shape == (1024,): + return y_vec + return y_vec.reshape(1024, 1) diff --git a/source/level_1/core/aac_utils.py b/source/level_1/core/aac_utils.py index 0e18ed1..26cdbdf 100644 --- a/source/level_1/core/aac_utils.py +++ b/source/level_1/core/aac_utils.py @@ -163,6 +163,42 @@ def snr_db(x_ref: StereoSignal, x_hat: StereoSignal) -> float: return float(10.0 * np.log10(ps / pn)) +def estimate_lag_mono(x_ref: TimeSignal, x_hat: TimeSignal, max_lag=4096): + """ + Estimate time lag between two mono signals. + Returns lag (positive means x_hat delayed). + """ + n = min(len(x_ref), len(x_hat)) + x_ref = x_ref[:n] + x_hat = x_hat[:n] + + corr = np.correlate(x_ref, x_hat, mode='full') + lags = np.arange(-n + 1, n) + + center = n - 1 + lo = max(0, center - max_lag) + hi = min(len(corr), center + max_lag + 1) + + best = lo + int(np.argmax(corr[lo:hi])) + return int(lags[best]) + + +def match_gain(x_ref: StereoSignal, x_hat: StereoSignal) -> float: + """ + Least-squares gain g that best maps x_hat -> x_ref. + """ + n = min(x_ref.shape[0], x_hat.shape[0]) + c = min(x_ref.shape[1], x_hat.shape[1]) + + r = x_ref[:n, :c].reshape(-1).astype(np.float64) + h = x_hat[:n, :c].reshape(-1).astype(np.float64) + + denom = float(np.dot(h, h)) + if denom <= 0.0: + return 1.0 + return float(np.dot(r, h) / denom) + + # ----------------------------------------------------------------------------- # Psychoacoustic band tables (TableB219.mat) # ----------------------------------------------------------------------------- diff --git a/source/level_1/material/huff_utils.py b/source/level_1/material/huff_utils.py new file mode 100644 index 0000000..8cdd279 --- /dev/null +++ b/source/level_1/material/huff_utils.py @@ -0,0 +1,403 @@ +import numpy as np +import scipy.io as sio +import os + +# ------------------ LOAD LUT ------------------ + +def load_LUT(mat_filename=None): + """ + Loads the list of Huffman Codebooks (LUTs) + + Returns: + huffLUT : list (index 1..11 used, index 0 unused) + """ + if mat_filename is None: + current_dir = os.path.dirname(os.path.abspath(__file__)) + mat_filename = os.path.join(current_dir, "huffCodebooks.mat") + + mat = sio.loadmat(mat_filename) + + + huffCodebooks_raw = mat['huffCodebooks'].squeeze() + + huffCodebooks = [] + for i in range(11): + huffCodebooks.append(np.array(huffCodebooks_raw[i])) + + # Build inverse VLC tables + invTable = [None] * 11 + + for i in range(11): + h = huffCodebooks[i][:, 2].astype(int) # column 3 + hlength = huffCodebooks[i][:, 1].astype(int) # column 2 + + hbin = [] + for j in range(len(h)): + hbin.append(format(h[j], f'0{hlength[j]}b')) + + invTable[i] = vlc_table(hbin) + + # Build Huffman LUT dicts + huffLUT = [None] * 12 # index 0 unused + params = [ + (4, 1, True), + (4, 1, True), + (4, 2, False), + (4, 2, False), + (2, 4, True), + (2, 4, True), + (2, 7, False), + (2, 7, False), + (2, 12, False), + (2, 12, False), + (2, 16, False), + ] + + for i, (nTupleSize, maxAbs, signed) in enumerate(params, start=1): + huffLUT[i] = { + 'LUT': huffCodebooks[i-1], + 'invTable': invTable[i-1], + 'codebook': i, + 'nTupleSize': nTupleSize, + 'maxAbsCodeVal': maxAbs, + 'signedValues': signed + } + + return huffLUT + +def vlc_table(code_array): + """ + codeArray: list of strings, each string is a Huffman codeword (e.g. '0101') + returns: + h : NumPy array of shape (num_nodes, 3) + columns: + [ next_if_0 , next_if_1 , symbol_index ] + """ + h = np.zeros((1, 3), dtype=int) + + for code_index, code in enumerate(code_array, start=1): + word = [int(bit) for bit in code] + h_index = 0 + + for bit in word: + k = bit + next_node = h[h_index, k] + if next_node == 0: + h = np.vstack([h, [0, 0, 0]]) + new_index = h.shape[0] - 1 + h[h_index, k] = new_index + h_index = new_index + else: + h_index = next_node + + h[h_index, 2] = code_index + + return h + +# ------------------ ENCODE ------------------ + +def encode_huff(coeff_sec, huff_LUT_list, force_codebook = None): + """ + Huffman-encode a sequence of quantized coefficients. + + This function selects the appropriate Huffman codebook based on the + maximum absolute value of the input coefficients, encodes the coefficients + into a binary Huffman bitstream, and returns both the bitstream and the + selected codebook index. + + This is the Python equivalent of the MATLAB `encodeHuff.m` function used + in audio/image coding (e.g., scale factor band encoding). The input + coefficient sequence is grouped into fixed-size tuples as defined by + the chosen Huffman LUT. Zero-padding may be applied internally. + + Parameters + ---------- + coeff_sec : array_like of int + 1-D array of quantized integer coefficients to encode. + Typically corresponds to a "section" or scale-factor band. + + huff_LUT_list : list + List of Huffman lookup-table dictionaries as returned by `loadLUT()`. + Index 1..11 correspond to valid Huffman codebooks. + Index 0 is unused. + + Returns + ------- + huffSec : str + Huffman-encoded bitstream represented as a string of '0' and '1' + characters. + + huffCodebook : int + Index (1..11) of the Huffman codebook used for encoding. + A value of 0 indicates a special all-zero section. + """ + if force_codebook is not None: + return huff_LUT_code_1(huff_LUT_list[force_codebook], coeff_sec) + + maxAbsVal = np.max(np.abs(coeff_sec)) + + if maxAbsVal == 0: + huffCodebook = 0 + huffSec = huff_LUT_code_0() + + elif maxAbsVal == 1: + candidates = [1, 2] + huffSec1 = huff_LUT_code_1(huff_LUT_list[candidates[0]], coeff_sec) + huffSec2 = huff_LUT_code_1(huff_LUT_list[candidates[1]], coeff_sec) + if len(huffSec1) <= len(huffSec2): + huffSec = huffSec1 + huffCodebook = candidates[0] + else: + huffSec = huffSec2 + huffCodebook = candidates[1] + + elif maxAbsVal == 2: + candidates = [3, 4] + huffSec1 = huff_LUT_code_1(huff_LUT_list[candidates[0]], coeff_sec) + huffSec2 = huff_LUT_code_1(huff_LUT_list[candidates[1]], coeff_sec) + if len(huffSec1) <= len(huffSec2): + huffSec = huffSec1 + huffCodebook = candidates[0] + else: + huffSec = huffSec2 + huffCodebook = candidates[1] + + elif maxAbsVal in (3, 4): + candidates = [5, 6] + huffSec1 = huff_LUT_code_1(huff_LUT_list[candidates[0]], coeff_sec) + huffSec2 = huff_LUT_code_1(huff_LUT_list[candidates[1]], coeff_sec) + if len(huffSec1) <= len(huffSec2): + huffSec = huffSec1 + huffCodebook = candidates[0] + else: + huffSec = huffSec2 + huffCodebook = candidates[1] + + elif maxAbsVal in (5, 6, 7): + candidates = [7, 8] + huffSec1 = huff_LUT_code_1(huff_LUT_list[candidates[0]], coeff_sec) + huffSec2 = huff_LUT_code_1(huff_LUT_list[candidates[1]], coeff_sec) + if len(huffSec1) <= len(huffSec2): + huffSec = huffSec1 + huffCodebook = candidates[0] + else: + huffSec = huffSec2 + huffCodebook = candidates[1] + + elif maxAbsVal in (8, 9, 10, 11, 12): + candidates = [9, 10] + huffSec1 = huff_LUT_code_1(huff_LUT_list[candidates[0]], coeff_sec) + huffSec2 = huff_LUT_code_1(huff_LUT_list[candidates[1]], coeff_sec) + if len(huffSec1) <= len(huffSec2): + huffSec = huffSec1 + huffCodebook = candidates[0] + else: + huffSec = huffSec2 + huffCodebook = candidates[1] + + elif maxAbsVal in (13, 14, 15): + huffCodebook = 11 + huffSec = huff_LUT_code_1(huff_LUT_list[huffCodebook], coeff_sec) + + else: + huffCodebook = 11 + huffSec = huff_LUT_code_ESC(huff_LUT_list[huffCodebook], coeff_sec) + + return huffSec, huffCodebook + +def huff_LUT_code_1(huff_LUT, coeff_sec): + LUT = huff_LUT['LUT'] + nTupleSize = huff_LUT['nTupleSize'] + maxAbsCodeVal = huff_LUT['maxAbsCodeVal'] + signedValues = huff_LUT['signedValues'] + + numTuples = int(np.ceil(len(coeff_sec) / nTupleSize)) + + if signedValues: + coeff = coeff_sec + maxAbsCodeVal + base = 2 * maxAbsCodeVal + 1 + else: + coeff = coeff_sec + base = maxAbsCodeVal + 1 + + coeffPad = np.zeros(numTuples * nTupleSize, dtype=int) + coeffPad[:len(coeff)] = coeff + + huffSec = [] + + powers = base ** np.arange(nTupleSize - 1, -1, -1) + + for i in range(numTuples): + nTuple = coeffPad[i*nTupleSize:(i+1)*nTupleSize] + huffIndex = int(np.abs(nTuple) @ powers) + + hexVal = LUT[huffIndex, 2] + huffLen = LUT[huffIndex, 1] + + bits = format(int(hexVal), f'0{int(huffLen)}b') + + if signedValues: + huffSec.append(bits) + else: + signBits = ''.join('1' if v < 0 else '0' for v in nTuple) + huffSec.append(bits + signBits) + + return ''.join(huffSec) + +def huff_LUT_code_0(): + return '' + +def huff_LUT_code_ESC(huff_LUT, coeff_sec): + LUT = huff_LUT['LUT'] + nTupleSize = huff_LUT['nTupleSize'] + maxAbsCodeVal = huff_LUT['maxAbsCodeVal'] + + numTuples = int(np.ceil(len(coeff_sec) / nTupleSize)) + base = maxAbsCodeVal + 1 + + coeffPad = np.zeros(numTuples * nTupleSize, dtype=int) + coeffPad[:len(coeff_sec)] = coeff_sec + + huffSec = [] + powers = base ** np.arange(nTupleSize - 1, -1, -1) + + for i in range(numTuples): + nTuple = coeffPad[i*nTupleSize:(i+1)*nTupleSize] + + lnTuple = nTuple.astype(float) + lnTuple[lnTuple == 0] = np.finfo(float).eps + + N4 = np.maximum(0, np.floor(np.log2(np.abs(lnTuple))).astype(int)) + N = np.maximum(0, N4 - 4) + esc = np.abs(nTuple) > 15 + + nTupleESC = nTuple.copy() + nTupleESC[esc] = np.sign(nTupleESC[esc]) * 16 + + huffIndex = int(np.abs(nTupleESC) @ powers) + + hexVal = LUT[huffIndex, 2] + huffLen = LUT[huffIndex, 1] + + bits = format(int(hexVal), f'0{int(huffLen)}b') + + escSeq = '' + for k in range(nTupleSize): + if esc[k]: + escSeq += '1' * N[k] + escSeq += '0' + escSeq += format(abs(nTuple[k]) - (1 << N4[k]), f'0{N4[k]}b') + + signBits = ''.join('1' if v < 0 else '0' for v in nTuple) + huffSec.append(bits + signBits + escSeq) + + return ''.join(huffSec) + +# ------------------ DECODE ------------------ + +def decode_huff(huff_sec, huff_LUT): + """ + Decode a Huffman-encoded stream. + + Parameters + ---------- + huff_sec : array-like of int or str + Huffman encoded stream as a sequence of 0 and 1 (string or list/array). + huff_LUT : dict + Huffman lookup table with keys: + - 'invTable': inverse table (numpy array) + - 'codebook': codebook number + - 'nTupleSize': tuple size + - 'maxAbsCodeVal': maximum absolute code value + - 'signedValues': True/False + + Returns + ------- + decCoeffs : list of int + Decoded quantized coefficients. + """ + + h = huff_LUT['invTable'] + huffCodebook = huff_LUT['codebook'] + nTupleSize = huff_LUT['nTupleSize'] + maxAbsCodeVal = huff_LUT['maxAbsCodeVal'] + signedValues = huff_LUT['signedValues'] + + # Convert string to array of ints + if isinstance(huff_sec, str): + huff_sec = np.array([int(b) for b in huff_sec]) + + eos = False + decCoeffs = [] + streamIndex = 0 + + while not eos: + wordbit = 0 + r = 0 # start at root + + # Decode Huffman word using inverse table + while True: + b = huff_sec[streamIndex + wordbit] + wordbit += 1 + rOld = r + r = h[rOld, b] + if h[r, 0] == 0 and h[r, 1] == 0: + symbolIndex = h[r, 2] - 1 # zero-based + streamIndex += wordbit + break + + # Decode n-tuple magnitudes + if signedValues: + base = 2 * maxAbsCodeVal + 1 + nTupleDec = [] + tmp = symbolIndex + for p in reversed(range(nTupleSize)): + val = tmp // (base ** p) + nTupleDec.append(val - maxAbsCodeVal) + tmp = tmp % (base ** p) + nTupleDec = np.array(nTupleDec) + else: + base = maxAbsCodeVal + 1 + nTupleDec = [] + tmp = symbolIndex + for p in reversed(range(nTupleSize)): + val = tmp // (base ** p) + nTupleDec.append(val) + tmp = tmp % (base ** p) + nTupleDec = np.array(nTupleDec) + + # Apply sign bits + nTupleSignBits = huff_sec[streamIndex:streamIndex + nTupleSize] + nTupleSign = -(np.sign(nTupleSignBits - 0.5)) + streamIndex += nTupleSize + nTupleDec = nTupleDec * nTupleSign + + # Handle escape sequences + escIndex = np.where(np.abs(nTupleDec) == 16)[0] + if huffCodebook == 11 and escIndex.size > 0: + for idx in escIndex: + N = 0 + b = huff_sec[streamIndex] + while b: + N += 1 + b = huff_sec[streamIndex + N] + # Skip the N leading '1' bits AND the terminating '0' delimiter. + # The encoder writes: '1'*N + '0' + + streamIndex += N +1 + N4 = N + 4 + escape_word = huff_sec[streamIndex:streamIndex + N4] + escape_value = 2 ** N4 + int("".join(map(str, escape_word)), 2) + nTupleDec[idx] = escape_value + # We already consumed the delimiter above; now consume only N4 bits. + streamIndex += N4 + # Apply signs again + nTupleDec[escIndex] *= nTupleSign[escIndex] + + decCoeffs.extend(nTupleDec.tolist()) + + if streamIndex >= len(huff_sec): + eos = True + + return decCoeffs + + diff --git a/source/level_2/core/aac_coder.py b/source/level_2/core/aac_coder.py index 07034e6..5987712 100644 --- a/source/level_2/core/aac_coder.py +++ b/source/level_2/core/aac_coder.py @@ -111,21 +111,6 @@ def _thresholds_from_smr( return T -def _normalize_global_gain(G: GlobalGain) -> float | FloatArray: - """ - Normalize GlobalGain to match AACChannelFrameF3["G"] type: - - long: return float - - ESH: return float64 ndarray of shape (1, 8) - """ - if np.isscalar(G): - return float(G) - - G_arr = np.asarray(G) - if G_arr.size == 1: - return float(G_arr.reshape(-1)[0]) - - return np.asarray(G_arr, dtype=np.float64) - # ----------------------------------------------------------------------------- # Public helpers (useful for level_x demo wrappers) # ----------------------------------------------------------------------------- @@ -476,10 +461,6 @@ def aac_coder_3( S_L, sfc_L, G_L = aac_quantizer(chl_f_tns, frame_type, SMR_L) S_R, sfc_R, G_R = aac_quantizer(chr_f_tns, frame_type, SMR_R) - # Normalize G types for AACSeq3 schema (float | float64 ndarray). - G_Ln = _normalize_global_gain(G_L) - G_Rn = _normalize_global_gain(G_R) - # Huffman-code ONLY the DPCM differences for b>0. # sfc[0] corresponds to alpha(0)=G and is stored separately in the frame. sfc_L_dpcm = np.asarray(sfc_L, dtype=np.int64)[1:, ...] @@ -503,7 +484,7 @@ def aac_coder_3( "chl": { "tns_coeffs": np.asarray(chl_tns_coeffs, dtype=np.float64), "T": np.asarray(T_L, dtype=np.float64), - "G": G_Ln, + "G": G_L, "sfc": sfc_L_stream, "stream": mdct_L_stream, "codebook": int(cb_L), @@ -511,7 +492,7 @@ def aac_coder_3( "chr": { "tns_coeffs": np.asarray(chr_tns_coeffs, dtype=np.float64), "T": np.asarray(T_R, dtype=np.float64), - "G": G_Rn, + "G": G_R, "sfc": sfc_R_stream, "stream": mdct_R_stream, "codebook": int(cb_R), diff --git a/source/level_2/core/aac_decoder.py b/source/level_2/core/aac_decoder.py index be705df..378294e 100644 --- a/source/level_2/core/aac_decoder.py +++ b/source/level_2/core/aac_decoder.py @@ -42,7 +42,7 @@ def _nbands(frame_type: FrameType) -> int: # Public helpers # ----------------------------------------------------------------------------- -def aac_unpack_seq_channels_to_frame_f(frame_type: FrameType, chl_f: FrameChannelF, chr_f: FrameChannelF) -> FrameF: +def aac_unpack_seq_channels(frame_type: FrameType, chl_f: FrameChannelF, chr_f: FrameChannelF) -> FrameF: """ Re-pack per-channel spectra from the Level-1 AACSeq1 schema into the stereo FrameF container expected by aac_i_filter_bank(). @@ -167,7 +167,7 @@ def aac_decoder_1( chl_f = np.asarray(fr["chl"]["frame_F"], dtype=np.float64) chr_f = np.asarray(fr["chr"]["frame_F"], dtype=np.float64) - frame_f: FrameF = aac_unpack_seq_channels_to_frame_f(frame_type, chl_f, chr_f) + frame_f: FrameF = aac_unpack_seq_channels(frame_type, chl_f, chr_f) frame_t_hat: FrameT = aac_i_filter_bank(frame_f, frame_type, win_type) # (2048, 2) start = i * hop @@ -427,7 +427,7 @@ def aac_decoder_3( X_R = aac_i_tns(Xq_R, frame_type, tns_R) # Re-pack to stereo container and inverse filterbank - frame_f = aac_unpack_seq_channels_to_frame_f(frame_type, np.asarray(X_L), np.asarray(X_R)) + frame_f = aac_unpack_seq_channels(frame_type, np.asarray(X_L), np.asarray(X_R)) frame_t_hat: FrameT = aac_i_filter_bank(frame_f, frame_type, win_type) start = i * hop diff --git a/source/level_2/core/aac_huffman.py b/source/level_2/core/aac_huffman.py new file mode 100644 index 0000000..3d2eeca --- /dev/null +++ b/source/level_2/core/aac_huffman.py @@ -0,0 +1,112 @@ +# ------------------------------------------------------------ +# AAC Coder/Decoder - Huffman wrappers (Level 3) +# +# Multimedia course at Aristotle University of +# Thessaloniki (AUTh) +# +# Author: +# Christos Choutouridis (ΑΕΜ 8997) +# cchoutou@ece.auth.gr +# +# Description: +# Thin wrappers around the provided Huffman utilities (material/huff_utils.py) +# so that the API matches the assignment text. +# +# Exposed API (assignment): +# huff_sec, huff_codebook = aac_encode_huff(coeff_sec, huff_LUT_list, force_codebook) +# dec_coeffs = aac_decode_huff(huff_sec, huff_codebook, huff_LUT_list) +# +# Notes: +# - Huffman coding operates on tuples. Therefore, decode(encode(x)) may return +# extra trailing symbols due to tuple padding. The AAC decoder knows the +# true section length from side information (band limits) and truncates. +# ------------------------------------------------------------ +from __future__ import annotations + +from typing import Any +import numpy as np + +from material.huff_utils import encode_huff, decode_huff + + +def aac_encode_huff( + coeff_sec: np.ndarray, + huff_LUT_list: list[dict[str, Any]], + force_codebook: int | None = None, +) -> tuple[str, int]: + """ + Huffman-encode a section of coefficients (MDCT symbols or scalefactors). + + Parameters + ---------- + coeff_sec : np.ndarray + Coefficient section to be encoded. Any shape is accepted; the input + is flattened and treated as a 1-D sequence of int64 symbols. + huff_LUT_list : list[dict[str, Any]] + List of Huffman Look-Up Tables (LUTs) as returned by material.load_LUT(). + Index corresponds to codebook id (typically 1..11, with 0 reserved). + force_codebook : int | None + If provided, forces the use of this Huffman codebook. In the assignment, + scalefactors are encoded with codebook 11. For MDCT coefficients, this + argument is usually omitted (auto-selection). + + Returns + ------- + tuple[str, int] + (huff_sec, huff_codebook) + - huff_sec: bitstream as a string of '0'/'1' + - huff_codebook: codebook id used by the encoder + """ + coeff_sec_arr = np.asarray(coeff_sec, dtype=np.int64).reshape(-1) + + if force_codebook is None: + # Provided utility returns (bitstream, codebook) in the auto-selection case. + huff_sec, huff_codebook = encode_huff(coeff_sec_arr, huff_LUT_list) + return str(huff_sec), int(huff_codebook) + + # Provided utility returns ONLY the bitstream when force_codebook is set. + cb = int(force_codebook) + huff_sec = encode_huff(coeff_sec_arr, huff_LUT_list, force_codebook=cb) + return str(huff_sec), cb + + +def aac_decode_huff( + huff_sec: str | np.ndarray, + huff_codebook: int, + huff_LUT: list[dict[str, Any]], +) -> np.ndarray: + """ + Huffman-decode a bitstream using the specified codebook. + + Parameters + ---------- + huff_sec : str | np.ndarray + Huffman bitstream. Typically a string of '0'/'1'. If an array is provided, + it is passed through to the provided decoder. + huff_codebook : int + Codebook id that was returned by aac_encode_huff. + Codebook 0 represents an all-zero section. + huff_LUT : list[dict[str, Any]] + Huffman LUT list as returned by material.load_LUT(). + + Returns + ------- + np.ndarray + Decoded coefficients as a 1-D np.int64 array. + + Note: Due to tuple coding, the decoded array may contain extra trailing + padding symbols. The caller must truncate to the known section length. + """ + cb = int(huff_codebook) + + if cb == 0: + # Codebook 0 represents an all-zero section. The decoded length is not + # recoverable from the bitstream alone; the caller must expand/truncate. + return np.zeros((0,), dtype=np.int64) + + if cb < 0 or cb >= len(huff_LUT): + raise ValueError(f"Invalid Huffman codebook index: {cb}") + + lut = huff_LUT[cb] + dec = decode_huff(huff_sec, lut) + return np.asarray(dec, dtype=np.int64).reshape(-1) diff --git a/source/level_2/core/aac_psycho.py b/source/level_2/core/aac_psycho.py new file mode 100644 index 0000000..8069e45 --- /dev/null +++ b/source/level_2/core/aac_psycho.py @@ -0,0 +1,441 @@ +# ------------------------------------------------------------ +# AAC Coder/Decoder - Psychoacoustic Model +# +# Multimedia course at Aristotle University of +# Thessaloniki (AUTh) +# +# Author: +# Christos Choutouridis (ΑΕΜ 8997) +# cchoutou@ece.auth.gr +# +# Description: +# Psychoacoustic model for ONE channel, based on the assignment notes (Section 2.4). +# +# Public API: +# SMR = aac_psycho(frame_T, frame_type, frame_T_prev_1, frame_T_prev_2) +# +# Output: +# - For long frames ("OLS", "LSS", "LPS"): SMR has shape (69,) +# - For short frames ("ESH"): SMR has shape (42, 8) (one column per subframe) +# +# Notes: +# - Uses Bark band tables from material/TableB219.mat: +# * B219a for long windows (69 bands, N=2048 FFT, N/2=1024 bins) +# * B219b for short windows (42 bands, N=256 FFT, N/2=128 bins) +# - Applies a Hann window in time domain before FFT magnitude/phase extraction. +# - Implements: +# spreading function -> band spreading -> tonality index -> masking thresholds -> SMR. +# ------------------------------------------------------------ +from __future__ import annotations + +import numpy as np + +from core.aac_utils import band_limits, get_table +from core.aac_configuration import NMT_DB, TMN_DB +from core.aac_types import * + +# ----------------------------------------------------------------------------- +# Spreading function +# ----------------------------------------------------------------------------- + +def _spreading_matrix(bval: BandValueArray) -> FloatArray: + """ + Compute the spreading function matrix between psychoacoustic bands. + + The spreading function describes how energy in one critical band masks + nearby bands. The formula follows the assignment pseudo-code. + + Parameters + ---------- + bval : BandValueArray + Bark value per band, shape (B,). + + Returns + ------- + FloatArray + Spreading matrix S of shape (B, B), where: + S[bb, b] quantifies the contribution of band bb masking band b. + """ + bval = np.asarray(bval, dtype=np.float64).reshape(-1) + B = int(bval.shape[0]) + + spread = np.zeros((B, B), dtype=np.float64) + + for b in range(B): + for bb in range(B): + # tmpx depends on direction (asymmetric spreading) + if bb >= b: + tmpx = 3.0 * (bval[bb] - bval[b]) + else: + tmpx = 1.5 * (bval[bb] - bval[b]) + + # tmpz uses the "min(..., 0)" nonlinearity exactly as in the notes + tmpz = 8.0 * min((tmpx - 0.5) ** 2 - 2.0 * (tmpx - 0.5), 0.0) + tmpy = 15.811389 + 7.5 * (tmpx + 0.474) - 17.5 * np.sqrt(1.0 + (tmpx + 0.474) ** 2) + + # Clamp very small values (below -100 dB) to 0 contribution + if tmpy < -100.0: + spread[bb, b] = 0.0 + else: + spread[bb, b] = 10.0 ** ((tmpz + tmpy) / 10.0) + + return spread + + +# ----------------------------------------------------------------------------- +# Windowing + FFT feature extraction +# ----------------------------------------------------------------------------- + +def _hann_window(N: int) -> FloatArray: + """ + Hann window as specified in the notes: + w[n] = 0.5 - 0.5*cos(2*pi*(n + 0.5)/N) + + Parameters + ---------- + N : int + Window length. + + Returns + ------- + FloatArray + 1-D array of shape (N,), dtype float64. + """ + n = np.arange(N, dtype=np.float64) + return 0.5 - 0.5 * np.cos((2.0 * np.pi / N) * (n + 0.5)) + + +def _r_phi_from_time(x: FrameChannelT, N: int) -> tuple[FloatArray, FloatArray]: + """ + Compute FFT magnitude r(w) and phase phi(w) for bins w = 0 .. N/2-1. + + Processing: + 1) Apply Hann window in time domain. + 2) Compute N-point FFT. + 3) Keep only the positive-frequency bins [0 .. N/2-1]. + + Parameters + ---------- + x : FrameChannelT + Time-domain samples, shape (N,). + N : int + FFT size (2048 or 256). + + Returns + ------- + r : FloatArray + Magnitude spectrum for bins 0 .. N/2-1, shape (N/2,). + phi : FloatArray + Phase spectrum for bins 0 .. N/2-1, shape (N/2,). + """ + x = np.asarray(x, dtype=np.float64).reshape(-1) + if x.shape[0] != N: + raise ValueError(f"Expected time vector of length {N}, got {x.shape[0]}.") + + w = _hann_window(N) + X = np.fft.fft(x * w, n=N) + + Xp = X[: N // 2] + r = np.abs(Xp).astype(np.float64, copy=False) + phi = np.angle(Xp).astype(np.float64, copy=False) + return r, phi + + +def _predictability( + r: FloatArray, + phi: FloatArray, + r_m1: FloatArray, + phi_m1: FloatArray, + r_m2: FloatArray, + phi_m2: FloatArray, +) -> FloatArray: + """ + Compute predictability c(w) per spectral bin. + + The notes define: + r_pred(w) = 2*r_{-1}(w) - r_{-2}(w) + phi_pred(w) = 2*phi_{-1}(w) - phi_{-2}(w) + + c(w) = |X(w) - X_pred(w)| / (r(w) + |r_pred(w)|) + + where X(w) is represented in polar form using r(w), phi(w). + + Parameters + ---------- + r, phi : FloatArray + Current magnitude and phase, shape (N/2,). + r_m1, phi_m1 : FloatArray + Previous magnitude and phase, shape (N/2,). + r_m2, phi_m2 : FloatArray + Pre-previous magnitude and phase, shape (N/2,). + + Returns + ------- + FloatArray + Predictability c(w), shape (N/2,). + """ + r_pred = 2.0 * r_m1 - r_m2 + phi_pred = 2.0 * phi_m1 - phi_m2 + + num = np.sqrt( + (r * np.cos(phi) - r_pred * np.cos(phi_pred)) ** 2 + + (r * np.sin(phi) - r_pred * np.sin(phi_pred)) ** 2 + ) + den = r + np.abs(r_pred) + 1e-12 # avoid division-by-zero without altering behavior + return (num / den).astype(np.float64, copy=False) + + +# ----------------------------------------------------------------------------- +# Band-domain aggregation +# ----------------------------------------------------------------------------- + +def _band_energy_and_pred( + r: FloatArray, + c: FloatArray, + wlow: BandIndexArray, + whigh: BandIndexArray, +) -> tuple[FloatArray, FloatArray]: + """ + Aggregate spectral bin quantities into psychoacoustic bands. + + Definitions (notes): + e(b) = sum_{w=wlow(b)..whigh(b)} r(w)^2 + c_num(b) = sum_{w=wlow(b)..whigh(b)} c(w) * r(w)^2 + + The band predictability c(b) is later computed after spreading as: + cb(b) = ct(b) / ecb(b) + + Parameters + ---------- + r : FloatArray + Magnitude spectrum, shape (N/2,). + c : FloatArray + Predictability per bin, shape (N/2,). + wlow, whigh : BandIndexArray + Band limits (inclusive indices), shape (B,). + + Returns + ------- + e_b : FloatArray + Band energies e(b), shape (B,). + c_num_b : FloatArray + Weighted predictability numerators c_num(b), shape (B,). + """ + r2 = (r * r).astype(np.float64, copy=False) + + B = int(wlow.shape[0]) + e_b = np.zeros(B, dtype=np.float64) + c_num_b = np.zeros(B, dtype=np.float64) + + for b in range(B): + a = int(wlow[b]) + z = int(whigh[b]) + + seg_r2 = r2[a : z + 1] + e_b[b] = float(np.sum(seg_r2)) + c_num_b[b] = float(np.sum(c[a : z + 1] * seg_r2)) + + return e_b, c_num_b + + +def _psycho_window( + time_x: FrameChannelT, + prev1_x: FrameChannelT, + prev2_x: FrameChannelT, + *, + N: int, + table: BarkTable, +) -> FloatArray: + """ + Compute SMR for one FFT analysis window (N=2048 for long, N=256 for short). + + This implements the pipeline described in the notes: + - FFT magnitude/phase + - predictability per bin + - band energies and predictability + - band spreading + - tonality index tb(b) + - masking threshold (noise + threshold in quiet) + - SMR(b) = e(b) / np(b) + + Parameters + ---------- + time_x : FrameChannelT + Current time-domain samples, shape (N,). + prev1_x : FrameChannelT + Previous time-domain samples, shape (N,). + prev2_x : FrameChannelT + Pre-previous time-domain samples, shape (N,). + N : int + FFT size. + table : BarkTable + Psychoacoustic band table (B219a or B219b). + + Returns + ------- + FloatArray + SMR per band, shape (B,). + """ + wlow, whigh, bval, qthr_db = band_limits(table) + spread = _spreading_matrix(bval) + + # FFT features for current and history windows + r, phi = _r_phi_from_time(time_x, N) + r_m1, phi_m1 = _r_phi_from_time(prev1_x, N) + r_m2, phi_m2 = _r_phi_from_time(prev2_x, N) + + # Predictability per bin + c_w = _predictability(r, phi, r_m1, phi_m1, r_m2, phi_m2) + + # Aggregate into psycho bands + e_b, c_num_b = _band_energy_and_pred(r, c_w, wlow, whigh) + + # Spread energies and predictability across bands: + # ecb(b) = sum_bb e(bb) * S(bb, b) + # ct(b) = sum_bb c_num(bb) * S(bb, b) + ecb = spread.T @ e_b + ct = spread.T @ c_num_b + + # Band predictability after spreading: cb(b) = ct(b) / ecb(b) + cb = ct / (ecb + 1e-12) + + # Normalized energy term: + # en(b) = ecb(b) / sum_bb S(bb, b) + spread_colsum = np.sum(spread, axis=0) + en = ecb / (spread_colsum + 1e-12) + + # Tonality index (clamped to [0, 1]) + tb = -0.299 - 0.43 * np.log(np.maximum(cb, 1e-12)) + tb = np.clip(tb, 0.0, 1.0) + + # Required SNR per band (dB): interpolate between TMN and NMT + snr_b = tb * TMN_DB + (1.0 - tb) * NMT_DB + bc = 10.0 ** (-snr_b / 10.0) + + # Noise masking threshold estimate (power domain) + nb = en * bc + + # Threshold in quiet (convert from dB to power domain): + # qthr_power = eps * (N/2) * 10^(qthr_db/10) + qthr_power = np.finfo('float').eps * (N / 2.0) * (10.0 ** (qthr_db / 10.0)) + + # Final masking threshold per band: + # np(b) = max(nb(b), qthr(b)) + npart = np.maximum(nb, qthr_power) + + # Signal-to-mask ratio: + # SMR(b) = e(b) / np(b) + smr = e_b / (npart + 1e-12) + return smr.astype(np.float64, copy=False) + + +# ----------------------------------------------------------------------------- +# ESH window slicing (match filterbank conventions) +# ----------------------------------------------------------------------------- + +def _esh_subframes(x_2048: FrameChannelT) -> list[FrameChannelT]: + """ + Extract the 8 overlapping 256-sample short windows used by AAC ESH. + + The project convention (matching the filterbank) is: + start_j = 448 + 128*j, for j = 0..7 + subframe_j = x[start_j : start_j + 256] + + This selects the central 1152-sample region [448, 1600) and produces + 8 windows with 50% overlap. + + Parameters + ---------- + x_2048 : FrameChannelT + Time-domain channel frame, shape (2048,). + + Returns + ------- + list[FrameChannelT] + List of 8 subframes, each of shape (256,). + """ + x_2048 = np.asarray(x_2048, dtype=np.float64).reshape(-1) + if x_2048.shape[0] != 2048: + raise ValueError("ESH requires 2048-sample input frames.") + + subs: list[FrameChannelT] = [] + for j in range(8): + start = 448 + 128 * j + subs.append(x_2048[start : start + 256]) + return subs + + +# ----------------------------------------------------------------------------- +# Public API +# ----------------------------------------------------------------------------- + +def aac_psycho( + frame_T: FrameChannelT, + frame_type: FrameType, + frame_T_prev_1: FrameChannelT, + frame_T_prev_2: FrameChannelT, +) -> FloatArray: + """ + Psychoacoustic model for ONE channel. + + Parameters + ---------- + frame_T : FrameChannelT + Current time-domain channel frame, shape (2048,). + For "ESH", the 8 short windows are derived internally. + frame_type : FrameType + AAC frame type ("OLS", "LSS", "ESH", "LPS"). + frame_T_prev_1 : FrameChannelT + Previous time-domain channel frame, shape (2048,). + frame_T_prev_2 : FrameChannelT + Pre-previous time-domain channel frame, shape (2048,). + + Returns + ------- + FloatArray + Signal-to-Mask Ratio (SMR), per psychoacoustic band. + - If frame_type == "ESH": shape (42, 8) + - Else: shape (69,) + """ + frame_T = np.asarray(frame_T, dtype=np.float64).reshape(-1) + frame_T_prev_1 = np.asarray(frame_T_prev_1, dtype=np.float64).reshape(-1) + frame_T_prev_2 = np.asarray(frame_T_prev_2, dtype=np.float64).reshape(-1) + + if frame_T.shape[0] != 2048 or frame_T_prev_1.shape[0] != 2048 or frame_T_prev_2.shape[0] != 2048: + raise ValueError("aac_psycho expects 2048-sample frames for current/prev1/prev2.") + + table, N = get_table(frame_type) + + # Long frame types: compute one SMR vector (69 bands) + if frame_type != "ESH": + return _psycho_window(frame_T, frame_T_prev_1, frame_T_prev_2, N=N, table=table) + + # ESH: compute 8 SMR vectors (42 bands each), one per short subframe. + # + # The notes use short-window history for predictability: + # - For j=0: use previous frame's subframes (7, 6) + # - For j=1: use current subframe 0 and previous frame's subframe 7 + # - For j>=2: use current subframes (j-1, j-2) + # + # This matches the "within-frame history" convention commonly used in + # simplified psycho models for ESH. + cur_subs = _esh_subframes(frame_T) + prev1_subs = _esh_subframes(frame_T_prev_1) + + B = int(table.shape[0]) # expected 42 + smr_out = np.zeros((B, 8), dtype=np.float64) + + for j in range(8): + if j == 0: + x_m1 = prev1_subs[7] + x_m2 = prev1_subs[6] + elif j == 1: + x_m1 = cur_subs[0] + x_m2 = prev1_subs[7] + else: + x_m1 = cur_subs[j - 1] + x_m2 = cur_subs[j - 2] + + smr_out[:, j] = _psycho_window(cur_subs[j], x_m1, x_m2, N=256, table=table) + + return smr_out diff --git a/source/level_2/core/aac_quantizer.py b/source/level_2/core/aac_quantizer.py new file mode 100644 index 0000000..f2004b0 --- /dev/null +++ b/source/level_2/core/aac_quantizer.py @@ -0,0 +1,600 @@ +# ------------------------------------------------------------ +# AAC Coder/Decoder - Quantizer / iQuantizer (Level 3) +# +# Multimedia course at Aristotle University of +# Thessaloniki (AUTh) +# +# Author: +# Christos Choutouridis (ΑΕΜ 8997) +# cchoutou@ece.auth.gr +# +# Description: +# Implements AAC quantizer and inverse quantizer for one channel. +# Based on assignment section 2.6 (Eq. 12-15). +# +# Notes: +# - Bit reservoir is not implemented (assignment simplification). +# - Scalefactor bands are assumed equal to psychoacoustic bands +# (Table B.2.1.9a / B.2.1.9b from TableB219.mat). +# ------------------------------------------------------------ +from __future__ import annotations + +import numpy as np + +from core.aac_utils import get_table, band_limits +from core.aac_types import * + +# ----------------------------------------------------------------------------- +# Constants (assignment) +# ----------------------------------------------------------------------------- +MAGIC_NUMBER: float = 0.4054 +EPS: float = 1e-12 +MAX_SF_DELTA:int = 60 + + +# ----------------------------------------------------------------------------- +# Helpers: ESH packing/unpacking (128x8 <-> 1024x1) +# ----------------------------------------------------------------------------- +def _esh_pack(x_128x8: FloatArray) -> FloatArray: + """ + Pack ESH coefficients (128 x 8) into a single long vector (1024 x 1). + + Packing order: + Columns are concatenated in subframe order (0..7), column-major. + + Parameters + ---------- + x_128x8 : FloatArray + ESH coefficients, shape (128, 8). + + Returns + ------- + FloatArray + Packed coefficients, shape (1024, 1). + """ + x_128x8 = np.asarray(x_128x8, dtype=np.float64) + if x_128x8.shape != (128, 8): + raise ValueError("ESH pack expects shape (128, 8).") + return x_128x8.reshape(1024, 1, order="F") + + +def _esh_unpack(x_1024x1: FloatArray) -> FloatArray: + """ + Unpack a packed ESH vector (1024 elements) back to shape (128, 8). + + Parameters + ---------- + x_1024x1 : FloatArray + Packed ESH vector, shape (1024,) or (1024, 1) after flattening. + + Returns + ------- + FloatArray + Unpacked ESH coefficients, shape (128, 8). + """ + x_1024x1 = np.asarray(x_1024x1, dtype=np.float64).reshape(-1) + if x_1024x1.shape[0] != 1024: + raise ValueError("ESH unpack expects 1024 elements.") + return x_1024x1.reshape(128, 8, order="F") + + +# ----------------------------------------------------------------------------- +# Core quantizer formulas (Eq. 12, Eq. 13) +# ----------------------------------------------------------------------------- +def _quantize_symbol(x: FloatArray, alpha: float) -> QuantizedSymbols: + """ + Quantize MDCT coefficients to integer symbols S(k). + + Implements Eq. (12): + S(k) = sgn(X(k)) * int( (|X(k)| * 2^(-alpha/4))^(3/4) + MAGIC_NUMBER ) + + Parameters + ---------- + x : FloatArray + MDCT coefficients for a contiguous set of spectral lines. + Shape: (N,) + alpha : float + Scalefactor gain for the corresponding scalefactor band. + + Returns + ------- + QuantizedSymbols + Quantized symbols S(k) as int64, shape (N,). + """ + x = np.asarray(x, dtype=np.float64) + + scale = 2.0 ** (-0.25 * float(alpha)) + ax = np.abs(x) * scale + + y = np.power(ax, 0.75, dtype=np.float64) + + # "int" in the assignment corresponds to truncation. + q = np.floor(y + MAGIC_NUMBER).astype(np.int64) + return (np.sign(x).astype(np.int64) * q).astype(np.int64) + + +def _dequantize_symbol(S: QuantizedSymbols, alpha: float) -> FloatArray: + """ + Inverse quantizer (dequantization of symbols). + + Implements Eq. (13): + Xhat(k) = sgn(S(k)) * |S(k)|^(4/3) * 2^(alpha/4) + + Parameters + ---------- + S : QuantizedSymbols + Quantized symbols S(k), int64, shape (N,). + alpha : float + Scalefactor gain for the corresponding scalefactor band. + + Returns + ------- + FloatArray + Reconstructed MDCT coefficients Xhat(k), float64, shape (N,). + """ + S = np.asarray(S, dtype=np.int64) + + scale = 2.0 ** (0.25 * float(alpha)) + aS = np.abs(S).astype(np.float64) + y = np.power(aS, 4.0 / 3.0, dtype=np.float64) + + return (np.sign(S).astype(np.float64) * y * scale).astype(np.float64) + + +# ----------------------------------------------------------------------------- +# Alpha initialization (Eq. 14) +# ----------------------------------------------------------------------------- +def _initial_alpha_hat(X: "FloatArray", MQ: int = 8191) -> int: + """ + Compute the initial scalefactor estimate alpha_hat for a frame. + + The assignment proposes the following first approximation (Equation 14): + + alpha_hat = (16/3) * log2( max_k(|X(k)|)^(3/4) / MQ ) + + where max_k runs over all MDCT coefficients of the frame (not per band), + and MQ is the maximum quantization level parameter (2*MQ + 1 levels). + + Parameters + ---------- + X : FloatArray + MDCT coefficients of one frame (or one ESH subframe), shape (N,). + MQ : int + Quantizer parameter (default 8191, as per assignment). + + Returns + ------- + int + Integer alpha_hat (rounded to nearest integer). + """ + x_max = float(np.max(np.abs(X))) + if x_max <= 0.0: + return 0 + + alpha_hat = (16.0 / 3.0) * np.log2((x_max ** (3.0 / 4.0)) / float(MQ)) + return int(np.round(alpha_hat)) + + +# ----------------------------------------------------------------------------- +# Band utilities +# ----------------------------------------------------------------------------- +def _band_slices(frame_type: FrameType) -> list[tuple[int, int]]: + """ + Return scalefactor band ranges [wlow, whigh] (inclusive) for the given frame type. + + These are derived from the psychoacoustic tables (TableB219), + and map directly to MDCT indices: + - long: 0..1023 + - short (ESH subframe): 0..127 + + Parameters + ---------- + frame_type : FrameType + Frame type ("OLS", "LSS", "ESH", "LPS"). + + Returns + ------- + list[tuple[int, int]] + List of (lo, hi) inclusive index pairs for each band. + """ + table, _Nfft = get_table(frame_type) + wlow, whigh, _bval, _qthr_db = band_limits(table) + + bands: list[tuple[int, int]] = [] + for lo, hi in zip(wlow, whigh): + bands.append((int(lo), int(hi))) + return bands + + +def _band_energy(x: FloatArray, lo: int, hi: int) -> float: + """ + Compute energy of a spectral segment x[lo:hi+1]. + + Parameters + ---------- + x : FloatArray + MDCT coefficient vector. + lo, hi : int + Inclusive index range. + + Returns + ------- + float + Sum of squares (energy) within the band. + """ + sec = x[lo : hi + 1] + return float(np.sum(sec * sec)) + + +def _psychoacoustic_threshold( + X: FloatArray, + SMR_col: FloatArray, + bands: list[tuple[int, int]], +) -> FloatArray: + """ + Compute psychoacoustic thresholds T(b) per band. + + Uses: + P(b) = sum_{k in band} X(k)^2 + T(b) = P(b) / SMR(b) + + Parameters + ---------- + X : FloatArray + MDCT coefficients for a frame (long) or one ESH subframe (short). + SMR_col : FloatArray + SMR values for this frame/subframe, shape (NB,). + bands : list[tuple[int, int]] + Band index ranges. + + Returns + ------- + FloatArray + Threshold vector T(b), shape (NB,). + """ + nb = len(bands) + T = np.zeros((nb,), dtype=np.float64) + + for b, (lo, hi) in enumerate(bands): + P = _band_energy(X, lo, hi) + smr = float(SMR_col[b]) + if smr <= EPS: + T[b] = 0.0 + else: + T[b] = P / smr + + return T + + +# ----------------------------------------------------------------------------- +# Alpha selection per band + neighbor-difference constraint +# ----------------------------------------------------------------------------- +def _best_alpha_for_band( + X: "FloatArray", lo: int, hi: int, T_b: float, + alpha_hat: int, alpha_prev: int, alpha_min: int, alpha_max: int, +) -> int: + """ + Determine the band-wise scalefactor alpha(b) following the assignment. + + Procedure: + - Start from a frame-wise initial estimate alpha_hat. + - Iteratively increase alpha(b) by 1 as long as the quantization error power + stays below the psychoacoustic threshold T(b): P_e(b) = sum_{k in band} ( X(k) - Xhat(k) )^2 + + - Stop increasing alpha(b) if the neighbor constraint would be violated: |alpha(b) - alpha(b-1)| <= 60 + When processing bands sequentially (low -> high), this becomes: alpha(b) <= alpha_prev + 60 + + Notes: + - This function does not decrease alpha if the initial value already violates + the threshold; the assignment only specifies iterative increase. + + Parameters + ---------- + X : FloatArray + Full MDCT vector of the current (sub)frame, shape (N,). + lo, hi : int + Band index bounds (inclusive), defining the band slice. + T_b : float + Threshold T(b) for this band. + alpha_hat : int + Initial frame-wise estimate (Equation 14). + alpha_prev : int + Previously selected alpha for band b-1 (neighbor constraint reference). + alpha_min, alpha_max : int + Safeguard bounds for alpha. + + Returns + ------- + int + Selected integer alpha(b). + """ + if T_b <= 0.0: + return int(alpha_hat) + Xsec = X[lo : hi + 1] + + # Neighbor constraint (sequential processing): alpha(b) <= alpha_prev + 60 + alpha_limit = min(int(alpha_max), int(alpha_prev) + MAX_SF_DELTA) + + # Start from alpha_hat, clamped to feasible range + alpha = int(alpha_hat) + alpha = max(int(alpha_min), min(alpha, int(alpha_limit))) + + # Evaluate at current alpha + Ssec = _quantize_symbol(Xsec, alpha) + Xhat = _dequantize_symbol(Ssec, alpha) + Pe = float(np.sum((Xsec - Xhat) ** 2)) + + # If already above threshold, return current alpha (no decrease step specified) + if Pe > T_b: + return alpha + + # Increase alpha while still under threshold and within constraints + while True: + alpha_next = alpha + 1 + if alpha_next > alpha_limit: + break + Ssec = _quantize_symbol(Xsec, alpha_next) + Xhat = _dequantize_symbol(Ssec, alpha_next) + Pe_next = float(np.sum((Xsec - Xhat) ** 2)) + + if Pe_next > T_b: + break + alpha = alpha_next + + return alpha + + +# ----------------------------------------------------------------------------- +# Public API +# ----------------------------------------------------------------------------- +def aac_quantizer( + frame_F: FrameChannelF, + frame_type: FrameType, + SMR: FloatArray, +) -> tuple[QuantizedSymbols, ScaleFactors, GlobalGain]: + """ + AAC quantizer for one channel (Level 3). + + Quantizes MDCT coefficients (after TNS) using band-wise scalefactors derived + from psychoacoustic thresholds computed via SMR. + + The implementation follows the assignment procedure: + - Compute an initial frame-wise alpha_hat using Equation (14), based on the + maximum MDCT coefficient magnitude of the (sub)frame. + - For each band b, increase alpha(b) by 1 while the quantization error power + P_e(b) stays below the threshold T(b). + - Enforce the neighbor constraint |alpha(b) - alpha(b-1)| <= 60 during the + band-by-band search (no post-processing needed). + + Parameters + ---------- + frame_F : FrameChannelF + MDCT coefficients after TNS, one channel. + Shapes: + - Long frames: (1024,) or (1024, 1) + - ESH: (128, 8) + frame_type : FrameType + AAC frame type ("OLS", "LSS", "ESH", "LPS"). + SMR : FloatArray + Signal-to-Mask Ratio per band. + Shapes: + - Long: (NB,) or (NB, 1) + - ESH: (NB, 8) + + Returns + ------- + S : QuantizedSymbols + Quantized symbols S(k), packed as shape (1024, 1) for all frame types. + For ESH, the 8 subframes are packed in column-major subframe layout. + sfc : ScaleFactors + DPCM-coded scalefactors: + sfc(0) = alpha(0) = G + sfc(b) = alpha(b) - alpha(b-1), for b > 0 + Shapes: + - Long: (NB, 1) + - ESH: (NB, 8) + G : GlobalGain + Global gain G = alpha(0). + - Long: scalar float + - ESH: array shape (1, 8), dtype float64 + """ + bands = _band_slices(frame_type) + NB = len(bands) + + X = np.asarray(frame_F, dtype=np.float64) + SMR = np.asarray(SMR, dtype=np.float64) + + # ------------------------------------------------------------------------- + # ESH: 8 short subframes, each of length 128 + # ------------------------------------------------------------------------- + if frame_type == "ESH": + if X.shape != (128, 8): + raise ValueError("For ESH, frame_F must have shape (128, 8).") + if SMR.shape != (NB, 8): + raise ValueError(f"For ESH, SMR must have shape ({NB}, 8).") + + S_out: QuantizedSymbols = np.zeros((1024, 1), dtype=np.int64) + sfc: ScaleFactors = np.zeros((NB, 8), dtype=np.int64) + G_arr = np.zeros((1, 8), dtype=np.float64) + + # Packed output view: (128, 8) with column-major layout + S_pack = S_out[:, 0].reshape(128, 8, order="F") + + for j in range(8): + Xj = X[:, j].reshape(128) + SMRj = SMR[:, j].reshape(NB) + + # Compute psychoacoustic threshold T(b) for this subframe + T = _psychoacoustic_threshold(Xj, SMRj, bands) + + # Frame-wise initial estimate alpha_hat (Equation 14) + alpha_hat = _initial_alpha_hat(Xj) + + # Band-wise scalefactors alpha(b) + alpha = np.zeros((NB,), dtype=np.int64) + alpha_prev = int(alpha_hat) + + for b, (lo, hi) in enumerate(bands): + alpha_b = _best_alpha_for_band( + X=Xj, + lo=lo, + hi=hi, + T_b=float(T[b]), + alpha_hat=int(alpha_hat), + alpha_prev=int(alpha_prev), + alpha_min=-4096, + alpha_max=4096, + ) + alpha[b] = int(alpha_b) + alpha_prev = int(alpha_b) + + # DPCM-coded scalefactors + G_arr[0, j] = float(alpha[0]) + sfc[0, j] = int(alpha[0]) + for b in range(1, NB): + sfc[b, j] = int(alpha[b] - alpha[b - 1]) + + # Quantize MDCT coefficients band-by-band + Sj = np.zeros((128,), dtype=np.int64) + for b, (lo, hi) in enumerate(bands): + Sj[lo : hi + 1] = _quantize_symbol(Xj[lo : hi + 1], float(alpha[b])) + + # Store subframe in packed output + S_pack[:, j] = Sj + + return S_out, sfc, G_arr + + # ------------------------------------------------------------------------- + # Long frames: OLS / LSS / LPS, length 1024 + # ------------------------------------------------------------------------- + if X.shape == (1024,): + Xv = X + elif X.shape == (1024, 1): + Xv = X[:, 0] + else: + raise ValueError("For non-ESH, frame_F must have shape (1024,) or (1024, 1).") + + if SMR.shape == (NB,): + SMRv = SMR + elif SMR.shape == (NB, 1): + SMRv = SMR[:, 0] + else: + raise ValueError(f"For non-ESH, SMR must have shape ({NB},) or ({NB}, 1).") + + # Compute psychoacoustic threshold T(b) for the long frame + T = _psychoacoustic_threshold(Xv, SMRv, bands) + + # Frame-wise initial estimate alpha_hat (Equation 14) + alpha_hat = _initial_alpha_hat(Xv) + + # Band-wise scalefactors alpha(b) + alpha = np.zeros((NB,), dtype=np.int64) + alpha_prev = int(alpha_hat) + + for b, (lo, hi) in enumerate(bands): + alpha_b = _best_alpha_for_band( + X=Xv, + lo=lo, + hi=hi, + T_b=float(T[b]), + alpha_hat=int(alpha_hat), + alpha_prev=int(alpha_prev), + alpha_min=-4096, + alpha_max=4096, + ) + alpha[b] = int(alpha_b) + alpha_prev = int(alpha_b) + + # DPCM-coded scalefactors + sfc_out: ScaleFactors = np.zeros((NB, 1), dtype=np.int64) + sfc_out[0, 0] = int(alpha[0]) + for b in range(1, NB): + sfc_out[b, 0] = int(alpha[b] - alpha[b - 1]) + + G: float = float(alpha[0]) + + # Quantize MDCT coefficients band-by-band + S_vec = np.zeros((1024,), dtype=np.int64) + for b, (lo, hi) in enumerate(bands): + S_vec[lo : hi + 1] = _quantize_symbol(Xv[lo : hi + 1], float(alpha[b])) + + return S_vec.reshape(1024, 1), sfc_out, G + + +def aac_i_quantizer( + S: QuantizedSymbols, + sfc: ScaleFactors, + G: GlobalGain, + frame_type: FrameType, +) -> FrameChannelF: + """ + Inverse quantizer (iQuantizer) for one channel. + + Reconstructs MDCT coefficients from quantized symbols and DPCM scalefactors. + + Parameters + ---------- + S : QuantizedSymbols + Quantized symbols, shape (1024, 1) (or any array with 1024 elements). + sfc : ScaleFactors + DPCM-coded scalefactors. + Shapes: + - Long: (NB, 1) + - ESH: (NB, 8) + G : GlobalGain + Global gain (not strictly required if sfc includes sfc(0)=alpha(0)). + Present for API compatibility with the assignment. + frame_type : FrameType + AAC frame type. + + Returns + ------- + FrameChannelF + Reconstructed MDCT coefficients: + - ESH: (128, 8) + - Long: (1024, 1) + """ + bands = _band_slices(frame_type) + NB = len(bands) + + S_flat = np.asarray(S, dtype=np.int64).reshape(-1) + if S_flat.shape[0] != 1024: + raise ValueError("S must contain 1024 symbols.") + + if frame_type == "ESH": + sfc = np.asarray(sfc, dtype=np.int64) + if sfc.shape != (NB, 8): + raise ValueError(f"For ESH, sfc must have shape ({NB}, 8).") + + S_128x8 = _esh_unpack(S_flat) + + Xrec = np.zeros((128, 8), dtype=np.float64) + + for j in range(8): + alpha = np.zeros((NB,), dtype=np.int64) + alpha[0] = int(sfc[0, j]) + for b in range(1, NB): + alpha[b] = int(alpha[b - 1] + sfc[b, j]) + + Xj = np.zeros((128,), dtype=np.float64) + for b, (lo, hi) in enumerate(bands): + Xj[lo : hi + 1] = _dequantize_symbol(S_128x8[lo : hi + 1, j].astype(np.int64), float(alpha[b])) + + Xrec[:, j] = Xj + + return Xrec + + sfc = np.asarray(sfc, dtype=np.int64) + if sfc.shape != (NB, 1): + raise ValueError(f"For non-ESH, sfc must have shape ({NB}, 1).") + + alpha = np.zeros((NB,), dtype=np.int64) + alpha[0] = int(sfc[0, 0]) + for b in range(1, NB): + alpha[b] = int(alpha[b - 1] + sfc[b, 0]) + + Xrec = np.zeros((1024,), dtype=np.float64) + for b, (lo, hi) in enumerate(bands): + Xrec[lo : hi + 1] = _dequantize_symbol(S_flat[lo : hi + 1], float(alpha[b])) + + return Xrec.reshape(1024, 1) diff --git a/source/level_2/core/aac_tns.py b/source/level_2/core/aac_tns.py index 06227b1..4ba78ac 100644 --- a/source/level_2/core/aac_tns.py +++ b/source/level_2/core/aac_tns.py @@ -39,7 +39,7 @@ from core.aac_types import * # ----------------------------------------------------------------------------- -def _band_ranges_for_kcount(k_count: int) -> BandRanges: +def _band_ranges(k_count: int) -> BandRanges: """ Return Bark band index ranges [start, end] (inclusive) for the given MDCT line count. @@ -66,7 +66,7 @@ def _band_ranges_for_kcount(k_count: int) -> BandRanges: start = tbl[:, 1].astype(int) end = tbl[:, 2].astype(int) - ranges: list[tuple[int, int]] = [(int(s), int(e)) for s, e in zip(start, end)] + ranges: BandRanges = [(int(s), int(e)) for s, e in zip(start, end)] for s, e in ranges: if s < 0 or e < s or e >= k_count: @@ -117,7 +117,7 @@ def _compute_sw(x: MdctCoeffs) -> MdctCoeffs: x = np.asarray(x, dtype=np.float64).reshape(-1) k_count = int(x.shape[0]) - bands = _band_ranges_for_kcount(k_count) + bands = _band_ranges(k_count) sw = np.zeros(k_count, dtype=np.float64) for s, e in bands: @@ -347,7 +347,7 @@ def _apply_itns_iir(y: MdctCoeffs, a_q: MdctCoeffs) -> MdctCoeffs: return x_hat -def _tns_one_vector(x: MdctCoeffs) -> tuple[MdctCoeffs, MdctCoeffs]: +def _tns_vector(x: MdctCoeffs) -> tuple[MdctCoeffs, MdctCoeffs]: """ TNS for a single MDCT vector (one long frame or one short subframe). @@ -430,7 +430,7 @@ def aac_tns(frame_F_in: FrameChannelF, frame_type: FrameType) -> Tuple[FrameChan a_out = np.empty((PRED_ORDER, 8), dtype=np.float64) for j in range(8): - y[:, j], a_out[:, j] = _tns_one_vector(x[:, j]) + y[:, j], a_out[:, j] = _tns_vector(x[:, j]) return y, a_out @@ -443,7 +443,7 @@ def aac_tns(frame_F_in: FrameChannelF, frame_type: FrameType) -> Tuple[FrameChan else: raise ValueError('For non-ESH, frame_F_in must have shape (1024,) or (1024, 1).') - y_vec, a_q = _tns_one_vector(x_vec) + y_vec, a_q = _tns_vector(x_vec) if out_shape == (1024,): y_out = y_vec diff --git a/source/level_2/core/aac_utils.py b/source/level_2/core/aac_utils.py index 0e18ed1..26cdbdf 100644 --- a/source/level_2/core/aac_utils.py +++ b/source/level_2/core/aac_utils.py @@ -163,6 +163,42 @@ def snr_db(x_ref: StereoSignal, x_hat: StereoSignal) -> float: return float(10.0 * np.log10(ps / pn)) +def estimate_lag_mono(x_ref: TimeSignal, x_hat: TimeSignal, max_lag=4096): + """ + Estimate time lag between two mono signals. + Returns lag (positive means x_hat delayed). + """ + n = min(len(x_ref), len(x_hat)) + x_ref = x_ref[:n] + x_hat = x_hat[:n] + + corr = np.correlate(x_ref, x_hat, mode='full') + lags = np.arange(-n + 1, n) + + center = n - 1 + lo = max(0, center - max_lag) + hi = min(len(corr), center + max_lag + 1) + + best = lo + int(np.argmax(corr[lo:hi])) + return int(lags[best]) + + +def match_gain(x_ref: StereoSignal, x_hat: StereoSignal) -> float: + """ + Least-squares gain g that best maps x_hat -> x_ref. + """ + n = min(x_ref.shape[0], x_hat.shape[0]) + c = min(x_ref.shape[1], x_hat.shape[1]) + + r = x_ref[:n, :c].reshape(-1).astype(np.float64) + h = x_hat[:n, :c].reshape(-1).astype(np.float64) + + denom = float(np.dot(h, h)) + if denom <= 0.0: + return 1.0 + return float(np.dot(r, h) / denom) + + # ----------------------------------------------------------------------------- # Psychoacoustic band tables (TableB219.mat) # ----------------------------------------------------------------------------- diff --git a/source/level_2/material/huff_utils.py b/source/level_2/material/huff_utils.py new file mode 100644 index 0000000..8cdd279 --- /dev/null +++ b/source/level_2/material/huff_utils.py @@ -0,0 +1,403 @@ +import numpy as np +import scipy.io as sio +import os + +# ------------------ LOAD LUT ------------------ + +def load_LUT(mat_filename=None): + """ + Loads the list of Huffman Codebooks (LUTs) + + Returns: + huffLUT : list (index 1..11 used, index 0 unused) + """ + if mat_filename is None: + current_dir = os.path.dirname(os.path.abspath(__file__)) + mat_filename = os.path.join(current_dir, "huffCodebooks.mat") + + mat = sio.loadmat(mat_filename) + + + huffCodebooks_raw = mat['huffCodebooks'].squeeze() + + huffCodebooks = [] + for i in range(11): + huffCodebooks.append(np.array(huffCodebooks_raw[i])) + + # Build inverse VLC tables + invTable = [None] * 11 + + for i in range(11): + h = huffCodebooks[i][:, 2].astype(int) # column 3 + hlength = huffCodebooks[i][:, 1].astype(int) # column 2 + + hbin = [] + for j in range(len(h)): + hbin.append(format(h[j], f'0{hlength[j]}b')) + + invTable[i] = vlc_table(hbin) + + # Build Huffman LUT dicts + huffLUT = [None] * 12 # index 0 unused + params = [ + (4, 1, True), + (4, 1, True), + (4, 2, False), + (4, 2, False), + (2, 4, True), + (2, 4, True), + (2, 7, False), + (2, 7, False), + (2, 12, False), + (2, 12, False), + (2, 16, False), + ] + + for i, (nTupleSize, maxAbs, signed) in enumerate(params, start=1): + huffLUT[i] = { + 'LUT': huffCodebooks[i-1], + 'invTable': invTable[i-1], + 'codebook': i, + 'nTupleSize': nTupleSize, + 'maxAbsCodeVal': maxAbs, + 'signedValues': signed + } + + return huffLUT + +def vlc_table(code_array): + """ + codeArray: list of strings, each string is a Huffman codeword (e.g. '0101') + returns: + h : NumPy array of shape (num_nodes, 3) + columns: + [ next_if_0 , next_if_1 , symbol_index ] + """ + h = np.zeros((1, 3), dtype=int) + + for code_index, code in enumerate(code_array, start=1): + word = [int(bit) for bit in code] + h_index = 0 + + for bit in word: + k = bit + next_node = h[h_index, k] + if next_node == 0: + h = np.vstack([h, [0, 0, 0]]) + new_index = h.shape[0] - 1 + h[h_index, k] = new_index + h_index = new_index + else: + h_index = next_node + + h[h_index, 2] = code_index + + return h + +# ------------------ ENCODE ------------------ + +def encode_huff(coeff_sec, huff_LUT_list, force_codebook = None): + """ + Huffman-encode a sequence of quantized coefficients. + + This function selects the appropriate Huffman codebook based on the + maximum absolute value of the input coefficients, encodes the coefficients + into a binary Huffman bitstream, and returns both the bitstream and the + selected codebook index. + + This is the Python equivalent of the MATLAB `encodeHuff.m` function used + in audio/image coding (e.g., scale factor band encoding). The input + coefficient sequence is grouped into fixed-size tuples as defined by + the chosen Huffman LUT. Zero-padding may be applied internally. + + Parameters + ---------- + coeff_sec : array_like of int + 1-D array of quantized integer coefficients to encode. + Typically corresponds to a "section" or scale-factor band. + + huff_LUT_list : list + List of Huffman lookup-table dictionaries as returned by `loadLUT()`. + Index 1..11 correspond to valid Huffman codebooks. + Index 0 is unused. + + Returns + ------- + huffSec : str + Huffman-encoded bitstream represented as a string of '0' and '1' + characters. + + huffCodebook : int + Index (1..11) of the Huffman codebook used for encoding. + A value of 0 indicates a special all-zero section. + """ + if force_codebook is not None: + return huff_LUT_code_1(huff_LUT_list[force_codebook], coeff_sec) + + maxAbsVal = np.max(np.abs(coeff_sec)) + + if maxAbsVal == 0: + huffCodebook = 0 + huffSec = huff_LUT_code_0() + + elif maxAbsVal == 1: + candidates = [1, 2] + huffSec1 = huff_LUT_code_1(huff_LUT_list[candidates[0]], coeff_sec) + huffSec2 = huff_LUT_code_1(huff_LUT_list[candidates[1]], coeff_sec) + if len(huffSec1) <= len(huffSec2): + huffSec = huffSec1 + huffCodebook = candidates[0] + else: + huffSec = huffSec2 + huffCodebook = candidates[1] + + elif maxAbsVal == 2: + candidates = [3, 4] + huffSec1 = huff_LUT_code_1(huff_LUT_list[candidates[0]], coeff_sec) + huffSec2 = huff_LUT_code_1(huff_LUT_list[candidates[1]], coeff_sec) + if len(huffSec1) <= len(huffSec2): + huffSec = huffSec1 + huffCodebook = candidates[0] + else: + huffSec = huffSec2 + huffCodebook = candidates[1] + + elif maxAbsVal in (3, 4): + candidates = [5, 6] + huffSec1 = huff_LUT_code_1(huff_LUT_list[candidates[0]], coeff_sec) + huffSec2 = huff_LUT_code_1(huff_LUT_list[candidates[1]], coeff_sec) + if len(huffSec1) <= len(huffSec2): + huffSec = huffSec1 + huffCodebook = candidates[0] + else: + huffSec = huffSec2 + huffCodebook = candidates[1] + + elif maxAbsVal in (5, 6, 7): + candidates = [7, 8] + huffSec1 = huff_LUT_code_1(huff_LUT_list[candidates[0]], coeff_sec) + huffSec2 = huff_LUT_code_1(huff_LUT_list[candidates[1]], coeff_sec) + if len(huffSec1) <= len(huffSec2): + huffSec = huffSec1 + huffCodebook = candidates[0] + else: + huffSec = huffSec2 + huffCodebook = candidates[1] + + elif maxAbsVal in (8, 9, 10, 11, 12): + candidates = [9, 10] + huffSec1 = huff_LUT_code_1(huff_LUT_list[candidates[0]], coeff_sec) + huffSec2 = huff_LUT_code_1(huff_LUT_list[candidates[1]], coeff_sec) + if len(huffSec1) <= len(huffSec2): + huffSec = huffSec1 + huffCodebook = candidates[0] + else: + huffSec = huffSec2 + huffCodebook = candidates[1] + + elif maxAbsVal in (13, 14, 15): + huffCodebook = 11 + huffSec = huff_LUT_code_1(huff_LUT_list[huffCodebook], coeff_sec) + + else: + huffCodebook = 11 + huffSec = huff_LUT_code_ESC(huff_LUT_list[huffCodebook], coeff_sec) + + return huffSec, huffCodebook + +def huff_LUT_code_1(huff_LUT, coeff_sec): + LUT = huff_LUT['LUT'] + nTupleSize = huff_LUT['nTupleSize'] + maxAbsCodeVal = huff_LUT['maxAbsCodeVal'] + signedValues = huff_LUT['signedValues'] + + numTuples = int(np.ceil(len(coeff_sec) / nTupleSize)) + + if signedValues: + coeff = coeff_sec + maxAbsCodeVal + base = 2 * maxAbsCodeVal + 1 + else: + coeff = coeff_sec + base = maxAbsCodeVal + 1 + + coeffPad = np.zeros(numTuples * nTupleSize, dtype=int) + coeffPad[:len(coeff)] = coeff + + huffSec = [] + + powers = base ** np.arange(nTupleSize - 1, -1, -1) + + for i in range(numTuples): + nTuple = coeffPad[i*nTupleSize:(i+1)*nTupleSize] + huffIndex = int(np.abs(nTuple) @ powers) + + hexVal = LUT[huffIndex, 2] + huffLen = LUT[huffIndex, 1] + + bits = format(int(hexVal), f'0{int(huffLen)}b') + + if signedValues: + huffSec.append(bits) + else: + signBits = ''.join('1' if v < 0 else '0' for v in nTuple) + huffSec.append(bits + signBits) + + return ''.join(huffSec) + +def huff_LUT_code_0(): + return '' + +def huff_LUT_code_ESC(huff_LUT, coeff_sec): + LUT = huff_LUT['LUT'] + nTupleSize = huff_LUT['nTupleSize'] + maxAbsCodeVal = huff_LUT['maxAbsCodeVal'] + + numTuples = int(np.ceil(len(coeff_sec) / nTupleSize)) + base = maxAbsCodeVal + 1 + + coeffPad = np.zeros(numTuples * nTupleSize, dtype=int) + coeffPad[:len(coeff_sec)] = coeff_sec + + huffSec = [] + powers = base ** np.arange(nTupleSize - 1, -1, -1) + + for i in range(numTuples): + nTuple = coeffPad[i*nTupleSize:(i+1)*nTupleSize] + + lnTuple = nTuple.astype(float) + lnTuple[lnTuple == 0] = np.finfo(float).eps + + N4 = np.maximum(0, np.floor(np.log2(np.abs(lnTuple))).astype(int)) + N = np.maximum(0, N4 - 4) + esc = np.abs(nTuple) > 15 + + nTupleESC = nTuple.copy() + nTupleESC[esc] = np.sign(nTupleESC[esc]) * 16 + + huffIndex = int(np.abs(nTupleESC) @ powers) + + hexVal = LUT[huffIndex, 2] + huffLen = LUT[huffIndex, 1] + + bits = format(int(hexVal), f'0{int(huffLen)}b') + + escSeq = '' + for k in range(nTupleSize): + if esc[k]: + escSeq += '1' * N[k] + escSeq += '0' + escSeq += format(abs(nTuple[k]) - (1 << N4[k]), f'0{N4[k]}b') + + signBits = ''.join('1' if v < 0 else '0' for v in nTuple) + huffSec.append(bits + signBits + escSeq) + + return ''.join(huffSec) + +# ------------------ DECODE ------------------ + +def decode_huff(huff_sec, huff_LUT): + """ + Decode a Huffman-encoded stream. + + Parameters + ---------- + huff_sec : array-like of int or str + Huffman encoded stream as a sequence of 0 and 1 (string or list/array). + huff_LUT : dict + Huffman lookup table with keys: + - 'invTable': inverse table (numpy array) + - 'codebook': codebook number + - 'nTupleSize': tuple size + - 'maxAbsCodeVal': maximum absolute code value + - 'signedValues': True/False + + Returns + ------- + decCoeffs : list of int + Decoded quantized coefficients. + """ + + h = huff_LUT['invTable'] + huffCodebook = huff_LUT['codebook'] + nTupleSize = huff_LUT['nTupleSize'] + maxAbsCodeVal = huff_LUT['maxAbsCodeVal'] + signedValues = huff_LUT['signedValues'] + + # Convert string to array of ints + if isinstance(huff_sec, str): + huff_sec = np.array([int(b) for b in huff_sec]) + + eos = False + decCoeffs = [] + streamIndex = 0 + + while not eos: + wordbit = 0 + r = 0 # start at root + + # Decode Huffman word using inverse table + while True: + b = huff_sec[streamIndex + wordbit] + wordbit += 1 + rOld = r + r = h[rOld, b] + if h[r, 0] == 0 and h[r, 1] == 0: + symbolIndex = h[r, 2] - 1 # zero-based + streamIndex += wordbit + break + + # Decode n-tuple magnitudes + if signedValues: + base = 2 * maxAbsCodeVal + 1 + nTupleDec = [] + tmp = symbolIndex + for p in reversed(range(nTupleSize)): + val = tmp // (base ** p) + nTupleDec.append(val - maxAbsCodeVal) + tmp = tmp % (base ** p) + nTupleDec = np.array(nTupleDec) + else: + base = maxAbsCodeVal + 1 + nTupleDec = [] + tmp = symbolIndex + for p in reversed(range(nTupleSize)): + val = tmp // (base ** p) + nTupleDec.append(val) + tmp = tmp % (base ** p) + nTupleDec = np.array(nTupleDec) + + # Apply sign bits + nTupleSignBits = huff_sec[streamIndex:streamIndex + nTupleSize] + nTupleSign = -(np.sign(nTupleSignBits - 0.5)) + streamIndex += nTupleSize + nTupleDec = nTupleDec * nTupleSign + + # Handle escape sequences + escIndex = np.where(np.abs(nTupleDec) == 16)[0] + if huffCodebook == 11 and escIndex.size > 0: + for idx in escIndex: + N = 0 + b = huff_sec[streamIndex] + while b: + N += 1 + b = huff_sec[streamIndex + N] + # Skip the N leading '1' bits AND the terminating '0' delimiter. + # The encoder writes: '1'*N + '0' + + streamIndex += N +1 + N4 = N + 4 + escape_word = huff_sec[streamIndex:streamIndex + N4] + escape_value = 2 ** N4 + int("".join(map(str, escape_word)), 2) + nTupleDec[idx] = escape_value + # We already consumed the delimiter above; now consume only N4 bits. + streamIndex += N4 + # Apply signs again + nTupleDec[escIndex] *= nTupleSign[escIndex] + + decCoeffs.extend(nTupleDec.tolist()) + + if streamIndex >= len(huff_sec): + eos = True + + return decCoeffs + + diff --git a/source/level_3/core/aac_coder.py b/source/level_3/core/aac_coder.py index 07034e6..5987712 100644 --- a/source/level_3/core/aac_coder.py +++ b/source/level_3/core/aac_coder.py @@ -111,21 +111,6 @@ def _thresholds_from_smr( return T -def _normalize_global_gain(G: GlobalGain) -> float | FloatArray: - """ - Normalize GlobalGain to match AACChannelFrameF3["G"] type: - - long: return float - - ESH: return float64 ndarray of shape (1, 8) - """ - if np.isscalar(G): - return float(G) - - G_arr = np.asarray(G) - if G_arr.size == 1: - return float(G_arr.reshape(-1)[0]) - - return np.asarray(G_arr, dtype=np.float64) - # ----------------------------------------------------------------------------- # Public helpers (useful for level_x demo wrappers) # ----------------------------------------------------------------------------- @@ -476,10 +461,6 @@ def aac_coder_3( S_L, sfc_L, G_L = aac_quantizer(chl_f_tns, frame_type, SMR_L) S_R, sfc_R, G_R = aac_quantizer(chr_f_tns, frame_type, SMR_R) - # Normalize G types for AACSeq3 schema (float | float64 ndarray). - G_Ln = _normalize_global_gain(G_L) - G_Rn = _normalize_global_gain(G_R) - # Huffman-code ONLY the DPCM differences for b>0. # sfc[0] corresponds to alpha(0)=G and is stored separately in the frame. sfc_L_dpcm = np.asarray(sfc_L, dtype=np.int64)[1:, ...] @@ -503,7 +484,7 @@ def aac_coder_3( "chl": { "tns_coeffs": np.asarray(chl_tns_coeffs, dtype=np.float64), "T": np.asarray(T_L, dtype=np.float64), - "G": G_Ln, + "G": G_L, "sfc": sfc_L_stream, "stream": mdct_L_stream, "codebook": int(cb_L), @@ -511,7 +492,7 @@ def aac_coder_3( "chr": { "tns_coeffs": np.asarray(chr_tns_coeffs, dtype=np.float64), "T": np.asarray(T_R, dtype=np.float64), - "G": G_Rn, + "G": G_R, "sfc": sfc_R_stream, "stream": mdct_R_stream, "codebook": int(cb_R), diff --git a/source/level_3/core/aac_decoder.py b/source/level_3/core/aac_decoder.py index be705df..378294e 100644 --- a/source/level_3/core/aac_decoder.py +++ b/source/level_3/core/aac_decoder.py @@ -42,7 +42,7 @@ def _nbands(frame_type: FrameType) -> int: # Public helpers # ----------------------------------------------------------------------------- -def aac_unpack_seq_channels_to_frame_f(frame_type: FrameType, chl_f: FrameChannelF, chr_f: FrameChannelF) -> FrameF: +def aac_unpack_seq_channels(frame_type: FrameType, chl_f: FrameChannelF, chr_f: FrameChannelF) -> FrameF: """ Re-pack per-channel spectra from the Level-1 AACSeq1 schema into the stereo FrameF container expected by aac_i_filter_bank(). @@ -167,7 +167,7 @@ def aac_decoder_1( chl_f = np.asarray(fr["chl"]["frame_F"], dtype=np.float64) chr_f = np.asarray(fr["chr"]["frame_F"], dtype=np.float64) - frame_f: FrameF = aac_unpack_seq_channels_to_frame_f(frame_type, chl_f, chr_f) + frame_f: FrameF = aac_unpack_seq_channels(frame_type, chl_f, chr_f) frame_t_hat: FrameT = aac_i_filter_bank(frame_f, frame_type, win_type) # (2048, 2) start = i * hop @@ -427,7 +427,7 @@ def aac_decoder_3( X_R = aac_i_tns(Xq_R, frame_type, tns_R) # Re-pack to stereo container and inverse filterbank - frame_f = aac_unpack_seq_channels_to_frame_f(frame_type, np.asarray(X_L), np.asarray(X_R)) + frame_f = aac_unpack_seq_channels(frame_type, np.asarray(X_L), np.asarray(X_R)) frame_t_hat: FrameT = aac_i_filter_bank(frame_f, frame_type, win_type) start = i * hop diff --git a/source/level_3/core/aac_psycho.py b/source/level_3/core/aac_psycho.py index 4ecaafc..8069e45 100644 --- a/source/level_3/core/aac_psycho.py +++ b/source/level_3/core/aac_psycho.py @@ -189,7 +189,7 @@ def _predictability( # Band-domain aggregation # ----------------------------------------------------------------------------- -def _band_energy_and_weighted_predictability( +def _band_energy_and_pred( r: FloatArray, c: FloatArray, wlow: BandIndexArray, @@ -238,7 +238,7 @@ def _band_energy_and_weighted_predictability( return e_b, c_num_b -def _psycho_one_window( +def _psycho_window( time_x: FrameChannelT, prev1_x: FrameChannelT, prev2_x: FrameChannelT, @@ -288,7 +288,7 @@ def _psycho_one_window( c_w = _predictability(r, phi, r_m1, phi_m1, r_m2, phi_m2) # Aggregate into psycho bands - e_b, c_num_b = _band_energy_and_weighted_predictability(r, c_w, wlow, whigh) + e_b, c_num_b = _band_energy_and_pred(r, c_w, wlow, whigh) # Spread energies and predictability across bands: # ecb(b) = sum_bb e(bb) * S(bb, b) @@ -333,7 +333,7 @@ def _psycho_one_window( # ESH window slicing (match filterbank conventions) # ----------------------------------------------------------------------------- -def _esh_subframes_256(x_2048: FrameChannelT) -> list[FrameChannelT]: +def _esh_subframes(x_2048: FrameChannelT) -> list[FrameChannelT]: """ Extract the 8 overlapping 256-sample short windows used by AAC ESH. @@ -408,7 +408,7 @@ def aac_psycho( # Long frame types: compute one SMR vector (69 bands) if frame_type != "ESH": - return _psycho_one_window(frame_T, frame_T_prev_1, frame_T_prev_2, N=N, table=table) + return _psycho_window(frame_T, frame_T_prev_1, frame_T_prev_2, N=N, table=table) # ESH: compute 8 SMR vectors (42 bands each), one per short subframe. # @@ -419,8 +419,8 @@ def aac_psycho( # # This matches the "within-frame history" convention commonly used in # simplified psycho models for ESH. - cur_subs = _esh_subframes_256(frame_T) - prev1_subs = _esh_subframes_256(frame_T_prev_1) + cur_subs = _esh_subframes(frame_T) + prev1_subs = _esh_subframes(frame_T_prev_1) B = int(table.shape[0]) # expected 42 smr_out = np.zeros((B, 8), dtype=np.float64) @@ -436,6 +436,6 @@ def aac_psycho( x_m1 = cur_subs[j - 1] x_m2 = cur_subs[j - 2] - smr_out[:, j] = _psycho_one_window(cur_subs[j], x_m1, x_m2, N=256, table=table) + smr_out[:, j] = _psycho_window(cur_subs[j], x_m1, x_m2, N=256, table=table) return smr_out diff --git a/source/level_3/core/aac_quantizer.py b/source/level_3/core/aac_quantizer.py index 5bc8526..f2004b0 100644 --- a/source/level_3/core/aac_quantizer.py +++ b/source/level_3/core/aac_quantizer.py @@ -35,7 +35,7 @@ MAX_SF_DELTA:int = 60 # ----------------------------------------------------------------------------- # Helpers: ESH packing/unpacking (128x8 <-> 1024x1) # ----------------------------------------------------------------------------- -def _esh_pack_to_1024(x_128x8: FloatArray) -> FloatArray: +def _esh_pack(x_128x8: FloatArray) -> FloatArray: """ Pack ESH coefficients (128 x 8) into a single long vector (1024 x 1). @@ -58,7 +58,7 @@ def _esh_pack_to_1024(x_128x8: FloatArray) -> FloatArray: return x_128x8.reshape(1024, 1, order="F") -def _esh_unpack_from_1024(x_1024x1: FloatArray) -> FloatArray: +def _esh_unpack(x_1024x1: FloatArray) -> FloatArray: """ Unpack a packed ESH vector (1024 elements) back to shape (128, 8). @@ -226,7 +226,7 @@ def _band_energy(x: FloatArray, lo: int, hi: int) -> float: return float(np.sum(sec * sec)) -def _threshold_T_from_SMR( +def _psychoacoustic_threshold( X: FloatArray, SMR_col: FloatArray, bands: list[tuple[int, int]], @@ -425,7 +425,7 @@ def aac_quantizer( SMRj = SMR[:, j].reshape(NB) # Compute psychoacoustic threshold T(b) for this subframe - T = _threshold_T_from_SMR(Xj, SMRj, bands) + T = _psychoacoustic_threshold(Xj, SMRj, bands) # Frame-wise initial estimate alpha_hat (Equation 14) alpha_hat = _initial_alpha_hat(Xj) @@ -482,7 +482,7 @@ def aac_quantizer( raise ValueError(f"For non-ESH, SMR must have shape ({NB},) or ({NB}, 1).") # Compute psychoacoustic threshold T(b) for the long frame - T = _threshold_T_from_SMR(Xv, SMRv, bands) + T = _psychoacoustic_threshold(Xv, SMRv, bands) # Frame-wise initial estimate alpha_hat (Equation 14) alpha_hat = _initial_alpha_hat(Xv) @@ -566,7 +566,7 @@ def aac_i_quantizer( if sfc.shape != (NB, 8): raise ValueError(f"For ESH, sfc must have shape ({NB}, 8).") - S_128x8 = _esh_unpack_from_1024(S_flat) + S_128x8 = _esh_unpack(S_flat) Xrec = np.zeros((128, 8), dtype=np.float64) diff --git a/source/level_3/core/aac_tns.py b/source/level_3/core/aac_tns.py index 06227b1..4ba78ac 100644 --- a/source/level_3/core/aac_tns.py +++ b/source/level_3/core/aac_tns.py @@ -39,7 +39,7 @@ from core.aac_types import * # ----------------------------------------------------------------------------- -def _band_ranges_for_kcount(k_count: int) -> BandRanges: +def _band_ranges(k_count: int) -> BandRanges: """ Return Bark band index ranges [start, end] (inclusive) for the given MDCT line count. @@ -66,7 +66,7 @@ def _band_ranges_for_kcount(k_count: int) -> BandRanges: start = tbl[:, 1].astype(int) end = tbl[:, 2].astype(int) - ranges: list[tuple[int, int]] = [(int(s), int(e)) for s, e in zip(start, end)] + ranges: BandRanges = [(int(s), int(e)) for s, e in zip(start, end)] for s, e in ranges: if s < 0 or e < s or e >= k_count: @@ -117,7 +117,7 @@ def _compute_sw(x: MdctCoeffs) -> MdctCoeffs: x = np.asarray(x, dtype=np.float64).reshape(-1) k_count = int(x.shape[0]) - bands = _band_ranges_for_kcount(k_count) + bands = _band_ranges(k_count) sw = np.zeros(k_count, dtype=np.float64) for s, e in bands: @@ -347,7 +347,7 @@ def _apply_itns_iir(y: MdctCoeffs, a_q: MdctCoeffs) -> MdctCoeffs: return x_hat -def _tns_one_vector(x: MdctCoeffs) -> tuple[MdctCoeffs, MdctCoeffs]: +def _tns_vector(x: MdctCoeffs) -> tuple[MdctCoeffs, MdctCoeffs]: """ TNS for a single MDCT vector (one long frame or one short subframe). @@ -430,7 +430,7 @@ def aac_tns(frame_F_in: FrameChannelF, frame_type: FrameType) -> Tuple[FrameChan a_out = np.empty((PRED_ORDER, 8), dtype=np.float64) for j in range(8): - y[:, j], a_out[:, j] = _tns_one_vector(x[:, j]) + y[:, j], a_out[:, j] = _tns_vector(x[:, j]) return y, a_out @@ -443,7 +443,7 @@ def aac_tns(frame_F_in: FrameChannelF, frame_type: FrameType) -> Tuple[FrameChan else: raise ValueError('For non-ESH, frame_F_in must have shape (1024,) or (1024, 1).') - y_vec, a_q = _tns_one_vector(x_vec) + y_vec, a_q = _tns_vector(x_vec) if out_shape == (1024,): y_out = y_vec diff --git a/source/level_3/core/aac_utils.py b/source/level_3/core/aac_utils.py index 0e18ed1..26cdbdf 100644 --- a/source/level_3/core/aac_utils.py +++ b/source/level_3/core/aac_utils.py @@ -163,6 +163,42 @@ def snr_db(x_ref: StereoSignal, x_hat: StereoSignal) -> float: return float(10.0 * np.log10(ps / pn)) +def estimate_lag_mono(x_ref: TimeSignal, x_hat: TimeSignal, max_lag=4096): + """ + Estimate time lag between two mono signals. + Returns lag (positive means x_hat delayed). + """ + n = min(len(x_ref), len(x_hat)) + x_ref = x_ref[:n] + x_hat = x_hat[:n] + + corr = np.correlate(x_ref, x_hat, mode='full') + lags = np.arange(-n + 1, n) + + center = n - 1 + lo = max(0, center - max_lag) + hi = min(len(corr), center + max_lag + 1) + + best = lo + int(np.argmax(corr[lo:hi])) + return int(lags[best]) + + +def match_gain(x_ref: StereoSignal, x_hat: StereoSignal) -> float: + """ + Least-squares gain g that best maps x_hat -> x_ref. + """ + n = min(x_ref.shape[0], x_hat.shape[0]) + c = min(x_ref.shape[1], x_hat.shape[1]) + + r = x_ref[:n, :c].reshape(-1).astype(np.float64) + h = x_hat[:n, :c].reshape(-1).astype(np.float64) + + denom = float(np.dot(h, h)) + if denom <= 0.0: + return 1.0 + return float(np.dot(r, h) / denom) + + # ----------------------------------------------------------------------------- # Psychoacoustic band tables (TableB219.mat) # ----------------------------------------------------------------------------- diff --git a/source/level_3/level_3.py b/source/level_3/level_3.py index 2f2105b..b7470da 100644 --- a/source/level_3/level_3.py +++ b/source/level_3/level_3.py @@ -27,13 +27,17 @@ from typing import Optional, Tuple, Union import os import soundfile as sf +import numpy as np +import matplotlib.pyplot as plt from core.aac_types import AACSeq3, StereoSignal from core.aac_coder import aac_coder_3 as core_aac_coder_3 from core.aac_coder import aac_read_wav_stereo_48k from core.aac_decoder import aac_decoder_3 as core_aac_decoder_3 -from core.aac_utils import snr_db +from core.aac_utils import snr_db, estimate_lag_mono, match_gain +# Global variable to "pass" AACSeq3 without changing the demo_aac_e interface. +AAC_Seq_3: AACSeq3 # ----------------------------------------------------------------------------- # Helpers (Level 3 metrics) @@ -90,6 +94,83 @@ def _bitrate_after_from_aacseq(aac_seq_3: AACSeq3, duration_sec: float) -> float return float(total_bits) / float(duration_sec) +def _plot_frame_bitrate_and_compression( + aac_seq_3: AACSeq3, + wav_path: Union[str, Path], + fname_bitrate: Union[str, Path], + fname_comp: Union[str, Path], +) -> None: + """ + Compute and plot per-frame bitrate and compression ratio + for a Level 3 AAC sequence. + + Parameters + ---------- + aac_seq_3 : list + Output of aac_coder_3 (list of frame dictionaries). + wav_path : str or Path + Path to original WAV file (PCM 48 kHz stereo). + fname_bitrate : str or Path + Path to original bitrate per frame plot output file. + fname_comp : str or Path + Path to original compression per frame plot output file. + """ + + # Read WAV metadata + info = sf.info(str(wav_path)) + samplerate = info.samplerate + total_samples = info.frames + total_duration = total_samples / samplerate + + n_frames = len(aac_seq_3) + + # AAC long-frame hop size is 1024 new samples per frame + samples_per_frame = 1024 + duration_per_frame = samples_per_frame / samplerate + + # Original bitrate (file-based estimate) + original_bits = os.path.getsize(wav_path) * 8.0 + original_bitrate = original_bits / total_duration + + frame_bitrates = [] + frame_compression = [] + + for fr in aac_seq_3: + bits = 0 + bits += len(fr["chl"]["sfc"]) + bits += len(fr["chl"]["stream"]) + bits += len(fr["chr"]["sfc"]) + bits += len(fr["chr"]["stream"]) + + bitrate = bits / duration_per_frame + compression = original_bitrate / bitrate if bitrate > 0 else np.inf + + frame_bitrates.append(bitrate) + frame_compression.append(compression) + + frame_indices = np.arange(n_frames) + + # Plot bitrate per frame and save to file + plt.figure(figsize=(6, 3), dpi=300) + plt.plot(frame_indices, frame_bitrates) + plt.xlabel("Frame index") + plt.ylabel("Bitrate (bits/s)") + plt.title("Bitrate (per-frame)") + plt.tight_layout() + plt.savefig(str(fname_bitrate)) + plt.close() + + # Plot compression ratio per frame and save to file + plt.figure(figsize=(6, 3), dpi=300) + plt.plot(frame_indices, frame_compression) + plt.xlabel("Frame index") + plt.ylabel("Compression Ratio") + plt.title("Compression Ratio (per-frame)") + plt.tight_layout() + plt.savefig(str(fname_comp)) + plt.close() + + # ----------------------------------------------------------------------------- # Public Level 3 API (wrappers) # ----------------------------------------------------------------------------- @@ -187,20 +268,21 @@ def demo_aac_3( raise ValueError("Input sampling rate must be 48 kHz.") # Encode / decode - aac_seq_3 = aac_coder_3(filename_in, filename_aac_coded) - x_hat = i_aac_coder_3(aac_seq_3, filename_out) + global AAC_Seq_3 # pick coder output + AAC_Seq_3 = aac_coder_3(filename_in, filename_aac_coded) + x_hat = i_aac_coder_3(AAC_Seq_3, filename_out) # Optional sanity: ensure output file exists and is readable _, fs_hat = sf.read(str(filename_out), always_2d=True) if int(fs_hat) != 48000: raise ValueError("Decoded output sampling rate must be 48 kHz.") - # Metrics + # Quality metrics s = snr_db(x_ref, x_hat) duration = _wav_duration_seconds(filename_in) bitrate_before = _bitrate_before_from_file(filename_in) - bitrate_after = _bitrate_after_from_aacseq(aac_seq_3, duration) + bitrate_after = _bitrate_after_from_aacseq(AAC_Seq_3, duration) compression = float("inf") if bitrate_after <= 0.0 else (bitrate_before / bitrate_after) return float(s), float(bitrate_after), float(compression) @@ -218,20 +300,28 @@ if __name__ == "__main__": # python -m level_3 material/LicorDeCalandraca.wav LicorDeCalandraca_out_l3.wav # or # python -m level_3 material/LicorDeCalandraca.wav LicorDeCalandraca_out_l3.wav aac_seq_3.mat + # or + # python -m level_3 material/LicorDeCalandraca.wav LicorDeCalandraca_out_l3.wav aac_seq_3.mat bitrate.png compression.png import sys - if len(sys.argv) not in (3, 4): - raise SystemExit("Usage: python -m level_3 [aac_seq_3.mat]") - + if len(sys.argv) not in (3, 4, 5, 6): + raise SystemExit( + "Usage: python -m level_3 [aac_seq_3.mat] [bitrate_fname] [compression_fname]" + ) in_wav = Path(sys.argv[1]) out_wav = Path(sys.argv[2]) aac_mat = Path(sys.argv[3]) if len(sys.argv) == 4 else None + fname_bitrate = Path(sys.argv[4]) if len(sys.argv) == 5 else "bitrate_per_frame.png" + fname_comp = Path(sys.argv[5]) if len(sys.argv) == 6 else "compression_per_frame.png" print(f"Encoding/Decoding {in_wav} to {out_wav}") if aac_mat is not None: print(f"Storing coded sequence to {aac_mat}") snr, bitrate, compression = demo_aac_3(in_wav, out_wav, aac_mat) + # plot compresion / bitrate + _plot_frame_bitrate_and_compression(AAC_Seq_3, in_wav, fname_bitrate, fname_comp) + print(f"SNR = {snr:.3f} dB") print(f"Bitrate (coded) = {bitrate:.2f} bits/s") print(f"Compression ratio = {compression:.4f}") diff --git a/source/requirements.txt b/source/requirements.txt index 475a4e0..1b2fb83 100644 --- a/source/requirements.txt +++ b/source/requirements.txt @@ -2,4 +2,5 @@ numpy scipy scipy-stubs soundfile -pytest \ No newline at end of file +pytest +matplotlib \ No newline at end of file