* @ok|4,B^@3<{c NoneWinTopWinLeft WinWidth UTExtra13CaptionCore WinHeightHint__OnKeyEvent__DelegateInternalOnKeyEventEngine bVisibleKarma LightingPlayerController CollisionForce LightColor IsChecked MovementInternalOnCreateComponent__OnClick__DelegateGetServerDetailsTickComponentJustificationbStandardizedColorSetupHitSoundCheckedComponentClassName__OnCreateComponent__Delegate CaptionWidth bIntSlider __OnCapturedMouseMove__Delegate__OnMouseRelease__Delegate__OnMousePressed__DelegateInternalOnMousePressedInternalCapturedMouseMoveInternalOnMouseRelease SetValueUserSystem FontScale TextAlignbDrawPercentSignInternalOnClickUTExtraSetInteractionSetBrightness CloseMenu GetHitSound LineOfSight OnClickClose TextColor SaveSettingsIsDead NetDamage CheckPlayerBeginSetClientClassOpenMenuHitSoundsAdminHitSoundsOnClickSubmitMutateClientOpenMenuConsoleCommandGUI2K4 SkinBright bNoWeapShake HitSoundVol UTExtraSpawn NetPriorityUTExtraClientUTExtraMenuHit TypingCloseUTExtraGameRulesPostBeginPlayPlayerWaiting AddGameRulesPurgeObjectReferencesClientPlaySound VerifyStackMutatorIsAllowed ConsoleClosebAllowedAsLast MinValuebScaleToParent SetFocusDelayedConsoleCommand MaxValueImageRenderStylebBoundToParentBot ImageColor bNeverFocus ControlsAddInteractionClientMessage ImageStyleOnCloseInitComponentHandleParameters XInterfacexPlayer InitializedxPawnWAV DMMutatorImage bAlwaysTick ServerState PlayerIDGameRulesModifiers CurrentIDbWaitingToStartMatch bGameEndedValue instigatedByGUIControllerParam2Param1HitLoc Momentum HitLocationDamage HitNormal DeltaTimeViewportOwner UnrealGameMaster bCanceled NewPlayerOwnerv1V MutateStringbWeaponShouldViewShake bInitialized StrPropertySkinbAdminPCInterfaceContent bBrightSkinsbOnlySpectatorCharFrame_ShaderStaticSaveConfiginjuredOriginalDamageSenderDamTypeFlakChunkv2GUIPage NextMutatorDamTypeMinigunBulletbBotbFound TimeSecondsGUIMultiComponent GUIComponentGUI GUIButton GUIImage GUISlider GUILabelStructPropertyArrayPropertyClassPropertyObjectPropertyFloatPropertySecondNetModeGameControllerList LevelInfo GameInfoPlayerReplicationInfo ControllerNextGameRules DamageType ReturnValueMenunextController BoolProperty EyeHeightMutator GameRules PlayerNameInteractionMasterLevel LocationShader moCheckBox IntPropertyPlayerPawnReplicationInfo MyControllerMyOwnerActorDialogBackground InteractionSoundConsoleClassNewCompSZPackageIsAdmin SubmitButton HitSound CloseButtonPopupPageBase ByteProperty TextBufferi AmbientGlowbAlwaysRelevantServerResponseLine bDefineSetupbUseHitSoundsjPLCsTemp bInfoDoneTrysObjectEXC bNoHitSoundsXCsCode LevelSecsGRules FunctionsNickVectorUTESStruct ScriptTextsSoundsHsSound MyHitSound SoundPlayer LastHitTimemyMutGnTarget1Target2 bClientHit bServerHit bWeapShakesAdmn XWeaponsXGame MyPageHeader NoneButton SoundHit VolSlider MyPageFooterHitoff WeapShake SkinSliderOhL2`>o>+B_B_B_B_B_B_,eB_,eB_,eYY83}3}B_IJo>+ * M}I^̤\ u*F^̇IJ )F"2 @@6@7@D!-]Hitsounds volume level$>$Q>$>.$%#'  "&X @4@@ @)@,K) @@)@;L{G2 m,]΅3}3}>IJIJu*FkIJ * H$@@n3QPj/6Z"'ߜjWIJYY83}IJYY8IJYY8`>`>`>`>`>`>`>`>`>"'߇IJ3}>IJYY83}IJIJIJYY83}jWmmIJYY8IJ3}3}3}>3},e,e,eYY8,e,e,eYY8,e3}>3}>3},e,e,eB_,e,eB_,eB_,e,eIJ,eYY8,e'> ,e'> ,e23}>3}>`>3}>3}>3}>o>+`>`>  ED"5@9@%@&@E@?GNH -2I@@Cb@c@:NHJ6 +>/0ڟZZZZZ: 8 ^̔^̑Z^̔^̑ZZ: 8 Zkh:IJu*Fh:IJu*Fh:Z^̖: 8 ^̑ZZnLnLnLnL: 8 nLCg)U`Y JKZ[\]Q^P`$>$>$Q>$L>@+@0@B@.L!)O ${n?]Disable Weapon Shake]xinterface.GUICheckBoxButtonWP]$#Disable weapon shaking when firing$?$Q>$> SS"qn G/@ Y8${>${>$75$75 WZ  ${n?]Enable Hit Sounds]xinterface.GUICheckBoxButtonW[]('Enable weapon hit sounds on next level$>$Q>$>S]Submit+$>$Q>$)\>>? W\ ]Close+$>$ff?$)\>>5 W]  ${n?]Disable All Hit Sounds]xinterface.GUICheckBoxButtonW^] Globally disable all HitSounds$ ?$Q>$> SSUV$ BZ$C!-]Level of Skin Brightness$ ?$Q>$> SW`.$%#'  "&d<4MX {1< 61<-: 6-:raNO1-(* G@1eT9-+(w*w*a/!w*@%,(z@-+'G-+w* w9?/GK=r8  r8 K4r!*3w!*.Q!'G w*)9T/XY8/ G3! f Gk?A)fRIFF^WAVEfmt @>data:?WRkz=8gavv;ftsC̅Th Q~0hjaƫSro%]aDMu}-Qp&9*+rvӬmox=!e^r}fYх'ExoVaeX f h %uGevpݟ[ZzL%du xxm'Ho|}rv5h/|u(,єӑM~I錔w>Rc}Fh@i?;ySp?quf̓Yq@wД/knm{P %w_v^B$+_y3>YȄdg\٭rZ/"9igc<ЉjL=6fCVwaZ=N480 470FW'Z21/jҾo,^9~+$n$16(Ϲv,qH1(Gs_;M$%Ӽ+,gFHN >*@H^<@>,%BqN@"q-mWL(*pG^0 [BC4ű?[s*2ҰKG3EFgK%BzЪӋB1743\Ͷ">6 ˾ĭ3D& n89qi ~, -#9K & ~, -59K & ~, 9J &R Gm$=6$a/!h 5- s$-9:9:$-6'-# -6$*b<< Admin has disabled HitSounds >> 940,[-61,-#p1,p0,1-5p1,Bp0,pp9S,$+AUTExtra13.UTExtraMenuHit(9 GS@J|UTExtra=Uz,UTExtraHitSounds=, ;p4UTExtraHitSounds=z,;-9:9:$>,w*@ G@A_e__U .,3.,2., ,X* GspS' GoVf%c,Kc,T  -&.,(9? %AV ~, -09K &-0  ~, 3 9K & ~, 2 9K & ~, D9J,-',-', -', -'µ>.,  (9?D Gt=<L/a9 54r=a10a = Gu*:WU?*3z?WebAdmin R*a/!<* GvW^# AW=II1>. w *w *w * .  r.>w *>w * - > a/!:.  Gw1@YH-- ,2 w*w*a/!ja/!]9:9=a/!a!N.8-9:..9=\ G# M?}-H-H'0,2 -'V-5-(p-'a .Qr* O %N ,( . .  p ,d ,d49S  Gry7Ka C&79D., -'' -&  %7  ppMutate AUTExtraHitSounds=k-03 p 1, p 0,#2 p 1,4 p 0,B9D.,  pp 9SB,C&p1,p0,p9S7.Yp ' G|zA9:9:$?-J L, L0 -r.*.8-(a GJM0Yr.* M..2aUTExtra13.UTExtraClient.|rM* -J'v!-(a G~F;F3-'(-''Mutate UTExtraHitSounds=p-&p1,p0,p9S%F B G'io ; Gx@?ph 72(' GAC5w 2(' GDBF}e  GGEId !PR Gm^*c[$?\W_MClient Options,6*$>${>${>$L=|//=================================================================== // UTExtraSpawn // (c) ProAsm - 2004 //=================================================================== class UTExtraSpawn extends ReplicationInfo; var bool bInfoDone; var int Trys; simulated function SetInteraction() { local UTExtraClient EXC; if (PlayerController(Owner) == None) return; EXC = UTExtraClient(PlayerController(Owner).Player.InteractionMaster.AddInteraction("UTExtra13.UTExtraClient",PlayerController(Owner).Player)); if (EXC == None) return; bInfoDone = true; Disable('Tick'); bAlwaysRelevant = false; Destroy(); } simulated function Tick(float DeltaTime) { if (Level.NetMode != NM_DedicatedServer) { if (!bInfoDone && Trys < 10) // takes a few tries on a ListenServer { Trys++; SetInteraction(); } return; } if (Level.Game.bGameEnded || PlayerController(Owner) == None || PlayerController(Owner).IsDead()) { bAlwaysRelevant = false; Destroy(); } } e //=================================================================== // UTExtraClient // (c) ProAsm - 2004 //=================================================================== class UTExtraClient extends Interaction config(user); var config bool bDefineSetup; var config bool bUseHitSounds; var config int HitSoundVol; function Initialized() { Begin(); } simulated function Begin() { local PlayerController PLC; local string sTemp; PLC = ViewportOwner.Actor; if (default.bDefineSetup == false) { default.bDefineSetup = true; self.static.StaticSaveConfig(); } sTemp = "Mutate UTExtraHitSounds="; if (default.bUseHitSounds) sTemp = sTemp$"1,"; else sTemp = sTemp$"0,"; sTemp = sTemp$default.HitSoundVol; PLC.ConsoleCommand(sTemp); } h3//=================================================================== // UTExtraMenuHit // (c) ProAsm - 2004 //=================================================================== class UTExtraMenuHit extends PopupPageBase; var string sCode; var bool isAdmin; var moCheckBox bClientHit; var moCheckBox bServerHit; var moCheckBox bWeapShake; function InitComponent(GUIController MyController, GUIComponent MyOwner) { Super.Initcomponent(MyController, MyOwner); bClientHit = moCheckBox(Controls[3]); bServerHit = moCheckBox(Controls[8]); bWeapShake = moCheckBox(Controls[9]); Controls[2].SetFocus(none); } function HandleParameters(string Param1, string Param2) // Param1 = sCode { local string sTemp; local int i, Skin; PlayerOwner().Player.Console.TypingClose(); PlayerOwner().Player.Console.ConsoleClose(); bClientHit.Checked(class'UTExtra13.UTExtraClient'.default.bUseHitSounds); GUISlider(Controls[4]).SetValue(class'UTExtra13.UTExtraClient'.default.HitSoundVol); sCode = Param1; i = InStr(Param2, ","); sTemp = Left(Param2, i); isAdmin = bool(sTemp); Param2 = Mid(Param2, i+1); if (!isAdmin) return; i = InStr(Param2, ","); sTemp = Left(Param2, i); bServerHit.Checked(bool(sTemp)); Param2 = Mid(Param2, i+1); i = InStr(Param2, ","); sTemp = Left(Param2, i); bWeapShake.Checked(bool(sTemp)); Param2 = Mid(Param2, i+1); i = InStr(Param2, ","); sTemp = Left(Param2, i); Skin = int(sTemp); Controls[7].bVisible = true; Controls[8].bVisible = true; Controls[9].bVisible = true; Controls[10].bVisible = true; WinHeight = 0.355; GUISlider(Controls[10]).SetValue(Skin); } function bool SaveSettings() { local string sTemp, sAdmn; local int i, h, x; if (bClientHit.IsChecked()) h = 1; i = GUISlider(Controls[4]).Value; class'UTExtra13.UTExtraClient'.default.bDefineSetup = true; class'UTExtra13.UTExtraClient'.default.bUseHitSounds = bClientHit.IsChecked(); class'UTExtra13.UTExtraClient'.default.HitSoundVol = i; class'UTExtra13.UTExtraClient'.static.StaticSaveConfig(); sTemp = ""; sAdmn = "Mutate "$sCode$"UTExtraHitSounds="; if (isAdmin) { if (bServerHit.IsChecked()) sAdmn = sAdmn$"1,"; else sAdmn = sAdmn$"0,"; if (bWeapShake.IsChecked()) sAdmn = sAdmn$"1,"; else sAdmn = sAdmn$"0,"; x = GUISlider(Controls[10]).Value; sAdmn = sAdmn$x$","; } if (h == 1) sTemp = sTemp$"1,"; else sTemp = sTemp$"0,"; sTemp = sTemp$i; Console(Controller.Master.Console).DelayedConsoleCommand(sAdmn$sTemp); return true; } function bool OnClickSubmit(GUIComponent Sender) { SaveSettings(); Controller.CloseMenu(false); return true; } function bool OnClickClose(GUIComponent Sender) { Controller.CloseMenu(false); return true; } function InternalOnCreateComponent(GUIComponent NewComp, GUIComponent Sender) { } function OnClose(optional bool bCanceled) { Controller.PurgeObjectReferences(); Controller.VerifyStack(); } c)//=================================================================== // UTExtraGameRules // (c) ProAsm - 2004 //=================================================================== class UTExtraGameRules extends GameRules; #EXEC AUDIO IMPORT FILE="Sounds\hitsound1.wav" NAME="MyHitSound" var string SoundPlayer[41]; var float HitSoundVol[41]; var float LastHitTime[41]; var Sound HitSound; var UTExtra myMut; function GetHitSound() { HitSound = Sound'MyHitSound'; } function int NetDamage( int OriginalDamage, int Damage, pawn injured, pawn InstigatedBy, vector HitLocation, vector Momentum, class DamageType ) { local string sNick; local bool bFound; local float Gn; local int i; bFound = false; if (instigatedBy != None) { if ((InstigatedBy.Controller != none) && InstigatedBy.Controller.IsA('PlayerController')) { if (InstigatedBy.Controller.PlayerReplicationInfo != None) { sNick = InstigatedBy.Controller.PlayerReplicationInfo.PlayerName; for (i=0; i<40; i++) { if (SoundPlayer[i] == sNick) { bFound = true; Gn = HitSoundVol[i]; break; } } } } if (bFound) { if ((Injured != None) && (InstigatedBy != Injured) && (Damage > 0.0) && !((Level.Timeseconds - LastHitTime[i] < 0.1) && (DamageType == class'XWeapons.DamTypeFlakChunk' || DamageType == class'XWeapons.DamTypeMinigunBullet'))) { LastHitTime[i] = Level.TimeSeconds; if (LineOfSight(Injured, InstigatedBy)) { if (HitSound == None) GetHitSound(); if (HitSound != None) PlayerController(InstigatedBy.Controller).ClientPlaySound(HitSound, true, Gn); } } } } if ( NextGameRules != None ) return NextGameRules.NetDamage( OriginalDamage,Damage,injured,InstigatedBy,HitLocation,Momentum,DamageType ); return Damage; } function bool LineOfSight(Pawn Target1, Pawn Target2) { local vector v1, v2; local Vector Hitloc, Hitnormal; v1 = Target1.location; v1.z += Target1.eyeheight; v2 = Target2.location; v2.z += Target2.eyeheight; return (Trace(Hitloc, Hitnormal, v1, v2, false) == None); } function GetServerDetails( out GameInfo.ServerResponseLine ServerState ) { } b//=========================================================== // UTExtra - Version 1.3 // (c) ProAsm - 2004 // email: proasm@stormnet.co.za // web: http://www.unreal.co.za/proasm //=========================================================== class UTExtra extends Mutator config(UTExtra13); var config bool bNoHitSounds; var config bool bNoWeapShake; var config int SkinBright; var string sCode; var int LevelSecs; var int CurrentID; var bool bInitialized; var GameRules GRules; function PostBeginPlay() { local int i; if (!bInitialized) { bInitialized = true; if (SkinBright >= 50) class'UnrealGame.DMMutator'.default.bBrightSkins = true; if (default.bNoWeapShake) Level.Game.bWeaponShouldViewShake = false; else Level.Game.bWeaponShouldViewShake = true; GRules = spawn(class'UTExtra13.UTExtraGameRules'); UTExtraGameRules(GRules).myMut = self; if (Level.Game.GameRulesModifiers == None) Level.Game.GameRulesModifiers = GRules; else Level.Game.GameRulesModifiers.AddGameRules(GRules); for (i=0; i<40; i++) { UTExtraGameRules(GRules).SoundPlayer[i] = ""; UTExtraGameRules(GRules).HitSoundVol[i] = 0; } i = Rand(900); if (i < 100) i += 100; sCode = string(i); } Super.PostBeginPlay(); } //----------------------------------------------------------------------------- function SetBrightness() { local Controller C; if (Level.Game.bGameEnded || Level.Game.bWaitingToStartMatch || SkinBright <= 50) return; for (C=Level.ControllerList; C!=None; C=C.NextController) { if (C.Pawn != None && C.Pawn.IsA('xPawn')) { if (C.IsA('Bot')) { if (C.Pawn.AmbientGlow < SkinBright) C.Pawn.AmbientGlow = SkinBright; } else if (C.IsA('PlayerController')) { if (!C.IsInState('PlayerWaiting') && !PlayerController(C).IsDead() && !C.PlayerReplicationInfo.bOnlySpectator) { if (xPawn(C.Pawn).AmbientGlow < SkinBright) xPawn(C.Pawn).AmbientGlow = SkinBright; } } } } } //----------------------------------------------------------------------------- event Tick( float DeltaTime ) { local Controller C; Super.Tick( DeltaTime ); if (Level.Second != LevelSecs) { LevelSecs = Level.Second; SetBrightness(); } if (Level.Game.CurrentID > CurrentID) // a new player has joined { for (C=Level.ControllerList; C!=None; C=C.NextController ) { if (C != None) { if (C.PlayerReplicationInfo != None) { if (C.PlayerReplicationInfo.PlayerID == CurrentID) break; } } } CurrentID++; if (C != None) { if (C.PlayerReplicationInfo != None) { if (C.PlayerReplicationInfo.bBot) return; if (C.IsA('PlayerController')) CheckPlayer(PlayerController(C)); } } } } //----------------------------------------------------------------------------- function CheckPlayer(PlayerController NewPlayer) { local string sNick; sNick = NewPlayer.PlayerReplicationInfo.PlayerName; if (sNick == "WebAdmin") return; if (NewPlayer.IsA('PlayerController')) SetClientClass(NewPlayer); } //------------------------------------------------------------------------------- function SetClientClass(PlayerController PC) { local UTExtraSpawn UTES; foreach DynamicActors(class'UTExtraSpawn',UTES) { if (PC == UTES.Owner) UTES.Destroy(); } UTES = Spawn(class'UTExtraSpawn',PC); } //------------------------------------------------------------------------------- function bool MutatorIsAllowed() { return true; } //----------------------------------------------------------------------------- function GetServerDetails( out GameInfo.ServerResponseLine ServerState ) { } //------------------------------------------------------------------------------- function Mutate(string MutateString, PlayerController Sender) { local string sTemp; if (MutateString ~= "UTExtra") OpenMenuHitSounds(Sender); if (Left(MutateString, 17) == "UTExtraHitSounds=") { SetupHitSound(Sender, Mid(MutateString, 17)); return; } sTemp = sCode$"UTExtraHitSounds="; if (Left(MutateString, 20) == sTemp) { if (Sender.PlayerReplicationInfo.bAdmin || Level.NetMode == NM_Standalone) AdminHitSounds(Sender, Mid(MutateString, 20)); } if (NextMutator != None) NextMutator.Mutate(MutateString, Sender); } //------------------------------------------------------------------------------- function OpenMenuHitSounds(PlayerController Sender) { local string Param1, Param2; local bool isAdmin; if (!Sender.IsA('xPlayer')) return; if (Level.Game.bGameEnded) return; if (Sender.PlayerReplicationInfo.bAdmin || Level.NetMode == NM_StandAlone) isAdmin = true; if (default.bNoHitSounds && !isAdmin) { Sender.ClientMessage("<< Admin has disabled HitSounds >>"); return; } Param1 = sCode; Param2 = "0,"; if (isAdmin) { Param2 = "1,"; if (default.bNoHitSounds) Param2 = Param2$"1,"; else Param2 = Param2$"0,"; if (default.bNoWeapShake) Param2 = Param2$"1,"; else Param2 = Param2$"0,"; Param2 = Param2$default.SkinBright$","; } Sender.ClientOpenMenu("UTExtra13.UTExtraMenuHit", false, Param1, Param2); } //----------------------------------------------------------------------------- // disenhit,disenshake,skinlevel,disenself,selfvol function AdminHitSounds(PlayerController Sender, string sSounds) { local string sTemp; local int i; i = InStr(sSounds, ","); sTemp = Left(sSounds, i); default.bNoHitSounds = bool(sTemp); sSounds = Mid(sSounds, i+1); i = InStr(sSounds, ","); sTemp = Left(sSounds, i); default.bNoWeapShake = bool(sTemp); sSounds = Mid(sSounds, i+1); i = InStr(sSounds, ","); sTemp = Left(sSounds, i); default.SkinBright = int(sTemp); sSounds = Mid(sSounds, i+1); self.static.StaticSaveConfig(); SetupHitSound(Sender, sSounds); } //------------------------------------------------------------------------------- function SetupHitSound(PlayerController Sender, string sSound) { local string sNick, sTemp; local int i, j, S; local float V; if (GRules == None) { Log("UTExtraGameRules = None", 'UTExtra'); return; } if (default.bNoHitSounds && !Sender.PlayerReplicationInfo.bAdmin && Level.NetMode != NM_StandAlone) return; if (!Sender.PlayerReplicationInfo.bOnlySpectator) { i = InStr(sSound, ","); sTemp = Left(sSound, i); S = int(sTemp); sSound = Mid(sSound, i+1); V = float(sSound); // 0 to 100 V = V / 50; // 2 = 100% sNick = Sender.PlayerReplicationInfo.PlayerName; for (i=0; i<40; i++) { if (UTExtraGameRules(GRules).SoundPlayer[i] == sNick) { if (S == 0) { for (j=i; j<40; j++) { UTExtraGameRules(GRules).SoundPlayer[j] = UTExtraGameRules(GRules).SoundPlayer[j+1]; UTExtraGameRules(GRules).HitSoundVol[j] = UTExtraGameRules(GRules).HitSoundVol[j+1]; } } else { UTExtraGameRules(GRules).HitSoundVol[i] = V; } return; } } if (S == 1) { for (i=0; i<40; i++) { if (UTExtraGameRules(GRules).SoundPlayer[i] == "") { UTExtraGameRules(GRules).SoundPlayer[i] = sNick; UTExtraGameRules(GRules).HitSoundVol[i] = V; break; } } } } } //----------------------------------------------------------------------------- ]Admin Options,6*$?${>${>$L= SAclass DMMutator extends UTExtra CacheExempt; function GetServerDetails(out GameInfo.ServerResponseLine ServerState) { } Sg{ G"RSl6TL%"'  Q QQgMrMoMHMMlMiMDMpi~MKMqMBMdMAMxM`MMiqMdM_g`imM{MfMzpnMCMwMjMXiDiEMJirirMaQAMjWlWZMYiCMLx K|QAxtlSMlliqMbxMM}p\iLxIMEleiZisxQiwMeinjyx[lMj^QCfQ@jPMKBkjuMVxPQOiLMWM[ll9iHlii@iBMci}lSl@lBrx\xsBpMtjldlf @RMhQvL|ED"k AHvh NHjY [HIBgHrx iJkr uJlx AKx MKuh YKrY fKwY sKkY K>EHKLdvSMxa aM"D mM}a yMra ENv QNdY ]Nj_ iNF uNka BOmH NOjt ZOmV fOjG sOGvOso uRdT BS>| OST\S/FkS"f qalV }aF Jb^ Vb] bbjV nbjm {btD Hcd] UcjO bcaXnc"r |cd} Id>R UdaF ad>~ nd>} {d"i He"E UelR aexY medtzely Jfa{Vfma dfaz pfsN }fJIJgtm Sodm _o>i koxg woxs CprL Ppja \p}` hpdy up"J Aq"j Mqb Yqw fqc rq|e ~qazKra~ Yr>HIfrx otkV |t"#IudU luoG xury Evu Qvd|]vd{ kv>Cxv>DGWw>S+^y>U*Iz>GGszoFz|>I]H}4ke~du Pau ]9i3&husNo A#Nho q"D~">fB"=Dh"@RlSo ~>eXKqu c"S&o>f{U"<OP":X_"uw"1Ol"Ma{>7g\xu C{ OK[0Nf;[ti%O>?1tVeu s>5.Vmu {>"GNiV w>d8DC |>I(H>B5pq4Geq4p l>q4s3\q4n)O"q4n}>F8kq4LcS"o"ldQ