From d8b39de5823b104f1f7e0c68b511bdccaee96145 Mon Sep 17 00:00:00 2001 From: morphed Date: Mon, 23 Feb 2009 15:28:00 +0000 Subject: [PATCH] lots of weapon content changes, new models, new animations etc.. (shot origins) git-svn-id: svn://svn.icculus.org/nexuiz/trunk@5934 f962a42d-fe04-0410-a3ab-8c8b0445ebaa --- data/qcsrc/server/w_campingrifle.qc | 2 +- data/qcsrc/server/w_crylink.qc | 2 +- data/qcsrc/server/w_electro.qc | 2 +- data/qcsrc/server/w_grenadelauncher.qc | 3 +-- data/qcsrc/server/w_hagar.qc | 3 +-- data/qcsrc/server/w_hlac.qc | 2 +- data/qcsrc/server/w_hook.qc | 2 +- data/qcsrc/server/w_laser.qc | 2 +- data/qcsrc/server/w_nex.qc | 2 +- data/qcsrc/server/w_rocketlauncher.qc | 12 +++++------- data/qcsrc/server/w_shotgun.qc | 7 +++---- data/qcsrc/server/w_uzi.qc | 8 +++----- data/textures/f_shotgun.jpg | Bin 4210 -> 4994 bytes 13 files changed, 20 insertions(+), 27 deletions(-) diff --git a/data/qcsrc/server/w_campingrifle.qc b/data/qcsrc/server/w_campingrifle.qc index a14c5a0f5..4ffa93d43 100644 --- a/data/qcsrc/server/w_campingrifle.qc +++ b/data/qcsrc/server/w_campingrifle.qc @@ -51,7 +51,7 @@ void W_CampingRifle_FireBullet(float pSpread, float pDamage, float pHeadshotAdde if not(self.items & IT_UNLIMITED_WEAPON_AMMO) self.ammo_nails -= pAmmo; - W_SetupShot (self, '32 8 -8', FALSE, 2, "weapons/campingrifle_fire.wav"); + W_SetupShot (self, '41 7 -10.5', FALSE, 2, "weapons/campingrifle_fire.wav"); pointparticles(particleeffectnum("shotgun_muzzleflash"), w_shotorg, w_shotdir * 2000, 1); if(self.BUTTON_ZOOM) // if zoomed, shoot from the eye diff --git a/data/qcsrc/server/w_crylink.qc b/data/qcsrc/server/w_crylink.qc index 0c3041f18..a1d9af502 100644 --- a/data/qcsrc/server/w_crylink.qc +++ b/data/qcsrc/server/w_crylink.qc @@ -66,7 +66,7 @@ void W_Crylink_Attack (void) if not(self.items & IT_UNLIMITED_WEAPON_AMMO) self.ammo_cells = self.ammo_cells - cvar("g_balance_crylink_primary_ammo"); - W_SetupShot (self, '25 8 -8', FALSE, 2, "weapons/crylink_fire.wav"); + W_SetupShot (self, '23 8 -10', FALSE, 2, "weapons/crylink_fire.wav"); forward = v_forward; right = v_right; up = v_up; diff --git a/data/qcsrc/server/w_electro.qc b/data/qcsrc/server/w_electro.qc index 04e5aaa44..7d47c8b41 100644 --- a/data/qcsrc/server/w_electro.qc +++ b/data/qcsrc/server/w_electro.qc @@ -72,7 +72,7 @@ void W_Electro_Attack() { local entity proj; - W_SetupShot (self, '25 8 -8', FALSE, 2, "weapons/electro_fire.wav"); + W_SetupShot (self, '24 8 -9.5', FALSE, 2, "weapons/electro_fire.wav"); pointparticles(particleeffectnum("electro_muzzleflash"), w_shotorg, w_shotdir * 1000, 1); diff --git a/data/qcsrc/server/w_grenadelauncher.qc b/data/qcsrc/server/w_grenadelauncher.qc index e823a326c..f279102a6 100644 --- a/data/qcsrc/server/w_grenadelauncher.qc +++ b/data/qcsrc/server/w_grenadelauncher.qc @@ -77,8 +77,7 @@ void W_Grenade_Attack (void) if not(self.items & IT_UNLIMITED_WEAPON_AMMO) self.ammo_rockets = self.ammo_rockets - cvar("g_balance_grenadelauncher_primary_ammo"); - W_SetupShot (self, '25 6 -8', FALSE, 4, "weapons/grenade_fire.wav"); - //W_SetupShot (self, '25 8 -8', FALSE, 4, "weapons/grenade_fire.wav"); // TODO: move model to the right a little + W_SetupShot (self, '24 8 -10', FALSE, 4, "weapons/grenade_fire.wav"); pointparticles(particleeffectnum("grenadelauncher_muzzleflash"), w_shotorg, w_shotdir * 1000, 1); diff --git a/data/qcsrc/server/w_hagar.qc b/data/qcsrc/server/w_hagar.qc index 286a5d4ae..2de784cbc 100644 --- a/data/qcsrc/server/w_hagar.qc +++ b/data/qcsrc/server/w_hagar.qc @@ -51,8 +51,7 @@ void W_Hagar_Attack (void) if not(self.items & IT_UNLIMITED_WEAPON_AMMO) self.ammo_rockets = self.ammo_rockets - cvar("g_balance_hagar_primary_ammo"); - W_SetupShot (self, '25 5 -8', FALSE, 2, "weapons/hagar_fire.wav"); - //W_SetupShot (self, '25 8 -8', FALSE, 2, "weapons/hagar_fire.wav"); // TODO: move model a little to the right + W_SetupShot (self, '22 8 -10', FALSE, 2, "weapons/hagar_fire.wav"); pointparticles(particleeffectnum("hagar_muzzleflash"), w_shotorg, w_shotdir * 1000, 1); diff --git a/data/qcsrc/server/w_hlac.qc b/data/qcsrc/server/w_hlac.qc index c0062ce83..b421bc248 100644 --- a/data/qcsrc/server/w_hlac.qc +++ b/data/qcsrc/server/w_hlac.qc @@ -36,7 +36,7 @@ void W_HLAC_Attack (void) if(self.crouch) spread = spread * cvar("g_balance_hlac_primary_spread_crouchmod"); - W_SetupShot (self, '25 8 -8', FALSE, 3, "weapons/lasergun_fire.wav"); + W_SetupShot (self, '24 8 -11', FALSE, 3, "weapons/lasergun_fire.wav"); pointparticles(particleeffectnum("laser_muzzleflash"), w_shotorg, w_shotdir * 1000, 1); if (!g_norecoil) { diff --git a/data/qcsrc/server/w_hook.qc b/data/qcsrc/server/w_hook.qc index 43dbdebef..708714392 100644 --- a/data/qcsrc/server/w_hook.qc +++ b/data/qcsrc/server/w_hook.qc @@ -60,7 +60,7 @@ void W_Hook_Attack2() if not(self.items & IT_UNLIMITED_WEAPON_AMMO) self.ammo_cells = self.ammo_cells - cvar("g_balance_hook_secondary_ammo"); - W_SetupShot (self, '25 6 -8', FALSE, 4, "weapons/hookbomb_fire.wav"); + W_SetupShot (self, '21 8 -9.5', FALSE, 4, "weapons/hookbomb_fire.wav"); gren = spawn (); gren.owner = self; diff --git a/data/qcsrc/server/w_laser.qc b/data/qcsrc/server/w_laser.qc index 3e6297cfe..00dad5f32 100644 --- a/data/qcsrc/server/w_laser.qc +++ b/data/qcsrc/server/w_laser.qc @@ -17,7 +17,7 @@ void W_Laser_Attack (float issecondary) { local entity missile; - W_SetupShot (self, '25 8 -8', FALSE, 3, "weapons/lasergun_fire.wav"); + W_SetupShot (self, '21 8 -9', FALSE, 3, "weapons/lasergun_fire.wav"); pointparticles(particleeffectnum("laser_muzzleflash"), w_shotorg, w_shotdir * 1000, 1); missile = spawn (); diff --git a/data/qcsrc/server/w_nex.qc b/data/qcsrc/server/w_nex.qc index 3a0b4ff64..afbf99bb8 100644 --- a/data/qcsrc/server/w_nex.qc +++ b/data/qcsrc/server/w_nex.qc @@ -15,7 +15,7 @@ void W_Nex_Attack (void) float flying; flying = IsFlying(self); // do this BEFORE to make the trace values from FireRailgunBullet last - W_SetupShot (self, '25 4 -4', TRUE, 5, "weapons/nexfire.wav"); + W_SetupShot (self, '30 8 -10', TRUE, 5, "weapons/nexfire.wav"); yoda = 0; FireRailgunBullet (w_shotorg, w_shotorg + w_shotdir * MAX_SHOT_DISTANCE, cvar("g_balance_nex_damage"), cvar("g_balance_nex_force"), WEP_NEX); diff --git a/data/qcsrc/server/w_rocketlauncher.qc b/data/qcsrc/server/w_rocketlauncher.qc index 25cabffcb..d95779305 100644 --- a/data/qcsrc/server/w_rocketlauncher.qc +++ b/data/qcsrc/server/w_rocketlauncher.qc @@ -198,8 +198,7 @@ void W_Rocket_Attack (void) if not(self.items & IT_UNLIMITED_WEAPON_AMMO) self.ammo_rockets = self.ammo_rockets - cvar("g_balance_rocketlauncher_ammo"); - W_SetupShot (self, '34.0 8.5 -11.0', FALSE, 5, "weapons/rocket_fire.wav"); - //W_SetupShot (self, '25 8 -8', FALSE, 5, "weapons/rocket_fire.wav"); // TODO: move model to the right a little + W_SetupShot (self, '27.0 8 -10.0', FALSE, 5, "weapons/rocket_fire.wav"); pointparticles(particleeffectnum("rocketlauncher_muzzleflash"), w_shotorg, w_shotdir * 1000, 1); missile = spawn (); @@ -241,15 +240,14 @@ void W_Rocket_Attack (void) // muzzle flash for 1st person view flash = spawn (); - flash.scale = 1.2; - flash.angles_z = 180; + flash.angles_z = flash.v_angle_z + random() * 180; flash.owner = self; flash.viewmodelforclient = self; flash.customizeentityforclient = CL_Weaponentity_CustomizeEntityForClient; - setorigin (flash, '35 8 0'); + setorigin (flash, '5 0 0'); setmodel (flash, "models/flash.md3"); // precision set below - setattachment(flash, self.weaponentity, "bone01"); - SUB_SetFade (flash, time, 0.4); + setattachment(flash, self.weaponentity, "bone02"); + SUB_SetFade (flash, time, 0.1); // muzzle flash for 3rd person view flash2 = spawn (); diff --git a/data/qcsrc/server/w_shotgun.qc b/data/qcsrc/server/w_shotgun.qc index c69e6dbe9..fda9556ab 100644 --- a/data/qcsrc/server/w_shotgun.qc +++ b/data/qcsrc/server/w_shotgun.qc @@ -17,7 +17,7 @@ void W_Shotgun_Attack (void) bulletspeed = cvar("g_balance_shotgun_primary_speed"); bulletconstant = cvar("g_balance_shotgun_primary_bulletconstant"); - W_SetupShot (self, '25 8 -8', TRUE, 5, "weapons/shotgun_fire.wav"); + W_SetupShot (self, '28 8 -10', TRUE, 5, "weapons/shotgun_fire.wav"); for (sc = 0;sc < bullets;sc = sc + 1) fireBallisticBullet(w_shotorg, w_shotdir, spread, bulletspeed, 5, d, 0, f, WEP_SHOTGUN, 0, 1, bulletconstant); if not(self.items & IT_UNLIMITED_WEAPON_AMMO) @@ -31,13 +31,12 @@ void W_Shotgun_Attack (void) // muzzle flash for 1st person view flash = spawn(); - setorigin(flash, '53 5 0'); + setorigin(flash, '5 0 0'); setmodel(flash, "models/uziflash.md3"); // precision set below - setattachment(flash, self.weaponentity, "bone01"); + setattachment(flash, self.weaponentity, "bone02"); flash.owner = self; flash.viewmodelforclient = self; flash.customizeentityforclient = CL_Weaponentity_CustomizeEntityForClient; - flash.scale = 1.2; flash.think = SUB_Remove; flash.nextthink = time + 0.06; flash.angles_z = flash.v_angle_z + random() * 180; diff --git a/data/qcsrc/server/w_uzi.qc b/data/qcsrc/server/w_uzi.qc index 2ef982539..04b6db3ff 100644 --- a/data/qcsrc/server/w_uzi.qc +++ b/data/qcsrc/server/w_uzi.qc @@ -22,8 +22,7 @@ void W_Uzi_Attack (float deathtype) else self.ammo_nails = self.ammo_nails - cvar("g_balance_uzi_sustained_ammo"); } - W_SetupShot (self, '25 5.5 -8', TRUE, 0, "weapons/uzi_fire.wav"); - //W_SetupShot (self, '25 8 -8', TRUE, 0, "weapons/uzi_fire.wav"); // TODO: move model to the right a little + W_SetupShot (self, '23 8 -9.5', TRUE, 0, "weapons/uzi_fire.wav"); if (!g_norecoil) { self.punchangle_x = random () - 0.5; @@ -42,13 +41,12 @@ void W_Uzi_Attack (float deathtype) // muzzle flash for 1st person view flash = spawn(); - setorigin(flash, '53 5 0'); + setorigin(flash, '5 0 0'); setmodel(flash, "models/uziflash.md3"); // precision set below - setattachment(flash, self.weaponentity, "bone01"); + setattachment(flash, self.weaponentity, "bone02"); flash.owner = self; flash.viewmodelforclient = self; flash.customizeentityforclient = CL_Weaponentity_CustomizeEntityForClient; - flash.scale = 1.2; //SUB_SetFade(flash, time + 0.06, 0); flash.think = W_Uzi_Flash_Go; flash.nextthink = time + 0.02; diff --git a/data/textures/f_shotgun.jpg b/data/textures/f_shotgun.jpg index f8f67662429386d8e1e2ddf281c06fa4565803bf..d6d49a70c73bf97706eaa16c5c72e677556aaf6d 100644 GIT binary patch literal 4994 zcmaJ_cQoAFxBn_ZgeXxG1_?r5U*Z`oR1pv3R z0-UY_9Cw0TeL?^lfF1yV2WKiOa8bw2-^Cqp`*NnCIVAwE0Gj^^+P}KA|A6lAn(iOa z{|gL%f$`t?hfhyON6&DM{@j09{!RJ+8>e3Y4kq9^@SKi@1EA%gq2r)AZ3D8;rVTLA z(VWTu1`XX=`16cR%(NH&QZxRi4WRwY$jC%3`5T^7W>eZ%H7BO=Gkwt;`^nVuaT^Z^paSzM{L537ShfRxFhq20d=$1l59~8&+Q@ z?QY~wg{s~ha?235f0O=CB+dNYG5p{S2a&s(!rH&`;lfA0WeG!Tc;y!;$+AoN36r+d zZUcjgZAVUbjKh;t$K6Iid=J!T$p;j)JqeU1}0#IaS`$MRsL~;+VXCdl+5;^khDt3 zYu~P!YojCP_2d41x^=R>r1N9$6e*EHh@i%cs@DFW(ivGkF{2{qsf~UFMxL+P zI}U?2d;h8%EVA%S_g`xYtF!)H_Z!(pkIn8Kb1ppJ&ZEybk3TYHqc1^adN0)=GA4Dt zB182(bH&?L>1tx&z4C=@A@AC8ULIMHW6w;ICcA7L{Qc9sG_R5m+89kOm;6|faKl&F>1 zTOU7)M!Hfj3?8M_jtE-$INuY=Jv3a^ZnT~x^r-hwE=gyuhv#fptBF0^77)xcTX;9( zEc~%@b4zeYog+<7_yiQ*6p7z3eSyd}j*S)JFHnd;rZ}4fDLH>^zR-{rKq(J)4xDn< zN$KgiFwfB;>|dT}Wp+Dg5dOKTu;nG_pGQwq|8tuT*5P)~Y zH>%v)d=|4iv`WArpUv>|%n^7v(US#?dhqiiCiY~3(y#gjyC99eB{d0)6g1Jnxw_xU zY;(+QwK%wXDV@?5RH=f7X{azE- zaU9_jA~aS#4oa}cZ(KRZ@e|a5HmUo%P-L9NY`Zkj6^}#>zS=O-I6jutCp6*bV4nAE zuHPvk8(RH!<4ifHiB_OP}0Cy^DEJ;%{mtt{D(h<_-UVS6F%OhMInm5onhzqNmqm<#+)l zty~_MzQ@d|!L94guf=ueELobyF_#61>wCNZVRT<%=u?qp=199e+;6)*gJ&{vRGM`r zTtyv@70Qc}-c3m9Ukp|(SKDF8u>^+37UKTjZpE@a;ahd8#H-;CVh|-lY#>}!-;`dCtFL&3(rq^ws0yPJV1HzxY z7d{|Z51`Qan7W$C^lIGjZPm49LB3l>nyKVf7M7>O=evqRi8IKOug>^WoKw}`1#9)hF?S-yq!@M|jj(@PiYcNhax+eT8pH$M?5MIi*u zmn#&@cEkxnu!r+s_q$BjCE7n(4I~O1W`}C4OyNS*G#x%D6EO&g@Mh~I*+a2EPIYKqxUePc z9;Ioyt*5vs?zHI=uj1rB-rQz`wkO_7gpkF)EG z)K3hu^+mIxUHKk-vA1hu_R`@s(qCFB0Hv?N01^au3&9xXT)X#|>hcqP{39_2Er`lptCh1E>1{iKv$32}a=WqenL z-}A92(GNl>{o!r8=|I(cM7cOX5hB0*p7WPxCKe z+_lp7kDPba8d@AtsV>_!m8JZ_snC5rmV1{_J; zex*I^!A5^4=z*k{gqlS5`Kb6EL=o9>%Ft~KoQ(3|* z`Q9|c#f{rB3p4TNy&N9b?Q}SfmNxzRF6^@YFgj3-zVBB+4`zACy>c;@F}krRE457i;#>5)gi`C zA>O%aTLKx?am%e1>~l-MY=9LTjgf5@g7LeuGFacnV-G6ke6Ug-o55l!C3TBF=j~Hp z+VFgig{;=a!pOI>_BdNat_DKcwTnmd>0gpnrR2LDa^eRV=FE%8Snk7f2ao0r?~H~N z_8}T6d$_QMd3p8Ruc01tS18K$uznp23AGoVP_elbUKMUF#=jGq_`HLI3c7r-@gV(|kJ z)7UsQmFD*#B^x^=&Cz{gvv(~P!DGu0E%lyZ6x;FNe!%gk<48kESC2x9@v?wOG(1`~ z2fVasV+U<;L8sjP&bkCYN`cnn$;h7OaFdD#18a17LF8Q7U z{#)H~(m39BI29J88KfKx<3%Oqmfex&*$k?OWGQFNG z4UVrwO6Jt%@)I~hCtQ&%&ozR8U-i#Z9+yAO8Nw1{Yf|A=+6QI%t52(xv`_?83r zy?#6$J8DIaPib~c+a3A!b}50WqJaoGdkvt2ZrC*fQk2}&*%z#hp5b7`#)#SI49#^zdn zYqF9t-|vzdK_m6F;JR<^nX;UsC=U32wbHt^lxV(WXg8Z5)Bak%gEW$EevbW!zHMZGv_x zzE~zNN@#F=QE%qf6KUlHb(lSsC2pX@iI*n>bVbD5une^fn7<3$bQFl5?LGhKUhliN z<_A?79qLu}IsNLd{92(Ma$c1t+EHvj;MBdNEQDz&)brsf(CausIBt04T7dd~3P?*9 zzGqCb4gN~O__cP~fS%=q>pPtS)Xd`*&IHX*e&)`r*y9ksQIcavQ{MmrfkbNJx4tcb zr3PeVL|-_Co&x&A1W5Y@+52&ilRL8(PXUDRY9+*^Ys=F~o_7W&GGh)_lvHi69**O^ zCHZH&dywgl%?;r`<+AI>*Z=;^p!fcq&wF36AWh)T7#JeHW2Tbos>a(3o&0^YY|hHR zyA~hY&)}?A*6WJng;9LsK-F@#^HIw+_DMP$A~`%fhfZwLj*!eO@6KeIPTzC|l!c}7 z_vOtL&9)tt+{*kaEq4#}Mv6gEb1p#=x>Z}9qiyv?z{oq~rhH3mDAOG7UiLks@~j0i z*}HVA<8E{;b@7bQEkUQ6Yy59*ff7x;`4Lq2` zyhK!Kvjyif=h$0G<{B;ML*ZRZ`j!O_3&N}+7sffcueyoee_8-ad|~M(opg3uojp;3 izr`ELulTOlOC>RaDN0@Uy7aRL!Q1RF>S0K-6RFwkBP zAOU~?fa4b&_-!BvI|nC}>j0ST;J!ee4*;>Tf!H~~><|$9FAWIH1_L0H><2jcmGwCU zq^w*5QX>llRi1UOKn*Z&8A1qT;kW&j$M%^Z2;0A40N`YU9M}gzf9DPBOf1E;$Fdv3o|1Lpe(l>tKFaoI>B64Yo zAg7l%)G%w8pLvGXiEBazALp}eZFd$q4Is;Qwizk(){IN~7~=Isi62gG zxtd?T_0T*KMPPTxx_G+c8c$7OCcnOT`m;k3(-WA9AYzA4iTVOD3!-N8_H2kNY1^iW zg{V1Z;ePUp@50-@_iS-DXHhV?g<`OdGjSYtbCg?k-00QaCcWTO(4}L2oOBtl)9qh& zZ@fH`NO))Ix_XsW?-DC5V`!2(l!)UoR)&nqed(xKrZ5Rdu&*Sz*R!Y_s^5=atBR-o zrTL8u5o4gI-Eks*a1Y3~*ORuAx)XURBw&ln(nKGb2Op~gNXfYS#A@fKU*}&(Kc&>< ze6im6$JU64aIOc(3>KyPGL9ZkEpyUlLwfA4SQ`A3tjxCim51$NL^g2#q>;dV%BS{aB z<_R|838!xSwwDk?6X1|4R;Iyx zk7{vcckj>4M9=m0_{y*JPmgw=)?aBMm(!^omc zuaX(-p~YhA?HHq>S`LTaw@gx=GGx)*Mw^dj$A<$qV(}-TowWW59$hC z^jmOhr#n!5zIiQSB9?AjuOu~@&o~c0OFBLrs?`W>dacPdhwr)`JX_|Jmnzh2yV6Fi zue~FD^p>naMi1Ew3JAeLP~}wk_Uh9^?L&04Dp|5A*fjE`)K%jX6X$5}mv%zl3@uD} zT0?8mxo5vf!jb%e7LRqM4&9Wm&j^~%ZMxsrd()u+jn3iVK;E?==6pcp$yo)3J0i}; zJ#$G&X>@FjF7up2;-O1Z91Q#GPeVj5InWYuETi1az^I$b-;n;+3%b*nmi>n>ouzYi z4v0{Z{1!P8%5yj5?Ayod)eFfY$G>XFgkmF2;J&VTo@WGP^x`qZDx1GwJ`9p_;wnzZ zShK>T&~K8@MBYNNT@o=~W(bR#;~k1HeivWmy*-q$i5|wPkC3Dwacr+h)2R0uy!30C*acf|pA;8OMUr<* zF^liP&^VeeGCIPBiK4E=?V1-fR#GS{zn^VF}8P)?=&! z==aZwEFD0mjm~`#`&k}tcG+kV5}x(*KC^7Y>8-cf#6<=7NXeV<7h8y9!S`%LW28?! zpYA!@M1j1o1&~`j8Xp_pK5tuWupfU!F#e;SQnboY(SHT&3bo#>8axA^vaxS0*fKI# z_~89un1qQ>?*e18-dz7M+>||C=TUju?58Te*74*is;NaZlb>_Wb;s^T$B3Jvm$0Z- zg%dtoi*KxJl(7Ot5U}n$!TDE=OLB7k>TKFe%#HSd=Z)y(zwU$>f3nUrZl75X@HyVw zWOfbV4-yY=_o~dJ9%*YBI@&TSJpFLW&D00I5=G@o4u)=rj-OA$yp~hQq%lqAdr0%k z%l6|G){gnm`X-CDEV>8OQVsYr`H8V6Z20xpW*!dRjkn69Zr{g^^yu@LFjDjUL;Au$ zX%9~acY1tPJOlNPZgLobQ>vdD5wA z>i(p+h<_48FK(*9=H&@W{Q+P8RnWV*_vU?^>+~WN+Rnw6vL82CjGpCjJUp){XLhZ; zPIx{BH=lFqQ6#v0KE+O=MQF;WBf6^n$0<86jP^}RF`Z@{fLyfl(eJNngHubB^9)#;D9T@D`< zr!UgaeS(VZx&x(9GQBnHi&Y5z=U6Ms$1n z8*1}MGW|*u*J$B4qyWUf!Q61|xOxxv!e|(5RBgiS8({&B1smwc9BQ12`X0P{Tl(~P z>D$W()!w;M4&w#M1SxKxRT=rRV~^-*=vM1L=?kS86^^?rrs!Bg=y~WT-4}g|^p;D{ z#@1ObYDaP6*BFiB9^?Vc-Jv4l>}>M&4Bp}AjH$|%lc!golz5sWT1~CcPWgiR+Ol@q zV%rw>1z*R1OlUsoHy^tVZkQqRH*$-^4g9h0a}yVIAO5^VDN%f9oup*Ys**Mh3~XxK zj5rz&skc7v*9y$=l_19WOd_c>6T4wv+-K;tJ15m>Hg58m5qfJn-U4bT0`TOdZLL;% z>U;`eIP(*2(#}F<^!jDv-#D)LD%2nHUKsa8Pqhd5r5AHbciHjtDyv83g?X{dk17%- z>uwe*#oer(`U@Gu_NqufKbT{<_4}gG@XUlp0rPIs-EtHH$1|Ify8luqZ&&=zlA`FE zp|d~BeG)PiRtBHMCZ8~jBp?$5_W%~!?k#qkS2E=hvnYmB%D6*lK!!W&K!;l^S(Z>Q zuxn&wB@^(85L)gcyi|*SfPIYUaUE>e2tS4011|N`XiKOoW*%@bl6Ua=!yHp-Ib7%- z5MHgi5R_ZmK9YBkr#kuuzl8=>WAJK@U4ye{bE#KkOXdi}B;pAZuFp(it%~Puc%W>B zkA&VH?oOdedx}4{bMwj_oNOp&RUaM}dI3opu99of8&ee2h50X}vFjY?eHa@VcS-`_ z%JlQ97j@LHFJ@3Duf$0EyBO!h1gEi_IFFp=ZMz>IU}TClzysp5>1-TT9yu4|!Gr`? zvK#~k*6s+`EZnr+X1GjL2{wXAXaj$$)l5tv8-0Mj3sbb&v`YC@mK&1qoeb{^IJ^8^2#lIkvx=;Z%SPD=;G;w0>2 fP-uP&6^pk03oH!&$?*