From 1086c7ed3e6509270797f34f7b0fc0a782ed99d4 Mon Sep 17 00:00:00 2001 From: Lakshu Periakaruppan Date: Tue, 7 Apr 2020 16:14:08 -0400 Subject: [PATCH] Small update to plant simulink model --- PlantModel.m | 104 +++++++++++++++++++++++----------------------- PlantModelSim.slx | Bin 21488 -> 23788 bytes README.md | 4 +- 3 files changed, 54 insertions(+), 54 deletions(-) diff --git a/PlantModel.m b/PlantModel.m index 2fbf2aa..cdf842f 100644 --- a/PlantModel.m +++ b/PlantModel.m @@ -1,52 +1,52 @@ -%Parameters source: https://sal.aalto.fi/publications/pdf-files/eluu11_public.pdf -g=9.81; -m = .468; -Ix = 4.856*10^-3; -Iy = 4.856*10^-3; -Iz = 8.801*10^-3; - -%State Space Source: https://arxiv.org/ftp/arxiv/papers/1908/1908.07401.pdf -%X' = Ax+Bu -%y = Cx+Du - -%Inputs: -%U1: Total Upward Force on the quad rotor along z-axis -%U2: Pitch Torque (about x-axis) -%U3: Roll Torque (about y-axis) -%U4: Yaw Torque (about z-axis) -A = [0 0 0 1 0 0 0 0 0 0 0 0;... - 0 0 0 0 1 0 0 0 0 0 0 0;... - 0 0 0 0 0 1 0 0 0 0 0 0;... - 0 0 0 0 0 0 0 -g 0 0 0 0;... - 0 0 0 0 0 0 g 0 0 0 0 0;... - 0 0 0 0 0 0 0 0 0 0 0 0;... - 0 0 0 0 0 0 0 0 0 1 0 0;... - 0 0 0 0 0 0 0 0 0 0 1 0;... - 0 0 0 0 0 0 0 0 0 0 0 1;... - 0 0 0 0 0 0 0 0 0 0 0 0;... - 0 0 0 0 0 0 0 0 0 0 0 0;... - 0 0 0 0 0 0 0 0 0 0 0 0]; - -%Note: In paper, 1/m is in wrong spot -B = [0 0 0 0;... - 0 0 0 0;... - 0 0 0 0;... - 0 0 0 0;... - 0 0 0 0;... - 1/m 0 0 0;... - 0 0 0 0;... - 0 0 0 0;... - 0 0 0 0;... - 0 1/Ix 0 0;... - 0 0 1/Iy 0;... - 0 0 0 1/Iz]; -C = [1 0 0 0 0 0 0 0 0 0 0 0;... - 0 1 0 0 0 0 0 0 0 0 0 0;... - 0 0 1 0 0 0 0 0 0 0 0 0;... - 0 0 0 0 0 0 1 0 0 0 0 0;... - 0 0 0 0 0 0 0 1 0 0 0 0;... - 0 0 0 0 0 0 0 0 1 0 0 0] -D = zeros(6,4) - - - +%Parameters source: https://sal.aalto.fi/publications/pdf-files/eluu11_public.pdf +g=9.81; +m = .468; +Ix = 4.856*10^-3; +Iy = 4.856*10^-3; +Iz = 8.801*10^-3; + +%State Space Source: https://arxiv.org/ftp/arxiv/papers/1908/1908.07401.pdf +%X' = Ax+Bu +%y = Cx+Du + +%Inputs: +%U1: Total Upward Force on the quad rotor along z-axis +%U2: Pitch Torque (about x-axis) +%U3: Roll Torque (about y-axis) +%U4: Yaw Torque (about z-axis) +A = [0 0 0 1 0 0 0 0 0 0 0 0;... + 0 0 0 0 1 0 0 0 0 0 0 0;... + 0 0 0 0 0 1 0 0 0 0 0 0;... + 0 0 0 0 0 0 0 -g 0 0 0 0;... + 0 0 0 0 0 0 g 0 0 0 0 0;... + 0 0 0 0 0 0 0 0 0 0 0 0;... + 0 0 0 0 0 0 0 0 0 1 0 0;... + 0 0 0 0 0 0 0 0 0 0 1 0;... + 0 0 0 0 0 0 0 0 0 0 0 1;... + 0 0 0 0 0 0 0 0 0 0 0 0;... + 0 0 0 0 0 0 0 0 0 0 0 0;... + 0 0 0 0 0 0 0 0 0 0 0 0]; + +%Note: In paper, 1/m is in wrong spot +B = [0 0 0 0;... + 0 0 0 0;... + 0 0 0 0;... + 0 0 0 0;... + 0 0 0 0;... + 1/m 0 0 0;... + 0 0 0 0;... + 0 0 0 0;... + 0 0 0 0;... + 0 1/Ix 0 0;... + 0 0 1/Iy 0;... + 0 0 0 1/Iz]; +C = [1 0 0 0 0 0 0 0 0 0 0 0;... + 0 1 0 0 0 0 0 0 0 0 0 0;... + 0 0 1 0 0 0 0 0 0 0 0 0;... + 0 0 0 0 0 0 1 0 0 0 0 0;... + 0 0 0 0 0 0 0 1 0 0 0 0;... + 0 0 0 0 0 0 0 0 1 0 0 0] +D = zeros(6,4) + + + diff --git a/PlantModelSim.slx b/PlantModelSim.slx index f085c7c21593da21508418713140f13f504f4d6b..537a893763cba5ad2413d0daaecb537a3b00191d 100644 GIT binary patch delta 11823 zcmZ8{18`nl8|@q0wr#7iZL_hHMvdRtjo#R{)i!oxv$37V#%=rEd;kCY&&-}ZXU%$^ zy=R>>XP*ZbrC_Ju!4OsCAs{gU001nYEU+FC6CAuOu#p@*9t^H5FkB^eyEsP&)CR!; zp@vllx`e<2g0#g0iN7s#G&b(s4n~6*J1B7Vt&>UdQFjB;`582F@)pNux+HVl4J_K{ z;L+y-B-hEmNDhQ>Uzoc=4Pu#eEXe3mS3sU+RpJh6or<^+G{Mg&>N`+=KAYeDwrx7; z+D%60%Gh%mBM>Vf-jzW(ZJi!D+`ymKz%v9HhE7Qfv|>Y|eOnmm<-#(k<^|!{!bttB z+|Ef)qS05VXsrq6KX!NUkJ?zQOnoc&&u>+Q6Y2B)7Hp77oy;H1KA5WVp~bRSB-+Ag zB><^sa!mi`;+t*(CneeC@E8pbf%hn_h4~%Yj`3~wmh%F&;bq4f5&t-(yO*5fTI=hw z1K6^kC`b7lyE-qQ>AO4*x)g=f0nX6`v>y=SM}dB0613`u2ROgSYR?TH<;{8H!Q>Qc zE6GZVKiGe33=)HS|E)1d9Qx1HC;(88VLZv27vOEaDjWN_dEt0 z*xk}JAtp^|eLUz?XdR2JF{lo1MTdoKwRhHDB#eIrQd0JUV7C;m%^Bl{aa z$6~3=)n`F3)Pze5u+Mj-O1$p+=*A7@1mc>@Sr=BdTEPYcU|G341l~1a(zPPLy{$} zGc?k*u4}R~sZZ~^v;qEpp3_T2#a#LWq|s;#-;8`;GTuV*LoGcg-f%&tqfE(qHtKD2 ztY=Hlr`9=OyZ1e0o~5rtV>9Tb3a%EWwiV&NsB2Ps>kRbF{zEmj&lS9nfSW!B-ZY#@ zA(TUJ`=I3Du8(?rBEYlpZ$%Q#swq$C=t*RkRFa=(=%CgdanrFTGD`B+pRS2QxFMf@b3Ve4j10puY{cOBiM_A;LGrT+GR>RqdvMau>&`9H;R21Td=^B+)N=y8JY}Ar z1zbtUJ4)<~cAQOeOQz`3!7YHc&E1Mp_l&HFOC%yW-m1~z2en?>Q-OrcyqO)Q;cX+% zysO(qNDWR-cr3n`n##&fCF_0?;+2i{2?U7}lN5UoGo2Z?yT&9S|735Z4YpzJy`M;) zD9UL*F=SC_PQcGZ^d=d!R?ifqQ^H|xXR&lgN1LUAf&5FC=f8jg&yR+1aB$^~wde0I ze1u(94vrIBq{G(;#R*|O?IXj1n-hTS&a*A3%jjq^gh}PEFSOPl`*=d)Xr<~H1QOo* zK$;7DBvd47(rTvU(K@~oW`zaC&F-Hps2ZcAqjRq`Ie@I$=F}V}U`XQPeX8VaTPr+P zthlFcO@g(CC&g* zzjM7I%K@vc>KJ}*Ecw`n2Ei!#&LrGxj&&e@kpIbnhBl`;q%>aftEtJ1y=jr5&*nS! zeL3M5X3mtualSI!<*{xhV{5GuBW_;I#c@vt$BFhru$Rw|l$FKB#kqG|xL6j@oM;lo z3FVLV#p43gn2>y){VpI!o=E)G#+loD6N@#_N;y!mLbFEgMO<9G9aZKf@FpFS=lb~x zBZL%0W37?I|5+hvyN+*+sg;$F?~(tspP;9fo}GTzO~gt(fZa*It`npyowWz56QPUt~8Hbq5jo7t3e*T6C6Kk_(5Y(`Q!kU&=M7i1zIUF`aRbID+mDOk9 zrys395;^iwA|?lMB)p-at!xTE>Y1sle~2%OBp@JYVeIrC`>N(+wqzYU%+|xS1U?4{ zz1i%6u#uUO6d?%=7{Yha7kDsiVumgo$EV0T@YRQsA({$3W_tf}T~*7WZ+<1zD%eq8 zyW^(M#71Qi@>0{$@mf&lk&+r}WMs4sJTfuEM0pJ5kLza8PlKx;?7p(kk+W&;F~lBN z8LX!=o+w~oa?)C!Z*xZ(oGIS4!Pl6C?1caa2izFKhT6b;Gpv&sPF%Fx)(7Jm!!*8H z6mc>s5n*9bQIjPsHQ&i(a(3xOEUcO+fq$J4CaK58HnGqVNpPyIs>xX>>EZzak9j+} zSy`PGJ(RT!415z#aSq2udS~{QQLDAYq}P{wQuR&1+JinLz;ot`0&pgp!s*?!UN$$f zoU%(Go7ZSAC^<;@_PRH$eZ0N#p(M9m8#~fOB^Qzbw9HgJ6kzvZL<&C*E)wo27kRb4 zmz%n+g`FhdqN1WqlN;h!k<*oc9B7Cb^~0&-Cq<}!`QQs?{EBl*JFiB!3i6%;~*r0;k~EuUW>5)CC@`rJq8n9VoFpBc`Lb1Ny2j%Kd7Vj1~d zoy$9gp{A`g;QZ#6E_q|h=(vW8M6%(!4bR-byGJ(U%wA9dG}gl^W;>%m6F~>6O`q*C}F#46)UF zLAqvU`=o>WZ$qYRN2~d3pt{ZZm%KIQmris9NoKL$UQQmzRbHbX*l*U0*o0#Kw>YQD z+u9?%2MBnTxbN=A5qd1ZvmLHSUOqvls-k`f{Ot5ds0OPVrVxy`FhODA_p_C+Z30w1 zcC}{26$-Fyjh&EJ`NdTVA=|lT+y-UIi3N|Ds&kaJmHVQVBwokdQ)!s)ZX)7wErn8A zKJVWx8ryJ(p@9o6{Av-kbro~E7Y=pOq^KJ*joKxQY>+s63bK^zQGR=B?OU8L3(=!^31Vq5{Pp>Y>xB$79BLhcXOfw7I zcP}?X1AP<=y`IB}k(7Iy$9X^V0UaNRg*yooH4fMi=`Yf&>d--ny=^!`JA*`Lw-Rg& z!ompW4QHQDS9J7&C&$06vMx00+J~Vulu19K$(YOO;lqgNm;mz2%k$dF(}uPk}{K>mBlLjnUj8$ zZH67`jj6mieDlp;@PzrY<3tdqHMgz9-V@WzPie^f+%U+h59AP=adqX`PWpsmdl+*$ z#MbTRw~iYMv}l`}TG%mg$HPmfXK^ea1dU_3vJy?{azZeFaYmfy(5z!fmGG#O@GyR~ zfu9?!z%_cGEhO^YF(bd%T|xRXoVp^rrqmXct~==bP--_!PV|PQFmKx1+xz1{nsSNc zeU@_P^&5KC>}@_-tAll3idy*qi=jrus!I)P8NS+A;KlvjT~0L`kN2rizxqjeq2aI4 z9+UMvgIT#+?c``3Z5KFL*c%kY!#tG=XWkE3!I6;o5P9}uJKNjLBQRjCHD{;&s2_wJ z(K5|Bxj=Y%J$c8+wty_Vm6hqc`EHZ!qZ1Y!unkviR+SNM@SjL1PQOyGh1jTHH|Mrf|-2!XSwqglXxPCC@vII8fwaY1v@12v;Fq7Gd=Q2LL#s0RX(;L71zJgS)+rqaBO7nY9H74jmELtU2ts z!iw5)zyP^s6NOn`T!)pXm?}Okp5n@CU=Ftco!|)a_oEwap!y-{W6i?O$KmVi>m*a_ zWPCjGT;rqOGCoLC*?sRup|8ok^5y;J0gmd;!K0Bo`7GzFpxZ!u+Jg~{3yl8jT&m>` z&Vt7;R_=x=t}5HQfw-29^kjRWoxuT^P~IF@XDOKM!1V=^*odqQgmBwsdmndYs|SL2 z$I}$IR+r9Xr-%2BvHat@zj4KvTvt)C9BSH+e4>mcjuNr~A(RH;vWXYgtKAOMw-zg@ zcegdC%}wW|%c(BkoOHFFhB4(}#C$97plIkOlnXwkGlD%luP6HK-e zJalqP+Efj(Dp5(1*mgpH8)72@-5Uq>w>kR8SEJfXNoVsQD~;IvPKPs!v^6eE@fS)> z8F2j3DH{x4xp+Goz21ZZ&KNO31g)TY;`;))FZcqBq2|bpC7;G1(KTl-JbszGN2%+Q z_C#Wzy`18kc?3FkBV`Ow$Hn7J!}8A5eu-gM7$q{2zn^c1URHJNn*^f^2^gKY!Z0gV z5Nyu`GoQ)HE+=qC7eX7JR-DYWfE7aHLj{JR`w(o)`o)I7_R-k? zC7H$yR1x#7Mk9K&CnvCbro336(bH~bskJ7$_Sj3fO|F|3!UP=%WwZOFg%%Xx8s)aF z$6NG0s?RyU6e6s|W(^C^@j}KCTSsf8#r8SIrE_q{Ii0z?y;ko#hqTkgwZ)oqVz|=i z29f2EVLTz`j1pEd(p5|$6>W|R%l2SOU&hwKeuJ-+{TGy1?^bNjR-9RV_71{u7+m8M zy8E}CYZ8$=1QmJg|0D;(RrbO&>c9PdTYF$Zr5NNuEqT{WR@BY|ZPpw7e3CoCh&E+!!Ln-3~Lx#$eDGJnpC5gaO%xXZ}x3&pq46<&5nlt&T4GOn!u<8?(tx z^tD>@?{CjI@lV>z0|j(H$Ah)J>`uHm?>dlD<9v&MowVydowTg^hSVk48D8b>o;{UT zlVpkjf1;;A_nc(a+8V9jL~b&Prd`5(R%Vlmyk9sLfZ0C(Zu>Y}r{N}#2ah(G#wy%) z(H@FV4+*i5*CdD2Q&Y7lgvaj=$$-M71HW5!r770cA0V}{1*e7D!#6cH{A!RL>ux|1Bk*DR;qeF7O zd{Y33t2Of__1qw}qwOoTw(^2vzI^y6m|B71JjUQ29ADQ9DV;Ez{=}r<5CV8>M)7Vm zu5MB~@jxgL`{h>B+F9AuvXy=_0&lxAu{Iq>`}D+ghmvQ@_Ddlvd?RHE=1@FqxEyLX zFi8fWg}y^OlU1}Ov5@JOJvg$M;j};zK#9pnUW21%i-aD_2^@AHf}jthcqqa@{6&wT zlgTJZ7~B^uj>wGU6QHh8O86D(b%JjjxM*+{l7Y!u)26$Hh6<-BLa&CW%4Als%p2L< z?0|CK;h8=mS#vEm-|AgTmhsgtd*!E%xKx`X(U*>{{WD4?7z?NDlZ>yvDK){i2>Mne zDnO=9lL?50_D2n!$0c)z4tI*yuLr7zYh%^Fa$SGapPv_Ix=L*+Coe@mj8X$xWDK*F zD>7T=BVSz-;j`rCbbVfM1hbsbW7}3M$Cf5w^xl4MzN5^6ItvQ#x^28+RJ{zbSG!=d zUSrI={*{qwbif(|`;(Fpz_~^KlZrw4Jj&h+2>>XgfP`>Kfcj44Jed9)#%x#OxfvoA zTE|d2pO$H50qWPaU%#g^e*}J@AFNJ-WcCeGz)1#n}~Y zZ5I5=TvT4g6*wS*Ya0)S=S;7bz3EZg2pfo_#u1%0j5!pbCDj5*eMSdM-Zw!k!=9q) ziJ^v|PUJeIwjAayLgp=`w*t@4ZCey}KijyU);BiRi`+w{Nh-AFQIu&<(T~O*mMg*> z4??s^;R@995mIxh6cuD2*NWk2l&j_Dyd#@R?;0x9OlOt@G#TW8u1Kv4SEk)rNbq| z)*)?H->|7@t78?QD|8mhec#GRn|k+m)241paU@kw@a81dv4vUM3_6;taZ!ARg!qeD_t3D|c{k$-8 zqLolAA1ME+T)*yoz{AxYcOC88t z7x-c9R<1oNS*#6tp}e?Wjin3=!Vlfgv!vbSYqiX%+}zC0HnDST#F1;Y!mdGN;@l`q z-jTtDU&qU)W64{EoeK=VJl$hrvg0&gMu zNFxMgd)AS}W*A0HZjNhJYUbW2NCw16B_MUGkS+;J;!yL0(AJ?zg^I}-Z6?_g37%XHPiIhm_pGH!ou)#QXRsr53&_EvZ}Q{yYxA!3O@WWu5S2uhwe&+C(Y%= z=?0XM0x_$#I7Bu!;tuYDI`=vO(>qoW;=lK|(+qf#NnEC7L;vO7y2x#1d1asC47PCyJ4&tm)59Nl#yc2NRHNE_}!` zaIrGI%LJHoQ=fVgm-YH2P`9r<1IdS)uo_hY#8){8A@z+W!aHYMyqvYpGA1&k8X7n* z;>g0>^DiIGPErF<5q*A?&0Npt9s*Cb2(n0HbIDdaFyj=`qg+D#K>nY|9dK-Ew;%|< zq|~>oF&p|V$LXqmTym&s{vFR(2NR-6yJhXYr*Sx6sDBdAtkBuQpvfe)`M9CdN~Kyt z9-1BZ{ym^_Ve|7_gJi2?qPD1QDcI+rhYb9d(;vKzFjc(v2|jZT!j8+iO~)VOe({e? z%hOfTjGZ{b@*3C-GeF1>i>f9V2tg=YbYK0Dpkg@VB)~6Rg0C$=@#X${z{yQ9VRWo} z|C0V_+xNtwB8I~8YcKf0>EHjJv>9uDIlq(5$_k(-LK5JaftS+?FZO#^uGqyXa)#u# zPU57^aiD86^eJ^jwk5x$>J++zD>+CnYJ@HL@%&jvHP-w@uJ#PmW?BP#gJR=3;TQQ4 z;fwdzs~CbYh~C4|3|*%=L3G;ODuE|+jhl{$5o(bu-1cxLy%*gPm=^8ANV!K+NWxueA%dDu;8q%F3j@*fdLKX_=gY9goKdl z9ueTa0}t+-6flcVF^(JxQe8y#$&-P^<{9hHBKJ~J#}-rkV?S^_k^4vKbiphN*X#7Z zNSS5cAqH&q53GF9RU-t644-*L2>~h|KLjJfQAz@11ZrEPUs3D82GGzR;5~Fo zvj(W2^f^2AV(s@QK;pHViTyZKa+whH5HO7n%?P>@osEGwXBpVmp~+G>eE zQ$8FJ3S>8zP#bikK*YvR6U|m&9q3i%IhS&{H}g56yH=JIw+kjOkz~VU%6ILf8ja4f zYtUNXv$_RE^II42t{;JJd=lZZAOeaSN87SB&1k^ag-Quh@3Gmxa+*uvOsO=11NpA0 zV{j+!_Etvx*txw|w~f&BtcJgc1B~326!AbDVu=x zjR;+-s3`Cb1oB#iMCD^t#~IWWcy)GzU5n94(e>#EIkB-&L-5x73>uEP7W+o?ifRP( z^xF4)8}JTq+!R9fbVrO$oQjOgHh2Pp1Wsuc^XvkDVS*R8K=!_rBl0=SK#@X{T@B@W z%0MtCccc+xPsgEkA-{fz5|86syi#38zjPhY3^|C;tYW345v6j`X-1~$)UYAvT~eZ| z89$;k%V6IpDp;LIRx%C|1?wRT--S15$%t$IF=o75O6Gn;sa}^$4ypH956#ize4MsWL@%b`%s!!_3opFhl2JRFu=T^F zf?WoqD9EL~R(Xjm;w}5H3Pg z3KBAL{S?i+PT{7^c$ouZwBQLOMs=d$;LK-L5ydZQO_l`E9U@*gK1!I7SdS_6&|L*n zVT5n_B1dDK62WqCq@=mP3WaZwvcxeHYg$BRz(`FNeTj;4-7S-h#|hHBhN_AsBvLzf zAY`Pxz_juhSSDm&4a)DntUAenL-=0hI2e3n?flI@dw}+YoJB8Ry&ngtlU4CC-q#Q( z2QL@%R(jo32`LG#4`ELYmSwQnb-ouCx8b)ek0&F}ZY&K7)dM?J z66)A5s-N#0_8E&IUKhuJdohtAA#lhgdkG!FtYPtROW2H!qnwKYu5P(1V`kB!q=l8t zh)FSEHxw9rb@HcPTxQvygG%1nFib~XplDr+k`*KK@8_4|QY_fC1jWH@v&FBNt=4DUxiL5Qyv#$*dig zIX>LE2j8b9e(B5`7n^@lGCFZZ55T0lp`fkr*mhL+K^r&`(f($IDb7tfQWl8b-=Sy9 zzgam`WB3_7KW0@CxU8R)n`w8<@ZAtxGJoWCNz;F#Y2g#q-V~kgFnEpu#(UbDTACHl zxF#<&uR?rTkyE5e6Ab!ZwlsU;n!;|2!ab>y1?!Kwp2za6u>iBZOjyWJo~;z z17uB+kJ@ZV59CSEU+V>%j42yeKe&h?GnpDc~Bw$vlPH89iy)RQ&z`%s0z`V(f&{}?JR@Nr_nOuEy z>(Z`4$B2yYH6mEJp}`J$ZG$pvzbJonRMFhj)n!yk-2uTOyA=} zxY-}|sf23$*cX@LYyDNoytaGewnoXd5N}gv&v2Niw`^bb0F$l&c1WJ2LV$Pzo%$3^GY z$Jcj%&0;Y}Oei=S4(9EY^k#FFk6s{OL=^nBwe zQtOE>q%Dp_Ms-KSZ$8C;P^!Xi&#?`D+3{L<{w6S3ZyERI6H2!~#K9c?)VxWyzU-%f z1DuXsq418t4bq^|R#|Cfqtz6MiWQh4k|q5@D=zDX5go;+dO%TQ|TKS zW-X$Mne|G|?^n9Vnj@D$d8(OPs;s@J6IN0cQ8(N3SvyO@e!hM=!frqu;FIbV2WHGpw9tOAj#p766TI{LY zu_aGnx!mGwmC-Dxz?o&~H1`-zBG23Eu}A(|7>{M!^bxni?72?0CCXFO^AtIlERe_1 zA+5thymOflWr=?{wwf4Km#%I4)DGc@ zN}M)@i#MzlVIP%m^jmP(+tag?q8pwGG8Jk32!ULZsj_#MNha!cJHNsL(^)^M4YETu zcvNCXFj(Qm-rGP9W7u(Y4^tHf$fr6s(if~Vs*Is#Zn4cC&+@#4qfV!+Z0OK#0= zM(U2nn+IPnLmpqpL3e>VU+Z7L@9?+DXpDgRNvD_@xShOH>b_FbLjIVMy!<1YQa{P(s;A9|$v?0!Rxoh#RYjjs0_E5mp zkLP|Nq5yf#Vfmb^Z_*Eci1M zUoBoW9$Zn%zgvzhD?LQw*>(mKm#mBh_x#rKI-aQE8zgu;pME%d9}grK<_iE;KzPcf zbSX5v2$p<%FJ0C2DRqBpeIs-z!lACyDn{UC@;fkJv>sitOIc%Bk)Kp``O=5=X^#bZ z=sP-Z5p!pB&1OLSG3Zla5_`@lLNT8R1lgxLH3sR<-!T`!g~IAO)4rH?G+5jHymjz# zi#JAAK#PwS)Ref z)=`$o3}LiZzMD78ubP8w0$w{+T-K-fKADSAUw7+Aq4<}Sd$WPzen-jMOhw#IoIg?* zZkWuzTLJJtH+X5RH?TWC@s(&YxuK$mM>ngs+cP;OMH!_ zPhQVno1s16ceD7?ip6Csq*pjYVZPT*|H#rf{YnXAsh><3t+}m3|BxJYwQH0e8(*`j zN)qWe5foSVl|E3CMci>Glq|5}nmLoEAK1=SJ3ZW%R~1s-qDCCDmNnN@wSYY*tBZ0+ z(iu|JMYRYlAwloLta?8M{&!T@7)gyw@F$g3C|dicyGTP!_n$_tv(5bYBT$PtJtHWpyOp(bMf)UPpeRZK(SY z#p`aHZrg5$LM4007#w`ZKa>2srhryC4Pspbo<4uz9|$nt8`be8sItz#lE^0{pis;VRbEw%Y2y>nlzG(5giEAAu|+bN)|SWkSqq)QGF6C ztfLuGl*N=elp;oY&3TBg!Eb%&c;7qC2s28e0y$&dcER>8f4`3YR?Zq%IF8azEr{kt z6+w%+p$t@zqJs|x(8z+d6`h0!gxxEer(9+=#@<3&wdFL5q{8Cu8PJM=AXk$dhodc& z5y^8~c~PIQbnW~hbETM-bmcspS-hRW$?x86+%ji)@|X6Mq_=Zh3wVliEpiHFEEA-` zF&j-}43MPDQ4WT7lRJuBWidwFU%4yL*JDE4OjM8T60k8 zqXXwwlqpUPx0%w@uzqIkXPX`^W}Xr-jYY5ztxxpnZk zjF>2(r#{~WS5d>cA}l=T;ERt~a7zvEr3b83ES=|B3!E-rue6DrcKg`;zB?hCC8XGE zF7C;u)MVOBVRRP4gDA|83d7bzhqp=UT;~HkY|;!iuKQ@ejoI~u5E{)VG~}&531jUw zbJ@4Y>R39garJG;P0Q`}J?oo~&5NIJdIO~PX<)V1;OE&*frpC*=$DwziAGU>dn%xB z7xXAJjd+(yQa8Ie0q(MMWP6;rp7A6Z-Uv_ zwMOEgR{&6{l|W&~a>m8Nkb~0%7zKthh{)GrvtEk^lLee`tg|_<(@e0YV$Mr{7B*y)K+*B_I7l+>+pK;9B>%%JjE+2^(D%vgE z9wy$+d_9bCG6%G8eD_7SCAgYc0Wz~@+`=r#wXVx^u2cl+K-8Ai*G=J!PZ>@1Rw4gb5<~a8d*;jUsv6kuBHI7!xdn|V2>K{DU$o5rPZA{6(E$ zP#FI0{D0d@e}4l1|0M>>RiYyOQ}6iSD)b);*k2w8Cg=%`0Q9be_?P&f0w4fD@P8fs zL)^gzF(}jhCDnX!5sUeaioyT@l>Z{l;eq_Hs6iRZe>YyHObA{;0FuX{0i7xTo;`d3pg#0}Jz21TidCro zC^x1;2o9739jnm(HHjqF(vLuhe#`h z1IkkSt6GH`A$XwjU-K2UzeoMUZv;iNDqu-9=e-D;_In4Y+!~ktd e6N7%K{zLxvDfbWiA3dd1f1i2u(BCxwfd2=~Bo#RT delta 9536 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