From d651eeaca09cd172b043387108f5b0a6de029d09 Mon Sep 17 00:00:00 2001 From: Evan Hemsley <2342303+ehemsley@users.noreply.github.com> Date: Fri, 7 Jun 2019 13:59:35 -0700 Subject: [PATCH] rework ball respawn velocity calculation --- content/pong/scoring/ball_respawn.md | 67 ++++++++++++++++---------- content/pong/scoring/drawing_score.md | 1 + static/images/pi-over-2.png | Bin 5062 -> 5671 bytes static/images/serve-area-angle.png | Bin 0 -> 16276 bytes static/images/serve-area-angles.png | Bin 9526 -> 0 bytes 5 files changed, 43 insertions(+), 25 deletions(-) create mode 100644 static/images/serve-area-angle.png delete mode 100644 static/images/serve-area-angles.png diff --git a/content/pong/scoring/ball_respawn.md b/content/pong/scoring/ball_respawn.md index 1e162ab..7a93b8b 100644 --- a/content/pong/scoring/ball_respawn.md +++ b/content/pong/scoring/ball_respawn.md @@ -134,16 +134,15 @@ export function angleTo(x: number, y: number, u: number, v: number): number; Now we can use all these useful vector math functions in our game. - Let's break down some of the math here. We want the ball to fire in a random direction, but we don't want its trajectory to be too vertical, or it will take forever to get to one of the paddles, which is boring. We also want it to travel at the same speed regardless of its direction. -Let's start with a vector with an _x_ component of 0 and a _y_ component of our desired speed. You can think of this as an arrow pointing straight downward. Now imagine that arrow as the hand of a clock. How can we describe the angle of the clock hand? As the hand rotates around it differs from its original orientation in an amount of units called _radians_. When that angle changes by 2 times pi, it ends up in the same position. So a rotation a quarter of the way around the clock would be pi divided by 2. +Let's start with a vector with an _x_ component of our desired speed and a _y_ component of 0. You can think of this as an arrow pointing directly to the right. Now imagine that arrow as the hand of a clock. How can we describe the angle of the clock hand? As the hand rotates around it differs from its original orientation in an amount of units called _radians_. When that angle changes by 2 times pi, it ends up in the same position. So a rotation a quarter of the way around the clock would be pi divided by 2. ![pi over 2](/images/pi-over-2.png) -You can see that if we rotate our downward vector by pi/2 radians, it will face towards the left paddle. Now, what we want is for the ball to be served at angles like this: +You can see that if we rotate our direction vector by pi/2 radians, it will face straight down. Now, what we want is for the ball to be served at angles like this: ![serve area](/images/serve-area.png) @@ -151,15 +150,13 @@ The non-shaded area represents the angles that we want the ball to be served at. Well, a lot of what we do in game math is guesstimation. "Close enough" can be a powerful phrase! We can always easily tweak the exact values later if we architect our game properly. -![serve area angles](/images/serve-area-angles.png) +![serve area angles](/images/serve-area-angle.png) -If we draw it out, we know that a quarter-circle rotation is pi/2 radians. The start of our serve range seems to be roughly half that. So that would be pi/4 radians. Sounds reasonable as a starting angle to me. What about the ending angle? +If we draw it out, we know that a quarter-circle rotation is pi/2 radians. The angle of our serve range seems to be roughly half that. So our rotation would be pi/4 radians. Sounds reasonable as a starting angle to me. How do we actually represent this range? -![three quarters circle](/images/three-quarters.png) +What if the rotation is _negative_? Well, our positive rotations have been going clockwise - so negative rotations go counter-clockwise! That means our possible serve angle is somewhere between -pi/4 and pi/4. -When we draw it out, we see that it is 3 eighth-circle rotations. So we get 3 * pi/4. - -So now we need to pick a random rotation within this range. How should we do that? TypeScript and Lua don't have anything built-in for this. I usually write a helper for this, since it's so common to want a random real number in a certain range. +So now we need to actually pick a random rotation within this range. How should we do that? TypeScript and Lua don't have anything built-in for this. I usually write a helper for this, since it's so common to want a random real number in a certain range. Let's create **game/helpers/math.ts**: @@ -170,20 +167,39 @@ export class MathHelper { } } ``` -_love.math.random()_ returns a random real number between 0 and 1. So our _randomFloat_ function will return a random real number between _low_ and _high_. -One last note about rotations. What if the rotation is _negative_? Well, our positive rotations have been going clockwise - so negative rotations go counter-clockwise! +_love.math.random()_ returns a random real number between 0 and 1. So our _randomFloat_ function will return a random real number between _low_ and _high_. Now we can construct a formula for our random serve direction. ```ts -const direction = MathHelper.randomFloat(math.pi / 4, math.pi * 3 / 4) * - (love.math.random() > 0.5 ? 1 : -1); +const direction = MathHelper.randomFloat(-math.pi / 4, math.pi / 4); ``` -What's that last bit on the second line? Remember, _love.math.random()_ returns a random number between 0 and 1. It has a 50% chance of being greater than 0.5. So that last expression means, there's a 50% chance of that value being equal to 1, and a 50% chance of it being equal to -1. If we multiply the rotation by negative 1, we are reversing its direction, so we have an equal chance of the ball being served to the left or the right. Spiffy! +Now we need the ball to be able to be served left or right. To make our direction point left, we can make the _x_ component of the vector negative. -Also, let's remember to destroy our timer entity at the end so it doesn't keep firing events. That would be bad! +```ts +const horizontal_speed = this.ball_speed * (love.math.random() > 0.5 ? 1 : -1); +``` + +Remember, _love.math.random()_ returns a random number between 0 and 1. It has a 50% chance of being greater than 0.5. So this expression means there's a 50% chance of that value being equal to 1, and a 50% chance of it being equal to -1. If we multiply the direction by negative 1, we are reversing its direction, so we have an equal chance of the ball being served to the left or the right. Spiffy! + +Now we can put it all together to get our final velocity. + +```ts +[ + ball_spawn_message.x_velocity, + ball_spawn_message.y_velocity, +] = vectorlight.rotate(direction, horizontal_speed, 0); +``` + +This is an example of a _destructuring assignment_. It lets us multiple variables at the same time, which is particularly useful for vector math. You can read more about it [on the official TypeScript documentation](https://www.typescriptlang.org/docs/handbook/variable-declarations.html). + +{{% notice notice %}} +*Why aren't we just using an object to represent the vector?* + +Good question! My personal reason is that in Lua objects need to be garbage collected once they are done being used, so I like to avoid creating them when possible to avoid frame spikes, which is when a frame takes significantly longer to render than other frames. Regular numbers are not garbage collected so there is no danger of this happening. +{{% /notice %}} Let's put it all together. @@ -201,23 +217,20 @@ import * as vectorlight from "lua-lib/hump/vectorlight"; export class BallSpawnTimerEngine extends Engine { private ball_size: number; private ball_speed: number; - private min_serve_angle: number; - private max_serve_angle: number; + private serve_angle: number; private middle: number; private height: number; public initialize( ball_size: number, ball_speed: number, - min_serve_angle: number, - max_serve_angle: number, + serve_angle: number, middle: number, height: number, ) { this.ball_size = ball_size; this.ball_speed = ball_speed; - this.min_serve_angle = min_serve_angle; - this.max_serve_angle = max_serve_angle; + this.serve_angle = serve_angle; this.middle = middle; this.height = height; } @@ -232,14 +245,16 @@ export class BallSpawnTimerEngine extends Engine { ball_spawn_message.y = love.math.random() * this.height; const direction = MathHelper.randomFloat( - this.min_serve_angle, - this.max_serve_angle, - ) * (love.math.random() > 0.5 ? 1 : -1); + -this.serve_angle, + this.serve_angle, + ); + + const horizontal_speed = this.ball_speed * (love.math.random() > 0.5 ? 1 : -1); [ ball_spawn_message.x_velocity, ball_spawn_message.y_velocity, - ] = vectorlight.rotate(direction, 0, this.ball_speed); + ] = vectorlight.rotate(direction, horizontal_speed, 0); ball_spawn_message.size = this.ball_size; @@ -252,6 +267,8 @@ export class BallSpawnTimerEngine extends Engine { Every frame we subtract the remaining time by the delta-time value. Once it less than or equal to zero, we fire a BallSpawnMessage and destroy the timer entity. +Notice that we remembered to destroy our timer entity at the end so it doesn't keep firing new ball spawn messages every frame. That would be bad! + Don't forget to register our new Engines with the WorldBuilder. ```ts diff --git a/content/pong/scoring/drawing_score.md b/content/pong/scoring/drawing_score.md index f1858fc..b78aa2b 100644 --- a/content/pong/scoring/drawing_score.md +++ b/content/pong/scoring/drawing_score.md @@ -67,6 +67,7 @@ export class ScoreRenderer extends GeneralRenderer { } } ``` + Basically, we find each goal component, grab its score component, and draw the score component's value to the screen as text. If we create new LOVE Text object every frame, this is very performance heavy. So we want to create a Text on initialization and then set its contents instead. diff --git a/static/images/pi-over-2.png b/static/images/pi-over-2.png index a3d5cddb6f0e2e52eaba71c5ce75781b5665382d..9edd864307342031675038e63e18ce734654947b 100644 GIT binary patch literal 5671 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 DxUV`c literal 5062 zcmb_gXIPU-*M0(lgklH=iAv~-l|Te30VJUX3m{;@0t8TO^aMi@h@lrjWL<-_Py}3A z5E~&>1q3M}3et;$lDvu_5~%|3lij_({qy~NbIo(j%$alM%sF%Bo-;{2Zco}Iy-s@9FlQl9;*Tv-fTc ze~A;HRzY*j{TwmV{kHIvo#c|$#I|B3#X0<3Z}9`l*e=A=J4MJmRN6Kwae`Fdfo%xH z;`e{=e4Ku`TRuLq#Z#%nxAREc5!1sM#}l`H#FlkP^R>BGtK07{e$tWs{QUFI@*a$h zn2d{+w8n)Kl{XLUx4QD)7MEVU#*U9_n=5JCnQ=`#1v6hti2bzma^nN7%3IywqgLz$ zp*7hzDg}7y%5r@AZPshpFB@3D^x??0<$b~Al?>t8qsbUZ-Ed<|@X?G#dWSOk`{8@C zZ_H@l~jQ3843VkHANpJ=&;jd z+Y5qY;`fb>C#(6JIFaW9y zAgQAAZ~t%7KmGq>0sH^5{I5komHz{+2iV3?WXD=$-ntogp32H+&KsrHG|@vQyusO_ znEd#z+PGBae{Nc+lV|BIS*}} zY{wyk14%q}*IJHpmV9fG*Y{XuVtk8w>Ek)BseNIZL;n@G5AxLJ5y_gL?BFQ5o5As{ z=!d3jl_>$)dtbZt%2T0jHk@g;jrpl97CO^#e1X?wc37>RYDHOom5oTy=5Tu3xkqrk z!C9pp)?)r$8iIinz9|aHwFgsJJz?|Dq@1*8`t%w0kGkF!$FrkZUVG#91FObBQH*rU z=n#n~PuZ?dx$(Tcg&`ZI>*r2+Gx`ATs>+2eXMTP2xaH0`CkddEPovQ=E8n7lc*oQC~$jo%AgzUGt#BC*`Lzlh}({Wy@2 z{IWu&sOqT(NY_qrLs^4QwGqs2-ljpuixh$V#Aam1G|u*Idr&b5IP74>*stO zim|VHIASeFEXMU~Xi;%hf%I$R&#?mir0QfPs~l6)Aewqjsru>#gYRKK%V{XQwFP#H z?EYAe3F=_A6{Sk$#Neu==n=2R$QC7S7ZBubdFp0&mzl|yMqLmG&Z0nh)xMPv15v`nBVM0Bf?m=V7&Gi18`2w89IFRe(MY)HwcfW z0FG!8uF&*y#MK0lkR4E6|I3xF(qT!=EG{@TIAq5M%off;mFW;!U4~zv_`o7k7;3r> zaZw6hEoapnl>msedvH3-3lH1+LT-C0$f;rF%G2HfAcc#eBM35kGZm0Ef^%AA07fJx zo@5Fxf+3eXF734tl8!9&`a9{Cq2rfdIgw zxjZ}rRs~o=`0U=lQF4Pjxt(5TI;Zd#u$DGvoC1NA2%|gJreXy^0)8}l#<>p&o8^OY z;QYUuQO7}s`f6in_?qzS?V3}-F#)=8+s8{Q-}pb`;-cfCDneF6m-JJrq zo`jlg!waoX3QT<2E&{J5yGVXxy`id{zzfx5^F!UnZu@dlWS9NjJMiK}{;Rmv9`EJd zUkqHlU;nDA@Es)6S-}}?} zRMm9|5&aX1i<%nG{>(ogTvpiNrv2r3a>M6b>MJn-wele$Du?>3#pnR;L9~=>XVf6( z(yuCjY@v!=-al6tWI16YM&MbS2^OQK-n=T@SZHsUud1k=u)LaUET^(loMGSoACp&$ znQN5trIpj>xB2gtHUUIA(+9)6@Nv`7YVm=ttcfItk!C!fYeKd_`$+$}sRs`>u7D9I z@39u#vff$=l3->vS!1IZZwQr`kXj@$Vaoi zJL$Ig!Me4!(XUMa+d~^k-M_y~M|Ue2jcS4!3oyoD^DYW>*RjZZt9NN3X$cb!O7_+8^SX%fR=EtGv~2*&fo@g zv_KLdrX75cj2Fdn*`}~6!`Gp$CV&>z5e(Th#b6JZ?ry2DjK}AS2)oAMrhQ%N0W>MK zDG*-8>8YSEwnIm~wgS5O;IR`IP2n8s^_(S+Y<@I*ck?`*NOJ-jV-Q-~McIbPb8Fkv z(2%Q78nSrW`t;YenP>k>EKr-kBSrYh%2EM%GN={(v8^yV3te4^3KnGsvPT(+0jS9F zq8UIK63*53D1*op3`m9s+dhex!T&w{*O*Z)4gqeef^)?#v8|~f$v`(n3jZwkst*I) zoskowBT6?Vx-VbmdD#NcI^(oa$QQ&72DXU&4ctrS)c{HoOJ{s~{}Eudm~}2&blM5u zSrw68-Pck8_=@CP6-xND{RzKQL=jFHz5%|M&~m+p3MEDvkjI8H929$sivou11@hv1 zzW@s)qTH)OQHDdy7aexVoC?!}zMF-mJ&*T*Hpm5BGMHFR!V|cX;5CmRt13`waiGcq z1dtw${R1!#rPZ)>&gn)TDx(m1SpoMFnBt7oP1_#NZYzSC9nsasf+pA=w^nYXVg(`7 zAdr)!icLtMI%oXRYDmi=QX9*CF#Eu<|0tSxrZUe}X;Fb=Q$l!Hob|E@%WD+7o?ju*(JA|%O>Pwuc*MpAHSY6hNOha$q% z_*Co^!)?XB$BPD>l{9PrDtJ3{12XN%jU+w zS~H;l!Q{$QGdQK{=Ei8o`w6>g4dbq+F}LW?_e?Q)NA(`|>=f%O zW@-vPqwkiA+TPQY-BS!db##44+}mqiL(kmR1U<8g*2-l#J`Z$WOfB4ponUO9Q?t!M ztHrebTvcrSHAimP>3Uj2s~q{oyylc&bMr_{uBX^o^_k4xaK8esoM$QvolOAq&71n? zj~1kY>M|6^W;R`aUGX&0X4+1_X}L14`F!U*=i=FvG{ph_hIvP^{$y})#lzO|8~gH9 zuXS(QYR6cgnRvwBmV`e!LGF5=SWP)&Bp93#tFSq6WXVbyN9qjiZ{^17ncT_rJLO$_ zhC9iQ%&H7_iu#sdtOGN9ni6Gg-z!hKp1lv;8gz1LPd4(?Xx^bbS$sUh&2O?4bI6f) z$orS9#ch+R-pxN88dA?+e!BkYOOn@zTS4rXl-%ZQ4^&tzD(|yH6G!0Fx3506yJbd+ zlGbl0*fRP%oKvD$R4!M7QlJ<7OQCCYsVfvcgq{~fQE&^IeV$ayf8f^$lf zIafMEs}RlSdD=+Fl9lHlZX_Fni%7rd_Nl(W) z0*d183j93Bqp%vP;WxKNH|O0k~ok1s{@6HuU2ZzG@V2W6Vde6+2UZOJ%fI| zWkhHlS>R1_9T+WDn}UZ8-g@NR+YskELh=2B+dt-|GgU^Vz}IVa5BSp`MXt||H^n(o z4p80fJ~Mg4$Ii%4HcV<5)(u~fr$9$r&P{uwe@5mVPhj>K3Emp6opy7WUAVvUKC$lF z2bw>}uk4F5MKz+m>0l71H9|PCHe68iM4+iXbV=vkWpwr~ctq+3Kk(;JXcyD6O{(rk z(M2aivl-KMEy}fo`r3|&cg5TPqk%bC-6fl5chvM4p9^EuU&wf*yKE)9>X7C6+|H-J z0;TauIFY_uB(r}7=4&;k8}o*$66(ucCvV~3yw~4dxnvhOyY4@}ylivh+qD0k4ovs7 zlI!#F8QpY~1^7yzjDIW1HHibaHs>;)%w`)eqy$ku)xxzxc15{e(k=iJ#*JR z96di2o;YdGlv=BbRbA_++N|H0J-@UKJC%}AQ=z3X*9m>hjT`T2Ysvno6I&$YfvU?5*3bE`n=!{Y{XSZTb@@Q*CxXX1+6s{zK zSJ--^xBLFGXNBV8UA~1&SeY}fB$!8XyK%-qAdRkjW3~`D|Ir9ML?tyyy(lc(yx^V5 zg5JjF%*$ZdVB@r|=eyTppB{SfrQX{LL)5{T=Q(Q6%;t`#8pe4d4o9!Iw+zqGs`vSB zEm&U(tqYqjD7)9rKie!X^v2~quaq)PF!qrP`>kQ=)WP#74V3ap&FTR>6T8oj8lU?o z2yOCI=g^mg&_OW}oZLAO8k-s8Dv+nZm8rPyEjt@l5f-T|xpCVFddx%DPn9zs&OE&c zW)d=Unu<6{>cH=RTSpu{pER#2mZ`_%*tH~h?dF2A$HgP?5~|6$y&XUb^TA11HX z*TV5t1ehuU^0aAvIZ8QC5qOrv>z;oGLFWz8VixAZGy5RKarRu+yDzZF_sereDoE-; z0LsurI7URk!(Ne@@8;tpTa1O=AObI+{GsB8c|HuPEGZGmM=?p`tAo3&{E+mL#U{-G z)!zrJKRRugp03M;>^92}?;2@FfG-LAN~ym4;5(ys&(@HyFeDX15#xUDO~vBA9VIoopF>eXZfLtS5Cl>Y*E@X~U=E*%0TY&soh?cL(P3*4 zMD&VzeZCn&o{zzP0C@U>b+#;^01tbXC1D5w;9)PbfSWM#J-K-D>~C_wm1w^^67$kR@I7@8Zj%1lAyI$s6?m{+IJ~xi@j2{s)Sl0X0?i- zs1?L$5qq>oj5K^-?dN;W_b>RK^ZntQb8=pJy>jn;J@0*v`@GNR;~DwTNay?+?lVkG zOy?oG51>p;$F~1|PoD&ybdOBG0d8KoYHB`&XlmYghV*iB^>Acjy4jbUpnvm$2~T@S z`}6#SFjmrx)W>(B4y1?BA^G=QwJ37w`btP@X)S22YYud zkNlO8_4nyRH;arG$bP-M=w81Y&*Ehy6-SvAq9`tl^qQFd-AW%$ZhVG(+Q?4kKI|K(JHGDidN=)|uYyNvhhdz1LgmIe#zShgBzRGjn$R7yWH@9`2vM>iZq1_M+AAyJD0T9V}n^Wz5k;j_@;x*@_QY zpGSul^xP9aQ7*b^$m-Jgx}K=vrB3IWZmsrF@IKKH*q@%Vx-Yv?Cb_oOCl?&@p!wLd zC&)q`2GS1T3hOgnOB55+g|@%nW62U1t^*HG+Ue^&0ItAiU$Y?uxSaBV7;2rGJ;`$Q z_;m(P%MaiYmygzCA5AX=!qL-*NfYV#)W^}`hM%jC%MBff;X{j;7p^ifsUaW_?mv2N zvo@(-%F}`Q^c#CqEFZz8_vV4&#X{W|)yJUuamVUeXP~@hEN|nrt#icnE{|Q()%+l6 zYEpB(Fs~&4>`=kk^USQ5M34O(m2p*)MYRMr%rsJ0*Z<(AdxF$Iv29E>1vXS|ZTMBy z`t7#=eD>V`91~OjN5vu>6VuzLARi_s<$D^ZnBFq~|DXSN*TIWtmb!1q#N8N_9-`a) z`}H{tlbS%Ty^C<7v)6N3ro{&u9S?PX?8h&@tbcx<_sfm+1ue#LbcKcvSyxv1W5B6R zq1-$bkoTnS`aM37kIzfc)SX1ti*cc`^9en4ozJIe3H{&Y6Zh+MH$Q2CeB`4XViiDv z(Gj7sh4F2d{$q)|6yN{-T%rC&=ghpt~%a*#|Iu`9=QW84~X} z(Ckg&T!G{#*;Vv_iDj^3={K=%9@cK}i}#{fw7$q zE69g474@IfOwgn`hO#VCjnN}xN+NT>Z{WI%H{Uqe7{{>aCf4Sa3x)$ie$QO?dty&_ z=1Poo6@on>PyvK6?yZde=tYJ0{zXFe|?3u|Ib za)_akf=bRKlbd`R++AN?p*NIv{Z-q#fSqNZJ|)OJKW6*;_I2cwu-JUvdC&Zu5kbY` z4keAzu3G|jwfL}<+1o3G6I<b!1aT&lu;Z68jf=;#(%`yzK+F>+)+aKJb}ypxBm} zWENJ|$#%nqa0k3L((k{DEKcPc(^H^%;R4k07fV`~r8R^OuiB|!B4T`g7u z!|goY!!fzP*WBs6NhaQ)W~L5F5TP{qZCLU1b2~db52g$T9R4AqLteS z-VH8<`42T-6x*$!KB}CuTPdb}by6ByRZ&_omC~-Vu4#TWEACs>i$Fg!*bCpC4hczP ztNtnOcNg1=4IB_m-@qzYYU$5659wt$ydS$FwqnY@=Pi8rjmD=IP@U1!vNscD`Yy@- z4tBrsJS%at=?Y|iW|P`ogcFMAyLWNq=2yZ7+#~~kjy>0dBF?KcN*hEDIY`90uV$P3 zDHSwNy#A9jTU{$Qx6yP$!lzW3pV>dz=6llJLWN2%IgO#mjAV9GY3}58N?}^SpFdlD zMX;+RF|-n2>fmxWqVtTc5hWGm%&HBNG`@KC9SbGcRNJ+<`w1l{ABlnld~#0u?2XQe;y|@T8!X9InmdaTA~3#$vqc&9py|IZab2 zwFXKnJw>+)C}rpxo4zUNhx6|IbnmYR-;(Exr!<^KCO7xyc2Gp+kd&1@M|FZ%Qpt|6 zJe*VU;{a$4@rW?k{Piv^1fjaR#-j51i?l?0pU}pJzz2`l5J7>P86NU$2L4yQNneu=?1%H!EvlGS?L`uc_{(uiO%yr>!TZmuzg}9 zUs|53m`(UCOJk+EV9Al80PA$U5!h+`>{qf(F~8?zy#nKk&B-mn2I`%j`oyS>Il)HG zYHOxi?bw{fyLy#t(^r7`R9&_j?J88#wo^IGNXS6&6Tdjn8}xfh7}RCeg(Vu*HCU@? ztcBIzO-Ql7*uEvxlX~gkoQfF{PQx`^up53X7S?5!>W=RC}lsJ~Od+EuH? zyBLG|=^%lqAn%@2{6Wv^dG*Z~<|#kq%X-3woN^LgEF%q(Rimxfpx|lDeAz1nD~^{X z13OM7<#^e;5wGRh{(&+{{!~jEoBE$$zkam7TB^OIA!R$2W+$iX4gFQE#ud=llU2)j_+^EV_}*`8XYeJc)>GX+ z+9v~gSuI`k&9`J0lzo+^YFs8O*P$c0lmk7>Se_kD!TD<*dVI!ZZ0R!CveG~Hq^>_C ztmrooN}%bTXWs)^;wi^v2qD&JuY9BHoFVtTV=^dSwRyvmQzKlXR<-jF?M z)*AbP4<7f`F+^-d*sn#QJ0s9GFvZKCV_f=0)zh%4w^>-rwU^0VQ{FDRr*rdHyE_e+ zQL#L<*!wit=JV8^S)7o0tUbh}j2qe%%co&fmC3IoVP!C{VbwC3j<}~JQq>Q6g1==Y zlH63UXW5I#B##>#5h+6jcsJe#UCbYWjv3R}kI>0glM0QoQpTY52_ovJd|+2!h;+>5 z08KX|7x2vmt!8>cN4eIy^el|X;{Ip+yCyX0ya6c}4d0EbKBe~dD@EN`;i3+C_t$>k6Z&6(G1X%Cv)C^2iiaPP3 zC4TlCA}$G?QDQt~RUkcWFJ-0n&C@Py>IEEYU3Oo&+iZO(KTF_}M8_S&fo7*wZw$P< z=iryp2cAlIwp%@^Oe zrmYg{JauA)$Q2&nbITJdv?KQMu!`} zXFJTwKko`ie(QPnu&fnpKk!S^o%A3xkll(;KbDbPTAru}im>XrgHr09Kx9>xnWomX ztt{r2r}rIMtcVBMmi8wnyi9d}*R9~Xo$)MaC++S0VVaQk4`h~byKxsL-?L$&JWtwI zF7<)bPDN_Zw#HAgQSeVH6E!VC7k-`a4cr;se5`Bf zTLl-Zbq~Z5S7@mv2h=0T=OaoBgYsqih%wF2r~3T%Bn&qMGEqWStVuZ6ePr17x+JeX zPC1qhA9or{DG(H<&@?~$7PFP#z;6bIi0W7`uEI+7io0A6o^u zs1wI$*fNYT<|xm#NU?{e^qMuia=rP*Kwl|Hw`KI~(4ZYI!}V5R7x}yJSO)IfA=}X} zwy6y{+vfRZ5bkzSa?iO3VV$i6T*g!TK=}GSZbH4`rSY+@#;figarjHcqXb@d5z4f+ zhEcM5AkAaEi#W@{vSLr3sjJ5wZcS`%NEOXW0N#=yYVHYz?YH>F4)dbs@8Xn-)vw$X z;K+W4u=YAsY!2-MlVyVtw%liDetrqRdgw$6-`^bOE>w{u^(_bTe�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 F{{f-UB1r%M