From 50b1af08a224d0f197022b7b7a4c5c0b8ad7fa48 Mon Sep 17 00:00:00 2001 From: WlarusFromDaSpace <44726328+WlarusFromDaSpace@users.noreply.github.com> Date: Wed, 9 Feb 2022 03:13:35 +0000 Subject: [PATCH] Adds emergency access to airlocks (#6500) --- Content.Client/Doors/AirlockVisualizer.cs | 22 ++++++++++++++ Content.Server/Doors/Systems/DoorSystem.cs | 27 +++++++++++------- Content.Server/Remotes/DoorRemoteComponent.cs | 4 +-- Content.Server/Remotes/DoorRemoteSystem.cs | 16 ++++++++--- .../Doors/Components/DoorComponent.cs | 3 +- .../Components/SharedAirlockComponent.cs | 4 +++ .../Doors/Systems/SharedAirlockSystem.cs | 15 ++++++++++ .../Doors/Airlocks/base_structureairlocks.yml | 3 ++ .../Structures/Doors/Airlocks/shuttle.yml | 3 ++ .../Structures/Doors/Firelocks/firelock.yml | 1 + .../Doors/Windoors/base_structurewindoors.yml | 6 ++++ .../Glass/basic.rsi/emergency_unlit.png | Bin 0 -> 588 bytes .../Doors/Airlocks/Glass/basic.rsi/meta.json | 9 ++++++ .../Glass/cargo.rsi/emergency_unlit.png | Bin 0 -> 588 bytes .../Doors/Airlocks/Glass/cargo.rsi/meta.json | 9 ++++++ .../Glass/command.rsi/emergency_unlit.png | Bin 0 -> 588 bytes .../Airlocks/Glass/command.rsi/meta.json | 9 ++++++ .../Glass/engineering.rsi/emergency_unlit.png | Bin 0 -> 588 bytes .../Airlocks/Glass/engineering.rsi/meta.json | 9 ++++++ .../Glass/external.rsi/emergency_unlit.png | Bin 0 -> 588 bytes .../Airlocks/Glass/external.rsi/meta.json | 9 ++++++ .../Glass/firelock.rsi/emergency_unlit.png | Bin 0 -> 588 bytes .../Airlocks/Glass/firelock.rsi/meta.json | 9 ++++++ .../Glass/glass.rsi/emergency_unlit.png | Bin 145 -> 588 bytes .../Doors/Airlocks/Glass/glass.rsi/meta.json | 18 ++++++------ .../Glass/medical.rsi/emergency_unlit.png | Bin 0 -> 588 bytes .../Airlocks/Glass/medical.rsi/meta.json | 9 ++++++ .../Glass/science.rsi/emergency_unlit.png | Bin 0 -> 588 bytes .../Airlocks/Glass/science.rsi/meta.json | 9 ++++++ .../Glass/security.rsi/emergency_unlit.png | Bin 0 -> 588 bytes .../Airlocks/Glass/security.rsi/meta.json | 9 ++++++ .../Standard/basic.rsi/emergency_unlit.png | Bin 0 -> 588 bytes .../Airlocks/Standard/basic.rsi/meta.json | 9 ++++++ .../Standard/cargo.rsi/emergency_unlit.png | Bin 0 -> 588 bytes .../Airlocks/Standard/cargo.rsi/meta.json | 9 ++++++ .../Standard/command.rsi/emergency_unlit.png | Bin 0 -> 588 bytes .../Airlocks/Standard/command.rsi/meta.json | 9 ++++++ .../engineering.rsi/emergency_unlit.png | Bin 0 -> 588 bytes .../Standard/engineering.rsi/meta.json | 9 ++++++ .../Standard/external.rsi/emergency_unlit.png | Bin 0 -> 5397 bytes .../Airlocks/Standard/external.rsi/meta.json | 9 ++++++ .../Standard/firelock.rsi/emergency_unlit.png | Bin 0 -> 588 bytes .../Airlocks/Standard/firelock.rsi/meta.json | 9 ++++++ .../Standard/freezer.rsi/emergency_unlit.png | Bin 0 -> 588 bytes .../Airlocks/Standard/freezer.rsi/meta.json | 9 ++++++ .../Standard/maint.rsi/emergency_unlit.png | Bin 0 -> 588 bytes .../Airlocks/Standard/maint.rsi/meta.json | 9 ++++++ .../Standard/medical.rsi/emergency_unlit.png | Bin 0 -> 588 bytes .../Airlocks/Standard/medical.rsi/meta.json | 9 ++++++ .../Standard/science.rsi/emergency_unlit.png | Bin 0 -> 588 bytes .../Airlocks/Standard/science.rsi/meta.json | 9 ++++++ .../Standard/security.rsi/emergency_unlit.png | Bin 0 -> 588 bytes .../Airlocks/Standard/security.rsi/meta.json | 9 ++++++ .../Standard/shuttle.rsi/emergency_unlit.png | Bin 0 -> 5301 bytes .../Airlocks/Standard/shuttle.rsi/meta.json | 9 ++++++ .../Windoors/windoor.rsi/emergency_unlit.png | Bin 0 -> 5123 bytes .../Doors/Windoors/windoor.rsi/meta.json | 4 +++ 57 files changed, 288 insertions(+), 27 deletions(-) create mode 100644 Resources/Textures/Structures/Doors/Airlocks/Glass/basic.rsi/emergency_unlit.png create mode 100644 Resources/Textures/Structures/Doors/Airlocks/Glass/cargo.rsi/emergency_unlit.png create mode 100644 Resources/Textures/Structures/Doors/Airlocks/Glass/command.rsi/emergency_unlit.png create mode 100644 Resources/Textures/Structures/Doors/Airlocks/Glass/engineering.rsi/emergency_unlit.png create mode 100644 Resources/Textures/Structures/Doors/Airlocks/Glass/external.rsi/emergency_unlit.png create mode 100644 Resources/Textures/Structures/Doors/Airlocks/Glass/firelock.rsi/emergency_unlit.png create mode 100644 Resources/Textures/Structures/Doors/Airlocks/Glass/medical.rsi/emergency_unlit.png create mode 100644 Resources/Textures/Structures/Doors/Airlocks/Glass/science.rsi/emergency_unlit.png create mode 100644 Resources/Textures/Structures/Doors/Airlocks/Glass/security.rsi/emergency_unlit.png create mode 100644 Resources/Textures/Structures/Doors/Airlocks/Standard/basic.rsi/emergency_unlit.png create mode 100644 Resources/Textures/Structures/Doors/Airlocks/Standard/cargo.rsi/emergency_unlit.png create mode 100644 Resources/Textures/Structures/Doors/Airlocks/Standard/command.rsi/emergency_unlit.png create mode 100644 Resources/Textures/Structures/Doors/Airlocks/Standard/engineering.rsi/emergency_unlit.png create mode 100644 Resources/Textures/Structures/Doors/Airlocks/Standard/external.rsi/emergency_unlit.png create mode 100644 Resources/Textures/Structures/Doors/Airlocks/Standard/firelock.rsi/emergency_unlit.png create mode 100644 Resources/Textures/Structures/Doors/Airlocks/Standard/freezer.rsi/emergency_unlit.png create mode 100644 Resources/Textures/Structures/Doors/Airlocks/Standard/maint.rsi/emergency_unlit.png create mode 100644 Resources/Textures/Structures/Doors/Airlocks/Standard/medical.rsi/emergency_unlit.png create mode 100644 Resources/Textures/Structures/Doors/Airlocks/Standard/science.rsi/emergency_unlit.png create mode 100644 Resources/Textures/Structures/Doors/Airlocks/Standard/security.rsi/emergency_unlit.png create mode 100644 Resources/Textures/Structures/Doors/Airlocks/Standard/shuttle.rsi/emergency_unlit.png create mode 100644 Resources/Textures/Structures/Doors/Windoors/windoor.rsi/emergency_unlit.png diff --git a/Content.Client/Doors/AirlockVisualizer.cs b/Content.Client/Doors/AirlockVisualizer.cs index 7e5fd8eb57..c85d695568 100644 --- a/Content.Client/Doors/AirlockVisualizer.cs +++ b/Content.Client/Doors/AirlockVisualizer.cs @@ -46,6 +46,12 @@ namespace Content.Client.Doors [DataField("openUnlitVisible")] private bool _openUnlitVisible = false; + /// + /// Whether the door should have an emergency access layer + /// + [DataField("emergencyAccessLayer")] + private bool _emergencyAccessLayer = true; + private Animation CloseAnimation = default!; private Animation OpenAnimation = default!; private Animation DenyAnimation = default!; @@ -141,6 +147,7 @@ namespace Content.Client.Doors var unlitVisible = true; var boltedVisible = false; var weldedVisible = false; + var emergencyLightsVisible = false; if (animPlayer.HasRunningAnimation(AnimationKey)) { @@ -192,11 +199,25 @@ namespace Content.Client.Doors boltedVisible = true; } + if (component.TryGetData(DoorVisuals.EmergencyLights, out bool eaLights) && eaLights) + { + emergencyLightsVisible = true; + } + if (!_simpleVisuals) { sprite.LayerSetVisible(DoorVisualLayers.BaseUnlit, unlitVisible && state != DoorState.Closed && state != DoorState.Welded); sprite.LayerSetVisible(DoorVisualLayers.BaseWelded, weldedVisible); sprite.LayerSetVisible(DoorVisualLayers.BaseBolted, unlitVisible && boltedVisible); + if (_emergencyAccessLayer) + { + sprite.LayerSetVisible(DoorVisualLayers.BaseEmergencyAccess, + emergencyLightsVisible + && state != DoorState.Open + && state != DoorState.Opening + && state != DoorState.Closing + && unlitVisible); + } } } } @@ -207,5 +228,6 @@ namespace Content.Client.Doors BaseUnlit, BaseWelded, BaseBolted, + BaseEmergencyAccess, } } diff --git a/Content.Server/Doors/Systems/DoorSystem.cs b/Content.Server/Doors/Systems/DoorSystem.cs index dad43ed0db..b58f99d71f 100644 --- a/Content.Server/Doors/Systems/DoorSystem.cs +++ b/Content.Server/Doors/Systems/DoorSystem.cs @@ -5,6 +5,7 @@ using Content.Server.Construction; using Content.Server.Construction.Components; using Content.Server.Tools; using Content.Server.Tools.Components; +using Content.Server.Doors.Components; using Content.Shared.Access.Components; using Content.Shared.Access.Systems; using Content.Shared.Doors; @@ -48,8 +49,8 @@ public sealed class DoorSystem : SharedDoorSystem base.OnInit(uid, door, args); if (door.State == DoorState.Open - && door.ChangeAirtight - && TryComp(uid, out AirtightComponent? airtight)) + && door.ChangeAirtight + && TryComp(uid, out AirtightComponent? airtight)) { _airtightSystem.SetAirblocked(airtight, false); } @@ -96,7 +97,7 @@ public sealed class DoorSystem : SharedDoorSystem SoundSystem.Play(filter, sound, uid, audioParams); } - #region DoAfters +#region DoAfters /// /// Weld or pry open a door. /// @@ -136,7 +137,7 @@ public sealed class DoorSystem : SharedDoorSystem // perform a do-after delay door.BeingWelded = true; _toolSystem.UseTool(used, user, target, 3f, 3f, door.WeldingQuality, - new WeldFinishedEvent(), new WeldCancelledEvent(), target); + new WeldFinishedEvent(), new WeldCancelledEvent(), target); return true; // we might not actually succeeded, but a do-after has started } @@ -196,7 +197,7 @@ public sealed class DoorSystem : SharedDoorSystem else if (door.State == DoorState.Open) StartClosing(uid, door); } - #endregion +#endregion /// /// Does the user have the permissions required to open this door? @@ -209,6 +210,10 @@ public sealed class DoorSystem : SharedDoorSystem if (user == null || AccessType == AccessTypes.AllowAll) return true; + // If the door is on emergency access we skip the checks. + if (TryComp(uid, out var airlock) && airlock.EmergencyAccess) + return true; + if (!Resolve(uid, ref access, false)) return true; @@ -289,17 +294,17 @@ public sealed class DoorSystem : SharedDoorSystem var container = uid.EnsureContainer("board", out var existed); /* // TODO ShadowCommander: Re-enable when access is added to boards. Requires map update. - if (existed) - { - // We already contain a board. Note: We don't check if it's the right one! - if (container.ContainedEntities.Count != 0) - return; + if (existed) + { + // We already contain a board. Note: We don't check if it's the right one! + if (container.ContainedEntities.Count != 0) + return; } var board = Owner.EntityManager.SpawnEntity(_boardPrototype, Owner.Transform.Coordinates); if(!container.Insert(board)) - Logger.Warning($"Couldn't insert board {board} into door {Owner}!"); + Logger.Warning($"Couldn't insert board {board} into door {Owner}!"); */ } } diff --git a/Content.Server/Remotes/DoorRemoteComponent.cs b/Content.Server/Remotes/DoorRemoteComponent.cs index e4a78ce176..b39781efff 100644 --- a/Content.Server/Remotes/DoorRemoteComponent.cs +++ b/Content.Server/Remotes/DoorRemoteComponent.cs @@ -14,8 +14,8 @@ namespace Content.Server.Remotes public enum OperatingMode : byte { OpenClose, - ToggleBolts - // ToggleEmergencyAccess + ToggleBolts, + ToggleEmergencyAccess } } } diff --git a/Content.Server/Remotes/DoorRemoteSystem.cs b/Content.Server/Remotes/DoorRemoteSystem.cs index f2c2b23b4f..eda09bd27c 100644 --- a/Content.Server/Remotes/DoorRemoteSystem.cs +++ b/Content.Server/Remotes/DoorRemoteSystem.cs @@ -20,6 +20,7 @@ namespace Content.Server.Remotes [Dependency] private readonly SharedDoorSystem _sharedDoorSystem = default!; [Dependency] private readonly DoorSystem _doorSystem = default!; [Dependency] private readonly SharedInteractionSystem _interactionSystem = default!; + [Dependency] private readonly SharedAirlockSystem _sharedAirlockSystem = default!; public override void Initialize() { @@ -38,15 +39,13 @@ namespace Content.Server.Remotes _popupSystem.PopupEntity(Loc.GetString("door-remote-switch-state-toggle-bolts"), args.User, Filter.Entities(args.User)); break; case DoorRemoteComponent.OperatingMode.ToggleBolts: - component.Mode = DoorRemoteComponent.OperatingMode.OpenClose; // TODO: Swítch to ToggleEmergencyAcces when EA is implemented - _popupSystem.PopupEntity(Loc.GetString("door-remote-switch-state-open-close"), args.User, Filter.Entities(args.User)); // TODO: See the above comment + component.Mode = DoorRemoteComponent.OperatingMode.ToggleEmergencyAccess; + _popupSystem.PopupEntity(Loc.GetString("door-remote-switch-state-toggle-emergency-access"), args.User, Filter.Entities(args.User)); break; - /* case DoorRemoteComponent.OperatingMode.ToggleEmergencyAccess: component.Mode = DoorRemoteComponent.OperatingMode.OpenClose; _popupSystem.PopupEntity(Loc.GetString("door-remote-switch-state-open-close"), args.User, Filter.Entities(args.User)); break; - */ } } @@ -88,6 +87,15 @@ namespace Content.Server.Remotes } } } + + if (component.Mode == DoorRemoteComponent.OperatingMode.ToggleEmergencyAccess + && airlockComponent.IsPowered()) + { + if (_doorSystem.HasAccess(doorComponent.Owner, args.Used)) + { + _sharedAirlockSystem.ToggleEmergencyAccess(airlockComponent); + } + } } } } diff --git a/Content.Shared/Doors/Components/DoorComponent.cs b/Content.Shared/Doors/Components/DoorComponent.cs index 65e470f017..748bf8058c 100644 --- a/Content.Shared/Doors/Components/DoorComponent.cs +++ b/Content.Shared/Doors/Components/DoorComponent.cs @@ -204,7 +204,8 @@ public enum DoorVisuals { State, Powered, - BoltLights + BoltLights, + EmergencyLights, } [Serializable, NetSerializable] diff --git a/Content.Shared/Doors/Components/SharedAirlockComponent.cs b/Content.Shared/Doors/Components/SharedAirlockComponent.cs index 22e456f643..2e554014ba 100644 --- a/Content.Shared/Doors/Components/SharedAirlockComponent.cs +++ b/Content.Shared/Doors/Components/SharedAirlockComponent.cs @@ -13,6 +13,10 @@ public abstract class SharedAirlockComponent : Component [ViewVariables(VVAccess.ReadWrite)] [DataField("safety")] public bool Safety = true; + + [ViewVariables(VVAccess.ReadWrite)] + [DataField("emergencyAccess")] + public bool EmergencyAccess = false; } [Serializable, NetSerializable] diff --git a/Content.Shared/Doors/Systems/SharedAirlockSystem.cs b/Content.Shared/Doors/Systems/SharedAirlockSystem.cs index 533f23e39f..a6c0e559db 100644 --- a/Content.Shared/Doors/Systems/SharedAirlockSystem.cs +++ b/Content.Shared/Doors/Systems/SharedAirlockSystem.cs @@ -38,4 +38,19 @@ public abstract class SharedAirlockSystem : EntitySystem if (airlock.Safety && DoorSystem.GetColliding(uid).Any()) args.Cancel(); } + + + public void UpdateEmergencyLightStatus(SharedAirlockComponent component) + { + if (TryComp(component.Owner, out var appearanceComponent)) + { + appearanceComponent.SetData(DoorVisuals.EmergencyLights, component.EmergencyAccess); + } + } + + public void ToggleEmergencyAccess(SharedAirlockComponent component) + { + component.EmergencyAccess = !component.EmergencyAccess; + UpdateEmergencyLightStatus(component); + } } diff --git a/Resources/Prototypes/Entities/Structures/Doors/Airlocks/base_structureairlocks.yml b/Resources/Prototypes/Entities/Structures/Doors/Airlocks/base_structureairlocks.yml index 1c765a3d9b..d836c384e9 100644 --- a/Resources/Prototypes/Entities/Structures/Doors/Airlocks/base_structureairlocks.yml +++ b/Resources/Prototypes/Entities/Structures/Doors/Airlocks/base_structureairlocks.yml @@ -19,6 +19,9 @@ - state: bolted_unlit shader: unshaded map: ["enum.DoorVisualLayers.BaseBolted"] + - state: emergency_unlit + map: ["enum.DoorVisualLayers.BaseEmergencyAccess"] + shader: unshaded - state: panel_open map: ["enum.WiresVisualLayers.MaintenancePanel"] - type: Physics diff --git a/Resources/Prototypes/Entities/Structures/Doors/Airlocks/shuttle.yml b/Resources/Prototypes/Entities/Structures/Doors/Airlocks/shuttle.yml index 673d358e8d..988c79fd8f 100644 --- a/Resources/Prototypes/Entities/Structures/Doors/Airlocks/shuttle.yml +++ b/Resources/Prototypes/Entities/Structures/Doors/Airlocks/shuttle.yml @@ -20,6 +20,9 @@ - state: bolted_unlit shader: unshaded map: ["enum.DoorVisualLayers.BaseBolted"] + - state: emergency_unlit + shader: unshaded + map: ["enum.DoorVisualLayers.BaseEmergencyAccess"] - state: panel_open map: ["enum.WiresVisualLayers.MaintenancePanel"] - type: Wires diff --git a/Resources/Prototypes/Entities/Structures/Doors/Firelocks/firelock.yml b/Resources/Prototypes/Entities/Structures/Doors/Firelocks/firelock.yml index 9dd961e31f..c6b5aea18d 100644 --- a/Resources/Prototypes/Entities/Structures/Doors/Firelocks/firelock.yml +++ b/Resources/Prototypes/Entities/Structures/Doors/Firelocks/firelock.yml @@ -78,6 +78,7 @@ visuals: - type: AirlockVisualizer animationTime: 0.6 + emergencyAccessLayer: false - type: WiresVisualizer - type: Wires BoardName: "Firelock Control" diff --git a/Resources/Prototypes/Entities/Structures/Doors/Windoors/base_structurewindoors.yml b/Resources/Prototypes/Entities/Structures/Doors/Windoors/base_structurewindoors.yml index b3a5e49457..33fe9bf654 100644 --- a/Resources/Prototypes/Entities/Structures/Doors/Windoors/base_structurewindoors.yml +++ b/Resources/Prototypes/Entities/Structures/Doors/Windoors/base_structurewindoors.yml @@ -34,6 +34,9 @@ - state: bolted_unlit shader: unshaded map: ["enum.DoorVisualLayers.BaseBolted"] + - state: emergency_unlit + shader: unshaded + map: ["enum.DoorVisualLayers.BaseEmergencyAccess"] - state: panel_open map: ["enum.WiresVisualLayers.MaintenancePanel"] - type: ApcPowerReceiver @@ -123,6 +126,9 @@ - state: bolted_unlit shader: unshaded map: [ "enum.DoorVisualLayers.BaseBolted" ] + - state: emergency_unlit + shader: unshaded + map: [ "enum.DoorVisualLayers.BaseEmergencyAccess" ] - state: panel_open map: [ "enum.WiresVisualLayers.MaintenancePanel" ] visible: false diff --git a/Resources/Textures/Structures/Doors/Airlocks/Glass/basic.rsi/emergency_unlit.png b/Resources/Textures/Structures/Doors/Airlocks/Glass/basic.rsi/emergency_unlit.png new file mode 100644 index 0000000000000000000000000000000000000000..817f2fb3f95c53ee8720a7c5be418b6208a6a7e6 GIT binary patch literal 588 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 diff --git a/Resources/Textures/Structures/Doors/Airlocks/Glass/glass.rsi/meta.json b/Resources/Textures/Structures/Doors/Airlocks/Glass/glass.rsi/meta.json index a00faa6df8..9bb7e9bb72 100644 --- a/Resources/Textures/Structures/Doors/Airlocks/Glass/glass.rsi/meta.json +++ b/Resources/Textures/Structures/Doors/Airlocks/Glass/glass.rsi/meta.json @@ -109,15 +109,6 @@ ] ] }, - { - "name": "emergency_unlit", - "delays": [ - [ - 12, - 12 - ] - ] - }, { "name": "open" }, @@ -244,6 +235,15 @@ }, { "name": "welded" + }, + { + "name": "emergency_unlit", + "delays": [ + [ + 0.4, + 0.4 + ] + ] } ] } diff --git a/Resources/Textures/Structures/Doors/Airlocks/Glass/medical.rsi/emergency_unlit.png b/Resources/Textures/Structures/Doors/Airlocks/Glass/medical.rsi/emergency_unlit.png new file mode 100644 index 0000000000000000000000000000000000000000..817f2fb3f95c53ee8720a7c5be418b6208a6a7e6 GIT binary patch literal 588 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͗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 literal 0 HcmV?d00001 diff --git a/Resources/Textures/Structures/Doors/Airlocks/Standard/shuttle.rsi/meta.json b/Resources/Textures/Structures/Doors/Airlocks/Standard/shuttle.rsi/meta.json index f439b226fc..7248a273c1 100644 --- a/Resources/Textures/Structures/Doors/Airlocks/Standard/shuttle.rsi/meta.json +++ b/Resources/Textures/Structures/Doors/Airlocks/Standard/shuttle.rsi/meta.json @@ -129,6 +129,15 @@ }, { "name": "welded" + }, + { + "name": "emergency_unlit", + "delays": [ + [ + 0.4, + 0.4 + ] + ] } ] } diff --git a/Resources/Textures/Structures/Doors/Windoors/windoor.rsi/emergency_unlit.png b/Resources/Textures/Structures/Doors/Windoors/windoor.rsi/emergency_unlit.png new file mode 100644 index 0000000000000000000000000000000000000000..ccd783a239c95b402d0d309d07b6b63f32209c8d GIT binary patch literal 5123 zcmeHLX;>3i7Y-m{M??@l6^s!Dl#t23l&~aWi4t}YMXHlz0t4B|0w^jXh+-9_6;uSI zm5N#cD=I|=5wW1Cw93+=B8vsBBA>;ruAKz5_2H#0dQ zLH-t|Gfhz_lm#z<8-|>{wTCep`8^CL^`cNyHm`|@R)>Kp7==Ju_Hu;O+ zQO}GGzuE8k{l=A-^{6+Ehp@ghfW1ERuybSHvytg%Ozk_o8SHYsUy}CNFHU#ODCU|m z7yhvbeX&c5vH}w}k(^ecj^w-8K0u4->F=#*iV{#TaAlu-}nwArQ|{4PGK^P2;ad!J(G+u^>AHVJ*Opzy0hwxsX6 zjx0S?mw@X`sH}YYBOg=Lv$!TICb3?4)w0cD|7Xm{o~f;^oa-*<{T!r^b4EyG9m@_} zVcvM~#V)tIEeqSCVx>>`vtr=k%F~h?n%Y|qF<0iVPJS{l)VcSWb0V#Bv=@KWkCwQW zXzMU?ac065#|18TxS1rYA6=*0*OsAX6=l}!54$@1vSFORkh_Uk+|efq1<>fR1yL17 zDLHt*%(|5WxMl16x2G4@*>tSSuX}c8U31S?VSMSf*iid2$BlP6FRMxt^UgnvE%i)% zp77?-*Q^!~^_-u!7wtN~KmP*F?s>as>)tveE7hNhnmh3or?Q{<#>|MOZa$e`Jw%wj zx5+;PBM4Yq%ia)IMKuQk_NKiY2)%B+q(y1SzI6dzR54X!W<9&+rx3e28UXNN_GzL$aN_(tix6NpWda$dc)hBI-4X_3EJL?MNt-aaD z9u^7%i;Tm)mOJ@>9}xFrqsa-YtRr%V-k;249$F>LwZFdJZ&bW{%=P5fZ&~VG2ef3H zh0n<6UAt}dKRY&<-B~!?c8~B!@jf`_gYslOV(@N&<6))zJ;efCevkkj9X3qH{(#S3@)?tOA&wmY?f4<23 z*>~})m0|JI2G1pV_1;RmS#OZFW)B?IVqbRej41PsQy9XNkHr#q*DD$N}8Oxjr>DtKO;+EH$1?WK%;^nAPO zXDB1i?@HjBT>4_S88@O~VHA-vz#G_o_})&uh!w?^kF|4mwri@ku2^R$oRp zVx6{xgj_&hIy$W)()j|r=;?INH$L6?{3Ua{(e{j?&9D$hB6C z$6|CU>O>YcnjeDU$dwR=>`rzEaK5Q{8(?X16a3PgY2`kjFT!ztNf&#fl&B9`l zam>5;qzXR&J-kdc!2-euJ{45p3GM)1D#cH>P^o>B5s-<1{?S4ef$X&SFi0iWD20%3 zG9**an+zcmzPDFsloDM!A|W1=M3>IwKoIlyxF2Z0%U!38Xz}?>u3V_mhR5Twuv-62kz5Fin7T_ESpWbckbt9z zKoCa;1!NqZ0SIvfh#{Z>3>t|drcHw4$y91kCWN$52)H|p;Ls>!DowxuZ~&FTz>ygu z0Zu@tk#QhECsIg6x==s{CP4%%VWcWS$>gZCP$C41z#!8FLIA=M1fT#%7LbHEffyj; z$TWeFN)ffpnuoMbcgIYETR5F=BCIJ)*gF>g#Cs{{9N)=LxT1*1qP8uK4P74!B1|b&I z)+qw;E=wjy34v<4GD0qwu&~+yFj`Apd1E}rCnW$@AsVZ-6+cn);ZV}}-S`raz`7v} zMpw2>P&n>H1tvoxog>6{pezE2OaQ>*ClbbMSM|G$J@Eg-iHA;MQX4?*#$`x*LAn+GeY=|AOiSax_?eiC zf6)U1{mIEk@%xFcPjr1010SXQsk%PV^-&Cbl=7$Q`oGa-`u775Bt!lMr67+pOAcR4 zL>`6Ef+hZ36!O*#MGEPU&O**6ihyM*6v}M6_RvEW726|1BQ=ljYc!;fHnpD`82Wh$ zBJ$^PeIk%|Z9V5qP#ANA#=bX$ntjZSVBfp9^f!6@!JEFSs7k$bxizASLN#i#O*U{C n4Gne8mO24y>8q#q;H+Yq0n5PZ5jgNHLM!I^263y{t2X`xjYX