From 2e52af9cf27a35f206f93981ba92f7e578b83626 Mon Sep 17 00:00:00 2001 From: Alessandro Trigolo Date: Thu, 30 May 2024 13:40:48 +0200 Subject: [PATCH] Update hw-2/report.tex - finished conclusions - corrected typos - improved long number format with \, --- multimedia/hw-2/main.pdf | Bin 1940690 -> 1941907 bytes multimedia/hw-2/report/report.tex | 44 ++++++++++++++++-------------- 2 files changed, 23 insertions(+), 21 deletions(-) diff --git a/multimedia/hw-2/main.pdf b/multimedia/hw-2/main.pdf index db3f24ab87d40b335b690649e344624deadd072f..f6d2d92f1567b5409909bc246b190fdc1b7f0286 100644 GIT binary patch delta 59721 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 F_a9B!uKWN1 delta 59083 zcmY&-q5%PVK6FPSrY9 zNdsY-o22#O%ML(D@u%U|Ld&ke%bA=Y*A;nN?0#$WnjFQL zhh@Z)olF7?;nT|JJvfGD#KLT>YkQWpF%W$yAF_ zq$`skj;yRt^1Be|1dsujPZ!iY?zkuwm>>r8@QnU&tY#ls?cpzux)K>`cURmH)lOz? zG?94xjJ{Y;#T zqIW1ri4@uVHXV|TowAI|1+TBBD%C9^2}B6A_7BzgyT)U?2jE<6@k25@2R8!@(aI++ zP0bSXaTq!rm<4!}u|UN_8H)rLKd}Bnxf?&ugza(|q|nDi%R4`2(?u1fGE#iD+0!KF z?!^Ch(u2Ix2a1edzFR!b>5i*GBYxcFMXE|=;uf|_#u7{zLbHN7+N{wr z_SW$jTfSMiEZ}{ZAp@v{b!N#kk|U-H!wqyELMfq*0*2t24Qsg4`KXLP^I)*%C<`>!bs=zcGt z%Y3(n*J7OVwv8?8ewU(6NYc4`3Mxr`qzY=h|svGr=cc3K$=tFVqobz zjn2Zpt`9(MbZwxq6o#{Nctd%Ls2T;ycca8fhLiFd2wr4^3+Aayv~V?`w|c#AP=mD8 z-!vb97=fTG*x4q62Co(yW**f`*yw9CC9=}K1Z_N-V`V{T_Z!#!@&{^Tn{(QRdNMLF zJRrB8IZbOe^;$a6nwj$*H8}9g3plN3Tos-p7y*#qExBYLUtX3L!^4ugd2?WA;qxbx zM7w2y+byW8K37!8Z!6<_E@4EcHAimQqdPst>JRy8QH#b{G*qBi_9avbZ+5%EIeiGK;c;xJ~6!^hjl$DP>$r zK$VO2lkEi`c)sodT7c3L`ZR&}S)v1c)K3F(wJImrnq0E{;);(#8;y+2j9FRUG zOcr-qQ7$AEo~9g52R-d{1IR}reDe==H!Kj@^aS3%s8v%Zj1$OtT>r$VCV`qhwn}WmF!VS>!g<8}meEM{3g?b|B z>Zj^lbht(f%UvFA&Xt?>DX#?QIRQ8_9>?IY;E~-h>^M8!)023&iq`R`d8I_+&FZ^| z&dU%NNSe=Up`D?wxxS)x#iFWAd*XMP@Es8$V}i7yM2NojQDJ_KaVpU%VW>(%f>Vf@ z=Nk5tbBxBjqmHxI`UeP;?ktH1ZppiK0>N3}Z~@m*l(C^GC&qft*iCbLcLOG5QG^<| zUhB^L3|Dnr(s%ip?S*s?1J&Zd$NbR4?<}jcV8D6#QcqNtQ|&FT>DtG5ED-3nO?9#pzujGQMxS`!gf?>c*k@f`f@Og(SHiaxK8;^JOvM z6sk{H1*A+Uy*F94{c$kj*?$_JdYJY_^`^PTLB-WT%BaUci6ccQ$N(f@Q7!juI%>;& zw3dlDSE-oyg!;7%Ig&^$Uoir%v>cx9`(zGxfdYq zz_WQ0Y@1jU?Tox!>i!z-_#P(p`MZ6}<1W!1fB))tb>VXzpCL|{Z)zPOq()d&GoM@z z<7nwYv4i6cPZ2w@D+4%24F|2``}`xP4gI5VLqS)Dh^MY9VeF8E9ckOlAp?8pON3?v z7_+~@1piq<Z2Y{KGn~~yv_kSQQ5>U^Q05#|HuT0;#%bmLTmyguxZJEV;$fC=a*65g zXL-05+)jxwFN%nVHgBpl7??r-60c=vZZHp~c>MC*{uNb>W$vx2U}NH7P*olIeC^rH zJL5hyOr31Anxk3U-|(b@wIary!*;Opv?lHDFL}Os8>ymJCae5PRq1f2JP1MSe=jaD z`Yme7%Js(_OBZ0Ln1$LWL9#)BBbJ;=%E=Y{2n**xf4EH1JCdNpyTc&)f+<6+kdulQ zOf-jwzigQUO@2*MxhgEcQ_hXGP#`>+4qJjXZ&@goNUq8ZzZWNuVoWfI+*pAC_4Y!g zBn}UGLl-;w*m^SE5*y1;u(G=yDekVZvo2p(ThmM8o(f>m&Z8PQjroI8AcT8mTyh~q z*rSdR>UyJ(&ALa%85R0__=dge?E$p+K57Ir?g$eAxc%5$?P1LA@^In)9wP)*An){E zN%36VlpX{m=>g*{yVq0l?d-b`2E-$5A&O#TAK1rJ2h-ynpDJ#{rzz%66AE~`-1@kn zEbYdK#sHLH?Iv<8#}OWG-<+5#gV@a{!jl#?Y(?lTG$?Rg-&OMXL@u4%mM2;8drZLu=D;ksd=xWv6-egy9u#0E-el%Yd^q%y^&0X~qqPDmxw^G6-5&&eWo-2*+=DeSO4;vN*QnCv{hUxKP zOCS@t)tb0>swIQE#Sl&dk4puF7y6cPBqYJBA_ruFRbfW(F;K$VL?ulGL>5ht@i6iP zEL##Wb)a`rV3f%Wd*rO=axsg8Xzs7FJTib}jJG&ng^tyJ-3aT=W`P2rk$|6By1p4k zA^>VMT(WN(TF4tFh}BN=#f*XWP)bdkXDdbZy)(!{5K#dvA>?(FdU|UjSHDEe@y}vIXIDapgEpZl%_vAAO_@CwjXL zP%>jedEV;~RbUn8&1sp~`dK6I4!J^GV>4bt;DnloYP#(;eY~z3&!leU2u*l3TR5^y zqoNO}@+4(OX?N0rvEF(DFb3)m?C4a7%1Z>1vU0@wOpOCJ4d-i37VIU9vU}q3u>hgT zUM$mDW|dHVWRc3i{Jo3k1z8H@(D{}?E@1hX1FYLHbh!blvbd?QQY2erC(0IW&>6`v z)35;^HnMe-LF!Obm`+!e^B{+&QP{Y`+V3qjBeHbwzYBU)6F?8MFwR_+qUh#v$R(vr zET9!=#j0BIS>$lBSzRSX31|h$`T%J~LGFI7?4DdX5~}Ne>%e68r(2GyXyetE9Z7$z zm6!OtMI00&%gax$9thqjQu#xAd19{z>#v0f9aa%TU2Dw9gTW(#Ti8*)iR}u6~VS(7B1};BK?UFa>m%)9H=nFR-eFq#-#{gez0SOzOz#zHOS}+{j~X z;R+MkW8XkQiBcV+bETW>c-;2w*1YsI5C_o01GevX5T5f@+(9u27~fDCnfpvc$53l& zZg8M;*Fj``ZrO-XD#*yO*jaB*+qim^H+7?PY!dGh2(mU<1^?cL{O$mawT(>u#wXbm zO#EH-I9{*mTvb;g;E>9F8;Q&BUp=z3cXIk*p7>+H}r9?o4AU^ ziLU2x_ZsJZFqBdz(V=@LE9F!a`50v%FmrC9; zC7s|P2X0%IuNL2m034X!8Ymr`M|*8G=_*+;qG2D(^|lORYx$J!`D)~y@znRx>GgAm zSr7y$ci~;N(Ix9$-1%fz9Tytgt(M>B8lSDzi#yA&D2M{Xe%-vc`8H<*&x%nO6Tw~q zi9wb-!2bz5=Rp&rjBSl0$}~+BrxHn)5rjhG=M*=3fDHHp4oEK-{B!b68CeXidYYp& z8*sK>c+%I7ATe7dGxcXhS^3c@|75-VgNfE_z z^?u%!4*Lzx;SLVU6S0A04qb=VT&r&rh#)SxG6l!tJ2DcpMQXwk3n9@+=m-WhFqu2j z@MnKM4}4z`Qau4NfF405DeHE#(ub3^#PFK6jn1JAC{M z{%0RcdUd!YdvPR8oNdeBC{CS^Q-XdeXu#(?t)Is)-5&zNn|Q)g`|)@(&#f?b@>H!> zqpzV}INqURaH*}DGFhb>KO!gQo*3}cBjwIdk5fJW>G92RNaZwv)9X8PFDP71S__BIuAh_8WJfbxk+>S~|SlaDMgqnXLI zCjgg#k_QkYNjq^vkOQweo!HwGVtIMA1nbJ+!8y09+^NP~^^7@*Y5m1KUW$!+uQO_JeIdcreawWZ1aSCf@aN$CRk zn8xc=Bl;PpG>TLWY9-jXf*za}Y_p+%?#W|wX+B3S2zn<+yHyTVi)xW@kPU>=fE!)b zl7y&T-0xMpgtV2FBd%*Qg5bSg04WP0lBW(3n|0UlIdL;h`BhASSzV&$u_>h(SO)Q1 zAKcTg(w)v{^B8+E9Ys;GENp6fcwsI5qY%$$hMF9_ z&p;=Yg7b=U2*_%RLhDThGCO@P>G_Tc`D=A$=O*gScuq>kXd6^v_3Nfdz=h##O4c$C z2J{gvTgl5{{JyK+FS5ZM=gSb_6u0{$PKtiCEc5coIOJdBagccQXo&F3?t*ffAY2C+;bqBY0im0)uIp}11Vb!Xcurn8qa$}Y zZU}u+>dfF=MOa6<5+y>E0Es%%-O>nuPN$~^l#zg|KSMr?4^89e<-f1ttwTRM{sCu< zerGTFCoqpuVv@Wxu1nE~3w1z)f|V@E;yo?J)p0{rO)`CVGQ=z1O}|M!I10j$gl$8VZWcT#=b(zBt9Zyt`hVvDhxoQm3TR=2ZL?uwP4`Bx<4Wy^ACZhotj$4U(`M4ZUy z@hkpL&#qb1FF@>KS*_^3kU8CVM@5o| z%rhF6($Aoki2QG-oHil<;9*g1AqC?|Qce8a(6n^qk!oWGT+W(1NB3ml3Y814ss6DKTwhA*&r1>Bk>VM zu-HD>A#gJs6r28>5<2D}z7WDTJ=Bcb`Gt@F9+`g`L<4At)%(8!up6L5QaG=i&6YnT zWI}rXB;zIP>Y^E;cu}hscKsfA0;4n6;-dcJ+e!tF&k0^@d}B?*MFcPNtPAI@6fn59 zDqPH65MqJk#V(uXA&0h59~R|NUeeKJ(=N%EyoLF* zBG(ZgZygY<#y{N^T10bqAV*WG;<@?8Xn8X?6>q2{p?**Z;@#`ySi*^K{QLYt+apvW z@0HimwhVe&G6f#bqLpyZqR}xZTp_{dYyxZb@)yqC%m@ex-i7g2v+GqqN(v|XW4+YK zGdoh^ET^7D6`zxjyNnXCdBSg=H~~Q8#~BYVycuA)Rz!}C^N9)72gaC?DJrzDd@_Yw^03#oy3hxz zG<%tUdQ^iI(T?2o{@2@rIo^6#j+Rj}OYT!LKH^5S;U0)6H%1{^3U%(Ti_rkqXyqX| z5iX#Z=O4cIDn}(b)qC4ICN1`Tgg%yuYS`fK4JaO*?h4oa@$7ReBSHfR7gNVfDU1?p z-8kK{DZGY%C4usFuA;og@|t{C2HERas#`BKA3QFlhS+w^IX<&fkFyf3BE6=aLOjp3zkknz6JfXnIY;Q23y*}P6!{92Uc0K39DL6$yDmtJGBD_sYH7lT;w0pPV7x^0wsX>7G zwnrU^3~m*0#gVBa7Q{KWSRWpBc$+N{z11(HJ^rF5y*Y-Id&ob1Ffh(q=W7#ss72Va z`;F6|S11aon(D_i`Cwex)dhmC=ew&egxo}bY(XGk5))-ueXtSL{hOtEh%tn=iLR+g z>70eCON>C9C~;rpc2^EpBtcCZHeLXTdfnsR3i-v^z3j-|y|N#>>_H{eWkbS$OxP2U zkzBza9hI!N--C8^zh0Bt4;hiZyyVaQ??d_Db$;!;koVt$c$dn>PuO#CakHrRu3Yl~ zwM0VLO%^i=@t;-@+V4(ptIr|ZE+>GUGzcE=cshi}q2BCgz?9a28~0-7*H;0w)WHi} z|9o)6tb0{QJ6)7YcUM2DrIHoNgX3ZXQQcQkD(AlAj29^zKBM#6UAn?Wx)hwgD75IQ zDtbFbY*4jSmW1I*BIfab9dY-g0>}Nsg5-fU6Ef}2l$IujK2``H_Z`PBlfa1mTl~?6 zYuCkJism(~5q1laXphAT56urimr!cr3JXRg-C}={JyL(3azWt5D3Jl)PA`&)tFG?W zT8od4g4@%Ayr-mPt%exTR^nZ~Ff&eE{hr=&0%*BAqiIRN)vvnKbpCNEm14>@^#&o{ z^SR0<@qdK(3tCSr4llPn$tWLdaXyz1?(%opXC&|ixaAy)d-M?f34sHM`uDzYurY#+ zd(u^vuawN=HARcOSG+S9!=Zx?v*zB7HQYCBw@W3wN1^e|gk;NO@3nPJ?7OVk!}-D? z6EL2Zw$7zcHFLi16!vt7D7pQkvs}Xjj7g`-{c3hg%GQAI;-leQGl%xW;!K>9U+G%Q z+%D_Oo)Y&PMZ~BDypSI4D8NX8pY15&w2@0~0e% z_QU@LWxrzh@({MZ6sK&|!a8k!>W$d`oex>v1Buzu-A2Po77zP1A~qNJ=`0P1*AB@BOb*Y)H0dWb77kDa8&$ZIX?HL@K}v9)23!`C z6%dIQ)b-5b!^LYI9A#<`wDBjBE;;aQP<65l!isvkzQkVzsqk@q+S!7%KuFAKQCZNV zZRn9@)o)wh&y^ki0O-KyegQ8kkNl@-Mwi=hIF(V;|M^hihe(d+?2PWPKvS*c> zr5Q2dqc-el4uYYxGBYr-a}qJLu`;l6vlFqgaxpNmCMoHYCSB1YC0**tqq8wFuyJtw zPYE_o1~#^z5&>xcIsX2yAM6|qTXoHii9}MTWpc2num#LWcBst?At%D`NN9rV^N~%Dr~@pfJ7sT1PF3* zsc(Zm7mW^U{95nzUXL#~_bueANKiuPbnUJ+lAZe1TNAs9_|z&c{T|mkY8v8rrV}3} zl&(_NQa#mA0YzmSRT+0%9k@Bh)SYm&=O!u#&3@Opa;{HtbNc3E4AkSTzv)XJAqb>l zyfp^Hf~p%tRp9)EgNt5juUu{Y4Gs?9CZ8ObTHybZ!GO?yy8|UqFp(S+S?Qy-H-a9n z3e+_*WAqnB6ZPWj&88sA-2T-@4^#hsT10f;cDVKnFlG?=5Qg0slj?@~tEfiyt79LZ zg9)X~^00_1aq)9Au4=6(S|He5<)Of!=T^hpGMF2Mplnf4ewoy*Mf7h)o)@Ve==ttk zs95lYE;1ifI1pin7`i-TUN8*)LuW9h!16+7RD8qKHaOb;DbEwK66hmh;37U7#7(oJq{U|NLVePo937nICZw)QKSjO-(vu?dew~qGU94SZQG(dr6A2mB%ou?e3pM) zQZ%NSq&laB%$bqcN(zSwktO1#nvc-!&M8tv4@{@q{e98JBh3>8w z06Wxz#3>7{A|(HI1%-+HQ+WYN^{)D`AjDEJ%m+zu9autlEeB(TufB$&x0~PV$Ki8K zNQJKoS{{eKTs?)Gslfsq)n6J((V7wtkTGaw6;r5QsaF~V>v@TY=R&lIV8gekpAvKJz#KnKjk4) z?65Xj3mAsrDg?0wLAb)K;+UZP`y@Z>)Mr(rD`3GgaQ#HWH3SVl`r1J>Z`Z3jGMnkPs0BC4T%R_f<&SdDo zIk4Tdh2sMgSPX!v86(kC0n8L!ijk2sRJ?YVj|li>!Cy}4%$-ME0OUAVAlJo-X?|qA z3&Npl&%}6f&P8Mn1k)fLOdUyH`TUMD2VcS*$UIzgJ))9R1?t+<9FluT{I9zwOubJO z`r}q_}v7~-h0B1GMnO;@l~w` zs9}__@CzWPqJ{?2xjaS-gpk6)=Itz{bZZ#LB8dn6EgZ%o^|BuutCoK1RiZrq%(^_#uJbrq;#SU2d-CnP|YzF%RCGiM|dBA2+bw1&>P5`kcGrkXP)rNygBx z0BtMIHM^=$(P`b7d!`kqW(my-dVU>l z`Tjf~->49gqqBwigniRpOA;d)18NSL=P(a}0C5B{G?JcAeI(UaXg*nP%n3Xp7tO&i zTsElDC8J?K?{C-wO)SikwI#f6S7uGDOBR#OAUhwpQbwR; zky`Ap!V2^>giUg;oq~(Nq&JyjUtu3-+8yLJs~$R2J^FnZzwutt9JDb)!E2OfU_BGm zF?>+!&dUl@bekJKjFP87;+vd|5y`5#tXKuwfulJwFBzVh1pylaUq!et-x(GjE(utc z64qRye{j6b5BY+g8g{o*Xk=yEAO71hhfO2Q3$3E#N7CaKMOHZ=Q*M-d{*k|lz}%5; zc$!$`@X6Yeay!F05d%+QN!LW*2NuDe)zuQk@W3~XlpZ+W`OQRD1s1|0yjty8s4}wz zL8@#{0n8gh>V?mxVV{vW{eAbG)(j}v81mk5*=foFV#91_aJL^iKGEV~Ri0I*uPPC# z<#0rBwX*GaAbmF$p+F=hSs*E)|M7U&3G;Qu-IBS~dl=iKZG$GmJMI>ydoZ7m^UR(^ zyItl9No52NAEW8f?A$D&k*#B+P`9OQ?I`$3upWge;|GHXUfqY3Ci2Z6N&sX|E6;$D zV&mvI&%X{f&z{Vws1-C_Y?71j3L1m8m{{*BBR=k8+sU|**pGK$qukJ|EYP(HSfpU-u-ynqC;!~-Y7_<4#S{|K|5!` zthn}XN^Nk8#yTIV zh{)84o&RCyhn!a=(?siNGmqQn+CD$wZ38n09+B>LkE|%lFwQ%YfDs?pl#RZPa)6bu>9wBe z>5?p}zl08+t--`x5#mxL-r%nzx2cVSTUj;W>s3f*xuVmXL13#x*OP6QB9u);iH_Ie z6e;W5yN*^c0yB9UQ`rSjxtQ1 zBjV_HNTo*4x>AL0c5Z9ma$@y4M6_+lLiCJ3zF<3$WMl8|9oM1-V1w(_J=uQgm*`{K()w$4Fu(Mo~EDV zXl|19m2$N|87k&+C9k)ycp+^EBtsn6>%)Hv`>X084a7OJ=nfex!46IO;1*1Vnxj98q1fM*b)%s!j@#&jkZg55d zrtQBcvs0}&^+E&8XGcU8_ND$0a91#hs1y=C<9&gj2Jp#Y+y8wKAr3RZ0b}9j=1!IR z$(HHb#cebre_a_6=Mz@S`!)_@b`_0=HOfbW1q7@;PckF$&^ySB(N;Y=)iIs`uHmGs ziXPv*bgS0jql1cwALH=^vazjO5jtZqJ!*2npK!biFyq-^_693Bw_a{1D=Y{L`1}Dx z#nCtEo{mWIT+m%U?{KhG(n$-jqKPoOi-5Tf@28rie5;9(nd>dcEgTp?D5qwoN6&e= zPNjV&O=nAC>Qunv!>M{}!>8h$uX>TNI&Owj z2E~$DJFuJdWc9&y#Od#K00~1vx3UbhBr*$qMlHyCoCh9I;_1xI%h4jLP1gsru|CK^ zI9D^yU$R~Pns2A4CAzq*E4PZZzkr#Bzy9l$uXfBA*31WpPSlpK(nosUhM!+(GOJ}y z_mpZLr03pk>FofGu8ubV?IBtoh9p@8A^g};qvs$mJiNdvFaOe)r}pm$fa+iTXMpp9 z8v=yYHrK5Ro4;TGgM_qDYi)sELsDD2s#90`zhJBT150{|5OKXbp& zXhCQ3C6DfyaI2AwguL=Xn=|pzS8RyFyXk7DF`hy(m-;7JYpgA0EC_m+_jX-_!N=^(g4)VPmmi zyJXlrkVKg>;Kr&stP3}D51?Gc9`{r!iEO2F7KSz{1yc}{fk*G(VfIE2T3cDr|G7(W zY1$^SZb;VPA*zZJE^gT%nLCZ6L1i%~*Z4aj+bCIVA~TLD8(%M&8G6p_$k#tt@ODab zid9g3P+Wn3$hxa7Uly>1oP9&2`|%zdNW^V}xel%YdlhhR-9bw<3NWz6G=l#$ChW-s zcfZL?>+epPIgV);(ooTh8Up%tGI@IDKT5%k|ZMW z)`2xVjowEb!W>RiL|`x^{(`2I#?sP`pqwwaYH0Sf7=82;DP-hwqY3(hMq!1$&n7f| z9M77{8c`hCDupqWOr~t9g*FM_790)@J1<`B_e0a;4^66o|KiCPEC#F#I3jIpf<@Th zHp;=g!mDe;O?7>0$W1-!a(P%X%e>N#0V)b(RWT<2xW>+c?zoBnhu~^E1X#rfbAC@c zuJmfzf#103*^P|a6`lMm*soYgJcY0F>V$r)b(-yIVogr#54-l?oSXbtVQ}}XaIcY$ zB&F`+0A|9R%m9EvWwm8Ch|j33)z$Jp-TTVX3X%aZVtJ6B%eAG{m2nOmoF;Xoig~sb zSat4E7}&NH8#ANIBE~j@h|y{5loUiNWVCjX)5wv=npKyXHY$yJ-Pu8hDm6eCYnCR~ zd5T%Vs<6vpv9=yFjBns>fM6goe`$HJc_m*Bz-;N4sq2vE&bM($%!Z37sdnPB_41mx zSw0P3Xx{NA11oq(``Tr|a`V!N0*BorNXW$WKRji@htenO=DGJRowP=F_)6q>WbV(gB;*B}!*f4klHQL#l*=q5VMt^{CTDJtTwj@&PTCB*-x_5_ z4I3eoORMAfX=d-I8B~k^G!xrv0618=xBfUC41j9YwRn6pr@vNT5|MM~cuPaP<1~-O)x&7@*8v!H*qE^`HZ8}`(yaeknrT0kqyP+I9+e*_iUNe6 z#K*Pr-jJ0(g69?JhWPI@MZ3qQs#=*S7>vfMk~0mSC$WeB20(wzKm_Fr_Iqf_io5^a zbI%Kk*uxZKv1f!5)QwpeMtbtf=Q8Ycw5x`kHY%FB*Y^4X-D8w-_q#nKdwQsNU0_OF z@BGkeCqy^=gjvqA5fI&npMQ+H`7^|mpCKBjMhY_>l|c!ZC>94)Byr;~lcd%Sc^|yO{Wt}R6EWEFj|194I3Y0kT}9Zvn#{4jOyB#M zwz>JrH4P5=ys0+%x9yc}NvE>FIOnpuf^qaPbZfK^iCu1hm}ctBm+%?7vk$aUg#5pc zhP9H%Uj5hA$lJWUxouX|$<%K9m$|5Za;(<|BP`esbL1*G8V31pX+XyU+j%|lDFY=( zoy93iNK9};K{|p`?NFgoqG1Bi2-=cYVV^IvkFUCP6(oL{$;|e+sJP@?|}g`3_&-0UmiEd=VU zTFj|jTym>m>9>tp9=(>)v8kei&YDPOYYRqr4v{FHf#qL;IBbOT>KQ2V>i^7>aV`={ zQn#3ng9C-4v0>Fqe^>nQ&BY^>iO57L>nURe8&64yyL)IBF)|>;`jbX<@jb%9Od*Z; z-2IRSAgw@awl@A=KWS>5yfh@=0r@n1zAv-GYEKsLvcuANmgvLacN)U(|B#0TUV+Cx_^A zyTL%5okR5`$~TF;ri#C72!@4~&9fc@A6hn>rOqZb7al#-aM-2AuD+y~10Tj!d*uuS zn3x1xqq#fzH~Y;VEnpQWA-O%%OF+BIsDy-Ij-EH{Hk_-U07;c2zzV|Inp$F^-QTO5 zFw|V#g{^h;^MZtrHosZ`Of)PP4_iJgrUZ^oHOs2$??xjGOXgj#)J3|gGf?PQ^JOEm zcm$1nj_#tTxmXVRZVR|BO%=#InlRiAV5z&|`~d_*I3J%`O5#cCT^cFlFXKoR695$B z>t&Uc_nU8TcwgN3;8tkG(jv&X7DC;Qpf!)06mGv4>P_?%z18I*zwDObXcA;2kmb?M znn?jeR1q|2(+>QGz7!xZX>(*#-?l^+Yq!udeaZX)v*=v8jb8e?~bDIp2u2u#idA&g}Ya zndwPnKZx|OpXY{j-k%tm2Z_jDCNBKBWk$`+-p&ftuN#sb#frgK7q|s7?EH)NXhzVMRI3FQ_9jIw!{G2sNsdMwC5!$0Ti_%p~?do zor!_v=M@z*8#ea%hPM%+~W)GpGx|S6Z31gBL&FQW=iP2T&v>le(Hdb}=u! zr4;hbqMD&nJX1euZ53H<*Wf3>haWkYABm^mYH2Bh4X&4hdH6obz+GbFoIZtf#lYgYiCpdh=znYOXiC zXqJ;hz`B^xZ`wX99@JVw{7xd!-wNqHQBjU^7&oG8Ln;9NPLy&Lu(*=};o$;oejH~; z+Z>Xty<+tSe6$+7v&pRCO0VYlvHx(sO_6tKr$zO*p;HAQu7jiSZPc@)B}i2COQKh- z5koodDgFVJi9d*Nb-*YiWxaXR{suukC1NP?)JLs96#mVuzOQadKZ$;;d(xar$2kc; zF5vI640=vko4#h>7RiLKa}B} zV(LD{4#FNl+i{ldA@83Y&E`qZTIa}h{(0s}hO&1vH;1W&x35MM0vsbdW0^I7ZCIE? zUnN&k8aZ`#bc|?lKj({0MqNg(JT`fBUZIQU!afc~S${D2XkIP4r&WqhO)tEw)Q`PL zWUk;X79HmUIKFiFNblp9othylt-FVWz1v@BrKy^LEsQ0`=cQ*qo2jvozkbN{6OSi?Ro!F~Y#1Bf3$ z{s8I+&@G>qFjYsuT>sHC4Z!Y4&<7Mq-On{Qc9zta?1sO2Tg1kyIa;Wk*T(`@Y!MS< z_zflheY~kD&uk_&`jqZfKrYP7yOw31jTekP93KyqOz-JFy4HkL=k{o1k89_;F0$Lv zKel-hR5)Bz0IWRDFA+zQ&@7HF+4$Q$IWUheZwFmR&}4WpFndhx0jyc%Zt(uV_)2L* z9_SYYW#;Sk8Pq0)q%=(^<-`K5yHLyBJh-!<88%0J5s;V=&W|t0_YO#F5%=vHk-6W^ zS+%>kI|cjmD6!etP~zFRzww`;bG3_NE!(v%TS513u2W~w?b6|0GIv;}7;2vI2_Nl8 zdt=EqeciA*I}%H|0LNm@@$zmC)daKntzJlA5Ssy0Ng2KM0=a0}U%!K^-(^V$mD%A3 zKHM#&rraCsv@VGI`V#$BGP>F#gyMDt)@zY+%Yj}jBcqaS^Bp>3)=>{8CSQwXnO5*Y z3D$G}hBf9GzIJ>hDC5H!$UzW?3aFQcv&Mv}|7Gyts(*i9z3;GrV{Tqh zDA}5g!y%7usO1~>@h;Tbu){5@6EF)MK%yqtJcPOY89a;!nMfFcYNpdPZVX_-WO1Qq zC-^gdoz9YT3D6{x0e5NWDi@MlroTPE4*;E4>)cCRwqPi4PH9^DgL5>nUSRL~lX+@2 zNh(E^=V??yyP03kxIarfyy5jZjNJQHW8m7{yfKtLb>2L!wg#{1;NV=aa9?#SE=rdB zgi2_P^c|Z#h0<@1$u!+&VWC@DL1MMT6{;qUql#q>1XyJ!6gWySOhT33youJsR4K^x zQG~u6<|fr7-i6R3?|-o z(JtTy#stAPcN%F+A^svq7!PukuMl~%Wf#4wV2e$RiX%m&NyaW}c$}pd*zb!`0;*Jk z^|sb~2E>CmlA_2;E5(C}_R1FG&=D`D4s zXzAiCty19vP9RP%e6*cMy=~D<|8!lfzVyL}a?w8=Y}gMSTFx^rq_BpjXln8(i9)Jm ze8u$@FG+F4TCU+Cie{ui2?ize4(;|_gtu+9>k*(X8Ta38SJiq;ndz32*IRKUTS2J} zeD&jfHp~)c<)^#q$2_mn98wOn@KD)~?UbfPSw{-ohvMB`eK1i#+OTM2P0ae@RYkh{ z((|NKkz23I%pLFbjGq}~&C8@Q3*e%L4XeWb0PY9yKS1~a;t!C1fcyiLmSI&?OniKH z1|~L6B2Fe|1~yi9A{J&A1|}9}BF>*L3m0orpB`RPEj>~Tg(IpANE$ySHf$0cJ`^Z3 z_kZ7?Ppff8g#}DnS7u=lqEO>{uZS-RV*rCt`ZhT4l%8_bc{M(!4-g3osME=8p3QPi znIL1CsF>Di#??fs=a83>$#!>*+e;vPTRTL;`%nyRD%qO0C){!Uo9wNPwE z)tmld8`Dn#r&U9G-VW=~a0ro>`GxUE3V{$+|Anu9FJRTsfx}rqtEecZ8AkRba z=LF8BX$oNEW+f>(2Vg-g3trrjG+iQV(j=51K&JfCb8i0ZtW;4PSm7n%)hil&EXEz) zioLCHb;W-rLO#Ljflw@2w{N^9P&-cYj%Yt`gp_Yz;@>fDk(3vD<3FyPfJJF@gVzFz zlTt3u=gaPcHBIev6}d>pC=CUxUz=NTanYZMU<#BqY4V z@)V2oFfwIzv1{p$yjb;K7hr&_L62ybbn2B~Yb}gZbzzUqqwMg&?wPd?Sje+(N{cmh|AXIqW?4w5NN@devqQW6M>2wN6d_((&-rRUV?Va!wwyIKbRuKG zbPb@=M*y9vDr-qLY2yS@iP(MHcM-f0e!sQqMK-*{gnRRLMnA|^hk-@&J7I1@s4_GP zEQyE)atBY~ant3^C0Bx{8HNdMnu$B_O{12$*9o%|gyQ$7|C92)IDbRy zfTFUM?Q+~crFbnDYt=^_`zm|x=~1$6sSyDs zM53Kr{ri^Z;e0~I-6AB#+|h%%Gg2SNHBlx0$%ZfyW4U%szaU!h$=FVT_`ux$gtQiJ z!Z=HqqM^j7(boMxw%!6Nu4UOD#@&5z2<~n{gS%@WxVt-pJAnXUa0u=a+}+(F1P$)) z^36Ht-TUsl|8LfswRd%O_paV;_3P@c4ZVzArBgbucb5~KNb|aUTS-=Cl!(>)wYakI z(O=nn26M~l?#ztr8{;WFg;PXgNrw-EQ$vu%j8XS0W?y@+HSl*df2#1&utO?~a6E?I zNXL$8C|YiZ%Pqm4s;f@99cs}04E)OQuzO1Ldh;gPW(G*`wdyuLJ3CjDz*UAXPEf@vy10u~)U)4@Qs zhPa)_@DlDAwu4?MLL-rR8~Wo{AnV9v4t=qx*4R>u>dgilB|n*Mn&W zY5}u)q11!Y?oms#0|_kw?L>C@Vme>s{3OyoLcBKC6*593AO z`~AV2sAsT@K6t$2*NWj1$zR7hRnnTnIra*R1iP~sem|{ZBL7D8#suhw;lltO+Q6@ zB(z?b6N6}{?qCk>)oVKFsK&xV5kp%e^}7yDq7)R-@R+Bc^dk~7GG_842x&cXI><~Y zByTa2^eBmq=L;71;*@Hr!)1sW{fCof&8(ElOD)si9n$&iaW zT9|Qn73Nq=E%HSl3!84C?5JoQ(YI@Q@+GMcQP0?>B8Gov3_w12Ro7oZ?PpXP!%XiX z<=6=mDCF%rMV&G6)b#MaG9KKa=6&pbP(TkOv4~+bVlEhR*C3pQy#W4sk;`pI4RQO?=)8QB7~kM3T2?nQTOO{489G zZeh)dtTYwq#jPfCsu6Peb_7}|eX63(q{>;vV1VB3W&2A#h=6`kM+~ee)%4+J{h612 zr+dcCtGHVq~BUeLWRWo;Wbayc|cO~cKa@XK%I4$5i=r=b28I@JR+`-b#iX3c||MZ-0#v45P3&^>%)6@rao}$ z|5yM6m5y65-%B1uIgYaujtSJ2Q`YRdG1JdUDCL`6UiILc?^E%#&*hHcFC;e~sT)XO zo#bt23e=sPD%|sS@5Id9jT>N{@>F+}K3?_E{Da*07{0sE*`S!ap6!}ssQt#;(a~~P z{==r0{jJHtZ$EAgZrl09Z)s?nlb;l)(EFey{KpZazGR~+oepHLQ2|h6v@W2=6t>I9 z7TuU*Gmt2qOyGsGD{eryndREv6QN@msgXSAYt``wOqnTsr$?E#a$~DxbKE=2mLPq6 ziM}fMnfHVQPgxCiY`({>gD(gI2wQjEZ0=%4+KXea-0Ync;Zp*kSNN10y2%X*k6vq@ zbNplXOT2Tbsc_4z$aui_SM^WO+%?thaBwt7Fxas4p_6zLUsMCX7dZeG6_{{loPW&+ z2FtKlAMKW+GM_s1naP&0{2-U<=`7e?yIG4{3lS(njmIVob>k8oh*q~1Q%qJeSPk8j zBM6)Lc$b2dW<<&)S;~Da3qVfUE_U!VQprZF$9V}(gOv{w&=~-J9^FxKgf4FrP`Txy zRNg&QLC?J9fQ<#&RZjKAl9$k{x1G2DS`_m}Td2xL>yPiIrl+?~6ih0gtn349MHgC`9qRb!?7v=48ckm6yU+c@H!;Zb0Fy~toDFyFSe~GKS~kpt+{Q-9O)g`FFr{}VmLQOF z8m|;8K>`RiLl_K>b^fIwB1z<6j57;5V`({MWG5kj9FQr`zK&3Irr8lf2~tiGFYgJmv%ZQklHbP z$CPU6Lels2pVDRAqVWR!=#{%H2q7z-P%Sx6@lf+&Y5Da!;4Z9Sl|uh@zmrzaj5x-c zvNT{G^F*D=h1yRR2?4n?pb%(605fPPvrCDJ+dgb)nyQ9s%4hLgL0AsGcDnJ%-z2Xw zLKKJzo!;5l$3{}-Rb*wtg+mm6<`kIp*)Rev$JR+`A)ric2m%$JqK1JCHEiO6y_OJl zQI{$9yiWJRe`ZD-1J{p|DL~9HhX86w2ZR0FI0m~At#~%A%5%ThEsqHvIweh}gc}X= z16hBia_<-$7PaIh;?|fC6XL#ct;E>a&LFV61l=Ll`}g1lt5<>-WqL}mlR`K}x>PQD z#Hjs}K%gyq8d#}eIw9k8K@xO{-u-s1BKgvhr5JPz>5^iRh3He|x+6E8&c;0_%;>R! z?_Z0%ZfC~9j9SKcD0pfx^PEZ9p}-JM7p3Fa*Y(@uHsJorhp^Gz?HdozS&?vKPzJEw zx@@NEW-s;Kl~8R$H>x0dIroz~5pBufOlKg6=J7|=1KV-b_Z{5|(w0F0fYx95nL@))iSmc$0YG>}+Sn3zw+E76li*qn09xl*{(^|%nSSS2A zwxwD-e)*-78}r#~XxO}7@7vTEDLcSNxJ$Xiij6rX`{9{hdi9JXCdUPh00hvA7Nw_A z(2PdO`K0cbXA_~=#@B>a8{eLPW*x@Jji}DVvOk^b%Bvy2vd`&SYq5v#c=*FOUvxWkf#2(gf z*1mUqqR%=acYE@s%CYWiweLOZNMuOMhl7&$o8N0iq#tg( zaQ<=qZt(;A=H|je=EHZF&P~PNg-)LeeH`kqK#SEc5m=6zkp{zd@X?wLz@Te>PSoAf zS2)MjR%3{T$IbK78WN4ppO-~xvZ?Zy4X%9Q%wM=!XPe~On{iX^Q244*v3E}-wJ(VW z>vkECpa(jk*G8}6vp)yO6eA^KqJ1e$|8sJzvNR-+5!@duT8~^S97qy^^u|*AJCRs3 zjCv2UVqSW!tGU_hQGgwt5s27f*!CT{DE_xFr7)8SyKuX`pA$#o*hf8&rSF*mjVg+a zpV+n3$uXVBBMJP+BSpQ_FoTX%p3fWXSEoZ$4IWLfJKdkFjyt$vpZLd-aJJw|?;A)R zL0R&e3{C#Tg^1Yte=1dZnRA$!%zd{F)(c?Z_B>;ur#p}@w9ktn?12Z%lB%BsgX4uP zHrCOzXi*#xW47w*Y9Rv$BFfb5tVvjK9;ynPp4U5%1?gOSNlLB=LXjd0WDZzoA%np? zp6u%)T;~SmUAq!)lkjhR92{`J6EeEcn;raG^jLmMC9v^o3NY}8fKL+y`_7n%=v zN|uv|oiQ_yU8~(gl&OO&Pc|P166Ug;Yi4ATtsLdYep6IJxnA!@^-vX;Q4{?0$HSV~GR3+VnSPMaDlc;~(@!Dm)w` zMG_7Wo2dJIJv&fNb>o!eSWl?wG_{~?`Lw47abKlkB{zEYjWPM&V)T#9816c37x7lG zjo(L!?PFQbSPrDuVEK1CP~vwp zl50As#!?_)e(jqGi<9^hz1v_n$~!;@p;}&Q#nKnpO5mrGCzpH6`hCPw;iDj!ye}MK4YekD1zqp+VcGMUsg?4V@gM*e*e0-me&p zU*s3pj)d|Gd1#QP{!Wl<9vkzWb3CSorhB1;WIf`%s|~jr!vu?rpog^gc4V`_xe3`h z&1K32!7*dB;|!6iFG~WTQPn89Kz!^!b-1W>&p^lwVqu}bY#P{5TwMPPW^lOvf)M`~ z%y1Mf z3w3aTFvI~&P+XjU0Ss9X4G(|}3@$Fr05~8$9snlV-wz;XmEzZ$epy6&P@9MCnEp9MFb(@kq{?MRq=!BJ^>W4{sL|P z36;1xK$u|ZF#j7uaVI%v;DAiT0RXK3E)O?H(o8KjC>P8F35f$RA^)M*#Q_8$A8|0U z`iCZ#0MpH2I>{&tTv7>e?0azRzp2!}C~k@Wp%(w5T)`A12MAIUEX-de{Xatfok&d* z9PRvHi4y*zm?i&C)CNujvi1lUMT=0XixGlu|V#B-BU?{MRLx- z1`S972$O1ae-zyT#l0~jH>l0<(nf?Acq6>=jDfQCuh(xJfP z1fO&J@5Kg!AUOqa)pW7(gZ9+{{2*pU02atu5m^ot zr3g@jWKa6`Ne)Dz1ds=bC<5d_jYof4&*sqzfY^kccw4c-$aDO#lPPPZ@v> zzE4mFzY;qo05WLxuSSQV0$_&X;sc4O0BrF7lIUNV{133@14HH?IP^e&P5Go%u*v;d z`$EfxW-*#o$j6puP07c0`|}+12TmRutX-8^(wAf8gk)RCCXy-eN)QxTV7$|SQiVy^ zX_V1se9j(^S!C|QP~`g-f#Q-vTvG#R@A&(b3>{!cgDY7gSwX9 z?mq{<8id|Qtj*Qg>1qQ#8Y)({h_HVSbXZ8G&JKSi`Ff)KhEmMEY*L-Py*4%Q#kNnR zMcwHdCCO8kJklDvK*b-|`| zo@jXiK0LIUfy^dgIGn<&uJ+6L0da69J5VL6b<17$>|N8HN%}JoRLNymEun8(VAxKw z>C^BQiPnHYJd0)YC1QZ(Qs>fIm(HPYNs+^{&pO+{i#~RX2hk_k)8mj$54ft}cwj7J zJ8n&4Ff27h4Exfq19VTuDyqfLJ5dN%;u)0*sP(^VVbX<}*+5=aG+O$+R#H~<^_y%` zF1q?je$Vh(Ce9d;U*Y)BPZ#7S+)E(llj5!%%EAif$EVx{RVVw*KopIygBO+ND5#<26?TU_C>YNa9ED(aK+#6uFFb;IP zNBY9WL}5y3_fr7Y>)KDD0V7^q6f^zgz4QZ}BQb5;V(gDe*Bjmb@)#?2e6{eNp zZfJF5hb1ZX=?3^3D7hF^>HC~sQ(!7(BY$)F}jpgJ{%5~X?W3RDVz7O#h zxI2d&7qfpAh?kmPWn9^UmTiUsW>zb3kqAS-w5k4Np;iKWF0dl42oO4XgJZcFzy4=_ z;pPAL{DO+}_aN|p*2;MK{$scxhyQzUCpQ3%C;|*YXX*e6tiQ&KfA!M87PWZ!|60@n z!D|9Ap}={AJ3AxjKpKGZ?+%Uus-y*z`qE%~8Ac-v=$sZjLN0DXvVhI+POjKEFg(0` z|9CF0)RA{x<-q{=@=b6r{}hQ2c{5Kn=TUSx(BNo|h9Ws;N2j*+A#J4kJOZA6)MSnC zGS(hq%ztauz-TM^L{=`KOYYCZ)7{aoV=op>X##+@$upE)ENmoFNo)+IW$l}1)UqAm z4}9$K z8&B9xbN&9$50rAGkouARI5pWXO$Pc+eJVUek@4aMJBnYl4ZHRxs!$W%=T-KNUiGqf z2I&Z7aZ_j>^|PpkXgr^tvN@$H)q1XfvTRAE?1ZcagU_=*u#0c|>J- zmDemjOVUJ=t9DB~TFIorKU||>n7+EF68|EVsFva*hi>TE+ji4_&Ein?fZ$Wh!-8Qs zA~bX=LqOP^ zFlX?NxUfJ9hDsEDmFQ(rYXcth+Mbs`NSl=T3`u4b5f$G*QSr_+HJ*>LBrB6^piWn88xDsQ!vS@A>Vm^)wW2It=n6QaHIU;XPGrj=CoLwxg3LYY@6)vkNXsD0WAmk4}FZe=Fpw+kl)F7*wkxi%kkf zdo~p)@K_sE?-40y$G1cL4g4O=PKqvBidmDVS zLE-;Xo>9j|o?8Ejoe8!9MF&atHaU~YA7y;MMj)uAel)EeA}P%g>UxBwGBD~`obXQ2 zXj_g$_awB%=ihO5%q=+H6pe&e3fS~77Q|A<^AxIwsAr`3%|KW zLx;NIcm5vl>N``<8r;J`m~O~7bJ>YxKsFHPvfjHBAe~d5XLIGmc;6YrM;uZSNzx$m z^}D0%r_Vva5rW~%Xz5}MJ(+}7j_Q1;M@ql!25+@ z+&R^Swj?L5Yr{Qc{Zl17LR zM~w%^R-1TcW^AS(|4ek)DlJ2D)o^uc%MCmdt6(*Ly)_UYLmvWG@!m2cg9Ngw+FulZ zWZN$hIQx`rd?HKFnI&7tV14VWMgtuSHY5NbrGpYu6cgKbE0g zVkLR!uaE!OZqW=^)tFYGuPcEDAGj%i*H7&Z9HVkWE}gdiAS%e|B5O)~pA7VUK(3U&kJ>QLI&CyQsW)c|)pd-g zqGWm4CDHBR&tjPz$5ZOXWH>QB1V!Q=@EMnVO!Zj>789$o?qUwZ+!W}pJ9!MrpNa}; z09s**$C^FNWnawuTZ_l%3sNI=Usw&O^X>nhIU)J}(XsjdUmct8A03lq5xVVNxzmUKVy9E^;1ru)hjUK5{N@b{0N9 zUUD8zHWnVfq!~uMBsN0SM0yMmk_i9}?ysqrj~ldQ3it>GzLJ^&7_s^O+pq*?=z|#` zUQ+-n^*<^8*7jL-boIbn<+xbbdBMIk`1o1a+4#vF-0kcPKph%ji~`opMUqI!QIecw zQ9ws#0BR7AIe?XioYl$FLR4IgjfI_?Tu_jlRa}hx?|Wh4e^{o*|7MvQ|BD4OHwS2f zZDwuefM_U4_9iJSzzQTJM-#aXKot^_v&qF4AO{7>)zo1R(1e2KKgo0!PsZtW*G|@)_2Drdk|G*$*1QB)s z_Obs_t^OB_bFp)PR6#_zP4t}rcP_A*@9(IiSAYlXzZ=Paz;e=8`A&S8acq*qS!$-?}T`; z930%>b%DP=IT70gt75R)$Q%vpiQeku3H~9XAtQG>E#>w=Q+Ne#o}EDkx3$50B3^0T z3E!KYKLZzhC2_|W3*AXfl}d&+xKsO?h$jMPzoJzs*o{}bKp;}P^JqaZGQx8*GJd4Q z{azGTPI4h)BEevvi#$9y6ZB37hs7eQu3e)rJCADzEZ#YQNbszKu5pG~Zhljn8N- zAQcz^j4S6BB|(5{ZH8us=t730%lHNTUKI=YhLme<5B>DHYRl^I$oL2fCJ@$xXHOI! zW4Ujl2kHO{0v_IKm>x$qSyx`n_@R5gXS?Y~DakM<@Wk=R!N%0m29D=}(N#ULK9#T=M}HGI z3Z2%r%-0f}D#qi{C2#hq2z~Z5IV3DJze8xc2RHQLqlhdKelCCW=@%xT@?A$reniL= zFt9K#By9JblIeG*PCc<*=31aj;yXKJ495F#MPL;KiyK zdmTjmJ3p~oAkdZmV{j85Lhftb4qSzP#onf&-TPGe8))o(BmCXsv5WcfT}kHG#N-(( z_o?C2d;G8Y^})$w5xC7lcUM?42x{pIcBhApB7yEM^h&Jh-oc4CpzW@{Vh_9+aJ*;q ztjoS0Qg+n~idn;6f1>hzJ*8_`uS+>CD-K#^0n_aISr3veNcy_VZ8P8ejnvOQu$%D_ zgoGf>|Bgn#YjkFH`5am6>I|)5ps&z@(IXD`fh7=~=z&QOLg-!31OmA(B%g5^7J_98 z-RSTj_`x^tw>|`3?M7Y~CVHSGa2tIawnpYn%nt&u^qrDa3nJ!*tRK$k+hYhH1d|I8 zgD<$3tRK}#^(CbHGWm_%NpM#LfmnIBD-xer`4$~&Nc}lv8ItJ;9IQ!v>K;T`{&&ccvKFF2*8Ju`rUtwYcy5}50eo4gT>-*^Y`t>_QH*h559p5=xl-MaWaHau$Mo9pB@Ry8U0p z2VgziA#y5!2R*wV-=fewJYGPA`tfsQ+^OS;FTHLLON358U!|YUsW)M!h7kP*_}>7G zw9WWR9uB#{ixBF`_b}qki%EyCo6q|juCGGL!1`p=-|-^E`amOEjOq0~@TXXASK$uc z;(1(xWJNcdM!^LN1_lSRTHu0)h;UhFuBHFiA zV|}ts#^{b{rj=QQpB>#%N0)s;lw zOFmKWn015p56tbznpS@p;_vf6kJ2U$ul)!T3h8;iol}#Yzr@aeWKewEEp^FU^HSC9 zGFkJz8Sz@Y12M(>rLJnOmhWhZ`Y@!KJeA;@VrcM*e+Sy8@W&{l9gj+&D93xBMe(@0 zevC^KdXrl$E9)GgTA|wBf7PU7+klx|2BZun3bsaV%YU7>BjJNYu|7Ze&}6{w?fxhU5hsw~+JiJToT8fI_h_|6R_Xr!qhlq1 zfdYr{^j?v?yYybwz)T6^JjAi(Cpn!--cjc?>X;50T$`T9^V>4Pdq)|SXCSwEb#ifBof(ZN81h7zF zv`eAYB%zTdd`;3EAjk*xK?!ncvL~8Z(1Qtin6+p`N1e&2J0MGb^yk{uB#u8-oGn%v z1Yo|xcmpB)I}*U{P)w~#K3c-+RU&oScl#|_XqP^ze2+~;)i2Ik65 zefCa}ccmWk*0+*SdD7~H<1a(}dKzB{q@++xf8a&1NUW*Fd+sgnKx!oYm9xMt%w$%9 zs+&{28(IY-gX>*d($*}DLFwSeY}uCO@0H{r9r3uE-oXdU1hrbo^bro!PJjM z7!Bd6=bDrg6HK&9F;vZ}hlSy2*SWbk(wefQp!B@vvz0X7@sN?E0;u?y14~#BtUqxs zb81cMkmv18vVGKZ*ZTYzdhI_Ym>%e!)qJBS`zA*JIljS;YH}^Ymqf&SaX^ca1kcf(>90hX(Uzum$CX1RU|GlpA}7= z;s$lb=3NbX`qKas;S_Fm>Mi?r;Bl`=I^@hS{Gus`yFXE*{p3dRjCa zZTTByE7 zvMw_7mMwi%tg897l#7WJC`82Y@+lhD?=lzv-oR;TmM~CY-I@ z8HfDfb7$l^ZRa$(;x^jpFwiyQcT&TZ>00L0S0oyUTTY_-ytc;*p-G~QCr5+%kR7=p zk<(`hB6kasP9!C2{?4 z=E^lN_sPiR5|r{xj;}0pO1Zt3&B#$HdFEpGaUooGl>B~N{g#m`Uw~w{utO5DXTpkt zzer58T+GpLfnKt=%AJvzb)Vx%28}s#3 z6c7%PXLsPxSh1q(?OnO33m*~F0$%qQJg4u>tC`pTu+Ku)Af$RwqZjT7UG?IMro!4^ z@{u@GcKO@4dZpsV^#IK?nqpfl#cabYk5Zczn_*8YXUX7m<$q~%rlJ4BHKu_UIydgz zBI+WVTlm`DP1M|~HC8Gyqv7A-j6UKm3iD>9;O3)CiQtS_qvT^J=hD{^i5|ypTysqk z*acm-HZedHqqptsiZNVOp5ChL)3rc2z+N>*^&uvwR;LvVt(>6oqEV5mL~fGg@uG1wB0FJ`RF|^aEzP(GXt~G6 z%m(CiBxxjwC~{!_J*}Y_UhN@T$vWcNh10J0^W%%FM6~X@BdRI;q`ZDY9#UsYXfva{ zhXmuu#f9o9{jYWv+9+lnOb3BwXJ4`Ku@C*S<@1I}4CLVBUtjmi`=g__-kshPaB6tW z@4x$Wy?t@??EGrsjPl9S+JrZ>^_bB%0cvxXc@iIw2qptKK+g+P#}rJ8D6t+S?8v?n zykdtYBf+{i=Eve);IVjA6w1$*a^zdO zWl|jY{dX8JqjQxn9dMcA) zk2syAVmlfjW4pt+wgXD>YRpc&b}!U^EabYldy+=v*UIn5{MpkX6**!(1g;^D?C#42 zLPN@yXlhH4TC8`7WXD1c9S%nzHX6hw_98n@v1#2uf`0QetVh39 z-72Aulf~yNYrMBtGzo=KN$GD&Qg(5wUn{+uxF$IU!d!-l&!*ael5&aLm<|Om7-{i| z(SwVCj&O-YvXaKk;t8Cwk?vZ3B`f?wY%!)MkAwvAKCkUA`PCe_8c z%F99<)hr}8OFs_h^unUg0|Ff;N#<%NB>b`3_YyWosHkM}{V&G1(%hkLh`vtA-055r zC-97C_Ew0Nm;MzN) ze~ZiT#@Y6FFb0HL0-G)HopY>1BEp`$7d$x0*2|Ht)1?QWJ$N=q+0FThH%3jrp`c;D zWm{?!iYd>__f5Z3G7&LUzVuA0`kmD)5Q_01YH+ zc00;wEpzR3(7v84^JNta1epU8`R&|#i#whbb)l~gXFY4~?dVOdY4`L; z@BOHidQSweDz~S!Z^`iv=1Slge;u1B6LU*xXm5Gqes0f~<;Z<2A`eh=mlGCuuse#B z_N_(|$arc}Jrj>;6lxNXoQd{70&Yw7A8i+TWJzZ?4Dw(5q`h$K%Y}VsJN7LeTeehn z(y6W7wYm+3l?_?8wD zP0YF`p3*saw3v?h72(xP+Lzrx8Buu_idb#cyw+1~Pi-@3-WyKparTylwIWSwq$t_( zfLB@DrPY7_>iFb*^}K^6cwiAqArZCsz+d1E@luornjT&xzv(kq7VuRo=%~A0wCv|$ z>W+46!ozlCCWUb>9MdXE;I>UGY#*WfPS!7Y$zv>`qBSERDhQudoh2}_EL-97BoqRX zY+RaBJat=EPzd4o0h?-7cmKkztR7VVb1aN;!T5T@Acd^%>P7XzDmgKJrqR@QoPMD_ z(yhX%meJAQm-nT(@<0!NsCoMDIKj{IhGi^4mu@LZA7|GOY2u*cC=Hu-$0;PZ%}Ui_ z3^(ejvwI=dNXWfvgEiI!Q`12}eg(LeD~Li$GqU!`lTQ*C(XRwBny6 zB;-k_d@)+z{KLoyfFBl|Yyz1FTpXTYMaRV~~?q4$*b@t(uU-S;s`sG4xnLKth^lO*4U zJw@E3d2jl3QZ9LfFziAhnOIUojn{UH`+O=o-3? zxoS5x7G2d3ulqGZu**@+Qdq9b+oKqfxW;m@0I;xp_RWq&xBl9Pa$sM!_cgl0lap5U z^SUEY$8jDAK2S7h&Xk1aY1lPC|41{C_Bo2L}Bpb}YDx;+Jf%c0i3&^r*Mdm|wTY=ob>JALp#Sph1nt7--S2 z<42bHe9{rPxW^K&o4#b=Ct;SZw1!Sp!VXc-hgVxrIpz zl_;5*XQyM&4dtSBlp+a!jnx7O(reejd$uHO}JBmnT5E)0AeDDmyp#XQhS z0$%DK?~IZ?R*|zi2TMPsp839MrdNpj;c3XLwh*8{{)pd!cNfF+Sh6g93p$3MK5ObW zJb&DAtHx%&j^?EK(ez~~2gq*395DA?fJH%!%+*#q+G z(rsaJN8TH_s@PpXj9|S3j$FT({4C4q&Y-(GEtSuncE+G8yLfvRVKs%

y#`6<@SjtHhff^grec7SB?-1O-e^GZCXeA|Zg>9i13 zoBevbloY%Aub(Zxlq`hian5>ij!0nbZEoFZ=}VDc*JRT4{=zDO+4M4Sj| zt#|M?T6ux}p3r#7T0*h4;^=qdQW4NRcMG>8jLdgoNvtQozQG#)+oOP!>4!Alb)SRA zQcS?K?11z|9;}Epu9=|Ev}Pvov#})VAHJyzN1bIg94_suO$nVoespqNv-%)n)zoxJ zY)sr-bFb~jkum=Tn%*CGa-^P+PoQ=3jT)n_cHw~)0n~~Ts5jBEMBV4cUQ+h2b zarZ{K97i|9;crAdC!FaG$5ZR>bh!Eh8nockBkapRN?8mDyk69d)pOq@2NIw!|9plP z$Sg@MIA!}_XU+k-`XY1=gz5=KpZ8)Zg)+f&!3w2e!W0XLRA_{dac~SVZj-P7wqJq* zs|58lLk?TibX_h0OW0O6laFgc&A~F zgky;>3;uecau3~il_gxba=swF`?JW_j-|%EF5H6}U9kjHUurE-ic44C#TeVF?mP}$ zRNZ1RZhYv}RU(&b6v^=+w~$Z?YN`&@sHL2t6Wwj);J{xTy|Pda`5{|Ov}=H^#R9R5 z@c5cq!56l|#YkD&1ssP?Ocu3695Et{bva6QBT`zr{TlY?HN?GZCm6p#BA+QDy>F3a zTV@mO4?@}PM}0&aoY3$$JA@3o4G@TN(>UwcM}`WPR-H>yvY$rQykBc1^FjL09LnQj z0eKYkb~1q+rS587^?vbf-G`(mt2z0O8v4+g^wqpZ#YY7i510hhIUA4tpStgo(8=z_Es~&|ns_}V8|CS>C`O@OM?p#y{6s$N|tIy%0-yPd8 zk1#YJj=Bey)6&E{wuPWo2&_k>TH5>{bOc-L7+B8S(4Of0=I#2WgNUQ9WL*X8T&W64 zhq_O%e+$Ch6#x%ue93-0PvG#HuYvm}wATZwt$U`Nbw1^==Owzehm6Gf#*%0v#Mc8kCy4+@%+zVd5Bm`Xss zYBk2-ZikWMf|FHo*Y^0Kn51Ky{OM&H*_Bt-I}~sw`xNL)omc%~3GvzdmK$o-^w;y~ zed)dy@g&)C&}pVH^D`~Fu{VrQ(i}g5i1F7mJf!^3ylghq^!sMe=`b(CkAks?t{6Ace#4YJI)SC*6HXPG{1m~Z{`-+)B(0mA?;4c-BIkYo<{Z)-{+;9| zTR%JDVV%d>YX{C<#*KVABX(3(SnhPKDgFfSc<%*xuwy;41?hYU=sjO-lh@faE|#|T z<+C;?Y?iOuah%-zywjvHNl+ohoTqb`%1lDVebi>oDg`~r^yex0G;jU4VZ(fMQ|F;_ zTmRF@U?Y!dga5+t7djiwG$sQcYGbDik2{I&@)U0pIoGKR!T!|14mS|41b7`?I~xNH z*U1YwOk-3^!dx{g>eW>K5Wbh$h zF)}HKum7SB0Gemkv;#ZMZK*6 z=TB&*>{JSxo2UMG3yy)h{TUx$Zz0G7O0Ie*HQ{EirRB@^6FWM!0>T#mEZUx{Y1g+f zUkyxlqWtgZKioW+R?KNp?U13jb)*fi5biA10hf;yy4C--%To@ z!$hLJLN!jnxnpRlbI?zNmAc5`vwcL-pBZ_8Om{zLVm?}?CEfK^Llmuce%{{E>?(nC z>JX6_Ssf~L4g{m*=P!<2gno>_inDZx>3(i4e#@FSnmQW+f2yx5HpseW!F0Xn8j7o7u@XNg z)btK<3g+9Gj)sQzeR7S*$MQdl>{`Hkhb?Q*N^$wl+xhWkEaY2yXf{!Trz+mjb^HL{h5SzRbbX+;*1QUiZ)Oz%vtKWK&AKz*eC z1{p1tRH_f&c1IH;v4e-Q`AuE~Yb80%aHf8&?-SMo17F)OARfSje2IqSg=Oa$MW0I}tb&`WaJez-N~fFu|6}XB z1F3$$$1{=@ve&gTv+lj_wRd)8mc2J+lYO&C$jX&HBP(PJA)9Qn%gBuE5dB`a-tX_{ z9Y6o{IM4H(^PKaX_1xTZR!ckAmZ^@dsaA@aKUqk@r0x23g9jX81(yB&xjPTv+#chn zFXSB}8tXou|6r2i`O&Z|I~g`uziqdM_u=h>=wro)c(l)jka{nzt4}a=#dk7$t(CN0 zLR)%d8F)9P^I7>Gv?4&Y_b=A^+g=(nw#o;Qn*Ye|^@}hbqEicd$FJMg?Y3no#O@OP zt#?&3&3I@7?&NUBL}T8&1wTwklrX{-;=^RU|I-N#OE zGB{m*=gcbJ8W>2t%4cKmEYn0s0M8zs+ur4IDP6d zUz`tOQ7tTp+V-cnvCI0-b18T91at;X(>H2b6kmc3wkYp>BAA=rgLv+_zsVeGv9jKT z(CEw=nZ3<2x^^=F0iAU2Rwm`2Cy(ts=h8~ar7D;iWP1dy^g`(U?45BG-O%tx|D}?b zG=N?|l~QFWUzhT^_=1+V;g#0$zyZrDG62aOJ$R$x(=4}2o^$)65WPq9Jsx+KqMYcB zEE1eHVLQvf<#HKj_FSngd=(9S{kFP*2VkxE?_!Ght+JK-h^hMH&XQrOHuSN@+}i`j z(`KN>=S*9ir*8+biwXpmCcO?qJ@1DOVL6bK{itc_cSq8xg?V!|6_GHTfO$G)fK4B&7-?~59E zaP(+7L^McuH3yL-m92K$GWMm&s2`mkLnd^c;0wcO^$nKq0vu|}GpX!V4@fUUInR3@ zT7epHzhsy_OYXNH@_Sz$aGKGE$4Y(s?NR!dZ4dh&a*(sbO*QB2lykNkAyGr)d1E^^ zbw3%!XX$X zgrgz2N`F`1Pp#H1|Fc@f?vZ6F9r~9g;-5r%pK~e)wHV%~zntInEE`^Bl~*3j`~NW@m&$jtEW1dWhY7vJ;N-H#NP*bL^8-o~Nhx{C=J;9e<64Lil?k z&%Rex${o>s<(z#=dXlf^fW&a^Onw&4c;Y=CrPyzk+7w`{pj;<=@g2`C%D`B8K4&_D z@Uu(0KIixeCUr%!r^SNq188#+snPtxXFpA!j3mPo(jG*;zP?uBJDT<;sXeC%5gg%- zF1r2q95LL`)WAy1u~>?B#S|I0TnXXLl=s6-!JN93212_FV}-ld zENZRONF_?&raRbEi63n8>Tp}WE~6-_`2HC&em5m8>lLY#U2y8&3p0{RF`xRDHH7@znO6&AdH}8jC5l|6I#WUD>aaLHudrp1!AvBJljS zSAVZ?#6*TQc_{Gl#M7-PiK!BK(?U2m#iNgFsME=v+5IOg*S&@G1v0 zxTV3VJD-Fu?Y~D)W6dmhZ7G&;ZPdBTN5Ew1q5k}oY;+zumY0wy0Y*fii>PJ*ORFdw z)EfL+ltPXE+PZ0Axph9Z@kNNC#^RkOYra<_?+tyS0rxi9E;Km1%D+!l2thD7+!dkf zU4)1Suck{^gK-K8o2Hm<3HaMP1}I?ac>KKo!5b&;MdWSGiA9@XoPECY#yAPrx$Jqe zJ|{;}YYdUAQ^`^u+J+6y4oACDhZ5rW- znA?f-Smt)DlhVxw<%f@5`-I(7@qh)kRz|f48#o^1q8AR2{pkZ=L}uH(^D~!}_5H*N z?;&GHcs&=ZYhBQF?5290!z3_ZpI;lB*u0m*SH)squ-?jR!rp zRKtkgcl#e63OucS^zJ20F7vynCb&L2+2XOvAzrDGj6Z91{b7N!u6*;4oIRPRyVg9R zl>{Tu)(+a_;=Rp2_}0J=8q$=fbQPmyH+=Y49oLl?Ul@JMB)4l{Ois)sgLa+WI*dW5 z7h@f&>ewFC!Z&?Kw{I{_+9qzvn^-c#{sL&|#q;`|PRV=i^@8OMeym>1)#NNTW-F6o z+2h;*4b6K<&W>Gw%(EYU_iYh`!}D{QJ42~$_75Tajg!h$26~J+4`x0qn*sd>UwyK# zM>x=ES~@4+w#&DAd6V*>Z6a}|X+GehH*NL1X;Fb1flo;LOu8V@b9T;&=|+@tANv-A zDPkm{gk;G(RkR?X@Z*bk>I9JR#&0FAciX+UrIRS-0K8TdwmAO*@i8F6WCP4o3gvF zScAQJ4`x;#bUFCHiG7DxvW9PeeqdF0OCgbmw`WP>gf|{829!Cl4T!#%x#j;#W7O-^0I2owAQejIU3Y} znDkBB+ms(mMc|0|S}W1dx+s`XbJ6agi!KxiW0fCyIE@pY#coK)>DlY8rLnEc)nIaG z^P;C zo-b2ELpV?1A)gvrvBb!t*>!Dq6Ii@KL*T@O=L1W-qQe^TT~7S#j^%X|`4Bt5+| z<)orkNSsCfeL(`;`bGgU)$_{#Ru}?+v z%|s?5drUd4M68Ewo3x*QVpCx-n+q9ySvqky10#srcYcv~k*R~Q(qV1_`QF&i7RK!Z z^SiapFxn%;{Eo#t_Iv7}<13~4^^;fSBje%PRc*H^KEFZZPbh70uc8u);Tm)_L;w|w zH+kRghztTz4YyZuj&ZBPXXZ8}X)@-#7*_(>JMsn5SMbb1Bh&gTy91 zBy2K@x?WllqTGp(g<7pukC}!IO)zdu_mWTyJ;%gV^uVf4=G<>3Qw;Cd{;1ZP%F~Rs z!sSq-!qwg^{m7xVf0CrSW3*4qs1{Kn53vbS@FOC9SbojHye4OONBG$yl4@i7sMcaY zbT*5>u8@++Yr93kW|3y2WQCk?Cws|aAb+Onl^xlZmFiIP6YqwC)67nsn+lx>U3WxK zU`lImE2W8Ml=NV5EMKCO3~8rKpT6MQ!KSEM-DZ0K8;?@?dB5&2ueF&Ne^MceuyM3Y zlE_4coeCU1v5LNzk*;~-itO*$n$DZK)f|UYwxV^Lh-E*5S7)<0!>suRsDcWv)2F+x zupCLC&(`XHO0=0A`wl9@Kh)D)v0>6X-biG(c*sV-;Nxc-8yDF+IpO2bX?^}Z0PB_f z6Sw{LjcS?qNMzFcAn6m@k_lAJZA~lJ)Bd1Xr%W} z-VByErR>iY_@vO}qTHM3(J7cSgMFYqUmxLqcmp5b2y>2X|_$n7`p?~fEY_szCX!=IDJwg>%yHwXb9IWS2w|hRcqVX=XZ<--zJJS6MuZ3^GUX~r-P_Bt#4#L8Mm@#q0uXW zm&3Tl>2df2=FLs|xsf99gLe;pi-t()Ij>`NnYRO_JZQ}uIA}1j6yLfv;vc!6FBESTx20Sh zb{H_1*GXrMt%b3_N?TX6#o!#=PH)_0ixa6r)M5Mylb7qb{YGiAVQBnFr0n;I**>GctX*^12X%(t1k~O{H(g zV&WPfMAF5SfBT3I{dT_AIw6~50T+)reK@^4@QJ)LpEJ{Zyw`Ylq9?~-y@{qKH3l}M zd@*!Duo$Lvou{?cq%>+#yL4S<~0T!42#-K;iSITY2T$jK%a@XOr?< zF$EqE18j1txH^UnyR_a}C{j{C@TU@)jpyu+DwwEUZD_vGn+|lk*1WvaG(i1~-6@tN zepahalJhp}uO=_mUU?3LR_cm)lEFRY4Brl!YW+`T7}mn}xsD3Z`cC@2&yUZ9pZH1y zzc=m(v-7Rq#-YGTOgQNt^?9vc>ie=c56-T5*RRmiBE56SEqZJoZ*wn~1x!FivocAp zo|5|1{dT3mx@L-BELe8NfnZb13(D@|VqCd?_epdC?~`CK-=13X48;SfAc-cMN!f8FQdy@rK2|~9stv{Z zmV#7`A9k^_X-P=}DJ)C*Ef_<}Pd3O1!$F+}j>`i{H%*FIY!SkBVR2^H9i0*WB6NhR zrAEpgbOogq9A;h-^7z+uhLsf$ym}hf zpLt*J@Dt*x@~p;qLNm?#mXH+g4;6_u530UDa>$73SYc4vp(j-s&BAtv;x=7u|CFwA zKO-iclh2used~&le^m~*55+~ALL-B6pzps&l?H~E*CyrOUdSnP$qKhcP@k_0Mc-ZT z3bqYU6U5dul_6Tw%(C^k@zemBfJI?_aqyTW$j(PgF7s15866XI2h2`Cr-QrDx;3y`z_PInQQ4R5UVV;>a z$Kvc<-6Qoi-dQfL^9@e3=oyxp+VDA0;{Ex)#t+ec?uS|;=iZOJ2`luzKII|C?aDsO zSh5(8e!3%svl38rcsyd(6tYQ*Kc`D+9}X4g~Gom&35yD3;Pt*3x0hb9+(@p%Wu^n zs&(x0jk=zvCaDj1SiPC#s}oe*4?lq2o*nJkqrf+In40Fau5XX_mqM_DH&wEFUJ*Yv zvm}mVq^NwFg;*dQ;oOU8=jGBJaGWFDiDj5HChjqvXp>9+C|{L>I6Rp$h*8TRNpXl` zwCs$wbJxx7@_CQn(5*7}Zi3j;2x~w{cu&Js7%tH^5Ill;ws^Lb&xYo zfBMZ|PH`st3PoRxyJOZRsVPPSNZ%JrD9TnML}1fduE?4dKx9uJ7#S@yA+PTrfO zXm@|-#o2{$=I%I@Ne->pn%a^ibPj8VTPMroq>9y(4~ z9FjR#>5MBEo7oSa!-a}EJ^a`KIT2^9m9)y*tGzbTO5gRcjfy^<=W&a~2g2UeLjjZA zDbq*dqY5ULfo;itR$<3}=q7_bi2}F026&J956?L$*VVw!lsNmr%iG3I6}ZWR<7=gv z=>&%N5zY?+BXcQsLiFYwEThE*8jooz)lP~ysCBU_N0q1DD{$K?j-UB`RkGqAeqMZf zI4V*9vobOwr2gker3T-5;X;uTBT%w=PGY^4Zrl{9T5i!oiPck)ZZ6Z2gNOKpOp1p~ z)eAf;Im`Y{-kO0O`lg8bx902^)yzhC%_Er#+OsB|N(?vSrSYpYUbID{(=}(9W`gww zV!vzXu$OX*Wo&9eFf^@?)x2BwGlgAha&bk;zOd`Je#vcEGT6<RwoF#inIjD}HRGE}^f+o2h?lAw+Xk_$gG%-b}n%+tYFPRuz!R4utnpklYrc zZ+q3KFZulpfQtu*}yRB`c5(D)dC#w-5@ze_jJMxrU zDE;wjv@L@>WC2aTlCq?uw+z!Sx|_KoMLs*-%6+Vqk+&xue`27LAFC?jO@6Y9 zv)Dq6NO~gAimji-UIXo(7{3Vk7#fSfm%7#=DLAul?#HTF#9=>vE60&UgMv_I zmgBX{MfZ$CWSlx$wbIdn)xHdKcJjyv3RO4Gum>DnghN$gBK^7|N$KQEB|jUSYP}*IdD*glzTNhT^qJc!_V<;H5tjJfp>T;)HVfeUZz_p9 zT*!QUJC6dVPAebNg^p3Esua^fM#H8iW6;3)%B)Fc7zv@X#VGW5xzbvy>E5meum-z3K_sEu=;@HGX?@=(88f^L7>5nB(b?PEk&FIJ+ z)~MFUOe=s-i;ooo9rF8-LJ_Sy%i=}-BU?pv&Z?95Wdxp_(H6$uTZ&T!gRj%;-c6`{ zBlbur75J-yx=}sI*J)56W+PUfPZj*Lq((dkaqf=Ha9)e%uwC=PzSV?~!#~`O0`srgO$_(W7=gR4 zJ-6Q>D-#)kP;*#^)ts0*C4RpmiZ{AB(4oI3WBRnrXmPcL*H7vJS5sGJ2a-nTA# z%KGJF%i6-1Z`}Ar-h^z3~PR&bYdlTSsx!?UoP@ zmE)$n65R>uvs;EUT4DC@-GaHKYd^H$eI~=N`4O8YL^QzD7+?P7;<^N)*H)jjXP;<_ zkGQwuM*PPB9bw0g&TwkGSWRS^}O zC=`!opNl5`E!dLny${k<_E4+XkzJdtYvL`6E7&h7+xqJz3W% zmMR%}`@>6noYof43s35skNnM*A@+tip1Ib5+Z}^qmF2him%6p3z8h3bCDX&;6Ww^{ zr#j@$UK@=U_(Ym$(-sE>X1%Fl#fst~hzz?=(yA6`iso@;4| z+X38vM+W1k>fNP4_L>8P>Q@8*Nfvo1$cUh=B+=wvj<=e?F`>@0#i^3M2)-rEc*;On zhSA8aUyY)*1G|*BcGE}nTj};aUS=(sR+4_j3(~%?zP$a-m1A)_){mCrhZGSNNm=Mc zHe(S+v~WNAj_d0i;!*Zy-Etf6HRpZYjWWz5Csi4n*w%RLg9a#u5naz)`PK>>o-ITt z#M&GzCS`kX%yMg{7@cGHly;jf@TQ!$&h%3$kFsn!f==bf7K``4yz*xoowZ?Q^l`JW z-ner=3U{0)0%7MKDC4==ZI;`j=L?xz(mgict`_T1HntOeA^fo68IMVpKe-I!dzzzf zMh!&=L%A7CE?Ig*&WNBYS#PI(lhf#R4sK=jfWj!6xv)d?k{{TmF)A~bTg^2@?O!a= z#qV$5mdq}DSLv(TgdaV4T)ksv&!a2;zOuuba4hCrD%AglTW{?`$*b53r%J_^h5==n z2K_>Z1Sm)R9K{W+1#*HllQiqK9GQ7a+7}%vnesmpM@C$4S+yfRWnxYPQRI=y!pedVBfgz22#nhTZRbsKHS;X3rEYy`73$Y;69U2gt< z=Fuc+N5d*5J?O>s!3oUyhi(s;*D8(?=qluu>)$n=_6)t6y|3JbgH>Np_>D+(-x3Y~-8|gR zI5p7|xfs5IWprH;dGyR@MFI$nCrB|_o0cv$Q?D&%=nXmZ>jo^C=UWj@+6EzDKa9Rxh8C9Lsdgb;k4J>Lrqi34#=Q z5ugK1*1S7uLChE1?qQ+CkExk=x6kP@RZ6^F*=8i(L`fr-f&Z$7lZbsum2!3y@gI3D zt(};6uk5}6H%7L+B~JwM-34uU#+$yuUZRl??`$*AP1V+()S&Uj@jHExkoUGD;EThG zVi6~TanGX*@i6IpHdfu4=9ZOo%zvXz$$Y6(#5aZ$afu z-PHU8TSu2oME=_7jUr21Mm^*5O2Owr>F#AS!8YVGLQkSChA!v`UszuMMKY!N(8UYG zZM#`b_H0X5DBs!RVEfDfI_jU96**s7O+V!eo)T_|XP>8Q$vx=983-6aGB^akiPZb` zbiqgaMNLo$TZ#+rx6mK1vSfsk++_CY89M2jc<|1uF+`A>!0m^;J+z}%PWyYGYhA!^ z^9@IP`aMNV2M=7(Hy>j;X{4JvhzLLVh*fY~a#4mg7rn+Qm)nKvXZgZrpVoq2*(t3j zws#~etKZP|rNYTCdJB&T@BAQ1&#&?e-!VJ?rl&LMs7<(N>Co9sgGf592^sAoHG|73 z=$nhyke(qh2r_GE;I&mhk2y&75^|Q|k%$P5`rQ#b!pm5zI(G_CfFwc*_6t{urNF7UcqoZj^z#BHAx9KjO;!kn2Gm6pGvp%7rM#y zOGi27!rMe&B(5dRgY%(l(=Ui;jAD)S%`U&s)qjMSr5Cq=TQGms+aG(xrr6D zNQY8FVGd-J)eTwi;nCJF#2=T?i?0TstCh+d1dZ?5ugl80sj-O$=Re+l z@qySG!5{l8p6p28K4~L^|JNzkhs0&L8rF4kYH3zJDs;)E`PWV{eyxhcZwv(T)^Bw& zMZHzfb?@}`Yvppj6`Ug|wfsX&s$1N5&{FM}*8B*N7XqD#A4l`@vFQbfWCeunRb;`va_^S0* z=kj0P5(z96OTROr+Z*1WDqZ5CG^diO4gHLee{>65zzu<8jyc6N?@l6G#zeZ*uz=lo z%WVGHytFz&c4)_sd#@YV;Pz}A(G3Do{1hEDM3G3JupYAdGh-G7P)waxD^1^ALMYRS zU9hpTD%!!9U)v%I=L7~JdZvgimV^F7E$rIi*(PGqZ@xHmgoi~BQ;`pVFTK-q`LRAn zJYsIK`n=#KG(bD>OXo*R7&o)cTT-jMDT(=+7pKh6h7)hhzd8)cY?vSM8MRUTQr@{h zH-N#%b9>*kbK3`6O0<94(0V?wRlG#Fm_sOMZ8y>E7jNBi?T2(rmpT4X@?P^@W1d@? zsncf^I#G+hs-MF{Zeu4z`SqM9Jfi#_af0CeTzB&8LJYG}L~#9{bLt2T*Lthy{|MM zxDhs(r<2Zw#AmZf&8shXJu3FH&WC{@f>@Gbb4FEx$?Zi&4{|#KHATxQ>O|PlTxT>@;_W(zYg5Z8 z3wZnvZO$b*S!D9{Z0hT;8;SFTm{#OjGbAX6CCQd{WxvU~h)Pz~ww+t$^zfRUt&pw_ z6(gajN7FecFRcGiN5`!daQ4PeBgN6W zR<-HLg|X4DGr5I|grg{G#cSN=;da+P<2Ow>{v_?J^ESo z^T9fv@^Vj+h=22IZ*^+QHtk-_LNFb=!$m+6j_T_8QYxQ2(t`o=^$+)H(4j| zd_Pq%Bw4$xSUVSa9g~6ZTI;~pQ^bJAI_pKsFUGjMZTpmimxV-ev0tw-%5V!dehO=M z&}F?z3{PtQx1?GEvhF%-W#M>XQYV1d-o}?*%$Fs(pYceU@ReVVYS%klV_ce zzH20lTqnnN?<&7BjTpi9Xt>N@y%YXkfk;0qsZ(L#s@0BpDBTWl6+02TRRo9oQk( z?Wy*ypK|Zw)PGV-ycPQ_d0T^Q0x{#aVoTvLeBNB#>vyX3T)p@6vlbevr=A6hW^{c& z;x>OJ5hjo*jpvfoqt$z(;RTM=RTf1&BFFixCjH>Stza}WyI&8nHm!@3Dy3AT!1ep} zhyp{x&;_zoz0OnUJIC;dhr@Uk^5&D1NA)@F&zN?HQy`UWVy|N*5@hj~aoQ1u5Rc|O z_b^|FwqJ;gDv@$;Gj6jslVwU)Eh>Zi3)J`mzL*w~XSg>LNW?~Fbpn}Ypifjf{JW=h z3^x}RUyPl5cx<}JA7aV43M?)J*p7YPcQAM+L(f{o=)q_?h9uwrLX?)NJZ2RzNXKf2 z^{AugLGF?Wch0bVZ@?=jp6jCsm1bnkg^1xA+imd{w3;$=+oMBVW~fR#si+ zc|W{UpuOZMV&H|>lv^hC+r^_i743W6*FTMae`eb?p4oj|cS2lTM5hfKLDa`~h*x~K z8HPu%1p2{?$!j5=nHLuG!dXfh$#?GB5-2NTPHqmX3-VAEPu*}_2U&icoOY>6C_!T!9ydAztDRt&{k<|x6A1}jlA2jjVlv7^ zYi4~ZyRCC$BH0?D%!-rWg%LFeUNCfucGU@{_f`e9;p`$}i);(*B){N$9a&(7Q|Ko# z(W-ksX@ojKD(o4|l3t%%8<)B7$5T&t9J%|l>XFelnG`oZ-Q~Ge-g%c#dWE`YyaM#s>#AM;d7G1&ph%*rND=uS*B_Fr_#5WgXP%IW+ z70-|U!Y>S?CdENryY?4*J`HJ}LO9&0_F2Y5o2|RNcd!GGmy$+ljjLPnuMY}qhuwZr zd=S{Jb^nJ$5E#aveZxQ-q2w`*b1K3#m36bn$W%v0ZJNK!c>Xr?(i$5Y`-H;_hK+1N zU&ERAnm>ra#sm|l&`pZZL)=rXW~{m)EHw3?3f7reb-oxkAiwHAHfT`}nR} z`%Vs;+R2-umD=`QW1sPPZNWnxXY4+JVE2K{_`Ba%{0U9~lx z>v(VDel?l)3jvoqkpe+CMxLKPdYtvXm5WLvTDlTXlD^}?Y_sd60ST$#a8Xy#*N~hy zxa=5|rvq&@b4yG4Eo~Ht-HK+}@3S$H4TBmzJqgMB-FI@ky6mq%%=o#Rufa;OFb-j< zW1ZIE+{bOAJ9%BAlmm~dVVkSwnkhUNu~u&-Z&T5JJ9uiAqKzc3ArpQWX60*Bu9uK| z=aHV<fP3|pzdr(6~!kvTAZHysm`%Q=o;;jcG_($V;tQ5 zIf+Ze78{J?>}e6dou&@HzfS5chR>H;CiaB!6}Q?*ZK~H(8GRWs2_Nlz9hmH@85n=9 z=Bwp#txGE6OKAAFT>``ls=o5&p4VUJ$f_#Hu=hVzT_lEi}LQ;jK zTr5GaoxLj?S_0HlH^{$ow1Mc`GKT$i@PqJ4GTb`d!qEGP1YTTgM2m=j!j5J9oYtZg z-SbsH()taNd#E=;{9W*hse7fIKWF(shYQEyX_`Mb7rJ?q+%8^sKvsT)+Rd+L4NOIu!~+~6f^Rd@WfF6;?QFS{M#;Ol zhgj3`vXARZL}(?D2sRkc9i5FfCTA0^$L>uX?*<8FHMQ+o3RpP{%9jc2S}l&Y+- zAP3R>%Cl;+=$^vHlcZ7_n>NZcoDix-Cxs^~o4K#0c+8mcaaX_ zmb7N;!hDYc@!bN<6gYmPQ#9yv$bo@;rt^*G$?R{$wP!iI`L9=Sl7N=F3($>qh!fch zSgV40(mm}Ygl~{#@kthk?yeg75%(L!=04z_7qFy-c5(C0LHdQ=EHB_LP>=~ZraIl z-4Jd^SCrF6j8M2fepW3xq!1%$e}GiC1tq5JuHoU_rcQM*CrbTl%+p(`pYk$w&!@2s z3*S!zLu>@bRuNFsBog!I|(RspbLyLp0@s#xIN^_tG1f!Drhehdd0bLwEb*o%TW@BrcOx!HjrnVY+7qOX>W5bFeb|Ux zvGk9nKEzC-z%mWqi@k2|x1EHtmR&Sin%v}bGX`=4Al@4ZwpRX=QF?uj&& zP#KHykZ@D0#z^@N>dM1UM{8lZmerNvB-A7BK%IWG!W$G{+4x{UaKFJquY;K*7*{Ee zY^h&Z(^o%-qhk2ZHMxz&{x(DHyBs(gs>5z13Dk%^vqPeY+53kO2QUY_iOVBJ?vR!l)m@mlhA$BlPxyS1g(p#>y36SP)upF23R%OVZH zJr+J%MkCbA2KcgyuEh**XGs@^@Z=OqXO*na#RR_@YO3KSOZ-YAZpsvBH57F4sPG!x znKZmRIz=;)hAvXtpYmviFda?q+ouNQ!XH*sFr7G$RR-~}-KS+=_XQ_LyR(FQ}Q{DO3EOibeIu!n= z67XNG!o`GJqzbicF{G!ff1X>0CufnqnBTXME^h$+is9-H{lmi;%+AQ_W->e{A z#A&igp;xLq^Zir0T10~8)t!G!SKqXwnYhXy(1i9kf4KHE5YB%~S6e61OkQP<4^|6Q zxh{sI^ZmmY#{kXBRlfN6YXQCJ~RbSg%j#dZsFFzON zwC}I-1B2B9OXV2QVgK+W6GHp?DnBrOl!QoXNkVDkmC%54@c&lgt{oYotw$q;{ma$A z)yrW(*Q4J%Do1Fy1kho>dE>0@!v)Er;lTc74oQG2=G`v{!l@O+2f1PZY?Tm#?jS4F zKqTmJFmgMD_I51+5y%|_;6gzZM2`gi{2dSJA_^iQh5zpC^xt~kaA@r~2}m3rbvh_g zmK;P6)D}l=12GB;;__m}?~gu_B8_LE^PotROxNl)Z^?0F$y>z+?_Nh_yC@1Ec}K1(17O09;8D zM2x&o4Q#rAf!@~M-~lzEqeF#|sW1=-C2|Og^a%)+7R zMvy%+g&Xv^wgUd=FiwIX4kS=~oD`YE0K%42`;^#yz-32y!aR7$_ zkU9f!0VKU7hy$hawA>)U+CWKw3hKAIy8tR31ppN~1XxWY10ux)sDl+icL1&Hf`J5( z0IZ=_SrK#t137F?OYukGp~@h7KrFx4fstu~08ShgkS_*Gt;5uSqfcoAY=?*fZ24;e za!gYP`Jto30Bl+yl*QkZ1PRqX)dFz=JA{yB+8_>8rGDh{T@VxUr#6TSsDsa;19AcW zNz(x-0-d&jhTM0={%J3C&(;FyP{#)}k^@W@XeRf&jy(e({Ga9sKo5f7aDhMF;efUV zsNW5dXLmtVNME4$HquKML__+!xx#^R7B4aQD-9WkKGd`zYCGw5)KWN-0fmVViDm+#!h)e7LceE$Q*5I^{HP5Oq?9R0 z5~*wW4=Nl0l>ll2`g<*wAZpC_dyFXrjFE8;0INHuAWtNo(LZ~TVP>FiOmIS03*rAzyYFcff1VnFbiA) zJrc(e^Z}`D4~(`PK}AS`M?lMh5+@MvKU%=j$xpxa10SI|vdlpg%iYNV|z z$o|gn4jdYWK(hqf$F``pjO?!NX8&O1f$#v!+1*Ud9svv@Bb-1qkUy3I6Zm5ZFo8d~ zU;=;mg#9BE*q^q33^0J(01rUTtlU6!e>LLzg9pjx24cem8hY>{TirksfB~Sn16q;g z24X=$g^;b5AP`c|9mGhCBJ^(;uYWdEyZ_z{ST&$}G{{kR5ba-W8UI=K!X3Cea%aF> zKs^ANP zvVp;D9JstHjutYeZk7z}GQvy98e3|fX z82_aMLIq&It?57bfMz=aLV|$RgG~YG|6Ms8=s9`$$^n=VYT;k&goJ>;b^nC{N+bYA zb!`35Iur~Fh9D~fKqO*+qeV?!7CitH1lC_h!4C)=i53WAL;Ot<0ti?T{x@2P5Cke9 zboCU1sBnAfWI|VN9s(BRyQ~cmAtBg5cZ>K(OsKO9p}f-H2nE5YwERCX;4u9B{8#u9 zgrFS8f7YS+hVWlGpdb|b_hAsIg-}!nrc0ZF4z*WcFvwLRzg_L6z3@vMqiDcUeTV+D z4qyc3Y7l<`Q49GmX)dr32ufEr!v!wcE*K1j0&=~C56TBYMZNzJ2G;TMf&bNJ#2?3m z0>Z9{6$+#cf7>8xoxl~bLV*nbvZw)9$$w=p40>6D2*9TT`O4)J0==p(iy8{!zlsnp zc*#kiq#(e5_3DIBIpE(?fC&Q30rwC5{GSp+VV7MtfDi_Fm@AtBW4#OmBGDB_;1K8) zDZnBB^LB{eaRDF#hh8ysD4Y*`l?WdyulW1Wa2VfJBEYGytmD7r)4^Z_6wWVjm52b} z6(U0X{FkM`2LX)sG7%v-^eR5U!CzS?2m$u~mjC~WpAX>c@~HvXCBlG{f(TrStiV3N z#a||j3Z9n_$Op*!f6_wy3EzN0K&}$zL#0c9iJA`#bXB_w6S~YD9~gecn)tx{(92fB zhXC^nUbb1_*00zsA6O84l?V{yuN+2*?+OvH&=p&PI`C@v*U%e<6fHAXg#=&Saxbfq|s#5-AuM zawP$QfuWZY5HJ{kU5cJ47?3Gm!3R+J1N+~t0#AV}(GK+nxFTFI{7Mc11i&jf1Pm;2 zC9nZ7)N}1W!sSJs@N(Mp8+IiP1F}`P01_?g|0gsc_4-?Afa8RMub2l62EUZ?0i*<= zmq`H$H2jL90Xgu$Zt4Go1}x;ilr00U83w&9NFZ6g;`@O70C-^iB@Dn_gD=0Cz(6h! zBy155$N4~XqAAOM41&DvlPAOpIxPViFVh1z@hz404%#in6!VCm&d4wb@OHfjKN z#i)UgLa!bM5W?Ro0T2eBmRHmc4*S1|{(qSq3=X^UjsULslDJR^`N3C-@c-*>|IgdP z-~y=s75I;SqV@`0j_3#gC|uUSg=HBJi-jd>8@9m4F3gr2mWP|73Egcjo0l0OWvI zqBo$yf|p+OV5krnczyj%7*rwg!wLqa=?timlYENJTXv*`74tHHUsbSzY#(NfcSoiFcdiR<-8ZLcgSV` z0eq4o^#2Mwf88izAdHtt*CA0MkWNCWv+G;`lYoLGCs84#MHCdIBvMF0w{Jm8@`}6x zzwzDX*54qJE~BwM9(!iK`MlCaxgVLp4kvFNkQ@tRcE2#PIGz+6;$z3O;JqG+FerE; zY(~w55yC*wKT4(a2#Z z(jK9g9C41UKD7=<{D)#z62)XYzX&;cocIRGTbyiW*@E%KRKkvTXZ0LH2-ISkg&d#nr?Kgh`$m<+W diff --git a/multimedia/hw-2/report/report.tex b/multimedia/hw-2/report/report.tex index fed1968..901831b 100644 --- a/multimedia/hw-2/report/report.tex +++ b/multimedia/hw-2/report/report.tex @@ -20,14 +20,14 @@ \section{Introduzione} \vspace{10px}\subsection{Utilizzo dello script} -Le richieste dell'homework sono state soddisfatte attraverso uno script scritto con il linguaggio \textsl{Python} ed eseguito sul sistema operativo \textsl{Windows 10} in lingua italiana. Tutte le richieste sono state soddisfatte attraverso l'utilizzo del comando \texttt{ping} che si occupa di inviare delle richieste ICMP\footnote{ICMP sta per \textsl{Internet Control Message Protocol} è un protocollo utilizzato dai dispositivi di una rete per comunicare la presenza di problemi riguardanti la trasmissione dei dati} ad una determinata destinazione. La risposta del suddetto comando diagnostico è il periodo impiegato dalla destinazione per rispondere, ovvero la \textbf{latenza}. +Le richieste dell'homework sono state soddisfatte attraverso uno script scritto con il linguaggio \textsl{Python} ed eseguito sul sistema operativo \textsl{Windows 10} in lingua italiana. Tutte le richieste sono state soddisfatte attraverso l'utilizzo del comando \texttt{ping} che si occupa di inviare delle richieste ICMP\footnote{ICMP sta per \textsl{Internet Control Message Protocol} è un protocollo utilizzato dai dispositivi di una rete per comunicare la presenza di problemi riguardanti la trasmissione dei dati} a una determinata destinazione. La risposta del suddetto comando diagnostico è il periodo impiegato dalla destinazione per rispondere, ovvero la \textbf{latenza}. Prima di lanciare lo script, è necessario aprire il file \textsl{script.py} e impostare correttamente il percorso dello script modificando la costante \texttt{PATH\_TO\_SCRIPT}. \begin{lstlisting} PATH_TO_SCRIPT = os.path.join("multimedia", "hw-2", "script") \end{lstlisting} -\noindent In secondo luogo è possibile impostare le specifiche di progetto mediante delle costanti che indicano il nome del server su cui inviare le richieste, il numero di instanze da mandare ad ogni richiesta ping e l'incremento di lunghezza (step) che ci sarà tra la lunghezza del pacchetto durante l'iterazione \textit{i} e la successiva \textit{i + 1}. +\noindent In secondo luogo è possibile impostare le specifiche di progetto mediante delle costanti che indicano il nome del server su cui inviare le richieste, il numero di istanze da mandare a ogni richiesta ping e l'incremento di lunghezza (step) che ci sarà tra la lunghezza del pacchetto durante l'iterazione \textit{i} e la successiva \textit{i + 1}. \begin{lstlisting} # project specification @@ -63,18 +63,18 @@ \section{Introduzione} \vspace{10px}\subsection{Parametri di progetto} -All'interno dello script vegono utilizzati due tipi di comando \texttt{ping}. Il primo, utilizzato nella prima task, descritta nel paragrafo\,\ref{links}, è il comando ping di default di Windows: lo script funziona solo e soltanto se la lingua di Windows è in italiano altrimenti non è possibile analizzare correttamente le risposte del comando. Nella seconda task, esplorata nel paragrafo\,\ref{RTT}, viene utilizzato invece il comando \texttt{psping}, che è in lingua inglese. Al fine di riuscre ad utilizzare lo script è necessari avere l'eseguibile \texttt{psping.exe} all'interno della cartella da cui poi viene eseguito lo script (ovvero la cartella che, attraverso il percorso all'interno di \texttt{PATH\_TO\_SCRIPT}, permette di arrivare al file \texttt{script.py}). Si è scelto di utilizzare psping in quanto è più prestante del comando ping di default. Inoltre nel primo punto non si è utilizzato psping in quanto non è presente l'impostazione che permette di ridurre il Time-To-Live del pacchetto. +All'interno dello script vegono utilizzati due tipi di comando \texttt{ping}. Il primo, utilizzato nella prima task, descritta nel paragrafo\,\ref{links}, è il comando ping di default di Windows: lo script funziona solo e soltanto se la lingua di Windows è in italiano altrimenti non è possibile analizzare correttamente le risposte del comando. Nella seconda task, esplorata nel paragrafo\,\ref{RTT}, viene utilizzato invece il comando \texttt{psping}, che è in lingua inglese. Al fine di riuscire ad utilizzare lo script è necessari avere l'eseguibile \texttt{psping.exe} all'interno della cartella da cui poi viene eseguito lo script (ovvero la cartella che, attraverso il percorso all'interno di \texttt{PATH\_TO\_SCRIPT}, permette di arrivare al file \texttt{script.py}). Si è scelto di utilizzare psping in quanto è più prestante del comando ping di default. Inoltre nel primo punto non si è utilizzato psping in quanto non è presente l'impostazione che permette di ridurre il Time-To-Live del pacchetto. In secondo luogo, al fine di eseguire i comandi nel terminale, non si è utilizzata la funzione \texttt{os.system}, bensì la libreria \texttt{subprocess}, -che permette di ottenere il risultato direttemane in una stringa senza avere la necessità di scriverlo sul file per poi accedere al file per leggerlo. Questo migliora le prestazioni computazionali dello script, in particolare nella seconda parte dove in genere viene inviata una mole elevata di pacchetti ICMP. È comunque possible scrivere su files i risultati dell'esecuziuone del comando, è sufficiente impostare a \texttt{True} la \textsl{flag} che si chiama \texttt{SAVE\_TO\_FILE}. +che permette di ottenere il risultato direttamente in una stringa senza avere la necessità di scriverlo sul file per poi accedere al file per leggerlo. Questo migliora le prestazioni computazionali dello script, in particolare nella seconda parte dove in genere viene inviata una mole elevata di pacchetti ICMP. È comunque possibile scrivere su file i risultati dell'esecuziuone del comando, è sufficiente impostare a \texttt{True} la \textsl{flag} che si chiama \texttt{SAVE\_TO\_FILE}. -Le analisi che seguiranno saranno effettutate sul server di Los Angeles il cui dominio è \texttt{la.speedtest.clouvider.net}. In particolare verranno prese in considerazione tre diverse istanze di esecuzione dello script, le quali avranno un numero crescente di pacchetti da mandare: +Le analisi che seguiranno saranno effettuate sul server di Los Angeles il cui dominio è \texttt{la.speedtest.clouvider.net}. In particolare verranno prese in considerazione tre diverse istanze di esecuzione dello script, le quali avranno un numero crescente di pacchetti da mandare: \begin{enumerate} \setlength{\itemsep}{4px} - \item 20 messaggi ed uno step di 10, quindi un totale di 2940 pacchetti (figure\,\ref{fig:20-instances-total},\,\ref{fig:20-instances-stats},\,\ref{fig:20-instances-min}); - \item 100 instanze ed uno step di 2, ammontando a 73100 blocchi (figure\,\ref{fig:100-instances-total},\,\ref{fig:100-instances-stats},\,\ref{fig:100-instances-min}); - \item 250 pacchetti ed uno step di 1, per un totale di 365250 messaggi (figure\,\ref{fig:250-instances-total},\,\ref{fig:250-instances-stats},\,\ref{fig:250-instances-min}). + \item 20 messaggi ed uno step di 10, quindi un totale di 2\,940 pacchetti (figure\,\ref{fig:20-instances-total},\,\ref{fig:20-instances-stats},\,\ref{fig:20-instances-min}); + \item 100 istanze ed uno step di 2, ammontando a 73\,100 blocchi (figure\,\ref{fig:100-instances-total},\,\ref{fig:100-instances-stats},\,\ref{fig:100-instances-min}); + \item 250 pacchetti ed uno step di 1, per un totale di 365\,250 messaggi (figure\,\ref{fig:250-instances-total},\,\ref{fig:250-instances-stats},\,\ref{fig:250-instances-min}). \end{enumerate} @@ -121,7 +121,7 @@ \section{Introduzione} return int(last_link_line.split(" ")[1]) \end{lstlisting} -\noindent Per contare il numero di connessioni, oltre all'utilizzo del comando \texttt{tracert}, è possibile impiegare direttamente il comando \texttt{ping}. In particolare, è sufficiente iterare attraverso una serie di ping, diminuendo ad ogni iterazione il parametro TTL (Time-To-Live), che rappresenta il numero massimo di link che il pacchetto può attraversare prima di essere eliminato. La seguente funzione in Python itera sui valori di TTL da 20 a 0. Ad ogni iterazione viene inviata una richiesta ping predefinita, con 4 pacchetti di dimensione di 32 byte. Quando il ping non ottiene una risposta, significa che il valore di TTL è diminuito al punto da non essere più sufficiente per raggiungere la destinazione finale. Pertanto, viene restituito il valore di TTL incrementato di 1, che è il minimo TTL necessario per raggiungere il server. Di fatto questo appriccio è l'esatto opposto dell'approccio che adotta \texttt{tarcert}: in questo caso infatti al posto di incrementare il TTL fino a che non si riceve una risposta, lo si decrementa fino a che il messaggio ICMP scade, non riuscendo quindi a raggiungere la destinazione. +\noindent Per contare il numero di connessioni, oltre all'utilizzo del comando \texttt{tracert}, è possibile impiegare direttamente il comando \texttt{ping}. In particolare, è sufficiente iterare attraverso una serie di ping, diminuendo a ogni iterazione il parametro TTL (Time-To-Live), che rappresenta il numero massimo di link che il pacchetto può attraversare prima di essere eliminato. La seguente funzione in Python itera sui valori di TTL da 20 a 0. a ogni iterazione viene inviata una richiesta ping predefinita, con 4 pacchetti di dimensione di 32 byte. Quando il ping non ottiene una risposta, significa che il valore di TTL è diminuito al punto da non essere più sufficiente per raggiungere la destinazione finale. Pertanto, viene restituito il valore di TTL incrementato di 1, che è il minimo TTL necessario per raggiungere il server. Di fatto questo appriccio è l'esatto opposto dell'approccio che adotta \texttt{tarcert}: in questo caso infatti al posto di incrementare il TTL fino a che non si riceve una risposta, lo si decrementa fino a che il messaggio ICMP scade, non riuscendo quindi a raggiungere la destinazione. \begin{lstlisting} def get_links_from_ping(server: str) -> int: @@ -210,20 +210,20 @@ \section{Introduzione} \vspace{10px}\subsubsection*{Risultati} -\noindent Dopo aver eseguito gli script, è quindi possibile mostrare tutte le latenze raccolte, i loro massimi, i minimi, le latenze medie per ciascuna lunghezza e la loro varianza. Sono presentati di seguito tre immagini contenenti i risultati delle richieste; cioascune delle tre immagini fa riferimento ad una diversa scelta di istanze e di step. Infine, si osserva che nei grafici seguenti la lunghezza $L$ dei pacchetti è espressa in bit attraverso la seguente formula di traduzione: +\noindent Dopo aver eseguito gli script, è quindi possibile mostrare tutte le latenze raccolte, i loro massimi, i minimi, le latenze medie per ciascuna lunghezza e la loro varianza. Sono presentati di seguito tre immagini contenenti i risultati delle richieste; ciascuna delle tre immagini fa riferimento a una diversa scelta di istanze e di step. Infine, si osserva che nei grafici seguenti la lunghezza $L$ dei pacchetti è espressa in bit attraverso la seguente formula di traduzione: \begin{gather*} L = 8 \cdot (L_{\text{byte}} + 28) \end{gather*} -\noindent L'immagine\,\ref{fig:20-instances-total} di seguito rappresenta tutte le latenza raccolte durante l'esecuzione dei ping con 20 istanze per richiesta e con uno step di 10 tra una lunghezza e l'altra, per un totale di 2940 ping effettuati in circa un minuti. Si può osservare che in genere tutte le latenze sono attorno ai 170 millisecondi, con alcuni picchi tra i 750 e gli 800 bytes. +\noindent L'immagine\,\ref{fig:20-instances-total} di seguito rappresenta tutte le latenza raccolte durante l'esecuzione dei ping con 20 istanze per richiesta e con uno step di 10 tra una lunghezza e l'altra, per un totale di 2\,940 ping effettuati in circa un minuti. Si può osservare che in genere tutte le latenze sono attorno ai 170 millisecondi, con alcuni picchi tra i 750 e gli 800 bytes. \begin{figure}[h] \centering \includegraphics[width = .9\textwidth]{hw-2/report/imgs/20-instances/la-total-latencies.png} \caption{Tutte le ottenute con 20 istanze ed uno step di 10.} \label{fig:20-instances-total} \end{figure} -Non a caso, nei grafici rappresentati in figura\,\ref{fig:20-instances-stats}, si osserva infatti che i picchi sono rispecchiati nella rappresentazione dei massimi (in alto a destra), delle media (in basso a sinistra) e delle varianze (in basso a destra). Si osserva inoltre che i minimi variano tra 168 e 170 millisecondi e che crescono al crescere della dimensione del pacchetto; questo aspetto sarà dettagliatamente esplorato nel prossimo paragrafo, dedicato al \textsl{throughput} (\ref{throughput}). +Non a caso, nei grafici rappresentati in figura\,\ref{fig:20-instances-stats}, si osserva infatti che i picchi sono rispecchiati nella rappresentazione dei massimi (in alto a destra), delle medie (in basso a sinistra) e delle varianze (in basso a destra). Si osserva inoltre che i minimi variano tra 168 e 170 millisecondi e che crescono al crescere della dimensione del pacchetto; questo aspetto sarà dettagliatamente esplorato nel prossimo paragrafo, dedicato al \textsl{throughput} (\ref{throughput}). \begin{figure}[h] \centering \includegraphics[width = .49\textwidth]{hw-2/report/imgs/20-instances/la-min-latencies.png} @@ -234,7 +234,7 @@ \section{Introduzione} \label{fig:20-instances-stats} \end{figure} -\FloatBarrier\noindent Aumentando il numero di ping effettuati, in particolare aumentonado il numero di istanze a 100 e riducendo l'incremento delle lunghezze a 2, otteniamo un grafico come quello della figura\,\ref{fig:100-instances-total}, che contiene 73100 valori di latenza, ottenuti in circa 6 minuti. Anche in questo caso possiamo notare dei picchi che sono distribuiti lungo tutte le lunghezze. In particolare, i più elevati si aggirano attorno a 600 bytes di lunghezza del payload. +\FloatBarrier\noindent Aumentando il numero di ping effettuati, in particolare aumentando il numero di istanze a 100 e riducendo l'incremento delle lunghezze a 2, otteniamo un grafico come quello della figura\,\ref{fig:100-instances-total}, che contiene 73\,100 valori di latenza, ottenuti in circa 6 minuti. Anche in questo caso possiamo notare dei picchi che sono distribuiti lungo tutte le lunghezze. In particolare, i più elevati si aggirano attorno a 600 bytes di lunghezza del payload. \begin{figure}[h] \centering \includegraphics[width = .9\textwidth]{hw-2/report/imgs/100-instances/la-total-latencies.png} @@ -252,14 +252,14 @@ \section{Introduzione} \label{fig:100-instances-stats} \end{figure} -\FloatBarrier\noindent Infine, nell'immagine\,\ref{fig:250-instances-total} sono state processate un totale di 365250 richieste in circa un quarto d'ora, risultato di 250 istanze per lunghezza ed uno step di 1 tra una lunghezza e l'altra. Si può infatti notare che il numero di dati in quest'ultimo grafico è molto più elevato rispetto ai due precedenti garantendo quindi che i dati analizzati sono più simili a quelli reali. +\FloatBarrier\noindent Infine, nell'immagine\,\ref{fig:250-instances-total} sono state processate un totale di 365\,250 richieste in circa un quarto d'ora, risultato di 250 istanze per lunghezza ed uno step di 1 tra una lunghezza e l'altra. Si può infatti notare che il numero di dati in quest'ultimo grafico è molto più elevato rispetto ai due precedenti garantendo quindi che i dati analizzati sono più simili a quelli reali. \begin{figure}[h] \centering \includegraphics[width = .9\textwidth]{hw-2/report/imgs/250-instances/la-total-latencies.png} \caption{Grafici ottenuti con 250 istanze ed uno step di 1.} \label{fig:250-instances-total} \end{figure} -In questo caso è interssante osservare che sia la media che la varianza sono elevate per la maggior parte delle lunghezze per decrescere solo quando il pacchetto è di dimensione ridotta oppure molto elevata (figura\,\ref{fig:250-instances-stats}). Anche il grafico che rappresenta il minimo non segue più una retta definita (a differenza di quello mostrato nei grafici\,\ref{fig:100-instances-stats}), ma dopo i 350 bytes si hanno minimi che arrivano fino a 178 millisecondi. +In questo caso è interessante osservare che sia la media che la varianza sono elevate per la maggior parte delle lunghezze per decrescere solo quando il pacchetto è di dimensione ridotta oppure molto elevata (figura\,\ref{fig:250-instances-stats}). Anche il grafico che rappresenta il minimo non segue più una retta definita (a differenza di quello mostrato nei grafici\,\ref{fig:100-instances-stats}), ma dopo i 350 bytes si hanno minimi che arrivano fino a 178 millisecondi. \begin{figure}[h] \centering \includegraphics[width = .49\textwidth]{hw-2/report/imgs/250-instances/la-min-latencies.png} @@ -270,7 +270,7 @@ \section{Introduzione} \label{fig:250-instances-stats} \end{figure} -\FloatBarrier\noindent Osservando e comparando i tre grafici mostrati nelle figure si nota che, ragionevolemnte, maggiore è la mole di dati che viene analizzata e maggiori sono la varianza e la media in quanto si migliora l'accuratezza delle misure, avvicinandosi sempre di più ad un valore simile alla realtà. +\FloatBarrier\noindent Le analisi relativi ai grafici mostrati, in particolare in riferimento alla drastica crescita di latenza (minima e media) all'inizio dell'invio dei messaggi ping e la drastica decrescita verso la fine dei dati in figura\,\ref{fig:250-instances-stats} saranno discusse in maniera dettagliata nel capitolo\,\ref{conclusions}. \vspace{20px}\subsection{Throughput}\label{throughput} @@ -313,7 +313,7 @@ \section{Introduzione} \text{RTT}(L, k) = Q(k) + \alpha L + T \end{gather*} -\noindent Per riuscire a ridurre completamente il Rounde Trip Time ad una retta, è necessario gestire la varibilità del ritardo di coda del pacchetto $Q(k)$. Si osserva che, con un elevato numero di istanze $K$ — come quelle scelte in questo caso, dove $K = 250$ — la probabilità che almeno una volta i buffer dei link siano liberi aumenta. Di conseguenza, di tutti gli RTT, prendere la minima latenza per ogni pacchetto $k \in \{1, \dots, K\}$, garantirebbe che $Q(k) = 0$. Si ottiene quindi un'approssimazione lineare del RTT\@: +\noindent Per riuscire a ridurre completamente il Rounde Trip Time a una retta, è necessario gestire la variabilità del ritardo di coda del pacchetto $Q(k)$. Si osserva che, con un elevato numero di istanze $K$ — come quelle scelte in questo caso, dove $K = 250$ — la probabilità che almeno una volta i buffer dei link siano liberi aumenta. Di conseguenza, di tutti gli RTT, prendere la minima latenza per ogni pacchetto $k \in \{1, \dots, K\}$, garantirebbe che $Q(k) = 0$. Si ottiene quindi un'approssimazione lineare del RTT\@: \begin{gather*} RTT_{\text{min}}(L) = \min_{k \in \{1, \dots, K\}} \text{RTT}(L, k) \approx \alpha L + T \end{gather*} @@ -385,13 +385,13 @@ \section{Introduzione} \label{fig:250-instances-min} \end{figure} -\FloatBarrier\noindent Analizzando i risultati ottenuti si osserva che man mano che il numero di instanze di pacchetti inviati aumento, il valore deh throughput dimunisce: questa descrescita è ragionevole dal momento in cui avendo più dati a disposizione da processare è possible avvicinarsi meglio a quelli che sono i numeri reali. Si osserva inoltre la grande differenza tra i valori di $\mathcal{S}$ e di $\mathcal{S}_{\text{bottleneck}}$ dove si riesce a precepire maggiormente l'impatto che un link poco prestante ha sull'intero flusso di telecomunicazione. +\FloatBarrier\noindent Analizzando i risultati ottenuti si osserva che man mano che il numero di istanze di pacchetti inviati aumento, il valore deh throughput dimunisce: questo aspetto verrà discusso ed analizzato in maniera dettagliata nel paragrafo seguente (\ref{conclusions}) -\newpage\section{Conclusioni} +\newpage\section{Conclusioni}\label{conclusions} La tabella\,\ref{tab:summary} riassume i valori ottenuti analizzando le latenze otteunute inviando una elevata mole di pacchetto al server di Los Angeles. La tabella in particolare si concentra sul mostrare la netta differenza tra il througput con link di pari prestazioni $\mathcal{S}$ e il throughput nel caso in cui sia presente un link molto poco prestante che fa da collo di bottiglia $\mathcal{S}_{\text{bottleneck}}$. Si osserva inoltre la curva discendente dei throughput rispoetto all'incrementare delle istanze $K$. \begin{table}[h] \centering - \caption{Risultati finali}\vspace{5px} + \caption{Risultati finali}\vspace{7.5px} \renewcommand{\arraystretch}{1.5} \begin{tabular}{| c | c c |} \hline @@ -404,6 +404,8 @@ \section{Introduzione} \renewcommand{\arraystretch}{1} \label{tab:summary} \end{table} -Come già osservato nel paragrafo\,\ref{throughput} questo è dovuto al fatto che nel momento in cui i dati totali raccolti aumentano, il valore si avvicina sempre di più a quello reale e, di conseguenza, riducendosi. \todo{capisci se sta cosa ha senso} +La decrescita del throughput $\mathcal{S}$ in virtù dell'aumento del numero delle istanze può essere dovuta a diversi motivi. Il primo è relativo a una possibile generazione di \textbf{congestione} dovuta all'elevato numero di pacchetti inviati in un breve periodo di tempo. In particolare, prendendo come riferimento $K = 250$ — osservando le figure\,\ref{fig:250-instances-stats},\,\ref{fig:250-instances-min} — si nota che quando l'invio dei pacchetti è a regime, ovvero nel momento in cui tutti i thread sono in esecuzione e stanno invocando il comando \texttt{psping}, sia il ritardo minimo che la latenza media aumentano drasticamente se comparati con la fase iniziale e finale. Si osserva che questa drastica crescita nel momento in cui il codice è a regime non accade nel momento in cui $K = 20$ o $K = 100$, come mostrato nelle figure\,\ref{fig:20-instances-stats},\,\ref{fig:100-instances-stats}. Ciò nonostante il valore del throughput $\mathcal{S}$ decresce comunque tra le due casistiche dove non ci sono indizi di possibili congestioni. + +Pertanto, oltre alla possibile congestione generata dall'elevato numero di pacchetti inviati, un altro fattore che contribuisce alla decrescita del throughput calcolato all'aumentare del numero di messaggi ping è di natura statistica. Infatti, inviando un numero maggiore di messaggi, si raccoglie un \textsl{dataset} più ampio, che può fornire una stima migliore del throughput medio. I risultati ottenuti con 365\,250 pacchetti sono probabilmente più rappresentativi rispetto a quelli ottenuti con soli 2\,940 messaggi. Inoltre, inviando un numero maggiore di ping, si minimizza l'impatto di valori anomali nei dati. Eventuali problemi occasionali di rete o ritardi del server possono avere un effetto più significativo sul calcolo del throughput quando si utilizza un campione di dimensioni ridotte. \end{document}