From 50689f89a40e5e7a2732a0c5fb38c787b69f7d28 Mon Sep 17 00:00:00 2001 From: LemonInTheDark <58055496+LemonInTheDark@users.noreply.github.com> Date: Thu, 31 Mar 2022 13:40:20 -0700 Subject: [PATCH] Action button refactor/rework: Enhanced Dragging (#65180) About The Pull Request I noticed a lot of strange and un-intuitive behavior in action buttons, and got stung by the bloat bug. Damn it hug #58027 I'll do my best to explain what I've changed and why, might get a bit long. If you want a better idea, read the commits. Most of em are pretty solid, if long. Whelp. Here we go. How do action buttons currently work All action buttons are draggable, to any place on the screen. They're held in an actions list on the player's mob. Their location in this list determines their position on the top of the screen. If one is dragged away from the top, its position in the list is "saved". This looks really bad. If two buttons are dragged over each other, their positions swap. (inside the actions list too) If a button is shift clicked, it is brought back to the position it started at. If the action collapse button that you likely just mentally edit out is alt clicked, it resets the position of all action buttons on the screen. If an action is ctrl clicked, it is "locked". This prevents any future position changes, and also enables a saving feature. With this saving feature, locked button positions persist between rounds. So your first o2 canister will always start where you saved it, etc. Actions and buttons are a one to one link. While there is functionality to share action buttons between two players, this means showing the same object to both. So one player can move a button on another's screen. Horrendous. This also makes code that modifies properties of the screen object itself very clunky. Why is this bad A: None knew pretty much any of this information. It is actually documented, just in a horribly formatted screen tip on the collapse button, you know the one we all mentally delete from the hud. B: None of this is intuitive. Dragging buttons makes the hud look much worse, and you get no feedback that you even can drag them. Depressing C: We use actions to make new options clear to the player. This means players can have a lot of action buttons on the hud. This gets cluttery D: The collapse button is useless. It lets you clear your screen if someone like me fucks up and gives you 2000 actions, but outside of that it just hides all information from you. You never want to see none of your action buttons, just a filtered list of them. E: On a technical level, they're quite messy, and not fully functionally complete. This is depressing. What I've done Assuming the above to be true, how do we fix them? Well first I'm going to go over everything I changed, including links to major commits. I'll then describe the finished product, and why I made the decisions I did. Oh and I've moved some of the more niche or technical discussion to dropdowns. Hopefully this makes finding the major functional changes easier Adds helper procs for turning screen_loc strings into more manageable arrays. This doesn't fully support all of the screen_loc spec, but it's enough for what I'm doing. (f54865f) Uses these helper procs to improve existing code (6273b93) Fixes an issue with tooltip code itself. If you tried to hold down a mouse button while dragging onto a tooltip enabled object, it would silently fail. The js made assumptions about the order args came in, which broke when buttons were held down (e0e42f6) Adds a signal linked to /client/Click(). Surprised we didn't have this before honestly (c491a4a) Makes /client/MouseDrag() return parent. If we don't do this, any overrides of MouseDrag will never actually be called (2190b2a) Refactors how action buttons work under the hood (53ccce2) Basically, rather then generating one button per action, we generate one button per viewer Starts to change button behavior, more cleanup Changes the mouse cursor when an action button is dragged. Hopefully this makes moving things feel less like an accident, and makes you doing it more clear Removes the moved and locked vars. This will be more relevant later, but for now: Moved exists as a sort of budget "We've been dragged" variable. We can handle this more cleanly, and the movable type doesn't care about it Locked is a very old variable that is also not something that the movable type "owns". It's more an action button thing that's been moved down. It exists so an action can be locked in place, and in that locking, be treated as a "saved location" (21e20fc) Because I've nuked move, we don't need to directly set our button's position. We can use the default_button_position var instead. This is quite handy. Please ignore position_action, I will explain that later (83e265e) Removes the buttons locked pref It was another obscure part of action buttons, basically do buttons start "locked" or not. See previous discussion of locked (b58b1bd) Major rework starts here Alright. Sorry for this, this is where me not commiting regularly starts to suck. I'll do my best though. Rather then figuring out an action button's position via a combination of the moved and ordered vars, we use a separate location var to store one of a few defines. This makes life later much easier. Adds tooltip support for dragging action buttons. The way the tooltip just froze in place when dragging really bugged me, and lead to some nasty visual artifacts. This is a bit messy because the drag procs are horrible, but it's workable Dropping a button on another button will no longer swap their positions Behavior instead depends on the target button. If it's a part of a group (A concept I will explain later) the dragged button is simply inserted before it in the group's list. If it's floating on the general hud, we instead position the dragged button to its right. There's extra logic here to ensure buttons will never overflow the screen, but I'll get into that later. Alright. That's most of the refactoring. Time for the larger behavior changes. Adds a button palette. This is a separate dropdown that renders underneath buttons. image The idea is to allow for a conceptual separation between "important" buttons and the ones that end up cluttering the screen. You can click on the dropdown to open it, then any later clicks that don't involve actions in some way will autoclose it. My goal is to come up with an alternative for the action button that just acted as a way to hide all buttons on screen. Not convinced it saw much use. As a side effect of removing that, I've moved its tooltip stuff to the palette. I've properly formatted it, so hopefully it's easier to read then the jumble that we used to have. (You can alt click the palette button to reset all button positions) Oh and the palette can scroll, since as you'll see later it has a limited size. image Moving on from that, I've added what amounts to action landing buttons. These allow buttons to rejoin groups, or be positioned at the end of a line of buttons. image They've got a 32x32 hitbox, and only show up when dragging. Hopefully this makes the system more clear just by dragging an action. Oh and I've changed how button position updating works. The old system of calling update_action_buttons on mob every time an action button changes position is gone, mostly because I've setup more robust grouping. Will discuss when I get to huds (0d1e93f) Adds the backbone behind action button position changes (94133bd) Moves hud defines to the global folder, safer this way (7260117) Adds color changing to the palette button, giving some heads up for buttons being inserted into the palette automatically image image Ensures a landing button is always shown, even if it needs to break the max row rule Makes palettes auto contract if they have no buttons inside them Prevents palettes from being opened if they have no buttons inside them (f9417f3) How it looks 2022-02-26.02-30-10.mp4 Why It's Good For The Game Players have more control over the clutter on their screen. Buttons are available, but not in the way, Since any player move of a button saves it, any lack of clarity in the way buttons work will be forced out by buttons not just resetting when a new game starts. We don't overlap any existing screen elements, unless the upper button list gets really long. The code is much less crummy (I think, may have made it worse it's hard for me to judge my own work) If it ends up not being as usable as I'd like, I'll rip out the existing changes and just implement the qol and backend stuff. I think it's worth doing though. Changelog cl add: Expanded heavily on action buttons add: Adds an action button dropdown that sits just under the normal list in the top left. You can drag new buttons onto it to insert them. Click on it to show its contents, do what you want to do, then click again anywhere to contract it. Alt click it to reset all button positions add: Action buttons will now remember their position between rounds. So if you really like your flashlight right next to your player for some reason, we support that now add: When you start to drag an action button, docking ports will appear in places that it can be inserted into. (Outside of just floating somewhere on your screen of course) del: Removed action button locking, and the associated preference. I'm reasonably sure literally none uses this, but if you do hit me up qol: Dragging an action button will now give you an outline of its size around your cursor fix: You can no longer cause the screen to expand by putting an action button on the edge of widescreen, and then resizing to standard. refactor: Refactors action and button code significantly. lots of little things. /cl --- .../signals_atom/signals_atom_mouse.dm | 6 +- code/__DEFINES/hud.dm | 199 +++++++ code/__HELPERS/screen_objs.dm | 91 ++++ code/__HELPERS/view.dm | 9 + code/_onclick/drag_drop.dm | 16 +- code/_onclick/hud/_defines.dm | 180 ------- code/_onclick/hud/action_button.dm | 508 ++++++++++++------ code/_onclick/hud/hud.dm | 341 +++++++++++- code/_onclick/hud/movable_screen_objects.dm | 37 +- code/_onclick/hud/screentip.dm | 2 +- code/controllers/subsystem/augury.dm | 6 +- code/datums/action.dm | 260 ++++----- code/datums/brain_damage/imaginary_friend.dm | 2 +- code/datums/components/admin_popup.dm | 2 +- code/datums/components/riding/riding_mob.dm | 4 +- code/datums/mind.dm | 2 +- code/datums/view.dm | 10 +- code/game/objects/items.dm | 2 +- code/game/objects/items/granters.dm | 4 +- .../objects/structures/deployable_turret.dm | 2 +- .../SDQL2/SDQL_spells/spell_edit_menu.dm | 4 +- .../changeling/cellular_emporium.dm | 1 - .../changeling/powers/fakedeath.dm | 4 +- code/modules/antagonists/cult/blood_magic.dm | 45 +- code/modules/antagonists/cult/cult_items.dm | 3 +- .../heretic/heretic_living_heart.dm | 2 +- .../revenant/revenant_abilities.dm | 2 +- .../traitor/equipment/Malf_Modules.dm | 22 +- .../traitor/equipment/module_picker.dm | 2 +- code/modules/client/client_defines.dm | 13 +- code/modules/client/client_procs.dm | 4 +- .../client/preferences/buttons_locked.dm | 5 - code/modules/clothing/chameleon.dm | 18 +- .../carbon/alien/humanoid/alien_powers.dm | 4 +- .../carbon/human/species_types/golems.dm | 4 +- .../carbon/human/species_types/jellypeople.dm | 10 +- code/modules/mob/living/living.dm | 2 +- .../mob/living/silicon/robot/robot_model.dm | 6 +- .../mob/living/simple_animal/constructs.dm | 15 +- .../simple_animal/hostile/giant_spider.dm | 6 +- .../hostile/mining_mobs/elites/elite.dm | 14 +- code/modules/mod/mod_actions.dm | 10 +- code/modules/power/singularity/emitter.dm | 4 +- .../projectiles/guns/energy/beam_rifle.dm | 8 +- code/modules/projectiles/projectile.dm | 8 +- code/modules/spells/spell.dm | 12 +- code/modules/spells/spell_types/aimed.dm | 2 +- .../spells/spell_types/pointed/pointed.dm | 2 +- .../spells/spell_types/touch_attacks.dm | 2 +- code/modules/surgery/dental_implant.dm | 3 +- code/modules/tooltip/tooltip.dm | 4 +- code/modules/tooltip/tooltip.html | 30 +- code/modules/vehicles/mecha/combat/durand.dm | 2 +- code/modules/vehicles/mecha/combat/gygax.dm | 2 +- .../modules/vehicles/mecha/combat/marauder.dm | 2 +- code/modules/vehicles/mecha/combat/phazon.dm | 4 +- .../vehicles/mecha/combat/savannah_ivanov.dm | 10 +- code/modules/vehicles/mecha/mecha_actions.dm | 6 +- code/modules/vehicles/mecha/working/clarke.dm | 4 +- .../wiremod/shell/brain_computer_interface.dm | 19 +- icons/effects/mouse_pointers/screen_drag.dmi | Bin 0 -> 326 bytes icons/hud/64x16_actions.dmi | Bin 0 -> 3404 bytes icons/hud/actions.dmi | Bin 9016 -> 8753 bytes icons/hud/screen_ai.dmi | Bin 2543 -> 6429 bytes icons/hud/screen_alien.dmi | Bin 19547 -> 20520 bytes icons/hud/screen_clockwork.dmi | Bin 18064 -> 18821 bytes icons/hud/screen_cyborg.dmi | Bin 25712 -> 27032 bytes icons/hud/screen_gen.dmi | Bin 109613 -> 110937 bytes icons/hud/screen_glass.dmi | Bin 14147 -> 14899 bytes icons/hud/screen_midnight.dmi | Bin 28341 -> 29147 bytes icons/hud/screen_operative.dmi | Bin 30909 -> 31838 bytes icons/hud/screen_pai.dmi | Bin 2209 -> 2531 bytes icons/hud/screen_plasmafire.dmi | Bin 29797 -> 30583 bytes icons/hud/screen_retro.dmi | Bin 12833 -> 13728 bytes icons/hud/screen_slimecore.dmi | Bin 28294 -> 29064 bytes tgstation.dme | 3 +- 76 files changed, 1310 insertions(+), 696 deletions(-) create mode 100644 code/__HELPERS/screen_objs.dm delete mode 100644 code/_onclick/hud/_defines.dm delete mode 100644 code/modules/client/preferences/buttons_locked.dm create mode 100644 icons/effects/mouse_pointers/screen_drag.dmi create mode 100644 icons/hud/64x16_actions.dmi diff --git a/code/__DEFINES/dcs/signals/signals_atom/signals_atom_mouse.dm b/code/__DEFINES/dcs/signals/signals_atom/signals_atom_mouse.dm index 261c13c6673..2f8ebc83665 100644 --- a/code/__DEFINES/dcs/signals/signals_atom/signals_atom_mouse.dm +++ b/code/__DEFINES/dcs/signals/signals_atom/signals_atom_mouse.dm @@ -1,8 +1,10 @@ -// Atom mouse signals. Format: +// mouse signals. Format: // When the signal is called: (signal arguments) // All signals send the source datum of the signal as the first argument -///from base of atom/Click(): (location, control, params, mob/user) +///from base of client/Click(): (atom/target, atom/location, control, params, mob/user) +#define COMSIG_CLIENT_CLICK "atom_client_click" +///from base of atom/Click(): (atom/location, control, params, mob/user) #define COMSIG_CLICK "atom_click" ///from base of atom/ShiftClick(): (/mob) #define COMSIG_CLICK_SHIFT "shift_click" diff --git a/code/__DEFINES/hud.dm b/code/__DEFINES/hud.dm index 60b7c308be4..200c152630b 100644 --- a/code/__DEFINES/hud.dm +++ b/code/__DEFINES/hud.dm @@ -14,3 +14,202 @@ #define APPEARANCE_UI_IGNORE_ALPHA (RESET_COLOR|RESET_TRANSFORM|NO_CLIENT_COLOR|RESET_ALPHA|PIXEL_SCALE) /// Used for HUD objects #define APPEARANCE_UI (RESET_COLOR|RESET_TRANSFORM|NO_CLIENT_COLOR|PIXEL_SCALE) + +/* + These defines specificy screen locations. For more information, see the byond documentation on the screen_loc var. + + The short version: + + Everything is encoded as strings because apparently that's how Byond rolls. + + "1,1" is the bottom left square of the user's screen. This aligns perfectly with the turf grid. + "1:2,3:4" is the square (1,3) with pixel offsets (+2, +4); slightly right and slightly above the turf grid. + Pixel offsets are used so you don't perfectly hide the turf under them, that would be crappy. + + In addition, the keywords NORTH, SOUTH, EAST, WEST and CENTER can be used to represent their respective + screen borders. NORTH-1, for example, is the row just below the upper edge. Useful if you want your + UI to scale with screen size. + + The size of the user's screen is defined by client.view (indirectly by world.view), in our case "15x15". + Therefore, the top right corner (except during admin shenanigans) is at "15,15" +*/ + +/proc/ui_hand_position(i) //values based on old hand ui positions (CENTER:-/+16,SOUTH:5) + var/x_off = i % 2 ? 0 : -1 + var/y_off = round((i-1) / 2) + return"CENTER+[x_off]:16,SOUTH+[y_off]:5" + +/proc/ui_equip_position(mob/M) + var/y_off = round((M.held_items.len-1) / 2) //values based on old equip ui position (CENTER: +/-16,SOUTH+1:5) + return "CENTER:-16,SOUTH+[y_off+1]:5" + +/proc/ui_swaphand_position(mob/M, which = 1) //values based on old swaphand ui positions (CENTER: +/-16,SOUTH+1:5) + var/x_off = which == 1 ? -1 : 0 + var/y_off = round((M.held_items.len-1) / 2) + return "CENTER+[x_off]:16,SOUTH+[y_off+1]:5" + +//Lower left, persistent menu +#define ui_inventory "WEST:6,SOUTH:5" + +//Middle left indicators +#define ui_lingchemdisplay "WEST,CENTER-1:15" +#define ui_lingstingdisplay "WEST:6,CENTER-3:11" + +//Lower center, persistent menu +#define ui_sstore1 "CENTER-5:10,SOUTH:5" +#define ui_id "CENTER-4:12,SOUTH:5" +#define ui_belt "CENTER-3:14,SOUTH:5" +#define ui_back "CENTER-2:14,SOUTH:5" +#define ui_storage1 "CENTER+1:18,SOUTH:5" +#define ui_storage2 "CENTER+2:20,SOUTH:5" +#define ui_combo "CENTER+4:24,SOUTH+1:7" //combo meter for martial arts + +//Lower right, persistent menu +#define ui_drop_throw "EAST-1:28,SOUTH+1:7" +#define ui_above_movement "EAST-2:26,SOUTH+1:7" +#define ui_above_intent "EAST-3:24, SOUTH+1:7" +#define ui_movi "EAST-2:26,SOUTH:5" +#define ui_acti "EAST-3:24,SOUTH:5" +#define ui_combat_toggle "EAST-3:24,SOUTH:5" +#define ui_zonesel "EAST-1:28,SOUTH:5" +#define ui_acti_alt "EAST-1:28,SOUTH:5" //alternative intent switcher for when the interface is hidden (F12) +#define ui_crafting "EAST-4:22,SOUTH:5" +#define ui_building "EAST-4:22,SOUTH:21" +#define ui_language_menu "EAST-4:6,SOUTH:21" +#define ui_skill_menu "EAST-4:22,SOUTH:5" + +//Upper-middle right (alerts) +#define ui_alert1 "EAST-1:28,CENTER+5:27" +#define ui_alert2 "EAST-1:28,CENTER+4:25" +#define ui_alert3 "EAST-1:28,CENTER+3:23" +#define ui_alert4 "EAST-1:28,CENTER+2:21" +#define ui_alert5 "EAST-1:28,CENTER+1:19" + +//Upper left (action buttons) +#define ui_action_palette "WEST+0:23,NORTH-1:5" +#define ui_action_palette_offset(north_offset) ("WEST+0:23,NORTH-[1+north_offset]:5") + +#define ui_palette_scroll "WEST+1:8,NORTH-6:28" +#define ui_palette_scroll_offset(north_offset) ("WEST+1:8,NORTH-[6+north_offset]:28") + +//Middle right (status indicators) +#define ui_healthdoll "EAST-1:28,CENTER-2:13" +#define ui_health "EAST-1:28,CENTER-1:15" +#define ui_internal "EAST-1:28,CENTER+1:17" +#define ui_mood "EAST-1:28,CENTER:17" +#define ui_spacesuit "EAST-1:28,CENTER-4:10" +#define ui_stamina "EAST-1:28,CENTER-3:10" + +//Pop-up inventory +#define ui_shoes "WEST+1:8,SOUTH:5" +#define ui_iclothing "WEST:6,SOUTH+1:7" +#define ui_oclothing "WEST+1:8,SOUTH+1:7" +#define ui_gloves "WEST+2:10,SOUTH+1:7" +#define ui_glasses "WEST:6,SOUTH+3:11" +#define ui_mask "WEST+1:8,SOUTH+2:9" +#define ui_ears "WEST+2:10,SOUTH+2:9" +#define ui_neck "WEST:6,SOUTH+2:9" +#define ui_head "WEST+1:8,SOUTH+3:11" + +//Generic living +#define ui_living_pull "EAST-1:28,CENTER-3:15" +#define ui_living_healthdoll "EAST-1:28,CENTER-1:15" + +//Monkeys +#define ui_monkey_head "CENTER-5:13,SOUTH:5" +#define ui_monkey_mask "CENTER-4:14,SOUTH:5" +#define ui_monkey_neck "CENTER-3:15,SOUTH:5" +#define ui_monkey_back "CENTER-2:16,SOUTH:5" + +//Drones +#define ui_drone_drop "CENTER+1:18,SOUTH:5" +#define ui_drone_pull "CENTER+2:2,SOUTH:5" +#define ui_drone_storage "CENTER-2:14,SOUTH:5" +#define ui_drone_head "CENTER-3:14,SOUTH:5" + +//Cyborgs +#define ui_borg_health "EAST-1:28,CENTER-1:15" +#define ui_borg_pull "EAST-2:26,SOUTH+1:7" +#define ui_borg_radio "EAST-1:28,SOUTH+1:7" +#define ui_borg_intents "EAST-2:26,SOUTH:5" +#define ui_borg_lamp "CENTER-3:16, SOUTH:5" +#define ui_borg_tablet "CENTER-4:16, SOUTH:5" +#define ui_inv1 "CENTER-2:16,SOUTH:5" +#define ui_inv2 "CENTER-1 :16,SOUTH:5" +#define ui_inv3 "CENTER :16,SOUTH:5" +#define ui_borg_module "CENTER+1:16,SOUTH:5" +#define ui_borg_store "CENTER+2:16,SOUTH:5" +#define ui_borg_camera "CENTER+3:21,SOUTH:5" +#define ui_borg_alerts "CENTER+4:21,SOUTH:5" +#define ui_borg_language_menu "CENTER+4:19,SOUTH+1:6" + +//Aliens +#define ui_alien_health "EAST,CENTER-1:15" +#define ui_alienplasmadisplay "EAST,CENTER-2:15" +#define ui_alien_queen_finder "EAST,CENTER-3:15" +#define ui_alien_storage_r "CENTER+1:18,SOUTH:5" +#define ui_alien_language_menu "EAST-4:20,SOUTH:5" + +//AI +#define ui_ai_core "SOUTH:6,WEST" +#define ui_ai_camera_list "SOUTH:6,WEST+1" +#define ui_ai_track_with_camera "SOUTH:6,WEST+2" +#define ui_ai_camera_light "SOUTH:6,WEST+3" +#define ui_ai_crew_monitor "SOUTH:6,WEST+4" +#define ui_ai_crew_manifest "SOUTH:6,WEST+5" +#define ui_ai_alerts "SOUTH:6,WEST+6" +#define ui_ai_announcement "SOUTH:6,WEST+7" +#define ui_ai_shuttle "SOUTH:6,WEST+8" +#define ui_ai_state_laws "SOUTH:6,WEST+9" +#define ui_ai_pda_send "SOUTH:6,WEST+10" +#define ui_ai_pda_log "SOUTH:6,WEST+11" +#define ui_ai_take_picture "SOUTH:6,WEST+12" +#define ui_ai_view_images "SOUTH:6,WEST+13" +#define ui_ai_sensor "SOUTH:6,WEST+14" +#define ui_ai_multicam "SOUTH+1:6,WEST+13" +#define ui_ai_add_multicam "SOUTH+1:6,WEST+14" +#define ui_ai_language_menu "SOUTH+1:8,WEST+11:30" + +//pAI +#define ui_pai_software "SOUTH:6,WEST" +#define ui_pai_shell "SOUTH:6,WEST+1" +#define ui_pai_chassis "SOUTH:6,WEST+2" +#define ui_pai_rest "SOUTH:6,WEST+3" +#define ui_pai_light "SOUTH:6,WEST+4" +#define ui_pai_newscaster "SOUTH:6,WEST+5" +#define ui_pai_host_monitor "SOUTH:6,WEST+6" +#define ui_pai_crew_manifest "SOUTH:6,WEST+7" +#define ui_pai_state_laws "SOUTH:6,WEST+8" +#define ui_pai_pda_send "SOUTH:6,WEST+9" +#define ui_pai_pda_log "SOUTH:6,WEST+10" +#define ui_pai_internal_gps "SOUTH:6,WEST+11" +#define ui_pai_take_picture "SOUTH:6,WEST+12" +#define ui_pai_view_images "SOUTH:6,WEST+13" +#define ui_pai_radio "SOUTH:6,WEST+14" +#define ui_pai_language_menu "SOUTH+1:8,WEST+13:31" + +//Ghosts +#define ui_ghost_spawners_menu "SOUTH:6,CENTER-3:24" +#define ui_ghost_orbit "SOUTH:6,CENTER-2:24" +#define ui_ghost_reenter_corpse "SOUTH:6,CENTER-1:24" +#define ui_ghost_teleport "SOUTH:6,CENTER:24" +#define ui_ghost_pai "SOUTH: 6, CENTER+1:24" +#define ui_ghost_minigames "SOUTH: 6, CENTER+2:24" +#define ui_ghost_language_menu "SOUTH: 22, CENTER+3:8" + +//Blobbernauts +#define ui_blobbernaut_overmind_health "EAST-1:28,CENTER+0:19" + +//Families +#define ui_wanted_lvl "NORTH,11" + +// Defines relating to action button positions + +/// Whatever the base action datum thinks is best +#define SCRN_OBJ_DEFAULT "default" +/// Floating somewhere on the hud, not in any predefined place +#define SCRN_OBJ_FLOATING "floating" +/// In the list of buttons stored at the top of the screen +#define SCRN_OBJ_IN_LIST "list" +/// In the collapseable palette +#define SCRN_OBJ_IN_PALETTE "palette" diff --git a/code/__HELPERS/screen_objs.dm b/code/__HELPERS/screen_objs.dm new file mode 100644 index 00000000000..aa86b6d5795 --- /dev/null +++ b/code/__HELPERS/screen_objs.dm @@ -0,0 +1,91 @@ +/// Takes a screen loc string in the format +/// "+-left-offset:+-pixel,+-bottom-offset:+-pixel" +/// Where the :pixel is optional, and returns +/// A list in the format (x_offset, y_offset) +/// We require context to get info out of screen locs that contain relative info, so NORTH, SOUTH, etc +/proc/screen_loc_to_offset(screen_loc, view) + if(!screen_loc) + return list(64, 64) + var/list/view_size = view_to_pixels(view) + var/x = 0 + var/y = 0 + // Time to parse for directional relative offsets + if(findtext(screen_loc, "EAST")) // If you're starting from the east, we start from the east too + x += view_size[1] + if(findtext(screen_loc, "WEST")) // HHHHHHHHHHHHHHHHHHHHHH WEST is technically a 1 tile offset from the start. Shoot me please + x += world.icon_size + if(findtext(screen_loc, "NORTH")) + y += view_size[2] + if(findtext(screen_loc, "SOUTH")) + y += world.icon_size + // Cut out everything we just parsed + screen_loc = cut_relative_direction(screen_loc) + + var/list/x_and_y = splittext(screen_loc, ",") + var/list/x_pack = splittext(x_and_y[1], ":") + var/list/y_pack = splittext(x_and_y[2], ":") + x += text2num(x_pack[1]) * world.icon_size + y += text2num(y_pack[1]) * world.icon_size + + if(length(x_pack) > 1) + x += text2num(x_pack[2]) + if(length(y_pack) > 1) + y += text2num(y_pack[2]) + return list(x, y) + +/// Takes a list in the form (x_offset, y_offset) +/// And converts it to a screen loc string +/// Accepts an optional view string/size to force the screen_loc around, so it can't go out of scope +/proc/offset_to_screen_loc(x_offset, y_offset, view = null) + if(view) + var/list/view_bounds = view_to_pixels(view) + x_offset = clamp(x_offset, world.icon_size, view_bounds[1]) + y_offset = clamp(y_offset, world.icon_size, view_bounds[2]) + + // Round with no argument is floor, so we get the non pixel offset here + var/x = round(x_offset / world.icon_size) + var/pixel_x = x_offset % world.icon_size + var/y = round(y_offset / world.icon_size) + var/pixel_y = y_offset % world.icon_size + + var/list/generated_loc = list() + generated_loc += "[x]" + if(pixel_x) + generated_loc += ":[pixel_x]" + generated_loc += ",[y]" + if(pixel_y) + generated_loc += ":[pixel_y]" + return jointext(generated_loc, "") + +/** + * Returns a valid location to place a screen object without overflowing the viewport + * + * * target: The target location as a purely number based screen_loc string "+-left-offset:+-pixel,+-bottom-offset:+-pixel" + * * target_offset: The amount we want to offset the target location by. We explictly don't care about direction here, we will try all 4 + * * view: The view variable of the client we're doing this for. We use this to get the size of the screen + * + * Returns a screen loc representing the valid location +**/ +/proc/get_valid_screen_location(target_loc, target_offset, view) + var/list/offsets = screen_loc_to_offset(target_loc) + var/base_x = offsets[1] + var/base_y = offsets[2] + + var/list/view_size = view_to_pixels(view) + + // Bias to the right, down, left, and then finally up + if(base_x + target_offset < view_size[1]) + return offset_to_screen_loc(base_x + target_offset, base_y, view) + if(base_y - target_offset > world.icon_size) + return offset_to_screen_loc(base_x, base_y - target_offset, view) + if(base_x - target_offset > world.icon_size) + return offset_to_screen_loc(base_x - target_offset, base_y, view) + if(base_y + target_offset < view_size[2]) + return offset_to_screen_loc(base_x, base_y + target_offset, view) + stack_trace("You passed in a scren location {[target_loc]} and offset {[target_offset]} that can't be fit in the viewport Width {[view_size[1]]}, Height {[view_size[2]]}. what did you do lad") + return null // The fuck did you do lad + +/// Takes a screen_loc string and cut out any directions like NORTH or SOUTH +/proc/cut_relative_direction(fragment) + var/static/regex/regex = regex(@"([A-Z])\w+", "g") + return regex.Replace(fragment, "") diff --git a/code/__HELPERS/view.dm b/code/__HELPERS/view.dm index 4a4587e1550..6a4210bc535 100644 --- a/code/__HELPERS/view.dm +++ b/code/__HELPERS/view.dm @@ -6,6 +6,15 @@ var/list/viewrangelist = splittext(view,"x") return list(text2num(viewrangelist[1]), text2num(viewrangelist[2])) +/// Takes a string or num view, and converts it to pixel width/height in a list(pixel_width, pixel_height) +/proc/view_to_pixels(view) + if(!view) + return list(0, 0) + var/list/view_info = getviewsize(view) + view_info[1] *= world.icon_size + view_info[2] *= world.icon_size + return view_info + /proc/in_view_range(mob/user, atom/A) var/list/view_range = getviewsize(user.client.view) var/turf/source = get_turf(user) diff --git a/code/_onclick/drag_drop.dm b/code/_onclick/drag_drop.dm index d8000fb81c8..d0d280dc194 100644 --- a/code/_onclick/drag_drop.dm +++ b/code/_onclick/drag_drop.dm @@ -92,26 +92,26 @@ if (LAZYACCESS(modifiers, MIDDLE_CLICK)) if (src_object && src_location != over_location) middragtime = world.time - middragatom = src_object + middle_drag_atom_ref = WEAKREF(src_object) else middragtime = 0 - middragatom = null + middle_drag_atom_ref = null mouseParams = params - mouseLocation = over_location - mouseObject = over_object + mouse_location_ref = WEAKREF(over_location) + mouse_object_ref = WEAKREF(over_object) if(selected_target[1] && over_object?.IsAutoclickable()) selected_target[1] = over_object selected_target[2] = params if(active_mousedown_item) active_mousedown_item.onMouseDrag(src_object, over_object, src_location, over_location, params, mob) SEND_SIGNAL(src, COMSIG_CLIENT_MOUSEDRAG, src_object, over_object, src_location, over_location, src_control, over_control, params) - + return ..() /obj/item/proc/onMouseDrag(src_object, over_object, src_location, over_location, params, mob) return -/client/MouseDrop(src_object, over_object, src_location, over_location, src_control, over_control, params) - if (middragatom == src_object) +/client/MouseDrop(atom/src_object, atom/over_object, atom/src_location, atom/over_location, src_control, over_control, params) + if (IS_WEAKREF_OF(src_object, middle_drag_atom_ref)) middragtime = 0 - middragatom = null + middle_drag_atom_ref = null ..() diff --git a/code/_onclick/hud/_defines.dm b/code/_onclick/hud/_defines.dm deleted file mode 100644 index 9f6cf589ed5..00000000000 --- a/code/_onclick/hud/_defines.dm +++ /dev/null @@ -1,180 +0,0 @@ -/* - These defines specificy screen locations. For more information, see the byond documentation on the screen_loc var. - - The short version: - - Everything is encoded as strings because apparently that's how Byond rolls. - - "1,1" is the bottom left square of the user's screen. This aligns perfectly with the turf grid. - "1:2,3:4" is the square (1,3) with pixel offsets (+2, +4); slightly right and slightly above the turf grid. - Pixel offsets are used so you don't perfectly hide the turf under them, that would be crappy. - - In addition, the keywords NORTH, SOUTH, EAST, WEST and CENTER can be used to represent their respective - screen borders. NORTH-1, for example, is the row just below the upper edge. Useful if you want your - UI to scale with screen size. - - The size of the user's screen is defined by client.view (indirectly by world.view), in our case "15x15". - Therefore, the top right corner (except during admin shenanigans) is at "15,15" -*/ - -/proc/ui_hand_position(i) //values based on old hand ui positions (CENTER:-/+16,SOUTH:5) - var/x_off = -(!(i % 2)) - var/y_off = round((i-1) / 2) - return"CENTER+[x_off]:16,SOUTH+[y_off]:5" - -/proc/ui_equip_position(mob/M) - var/y_off = round((M.held_items.len-1) / 2) //values based on old equip ui position (CENTER: +/-16,SOUTH+1:5) - return "CENTER:-16,SOUTH+[y_off+1]:5" - -/proc/ui_swaphand_position(mob/M, which = 1) //values based on old swaphand ui positions (CENTER: +/-16,SOUTH+1:5) - var/x_off = which == 1 ? -1 : 0 - var/y_off = round((M.held_items.len-1) / 2) - return "CENTER+[x_off]:16,SOUTH+[y_off+1]:5" - -//Lower left, persistent menu -#define ui_inventory "WEST:6,SOUTH:5" - -//Middle left indicators -#define ui_lingchemdisplay "WEST,CENTER-1:15" -#define ui_lingstingdisplay "WEST:6,CENTER-3:11" - -//Lower center, persistent menu -#define ui_sstore1 "CENTER-5:10,SOUTH:5" -#define ui_id "CENTER-4:12,SOUTH:5" -#define ui_belt "CENTER-3:14,SOUTH:5" -#define ui_back "CENTER-2:14,SOUTH:5" -#define ui_storage1 "CENTER+1:18,SOUTH:5" -#define ui_storage2 "CENTER+2:20,SOUTH:5" -#define ui_combo "CENTER+4:24,SOUTH+1:7" //combo meter for martial arts - -//Lower right, persistent menu -#define ui_drop_throw "EAST-1:28,SOUTH+1:7" -#define ui_above_movement "EAST-2:26,SOUTH+1:7" -#define ui_above_intent "EAST-3:24, SOUTH+1:7" -#define ui_movi "EAST-2:26,SOUTH:5" -#define ui_acti "EAST-3:24,SOUTH:5" -#define ui_combat_toggle "EAST-3:24,SOUTH:5" -#define ui_zonesel "EAST-1:28,SOUTH:5" -#define ui_acti_alt "EAST-1:28,SOUTH:5" //alternative intent switcher for when the interface is hidden (F12) -#define ui_crafting "EAST-4:22,SOUTH:5" -#define ui_building "EAST-4:22,SOUTH:21" -#define ui_language_menu "EAST-4:6,SOUTH:21" -#define ui_skill_menu "EAST-4:22,SOUTH:5" - -//Upper-middle right (alerts) -#define ui_alert1 "EAST-1:28,CENTER+5:27" -#define ui_alert2 "EAST-1:28,CENTER+4:25" -#define ui_alert3 "EAST-1:28,CENTER+3:23" -#define ui_alert4 "EAST-1:28,CENTER+2:21" -#define ui_alert5 "EAST-1:28,CENTER+1:19" - -//Middle right (status indicators) -#define ui_healthdoll "EAST-1:28,CENTER-2:13" -#define ui_health "EAST-1:28,CENTER-1:15" -#define ui_internal "EAST-1:28,CENTER+1:17" -#define ui_mood "EAST-1:28,CENTER:17" -#define ui_spacesuit "EAST-1:28,CENTER-4:10" -#define ui_stamina "EAST-1:28,CENTER-3:10" - -//Pop-up inventory -#define ui_shoes "WEST+1:8,SOUTH:5" -#define ui_iclothing "WEST:6,SOUTH+1:7" -#define ui_oclothing "WEST+1:8,SOUTH+1:7" -#define ui_gloves "WEST+2:10,SOUTH+1:7" -#define ui_glasses "WEST:6,SOUTH+3:11" -#define ui_mask "WEST+1:8,SOUTH+2:9" -#define ui_ears "WEST+2:10,SOUTH+2:9" -#define ui_neck "WEST:6,SOUTH+2:9" -#define ui_head "WEST+1:8,SOUTH+3:11" - -//Generic living -#define ui_living_pull "EAST-1:28,CENTER-3:15" -#define ui_living_healthdoll "EAST-1:28,CENTER-1:15" - -//Monkeys -#define ui_monkey_head "CENTER-5:13,SOUTH:5" -#define ui_monkey_mask "CENTER-4:14,SOUTH:5" -#define ui_monkey_neck "CENTER-3:15,SOUTH:5" -#define ui_monkey_back "CENTER-2:16,SOUTH:5" - -//Drones -#define ui_drone_drop "CENTER+1:18,SOUTH:5" -#define ui_drone_pull "CENTER+2:2,SOUTH:5" -#define ui_drone_storage "CENTER-2:14,SOUTH:5" -#define ui_drone_head "CENTER-3:14,SOUTH:5" - -//Cyborgs -#define ui_borg_health "EAST-1:28,CENTER-1:15" -#define ui_borg_pull "EAST-2:26,SOUTH+1:7" -#define ui_borg_radio "EAST-1:28,SOUTH+1:7" -#define ui_borg_intents "EAST-2:26,SOUTH:5" -#define ui_borg_lamp "CENTER-3:16, SOUTH:5" -#define ui_borg_tablet "CENTER-4:16, SOUTH:5" -#define ui_inv1 "CENTER-2:16,SOUTH:5" -#define ui_inv2 "CENTER-1 :16,SOUTH:5" -#define ui_inv3 "CENTER :16,SOUTH:5" -#define ui_borg_module "CENTER+1:16,SOUTH:5" -#define ui_borg_store "CENTER+2:16,SOUTH:5" -#define ui_borg_camera "CENTER+3:21,SOUTH:5" -#define ui_borg_alerts "CENTER+4:21,SOUTH:5" -#define ui_borg_language_menu "CENTER+4:19,SOUTH+1:6" - -//Aliens -#define ui_alien_health "EAST,CENTER-1:15" -#define ui_alienplasmadisplay "EAST,CENTER-2:15" -#define ui_alien_queen_finder "EAST,CENTER-3:15" -#define ui_alien_storage_r "CENTER+1:18,SOUTH:5" -#define ui_alien_language_menu "EAST-4:20,SOUTH:5" - -//AI -#define ui_ai_core "SOUTH:6,WEST" -#define ui_ai_camera_list "SOUTH:6,WEST+1" -#define ui_ai_track_with_camera "SOUTH:6,WEST+2" -#define ui_ai_camera_light "SOUTH:6,WEST+3" -#define ui_ai_crew_monitor "SOUTH:6,WEST+4" -#define ui_ai_crew_manifest "SOUTH:6,WEST+5" -#define ui_ai_alerts "SOUTH:6,WEST+6" -#define ui_ai_announcement "SOUTH:6,WEST+7" -#define ui_ai_shuttle "SOUTH:6,WEST+8" -#define ui_ai_state_laws "SOUTH:6,WEST+9" -#define ui_ai_pda_send "SOUTH:6,WEST+10" -#define ui_ai_pda_log "SOUTH:6,WEST+11" -#define ui_ai_take_picture "SOUTH:6,WEST+12" -#define ui_ai_view_images "SOUTH:6,WEST+13" -#define ui_ai_sensor "SOUTH:6,WEST+14" -#define ui_ai_multicam "SOUTH+1:6,WEST+13" -#define ui_ai_add_multicam "SOUTH+1:6,WEST+14" -#define ui_ai_language_menu "SOUTH+1:8,WEST+11:30" - -//pAI -#define ui_pai_software "SOUTH:6,WEST" -#define ui_pai_shell "SOUTH:6,WEST+1" -#define ui_pai_chassis "SOUTH:6,WEST+2" -#define ui_pai_rest "SOUTH:6,WEST+3" -#define ui_pai_light "SOUTH:6,WEST+4" -#define ui_pai_newscaster "SOUTH:6,WEST+5" -#define ui_pai_host_monitor "SOUTH:6,WEST+6" -#define ui_pai_crew_manifest "SOUTH:6,WEST+7" -#define ui_pai_state_laws "SOUTH:6,WEST+8" -#define ui_pai_pda_send "SOUTH:6,WEST+9" -#define ui_pai_pda_log "SOUTH:6,WEST+10" -#define ui_pai_internal_gps "SOUTH:6,WEST+11" -#define ui_pai_take_picture "SOUTH:6,WEST+12" -#define ui_pai_view_images "SOUTH:6,WEST+13" -#define ui_pai_radio "SOUTH:6,WEST+14" -#define ui_pai_language_menu "SOUTH+1:8,WEST+13:31" - -//Ghosts -#define ui_ghost_spawners_menu "SOUTH:6,CENTER-3:24" -#define ui_ghost_orbit "SOUTH:6,CENTER-2:24" -#define ui_ghost_reenter_corpse "SOUTH:6,CENTER-1:24" -#define ui_ghost_teleport "SOUTH:6,CENTER:24" -#define ui_ghost_pai "SOUTH: 6, CENTER+1:24" -#define ui_ghost_minigames "SOUTH: 6, CENTER+2:24" -#define ui_ghost_language_menu "SOUTH: 22, CENTER+3:8" - -//Blobbernauts -#define ui_blobbernaut_overmind_health "EAST-1:28,CENTER+0:19" - -//Families -#define ui_wanted_lvl "NORTH,11" diff --git a/code/_onclick/hud/action_button.dm b/code/_onclick/hud/action_button.dm index ffd1a480b12..29b10891574 100644 --- a/code/_onclick/hud/action_button.dm +++ b/code/_onclick/hud/action_button.dm @@ -2,22 +2,36 @@ /atom/movable/screen/movable/action_button var/datum/action/linked_action + var/datum/hud/our_hud var/actiontooltipstyle = "" screen_loc = null var/button_icon_state var/appearance_cache + /// Where we are currently placed on the hud. SCRN_OBJ_DEFAULT asks the linked action what it thinks + var/location = SCRN_OBJ_DEFAULT + /// A unique bitflag, combined with the name of our linked action this lets us persistently remember any user changes to our position var/id - var/ordered = TRUE //If the button gets placed into the default bar + /// A weakref of the last thing we hovered over + /// God I hate how dragging works + var/datum/weakref/last_hovored_ref + +/atom/movable/screen/movable/action_button/Destroy() + if(our_hud) + var/mob/viewer = our_hud.mymob + our_hud.hide_action(src) + viewer?.client?.screen -= src + linked_action.viewers -= our_hud + viewer.update_action_buttons() + our_hud = null + linked_action = null + return ..() /atom/movable/screen/movable/action_button/proc/can_use(mob/user) if(linked_action) - if(linked_action.owner == user) + if(linked_action.viewers[user.hud_used]) return TRUE - for(var/datum/weakref/reference as anything in linked_action.sharers) - if(IS_WEAKREF_OF(user, reference)) - return TRUE return FALSE else if (isobserver(user)) var/mob/dead/observer/O = user @@ -25,41 +39,14 @@ else return TRUE -/atom/movable/screen/movable/action_button/MouseDrop(over_object) - if(!can_use(usr)) - return - if((istype(over_object, /atom/movable/screen/movable/action_button) && !istype(over_object, /atom/movable/screen/movable/action_button/hide_toggle))) - if(locked) - to_chat(usr, span_warning("Action button \"[name]\" is locked, unlock it first.")) - return - var/atom/movable/screen/movable/action_button/B = over_object - var/list/actions = usr.actions - actions.Swap(actions.Find(src.linked_action), actions.Find(B.linked_action)) - moved = FALSE - ordered = TRUE - B.moved = FALSE - B.ordered = TRUE - usr.update_action_buttons() - else - return ..() - /atom/movable/screen/movable/action_button/Click(location,control,params) if (!can_use(usr)) return FALSE var/list/modifiers = params2list(params) if(LAZYACCESS(modifiers, SHIFT_CLICK)) - if(locked) - to_chat(usr, span_warning("Action button \"[name]\" is locked, unlock it first.")) - return TRUE - moved = 0 - usr.update_action_buttons() //redraw buttons that are no longer considered "moved" - return TRUE - if(LAZYACCESS(modifiers, CTRL_CLICK)) - locked = !locked - to_chat(usr, span_notice("Action button \"[name]\" [locked ? "" : "un"]locked.")) - if(id && usr.client) //try to (un)remember position - usr.client.prefs.action_buttons_screen_locs["[name]_[id]"] = locked ? moved : null + var/datum/hud/our_hud = usr.hud_used + our_hud.position_action(src, SCRN_OBJ_DEFAULT) return TRUE if(usr.next_click > world.time) return @@ -70,127 +57,105 @@ linked_action.Trigger(trigger_flags = trigger_flags) return TRUE -//Hide/Show Action Buttons ... Button -/atom/movable/screen/movable/action_button/hide_toggle - name = "Hide Buttons" - desc = "Shift-click any button to reset its position, and Control-click it to lock it in place. Alt-click this button to reset all buttons to their default positions." - icon = 'icons/hud/actions.dmi' - icon_state = "bg_default" - var/hidden = FALSE - var/hide_icon = 'icons/hud/actions.dmi' - var/hide_state = "hide" - var/show_state = "show" - var/mutable_appearance/hide_appearance - var/mutable_appearance/show_appearance - -/atom/movable/screen/movable/action_button/hide_toggle/Initialize(mapload) +// Entered and Exited won't fire while you're dragging something, because you're still "holding" it +// Very much byond logic, but I want nice behavior, so we fake it with drag +/atom/movable/screen/movable/action_button/MouseDrag(atom/over_object, src_location, over_location, src_control, over_control, params) . = ..() - var/static/list/icon_cache = list() - - var/cache_key = "[hide_icon][hide_state]" - hide_appearance = icon_cache[cache_key] - if(!hide_appearance) - hide_appearance = icon_cache[cache_key] = mutable_appearance(hide_icon, hide_state) - - cache_key = "[hide_icon][show_state]" - show_appearance = icon_cache[cache_key] - if(!show_appearance) - show_appearance = icon_cache[cache_key] = mutable_appearance(hide_icon, show_state) - - -/atom/movable/screen/movable/action_button/hide_toggle/Click(location,control,params) - if (!can_use(usr)) + if(!can_use(usr)) return + if(IS_WEAKREF_OF(over_object, last_hovored_ref)) + return + var/atom/old_object + if(last_hovored_ref) + old_object = last_hovored_ref?.resolve() + else // If there's no current ref, we assume it was us. We also treat this as our "first go" location + old_object = src + var/datum/hud/our_hud = usr.hud_used + our_hud?.generate_landings(src) - var/list/modifiers = params2list(params) - if(LAZYACCESS(modifiers, SHIFT_CLICK)) - if(locked) - to_chat(usr, span_warning("Action button \"[name]\" is locked, unlock it first.")) - return TRUE - moved = FALSE - usr.update_action_buttons(TRUE) - return TRUE - if(LAZYACCESS(modifiers, CTRL_CLICK)) - locked = !locked - to_chat(usr, span_notice("Action button \"[name]\" [locked ? "" : "un"]locked.")) - if(id && usr.client) //try to (un)remember position - usr.client.prefs.action_buttons_screen_locs["[name]_[id]"] = locked ? moved : null - return TRUE - if(LAZYACCESS(modifiers, ALT_CLICK)) - var/buttons_locked = usr.client.prefs.read_preference(/datum/preference/toggle/buttons_locked) - for(var/V in usr.actions) - var/datum/action/A = V - var/atom/movable/screen/movable/action_button/B = A.button - B.moved = FALSE - if(B.id && usr.client) - usr.client.prefs.action_buttons_screen_locs["[B.name]_[B.id]"] = null - B.locked = buttons_locked - locked = buttons_locked - moved = FALSE - if(id && usr.client) - usr.client.prefs.action_buttons_screen_locs["[name]_[id]"] = null - usr.update_action_buttons(TRUE) - to_chat(usr, span_notice("Action button positions have been reset.")) - return TRUE - usr.hud_used.action_buttons_hidden = !usr.hud_used.action_buttons_hidden + if(old_object) + old_object.MouseExited(over_location, over_control, params) - hidden = usr.hud_used.action_buttons_hidden - if(hidden) - name = "Show Buttons" - else - name = "Hide Buttons" - update_appearance() - usr.update_action_buttons() + last_hovored_ref = WEAKREF(over_object) + over_object.MouseEntered(over_location, over_control, params) -/atom/movable/screen/movable/action_button/hide_toggle/AltClick(mob/user) - for(var/V in user.actions) - var/datum/action/A = V - var/atom/movable/screen/movable/action_button/B = A.button - B.moved = FALSE - if(moved) - moved = FALSE - user.update_action_buttons(TRUE) - to_chat(user, span_notice("Action button positions have been reset.")) - - -/atom/movable/screen/movable/action_button/hide_toggle/proc/InitialiseIcon(datum/hud/owner_hud) - var/settings = owner_hud.get_action_buttons_icons() - icon = settings["bg_icon"] - icon_state = settings["bg_state"] - hide_icon = settings["toggle_icon"] - hide_state = settings["toggle_hide"] - show_state = settings["toggle_show"] - update_appearance() - -/atom/movable/screen/movable/action_button/hide_toggle/update_overlays() - . = ..() - . += hidden ? show_appearance : hide_appearance - -/atom/movable/screen/movable/action_button/MouseEntered(location,control,params) +/atom/movable/screen/movable/action_button/MouseEntered(location, control, params) . = ..() if(!QDELETED(src)) - openToolTip(usr,src,params,title = name,content = desc,theme = actiontooltipstyle) + openToolTip(usr, src, params, title = name, content = desc, theme = actiontooltipstyle) - -/atom/movable/screen/movable/action_button/MouseExited() +/atom/movable/screen/movable/action_button/MouseExited(location, control, params) closeToolTip(usr) + return ..() + +/atom/movable/screen/movable/action_button/MouseDrop(over_object) + last_hovored_ref = null + if(!can_use(usr)) + return + var/datum/hud/our_hud = usr.hud_used + if(over_object == src) + our_hud.hide_landings() + return + if(istype(over_object, /atom/movable/screen/action_landing)) + var/atom/movable/screen/action_landing/reserve = over_object + reserve.hit_by(src) + our_hud.hide_landings() + save_position() + return + + our_hud.hide_landings() + if(istype(over_object, /atom/movable/screen/button_palette) || istype(over_object, /atom/movable/screen/palette_scroll)) + our_hud.position_action(src, SCRN_OBJ_IN_PALETTE) + save_position() + return + if(istype(over_object, /atom/movable/screen/movable/action_button)) + var/atom/movable/screen/movable/action_button/button = over_object + our_hud.position_action_relative(src, button) + save_position() + return + . = ..() + our_hud.position_action(src, screen_loc) + save_position() + +/atom/movable/screen/movable/action_button/proc/save_position() + var/mob/user = our_hud.mymob + if(!user?.client) + return + var/position_info = "" + switch(location) + if(SCRN_OBJ_FLOATING) + position_info = screen_loc + if(SCRN_OBJ_IN_LIST) + position_info = SCRN_OBJ_IN_LIST + if(SCRN_OBJ_IN_PALETTE) + position_info = SCRN_OBJ_IN_PALETTE + + user.client.prefs.action_buttons_screen_locs["[name]_[id]"] = position_info + +/atom/movable/screen/movable/action_button/proc/load_position() + var/mob/user = our_hud.mymob + if(!user) + return + var/position_info = user.client?.prefs?.action_buttons_screen_locs["[name]_[id]"] || SCRN_OBJ_DEFAULT + user.hud_used.position_action(src, position_info) + +/atom/movable/screen/movable/action_button/proc/dump_save() + var/mob/user = our_hud.mymob + if(!user?.client) + return + user.client.prefs.action_buttons_screen_locs -= "[name]_[id]" /datum/hud/proc/get_action_buttons_icons() . = list() .["bg_icon"] = ui_style .["bg_state"] = "template" - //TODO : Make these fit theme - .["toggle_icon"] = 'icons/hud/actions.dmi' - .["toggle_hide"] = "hide" - .["toggle_show"] = "show" - //see human and alien hud for specific implementations. /mob/proc/update_action_buttons_icon(status_only = FALSE) for(var/X in actions) var/datum/action/A = X - A.UpdateButtonIcon(status_only) + A.UpdateButtons(status_only) //This is the proc used to update all the action buttons. /mob/proc/update_action_buttons(reload_screen) @@ -200,58 +165,243 @@ if(hud_used.hud_shown != HUD_STYLE_STANDARD) return - var/button_number = 0 + for(var/datum/action/action as anything in actions) + var/atom/movable/screen/movable/action_button/button = action.viewers[hud_used] + action.UpdateButtons() + if(reload_screen) + client.screen += button - if(hud_used.action_buttons_hidden) - for(var/datum/action/A in actions) - A.button.screen_loc = null - if(reload_screen) - client.screen += A.button - else - for(var/datum/action/A in actions) - A.UpdateButtonIcon() - var/atom/movable/screen/movable/action_button/B = A.button - if(B.ordered) - button_number++ - if(B.moved) - B.screen_loc = B.moved - else - B.screen_loc = hud_used.ButtonNumberToScreenCoords(button_number) - if(reload_screen) - client.screen += B - - if(!button_number) - hud_used.hide_actions_toggle.screen_loc = null - return - - if(!hud_used.hide_actions_toggle.moved) - hud_used.hide_actions_toggle.screen_loc = hud_used.ButtonNumberToScreenCoords(button_number+1) - else - hud_used.hide_actions_toggle.screen_loc = hud_used.hide_actions_toggle.moved if(reload_screen) - client.screen += hud_used.hide_actions_toggle + hud_used.update_our_owner() + // This holds the logic for the palette buttons + hud_used.palette_actions.refresh_actions() +/atom/movable/screen/button_palette + desc = "Drag buttons to move them
Shift-click any button to reset it
Alt-click this to reset all buttons" + icon = 'icons/hud/64x16_actions.dmi' + icon_state = "screen_gen_palette" + screen_loc = ui_action_palette + var/datum/hud/our_hud + var/expanded = FALSE + /// Id of any currently running timers that set our color matrix + var/color_timer_id +/atom/movable/screen/button_palette/Destroy() + if(our_hud) + our_hud.mymob?.client?.screen -= src + our_hud.toggle_palette = null + our_hud = null + return ..() -#define AB_MAX_COLUMNS 10 +/atom/movable/screen/button_palette/Initialize(mapload) + . = ..() + update_appearance() -/datum/hud/proc/ButtonNumberToScreenCoords(number) // TODO : Make this zero-indexed for readabilty - var/row = round((number - 1)/AB_MAX_COLUMNS) - var/col = ((number - 1)%(AB_MAX_COLUMNS)) + 1 +/atom/movable/screen/button_palette/proc/set_hud(datum/hud/our_hud) + src.our_hud = our_hud + refresh_owner() - var/coord_col = "+[col-1]" - var/coord_col_offset = 4 + 2 * col +/atom/movable/screen/button_palette/update_name(updates) + . = ..() + if(expanded) + name = "Hide Buttons" + else + name = "Show Buttons" - var/coord_row = "[row ? -row : "+0"]" +/atom/movable/screen/button_palette/proc/refresh_owner() + var/mob/viewer = our_hud.mymob + if(viewer.client) + viewer.client.screen |= src - return "WEST[coord_col]:[coord_col_offset],NORTH[coord_row]:-6" + var/list/settings = our_hud.get_action_buttons_icons() + var/ui_icon = "[settings["bg_icon"]]" + var/list/ui_segments = splittext(ui_icon, ".") + var/list/ui_paths = splittext(ui_segments[1], "/") + var/ui_name = ui_paths[length(ui_paths)] -/datum/hud/proc/SetButtonCoords(atom/movable/screen/button,number) - var/row = round((number-1)/AB_MAX_COLUMNS) - var/col = ((number - 1)%(AB_MAX_COLUMNS)) + 1 - var/x_offset = 32*(col-1) + 4 + 2*col - var/y_offset = -32*(row+1) + 26 + icon_state = "[ui_name]_palette" - var/matrix/M = matrix() - M.Translate(x_offset,y_offset) - button.transform = M +/atom/movable/screen/button_palette/MouseEntered(location, control, params) + . = ..() + if(QDELETED(src)) + return + show_tooltip(params) + +/atom/movable/screen/button_palette/MouseExited() + closeToolTip(usr) + return ..() + +/atom/movable/screen/button_palette/proc/show_tooltip(params) + openToolTip(usr, src, params, title = name, content = desc) + +GLOBAL_LIST_INIT(palette_added_matrix, list(0.4,0.5,0.2,0, 0,1.4,0,0, 0,0.4,0.6,0, 0,0,0,1, 0,0,0,0)) +GLOBAL_LIST_INIT(palette_removed_matrix, list(1.4,0,0,0, 0.7,0.4,0,0, 0.4,0,0.6,0, 0,0,0,1, 0,0,0,0)) + +/atom/movable/screen/button_palette/proc/play_item_added() + color_for_now(GLOB.palette_added_matrix) + +/atom/movable/screen/button_palette/proc/play_item_removed() + color_for_now(GLOB.palette_removed_matrix) + +/atom/movable/screen/button_palette/proc/color_for_now(list/color) + if(color_timer_id) + return + add_atom_colour(color, TEMPORARY_COLOUR_PRIORITY) //We unfortunately cannot animate matrix colors. Curse you lummy it would be ~~non~~trivial to interpolate between the two valuessssssssss + color_timer_id = addtimer(CALLBACK(src, .proc/remove_color, color), 2 SECONDS) + +/atom/movable/screen/button_palette/proc/remove_color(list/to_remove) + color_timer_id = null + remove_atom_colour(TEMPORARY_COLOUR_PRIORITY, to_remove) + +/atom/movable/screen/button_palette/proc/can_use(mob/user) + if (isobserver(user)) + var/mob/dead/observer/O = user + return !O.observetarget + return TRUE + +/atom/movable/screen/button_palette/Click(location, control, params) + if(!can_use(usr)) + return + + var/list/modifiers = params2list(params) + + if(LAZYACCESS(modifiers, ALT_CLICK)) + for(var/datum/action/action as anything in usr.actions) // Reset action positions to default + for(var/datum/hud/hud as anything in action.viewers) + var/atom/movable/screen/movable/action_button/button = action.viewers[hud] + hud.position_action(button, SCRN_OBJ_DEFAULT) + to_chat(usr, span_notice("Action button positions have been reset.")) + return TRUE + + set_expanded(!expanded) + +/atom/movable/screen/button_palette/proc/clicked_while_open(datum/source, atom/target, atom/location, control, params, mob/user) + if(istype(target, /atom/movable/screen/movable/action_button) || istype(target, /atom/movable/screen/palette_scroll) || target == src) // If you're clicking on an action button, or us, you can live + return + set_expanded(FALSE) + if(source) + UnregisterSignal(source, COMSIG_CLIENT_CLICK) + +/atom/movable/screen/button_palette/proc/set_expanded(new_expanded) + var/datum/action_group/our_group = our_hud.palette_actions + if(!length(our_group.actions)) //Looks dumb, trust me lad + new_expanded = FALSE + if(expanded == new_expanded) + return + + expanded = new_expanded + our_group.refresh_actions() + update_appearance() + + if(!usr.client) + return + + if(expanded) + RegisterSignal(usr.client, COMSIG_CLIENT_CLICK, .proc/clicked_while_open) + else + UnregisterSignal(usr.client, COMSIG_CLIENT_CLICK) + + closeToolTip(usr) //Our tooltips are now invalid, can't seem to update them in one frame, so here, just close them + +/atom/movable/screen/palette_scroll + icon = 'icons/hud/screen_gen.dmi' + screen_loc = ui_palette_scroll + /// How should we move the palette's actions? + /// Positive scrolls down the list, negative scrolls back + var/scroll_direction = 0 + var/datum/hud/our_hud + +/atom/movable/screen/palette_scroll/proc/can_use(mob/user) + if (isobserver(user)) + var/mob/dead/observer/O = user + return !O.observetarget + return TRUE + +/atom/movable/screen/palette_scroll/proc/set_hud(datum/hud/our_hud) + src.our_hud = our_hud + refresh_owner() + +/atom/movable/screen/palette_scroll/proc/refresh_owner() + var/mob/viewer = our_hud.mymob + if(viewer.client) + viewer.client.screen |= src + + var/list/settings = our_hud.get_action_buttons_icons() + icon = settings["bg_icon"] + +/atom/movable/screen/palette_scroll/Click(location, control, params) + if(!can_use(usr)) + return + our_hud.palette_actions.scroll(scroll_direction) + +/atom/movable/screen/palette_scroll/MouseEntered(location, control, params) + . = ..() + if(QDELETED(src)) + return + openToolTip(usr, src, params, title = name, content = desc) + +/atom/movable/screen/palette_scroll/MouseExited() + closeToolTip(usr) + return ..() + +/atom/movable/screen/palette_scroll/down + name = "Scroll Down" + desc = "Click on this to scroll the actions above down" + icon_state = "scroll_down" + scroll_direction = 1 + +/atom/movable/screen/palette_scroll/down/Destroy() + if(our_hud) + our_hud.mymob?.client?.screen -= src + our_hud.palette_down = null + our_hud = null + return ..() + +/atom/movable/screen/palette_scroll/up + name = "Scroll Up" + desc = "Click on this to scroll the actions above up" + icon_state = "scroll_up" + scroll_direction = -1 + +/atom/movable/screen/palette_scroll/up/Destroy() + if(our_hud) + our_hud.mymob?.client?.screen -= src + our_hud.palette_up = null + our_hud = null + return ..() + +/// Exists so you have a place to put your buttons when you move them around +/atom/movable/screen/action_landing + name = "Button Space" + desc = "Drag and drop a button into this spot
to add it to the group" + icon = 'icons/hud/screen_gen.dmi' + icon_state = "reserved" + // We want our whole 32x32 space to be clickable, so dropping's forgiving + mouse_opacity = MOUSE_OPACITY_OPAQUE + var/datum/action_group/owner + +/atom/movable/screen/action_landing/Destroy() + if(owner) + owner.landing = null + owner?.owner?.mymob?.client?.screen -= src + owner.refresh_actions() + owner = null + return ..() + +/atom/movable/screen/action_landing/proc/set_owner(datum/action_group/owner) + src.owner = owner + refresh_owner() + +/atom/movable/screen/action_landing/proc/refresh_owner() + var/datum/hud/our_hud = owner.owner + var/mob/viewer = our_hud.mymob + if(viewer.client) + viewer.client.screen |= src + + var/list/settings = our_hud.get_action_buttons_icons() + icon = settings["bg_icon"] + +/// Reacts to having a button dropped on it +/atom/movable/screen/action_landing/proc/hit_by(atom/movable/screen/movable/action_button/button) + var/datum/hud/our_hud = owner.owner + our_hud.position_action(button, owner.location) diff --git a/code/_onclick/hud/hud.dm b/code/_onclick/hud/hud.dm index a3422dcf8f9..a8d7a136199 100644 --- a/code/_onclick/hud/hud.dm +++ b/code/_onclick/hud/hud.dm @@ -70,8 +70,13 @@ GLOBAL_LIST_INIT(available_ui_styles, list( /// game (MouseEntered). var/screentip_color - var/atom/movable/screen/movable/action_button/hide_toggle/hide_actions_toggle - var/action_buttons_hidden = FALSE + var/atom/movable/screen/button_palette/toggle_palette + var/atom/movable/screen/palette_scroll/down/palette_down + var/atom/movable/screen/palette_scroll/up/palette_up + + var/datum/action_group/palette/palette_actions + var/datum/action_group/listed/listed_actions + var/list/floating_actions var/atom/movable/screen/healths var/atom/movable/screen/stamina @@ -89,10 +94,12 @@ GLOBAL_LIST_INIT(available_ui_styles, list( // will fall back to the default if any of these are null ui_style = ui_style2icon(owner.client?.prefs?.read_preference(/datum/preference/choiced/ui_style)) - hide_actions_toggle = new - hide_actions_toggle.InitialiseIcon(src) - if(mymob.client?.prefs) - hide_actions_toggle.locked = mymob.client.prefs.read_preference(/datum/preference/toggle/buttons_locked) + toggle_palette = new() + toggle_palette.set_hud(src) + palette_down = new() + palette_down.set_hud(src) + palette_up = new() + palette_up.set_hud(src) hand_slots = list() @@ -117,7 +124,13 @@ GLOBAL_LIST_INIT(available_ui_styles, list( if(mymob.hud_used == src) mymob.hud_used = null - QDEL_NULL(hide_actions_toggle) + QDEL_NULL(toggle_palette) + QDEL_NULL(palette_down) + QDEL_NULL(palette_up) + QDEL_NULL(palette_actions) + QDEL_NULL(listed_actions) + QDEL_LIST(floating_actions) + QDEL_NULL(module_store_icon) QDEL_LIST(static_inventory) @@ -156,10 +169,14 @@ GLOBAL_LIST_INIT(available_ui_styles, list( /mob/proc/create_mob_hud() if(!client || hud_used) return - hud_used = new hud_type(src) + set_hud_used(new hud_type(src)) update_sight() SEND_SIGNAL(src, COMSIG_MOB_HUD_CREATED) +/mob/proc/set_hud_used(datum/hud/new_hud) + hud_used = new_hud + new_hud.build_action_groups() + //Version denotes which style should be displayed. blank or 0 means "next version" /datum/hud/proc/show_hud(version = 0, mob/viewmob) if(!ismob(mymob)) @@ -168,6 +185,8 @@ GLOBAL_LIST_INIT(available_ui_styles, list( if(!screenmob.client) return FALSE + // This code is the absolute fucking worst, I want it to go die in a fire + // Seriously, why screenmob.client.screen = list() screenmob.client.apply_clickcatcher() @@ -189,7 +208,7 @@ GLOBAL_LIST_INIT(available_ui_styles, list( if(infodisplay.len) screenmob.client.screen += infodisplay - screenmob.client.screen += hide_actions_toggle + screenmob.client.screen += toggle_palette if(action_intent) action_intent.screen_loc = initial(action_intent.screen_loc) //Restore intent selection to the original position @@ -280,7 +299,6 @@ GLOBAL_LIST_INIT(available_ui_styles, list( ui_style = new_ui_style build_hand_slots() - hide_actions_toggle.InitialiseIcon(src) //Triggered when F12 is pressed (Unless someone changed something in the DMF) /mob/verb/button_pressed_F12() @@ -328,3 +346,306 @@ GLOBAL_LIST_INIT(available_ui_styles, list( /datum/hud/proc/update_locked_slots() return + +/datum/hud/proc/position_action(atom/movable/screen/movable/action_button/button, position) + if(button.location != SCRN_OBJ_DEFAULT) + hide_action(button) + switch(position) + if(SCRN_OBJ_DEFAULT) // Reset to the default + button.dump_save() // Nuke any existing saves + position_action(button, button.linked_action.default_button_position) + return + if(SCRN_OBJ_IN_LIST) + listed_actions.insert_action(button) + if(SCRN_OBJ_IN_PALETTE) + palette_actions.insert_action(button) + else // If we don't have it as a define, this is a screen_loc, and we should be floating + floating_actions += button + button.screen_loc = position + position = SCRN_OBJ_FLOATING + + button.location = position + +/datum/hud/proc/position_action_relative(atom/movable/screen/movable/action_button/button, atom/movable/screen/movable/action_button/relative_to) + if(button.location != SCRN_OBJ_DEFAULT) + hide_action(button) + switch(relative_to.location) + if(SCRN_OBJ_IN_LIST) + listed_actions.insert_action(button, listed_actions.index_of(relative_to)) + if(SCRN_OBJ_IN_PALETTE) + palette_actions.insert_action(button, palette_actions.index_of(relative_to)) + if(SCRN_OBJ_FLOATING) // If we don't have it as a define, this is a screen_loc, and we should be floating + floating_actions += button + var/client/our_client = mymob.client + if(!our_client) + position_action(button, button.linked_action.default_button_position) + return + button.screen_loc = get_valid_screen_location(relative_to.screen_loc, world.icon_size, our_client.view_size.getView()) // Asks for a location adjacent to our button that won't overflow the map + + button.location = relative_to.location + +/// Removes the passed in action from its current position on the screen +/datum/hud/proc/hide_action(atom/movable/screen/movable/action_button/button) + switch(button.location) + if(SCRN_OBJ_DEFAULT) // Invalid + CRASH("We just tried to hide an action buttion that somehow has the default position as its location, you done fucked up") + if(SCRN_OBJ_FLOATING) + floating_actions -= button + if(SCRN_OBJ_IN_LIST) + listed_actions.remove_action(button) + if(SCRN_OBJ_IN_PALETTE) + palette_actions.remove_action(button) + button.screen_loc = null + +/// Generates visual landings for all groups that the button is not a memeber of +/datum/hud/proc/generate_landings(atom/movable/screen/movable/action_button/button) + listed_actions.generate_landing() + palette_actions.generate_landing() + +/// Clears all currently visible landings +/datum/hud/proc/hide_landings() + listed_actions.clear_landing() + palette_actions.clear_landing() + +// Updates any existing "owned" visuals, ensures they continue to be visible +/datum/hud/proc/update_our_owner() + toggle_palette.refresh_owner() + palette_down.refresh_owner() + palette_up.refresh_owner() + listed_actions.update_landing() + palette_actions.update_landing() + +/// Ensures all of our buttons are properly within the bounds of our client's view, moves them if they're not +/datum/hud/proc/view_audit_buttons() + var/our_view = mymob?.client?.view + if(!our_view) + return + listed_actions.check_against_view() + palette_actions.check_against_view() + for(var/atom/movable/screen/movable/action_button/floating_button as anything in floating_actions) + var/list/current_offsets = screen_loc_to_offset(floating_button.screen_loc) + // We set the view arg here, so the output will be properly hemm'd in by our new view + floating_button.screen_loc = offset_to_screen_loc(current_offsets[1], current_offsets[2], view = our_view) + +/// Generates and fills new action groups with our mob's current actions +/datum/hud/proc/build_action_groups() + listed_actions = new(src) + palette_actions = new(src) + floating_actions = list() + for(var/datum/action/action as anything in mymob.actions) + var/atom/movable/screen/movable/action_button/button = action.viewers[src] + if(!button) + action.ShowTo(mymob) + button = action.viewers[src] + position_action(button, button.location) + +/datum/action_group + /// The hud we're owned by + var/datum/hud/owner + /// The actions we're managing + var/list/atom/movable/screen/movable/action_button/actions + /// The initial vertical offset of our action buttons + var/north_offset = 0 + /// The pixel vertical offset of our action buttons + var/pixel_north_offset = 0 + /// Max amount of buttons we can have per row + /// Indexes at 1 + var/column_max = 0 + /// How far "ahead" of the first row we start. Lets us "scroll" our rows + /// Indexes at 1 + var/row_offset = 0 + /// How many rows of actions we can have at max before we just stop hiding + /// Indexes at 1 + var/max_rows = INFINITY + /// The screen location we go by + var/location + /// Our landing screen object + var/atom/movable/screen/action_landing/landing + +/datum/action_group/New(datum/hud/owner) + ..() + actions = list() + src.owner = owner + +/datum/action_group/Destroy() + owner = null + QDEL_NULL(landing) + QDEL_LIST(actions) + return ..() + +/datum/action_group/proc/insert_action(atom/movable/screen/action, index) + if(action in actions) + if(actions[index] == action) + return + actions -= action // Don't dupe, come on + if(!index) + index = length(actions) + 1 + index = min(length(actions) + 1, index) + actions.Insert(index, action) + refresh_actions() + +/datum/action_group/proc/remove_action(atom/movable/screen/action) + actions -= action + refresh_actions() + +/datum/action_group/proc/refresh_actions() + + // We don't use size() here because landings are not canon + var/total_rows = ROUND_UP(length(actions) / column_max) + total_rows -= max_rows // Lets get the amount of rows we're off from our max + row_offset = clamp(row_offset, 0, total_rows) // You're not allowed to offset so far that we have a row of blank space + + var/button_number = 0 + for(var/atom/movable/screen/button as anything in actions) + var/postion = ButtonNumberToScreenCoords(button_number ) + button.screen_loc = postion + button_number++ + + if(landing) + var/postion = ButtonNumberToScreenCoords(button_number, landing = TRUE) // Need a good way to count buttons off screen, but allow this to display in the right place if it's being placed with no concern for dropdown + landing.screen_loc = postion + button_number++ + +/// Accepts a number represeting our position in the group, indexes at 0 to make the math nicer +/datum/action_group/proc/ButtonNumberToScreenCoords(number, landing = FALSE) + var/row = round(number / column_max) + row -= row_offset // If you're less then 0, you don't get to render, this lets us "scroll" rows ya feel? + if(row < 0) + return null + + // Could use >= here, but I think it's worth noting that the two start at different places, since row is based on number here + if(row > max_rows - 1) + if(!landing) // If you're not a landing, go away please. thx + return null + // We always want to render landings, even if their action button can't be displayed. + // So we set a row equal to the max amount of rows + 1. Willing to overrun that max slightly to properly display the landing spot + row = max_rows // Remembering that max_rows indexes at 1, and row indexes at 0 + + // We're going to need to set our column to match the first item in the last row, so let's set number properly now + number = row * column_max + + var/visual_row = row + north_offset + var/coord_row = visual_row ? "-[visual_row]" : "+0" + + var/visual_column = number % column_max + var/coord_col = "+[visual_column]" + var/coord_col_offset = 4 + 2 * (visual_column + 1) + return "WEST[coord_col]:[coord_col_offset],NORTH[coord_row]:-[pixel_north_offset]" + +/datum/action_group/proc/check_against_view() + var/owner_view = owner?.mymob?.client?.view + if(!owner_view) + return + // Unlikey as it is, we may have been changed. Want to start from our target position and fail down + column_max = initial(column_max) + // Convert our viewer's view var into a workable offset + var/list/view_size = view_to_pixels(owner_view) + + // We're primarially concerned about width here, if someone makes us 1x2000 I wish them a swift and watery death + var/furthest_screen_loc = ButtonNumberToScreenCoords(column_max - 1) + var/list/offsets = screen_loc_to_offset(furthest_screen_loc, owner_view) + if(offsets[1] > world.icon_size && offsets[1] < view_size[1] && offsets[2] > world.icon_size && offsets[2] < view_size[2]) // We're all good + return + + for(column_max in column_max - 1 to 1 step -1) // Yes I could do this by unwrapping ButtonNumberToScreenCoords, but I don't feel like it + var/tested_screen_loc = ButtonNumberToScreenCoords(column_max) + offsets = screen_loc_to_offset(tested_screen_loc, owner_view) + // We've found a valid max length, pack it in + if(offsets[1] > world.icon_size && offsets[1] < view_size[1] && offsets[2] > world.icon_size && offsets[2] < view_size[2]) + break + // Use our newly resized column max + refresh_actions() + +/// Returns the amount of objects we're storing at the moment +/datum/action_group/proc/size() + var/amount = length(actions) + if(landing) + amount += 1 + return amount + +/datum/action_group/proc/index_of(atom/movable/screen/get_location) + return actions.Find(get_location) + +/// Generates a landing object that can be dropped on to join this group +/datum/action_group/proc/generate_landing() + if(landing) + return + landing = new() + landing.set_owner(src) + refresh_actions() + +/// Clears any landing objects we may currently have +/datum/action_group/proc/clear_landing() + QDEL_NULL(landing) + +/datum/action_group/proc/update_landing() + if(!landing) + return + landing.refresh_owner() + +/datum/action_group/proc/scroll(amount) + row_offset += amount + refresh_actions() + +/datum/action_group/palette + north_offset = 2 + column_max = 3 + max_rows = 3 + location = SCRN_OBJ_IN_PALETTE + +/datum/action_group/palette/insert_action(atom/movable/screen/action, index) + . = ..() + var/atom/movable/screen/button_palette/palette = owner.toggle_palette + palette.play_item_added() + +/datum/action_group/palette/remove_action(atom/movable/screen/action) + . = ..() + var/atom/movable/screen/button_palette/palette = owner.toggle_palette + palette.play_item_removed() + if(!length(actions)) + palette.set_expanded(FALSE) + +/datum/action_group/palette/refresh_actions() + var/atom/movable/screen/button_palette/palette = owner.toggle_palette + var/atom/movable/screen/palette_scroll/scroll_down = owner.palette_down + var/atom/movable/screen/palette_scroll/scroll_up = owner.palette_up + + var/actions_above = round((owner.listed_actions.size() - 1) / owner.listed_actions.column_max) + north_offset = initial(north_offset) + actions_above + + palette.screen_loc = ui_action_palette_offset(actions_above) + var/action_count = length(owner?.mymob?.actions) + var/our_row_count = round((length(actions) - 1) / column_max) + if(!action_count) + palette.screen_loc = null + + if(palette.expanded && action_count && our_row_count >= max_rows) + scroll_down.screen_loc = ui_palette_scroll_offset(actions_above) + scroll_up.screen_loc = ui_palette_scroll_offset(actions_above) + else + scroll_down.screen_loc = null + scroll_up.screen_loc = null + + return ..() + +/datum/action_group/palette/ButtonNumberToScreenCoords(number, landing) + var/atom/movable/screen/button_palette/palette = owner.toggle_palette + if(palette.expanded) + return ..() + + if(!landing) + return null + + // We only render the landing in this case, so we force it to be the second item displayed (Second rather then first since it looks nicer) + // Remember the number var indexes at 0 + return ..(1 + (row_offset * column_max), landing) + + +/datum/action_group/listed + pixel_north_offset = 6 + column_max = 10 + location = SCRN_OBJ_IN_LIST + +/datum/action_group/listed/refresh_actions() + . = ..() + owner.palette_actions.refresh_actions() // We effect them, so we gotta refresh em diff --git a/code/_onclick/hud/movable_screen_objects.dm b/code/_onclick/hud/movable_screen_objects.dm index c3372d338f3..b1f40f76294 100644 --- a/code/_onclick/hud/movable_screen_objects.dm +++ b/code/_onclick/hud/movable_screen_objects.dm @@ -9,9 +9,8 @@ //Not tied to the grid, places it's center where the cursor is /atom/movable/screen/movable + mouse_drag_pointer = 'icons/effects/mouse_pointers/screen_drag.dmi' var/snap2grid = FALSE - var/moved = FALSE - var/locked = FALSE var/x_off = -16 var/y_off = -16 @@ -21,35 +20,29 @@ /atom/movable/screen/movable/snap snap2grid = TRUE - /atom/movable/screen/movable/MouseDrop(over_object, src_location, over_location, src_control, over_control, params) - if(locked) //no! I am locked! begone! + var/position = mouse_params_to_position(params) + if(!position) return + + screen_loc = position + +/// Takes mouse parmas as input, returns a string representing the appropriate mouse position +/atom/movable/screen/movable/proc/mouse_params_to_position(params) var/list/modifiers = params2list(params) //No screen-loc information? abort. if(!LAZYACCESS(modifiers, SCREEN_LOC)) return - - //Split screen-loc up into X+Pixel_X and Y+Pixel_Y - var/list/screen_loc_params = splittext(LAZYACCESS(modifiers, SCREEN_LOC), ",") - - //Split X+Pixel_X up into list(X, Pixel_X) - var/list/screen_loc_X = splittext(screen_loc_params[1],":") - - //Split Y+Pixel_Y up into list(Y, Pixel_Y) - var/list/screen_loc_Y = splittext(screen_loc_params[2],":") - + var/client/our_client = usr.client + var/list/offset = screen_loc_to_offset(LAZYACCESS(modifiers, SCREEN_LOC)) if(snap2grid) //Discard Pixel Values - screen_loc = "[screen_loc_X[1]],[screen_loc_Y[1]]" - + offset[1] = FLOOR(offset[1], world.icon_size) // drops any pixel offset + offset[2] = FLOOR(offset[2], world.icon_size) // drops any pixel offset else //Normalise Pixel Values (So the object drops at the center of the mouse, not 16 pixels off) - var/pix_X = text2num(screen_loc_X[2]) + x_off - var/pix_Y = text2num(screen_loc_Y[2]) + y_off - screen_loc = "[screen_loc_X[1]]:[pix_X],[screen_loc_Y[1]]:[pix_Y]" - - moved = screen_loc - + offset[1] += x_off + offset[2] += y_off + return offset_to_screen_loc(offset[1], offset[2], our_client?.view) //Debug procs /client/proc/test_movable_UI() diff --git a/code/_onclick/hud/screentip.dm b/code/_onclick/hud/screentip.dm index 36159ec0086..198e70326ab 100644 --- a/code/_onclick/hud/screentip.dm +++ b/code/_onclick/hud/screentip.dm @@ -16,6 +16,6 @@ SIGNAL_HANDLER if(!hud || !hud.mymob.client.view_size) //Might not have been initialized by now return - maptext_width = getviewsize(hud.mymob.client.view_size.getView())[1] * world.icon_size + maptext_width = view_to_pixels(hud.mymob.client.view_size.getView())[1] diff --git a/code/controllers/subsystem/augury.dm b/code/controllers/subsystem/augury.dm index 922e65e0e74..cb8f62df461 100644 --- a/code/controllers/subsystem/augury.dm +++ b/code/controllers/subsystem/augury.dm @@ -72,15 +72,15 @@ SUBSYSTEM_DEF(augury) SSaugury.watchers += owner to_chat(owner, span_notice("You are now auto-following debris.")) active = TRUE - UpdateButtonIcon() + UpdateButtons() /datum/action/innate/augury/Deactivate() SSaugury.watchers -= owner to_chat(owner, span_notice("You are no longer auto-following debris.")) active = FALSE - UpdateButtonIcon() + UpdateButtons() -/datum/action/innate/augury/UpdateButtonIcon(status_only = FALSE, force) +/datum/action/innate/augury/UpdateButton(atom/movable/screen/movable/action_button/button, status_only = FALSE, force) ..() if(active) button.icon_state = "template_active" diff --git a/code/datums/action.dm b/code/datums/action.dm index cb55f77cdbf..92f3d1c50c4 100644 --- a/code/datums/action.dm +++ b/code/datums/action.dm @@ -4,9 +4,10 @@ var/datum/target var/check_flags = NONE var/processing = FALSE - var/atom/movable/screen/movable/action_button/button = null var/buttontooltipstyle = "" var/transparent_when_unavailable = TRUE + /// Where any buttons we create should be by default. Accepts screen_loc and location defines + var/default_button_position = SCRN_OBJ_IN_LIST var/button_icon = 'icons/mob/actions/backgrounds.dmi' //This is the file for the BACKGROUND icon var/background_icon_state = ACTION_BUTTON_DEFAULT_BACKGROUND //And this is the state for the background icon @@ -14,17 +15,11 @@ var/icon_icon = 'icons/hud/actions.dmi' //This is the file for the ACTION icon var/button_icon_state = "default" //And this is the state for the action icon var/mob/owner - ///All mobs that are sharing our action button. - var/list/sharers = list() + ///List of all mobs that are viewing our action button -> A unique movable for them to view. + var/list/viewers = list() /datum/action/New(Target) link_to(Target) - button = new - button.linked_action = src - button.name = name - button.actiontooltipstyle = buttontooltipstyle - if(desc) - button.desc = desc /datum/action/proc/link_to(Target) target = Target @@ -35,41 +30,21 @@ if(owner) Remove(owner) target = null - QDEL_NULL(button) + QDEL_LIST_ASSOC_VAL(viewers) // Qdel the buttons in the viewers list **NOT THE HUDS** return ..() /datum/action/proc/Grant(mob/M) - if(M) - if(owner) - if(owner == M) - return - Remove(owner) - owner = M - RegisterSignal(owner, COMSIG_PARENT_QDELETING, .proc/clear_ref, override = TRUE) - - //button id generation - var/counter = 0 - var/bitfield = 0 - for(var/datum/action/A in M.actions) - if(A.name == name && A.button.id) - counter += 1 - bitfield |= A.button.id - bitfield = ~bitfield - var/bitflag = 1 - for(var/i in 1 to (counter + 1)) - if(bitfield & bitflag) - button.id = bitflag - break - bitflag *= 2 - - LAZYADD(M.actions, src) - if(M.client) - M.client.screen += button - button.locked = M.client.prefs.read_preference(/datum/preference/toggle/buttons_locked) || button.id ? M.client.prefs.action_buttons_screen_locs["[name]_[button.id]"] : FALSE //even if it's not defaultly locked we should remember we locked it before - button.moved = button.id ? M.client.prefs.action_buttons_screen_locs["[name]_[button.id]"] : FALSE - M.update_action_buttons() - else + if(!M) Remove(owner) + return + if(owner) + if(owner == M) + return + Remove(owner) + owner = M + RegisterSignal(owner, COMSIG_PARENT_QDELETING, .proc/clear_ref, override = TRUE) + + GiveAction(M) /datum/action/proc/clear_ref(datum/ref) SIGNAL_HANDLER @@ -79,26 +54,18 @@ qdel(src) /datum/action/proc/Remove(mob/M) - for(var/datum/weakref/reference as anything in sharers) - var/mob/freeloader = reference.resolve() - if(!freeloader) + for(var/datum/hud/hud in viewers) + if(!hud.mymob) continue - Unshare(freeloader) - sharers = null - if(M) - if(M.client) - M.client.screen -= button - LAZYREMOVE(M.actions, src) - M.update_action_buttons() + HideFrom(hud.mymob) + LAZYREMOVE(M.actions, src) // We aren't always properly inserted into the viewers list, gotta make sure that action's cleared + viewers = list() + if(owner) UnregisterSignal(owner, COMSIG_PARENT_QDELETING) if(target == owner) RegisterSignal(target, COMSIG_PARENT_QDELETING, .proc/clear_ref) owner = null - if(button) - button.moved = FALSE //so the button appears in its normal position when given to another owner. - button.locked = FALSE - button.id = null /datum/action/proc/Trigger(trigger_flags) if(!IsAvailable()) @@ -123,31 +90,36 @@ return FALSE return TRUE +/datum/action/proc/UpdateButtons(status_only, force) + for(var/datum/hud/hud in viewers) + var/atom/movable/screen/movable/button = viewers[hud] + UpdateButton(button, status_only, force) -/datum/action/proc/UpdateButtonIcon(status_only = FALSE, force = FALSE) - if(button) - if(!status_only) - button.name = name - button.desc = desc - if(owner?.hud_used && background_icon_state == ACTION_BUTTON_DEFAULT_BACKGROUND) - var/list/settings = owner.hud_used.get_action_buttons_icons() - if(button.icon != settings["bg_icon"]) - button.icon = settings["bg_icon"] - if(button.icon_state != settings["bg_state"]) - button.icon_state = settings["bg_state"] - else - if(button.icon != button_icon) - button.icon = button_icon - if(button.icon_state != background_icon_state) - button.icon_state = background_icon_state - - ApplyIcon(button, force) - - if(!IsAvailable()) - button.color = transparent_when_unavailable ? rgb(128,0,0,128) : rgb(128,0,0) +/datum/action/proc/UpdateButton(atom/movable/screen/movable/action_button/button, status_only = FALSE, force = FALSE) + if(!button) + return + if(!status_only) + button.name = name + button.desc = desc + if(owner?.hud_used && background_icon_state == ACTION_BUTTON_DEFAULT_BACKGROUND) + var/list/settings = owner.hud_used.get_action_buttons_icons() + if(button.icon != settings["bg_icon"]) + button.icon = settings["bg_icon"] + if(button.icon_state != settings["bg_state"]) + button.icon_state = settings["bg_state"] else - button.color = rgb(255,255,255,255) - return TRUE + if(button.icon != button_icon) + button.icon = button_icon + if(button.icon_state != background_icon_state) + button.icon_state = background_icon_state + + ApplyIcon(button, force) + + if(!IsAvailable()) + button.color = transparent_when_unavailable ? rgb(128,0,0,128) : rgb(128,0,0) + else + button.color = rgb(255,255,255,255) + return TRUE /datum/action/proc/ApplyIcon(atom/movable/screen/movable/action_button/current_button, force = FALSE) if(icon_icon && button_icon_state && ((current_button.button_icon_state != button_icon_state) || force)) @@ -157,28 +129,67 @@ /datum/action/proc/OnUpdatedIcon() SIGNAL_HANDLER - UpdateButtonIcon() + UpdateButtons() -//Adds our action button to the screen of another player -/datum/action/proc/Share(mob/freeloader) - if(!freeloader.client) +//Give our action button to the player +/datum/action/proc/GiveAction(mob/viewer) + var/datum/hud/our_hud = viewer.hud_used + if(viewers[our_hud]) // Already have a copy of us? go away return - sharers += WEAKREF(freeloader) - freeloader.client.screen += button - freeloader.actions += src - freeloader.update_action_buttons() -//Removes our action button from the screen of another player -/datum/action/proc/Unshare(mob/freeloader) - if(!freeloader.client) + LAZYOR(viewer.actions, src) // Move this in + ShowTo(viewer) + +//Adds our action button to the screen of a player +/datum/action/proc/ShowTo(mob/viewer) + var/datum/hud/our_hud = viewer.hud_used + if(!our_hud || viewers[our_hud]) // There's no point in this if you have no hud in the first place return - for(var/freeloader_reference in sharers) - if(IS_WEAKREF_OF(freeloader, freeloader_reference)) - sharers -= freeloader_reference - break - freeloader.client.screen -= button - freeloader.actions -= src - freeloader.update_action_buttons() + + var/atom/movable/screen/movable/action_button/button = CreateButton() + SetId(button, viewer) + + button.our_hud = our_hud + viewers[our_hud] = button + if(viewer.client) + viewer.client.screen += button + + button.load_position(viewer) + viewer.update_action_buttons() + +//Removes our action button from the screen of a player +/datum/action/proc/HideFrom(mob/viewer) + var/datum/hud/our_hud = viewer.hud_used + var/atom/movable/screen/movable/action_button/button = viewers[our_hud] + LAZYREMOVE(viewer.actions, src) + if(button) + qdel(button) + +/datum/action/proc/CreateButton() + var/atom/movable/screen/movable/action_button/button = new() + button.linked_action = src + button.name = name + button.actiontooltipstyle = buttontooltipstyle + if(desc) + button.desc = desc + return button + +/datum/action/proc/SetId(atom/movable/screen/movable/action_button/our_button, mob/owner) + //button id generation + var/bitfield = 0 + for(var/datum/action/action in owner.actions) + if(action == src) // This could be us, which is dumb + continue + var/atom/movable/screen/movable/action_button/button = action.viewers[owner.hud_used] + if(action.name == name && button.id) + bitfield |= button.id + + bitfield = ~bitfield // Flip our possible ids, so we can check if we've found a unique one + for(var/i in 0 to 23) // We get 24 possible bitflags in dm + var/bitflag = 1 << i // Shift us over one + if(bitfield & bitflag) + our_button.id = bitflag + return //Presets for item actions /datum/action/item_action @@ -272,12 +283,14 @@ /datum/action/item_action/set_internals name = "Set Internals" -/datum/action/item_action/set_internals/UpdateButtonIcon(status_only = FALSE, force) - if(..()) //button available - if(iscarbon(owner)) - var/mob/living/carbon/C = owner - if(target == C.internal) - button.icon_state = "template_active" +/datum/action/item_action/set_internals/UpdateButton(atom/movable/screen/movable/action_button/button, status_only = FALSE, force) + if(!..()) // no button available + return + if(!iscarbon(owner)) + return + var/mob/living/carbon/C = owner + if(target == C.internal) + button.icon_state = "template_active" /datum/action/item_action/pick_color name = "Choose A Color" @@ -331,7 +344,7 @@ SIGNAL_HANDLER button_icon_state = "thermal_[suit.thermal_on ? "on" : "off"]" - UpdateButtonIcon() + UpdateButtons() /datum/action/item_action/vortex_recall name = "Vortex Recall" @@ -385,7 +398,6 @@ ..() var/obj/item/item_target = target name = "Toggle [item_target.name]" - button.name = name /datum/action/item_action/halt name = "HALT!" @@ -411,7 +423,6 @@ ..() var/obj/item/item_target = target name = "Adjust [item_target.name]" - button.name = name /datum/action/item_action/switch_hud name = "Switch HUD" @@ -497,13 +508,11 @@ ..() var/obj/item/organ/organ_target = target name = "Toggle [organ_target.name]" - button.name = name /datum/action/item_action/organ_action/use/New(Target) ..() var/obj/item/organ/organ_target = target name = "Use [organ_target.name]" - button.name = name /datum/action/item_action/cult_dagger name = "Draw Blood Rune" @@ -512,15 +521,13 @@ button_icon_state = "draw" buttontooltipstyle = "cult" background_icon_state = "bg_demon" + default_button_position = "6:157,4:-2" /datum/action/item_action/cult_dagger/Grant(mob/M) if(!IS_CULTIST(M)) Remove(owner) return - - . = ..() - button.screen_loc = "6:157,4:-2" - button.moved = "6:157,4:-2" + return ..() /datum/action/item_action/cult_dagger/Trigger(trigger_flags) for(var/obj/item/held_item as anything in owner.held_items) // In case we were already holding a dagger @@ -615,7 +622,6 @@ icon_icon = S.action_icon button_icon_state = S.action_icon_state background_icon_state = S.action_background_icon_state - button.name = name /datum/action/spell_action/Destroy() var/obj/effect/proc_holder/S = target @@ -693,13 +699,14 @@ // Shares cooldowns with other cooldown abilities of the same value, not active if null var/shared_cooldown -/datum/action/cooldown/New(Target) - ..() +/datum/action/cooldown/CreateButton() + var/atom/movable/screen/movable/action_button/button = ..() button.maptext = "" button.maptext_x = 8 button.maptext_y = 0 button.maptext_width = 24 button.maptext_height = 12 + return button /datum/action/cooldown/IsAvailable() return ..() && (next_use_time <= world.time) @@ -721,7 +728,7 @@ next_use_time = world.time + override_cooldown_time else next_use_time = world.time + cooldown_time - UpdateButtonIcon() + UpdateButtons() START_PROCESSING(SSfastprocess, src) /datum/action/cooldown/Trigger(trigger_flags, atom/target) @@ -739,7 +746,7 @@ else owner.click_intercept = src for(var/datum/action/cooldown/ability in owner.actions) - ability.UpdateButtonIcon() + ability.UpdateButtons() return TRUE return PreActivate(owner) @@ -764,12 +771,13 @@ /datum/action/cooldown/proc/Activate(atom/target) return -/datum/action/cooldown/UpdateButtonIcon(status_only = FALSE, force = FALSE) +/datum/action/cooldown/UpdateButton(atom/movable/screen/movable/action_button/button, status_only = FALSE, force = FALSE) . = ..() + if(!button) + return var/time_left = max(next_use_time - world.time, 0) - if(button) - if(text_cooldown) - button.maptext = MAPTEXT("[round(time_left/10, 0.1)]") + if(text_cooldown) + button.maptext = MAPTEXT("[round(time_left/10, 0.1)]") if(!owner || time_left == 0) button.maptext = "" if(IsAvailable() && owner.click_intercept == src) @@ -779,28 +787,28 @@ var/time_left = max(next_use_time - world.time, 0) if(!owner || time_left == 0) STOP_PROCESSING(SSfastprocess, src) - UpdateButtonIcon() + UpdateButtons() /datum/action/cooldown/Grant(mob/M) ..() - if(owner) - UpdateButtonIcon() - if(next_use_time > world.time) - START_PROCESSING(SSfastprocess, src) + if(!owner) + return + UpdateButtons() + if(next_use_time > world.time) + START_PROCESSING(SSfastprocess, src) ///Like a cooldown action, but with an associated proc holder. /datum/action/cooldown/spell_like /datum/action/cooldown/spell_like/New(Target) ..() - var/obj/effect/proc_holder/our_proc_holder = target + var/obj/effect/proc_holder/our_proc_holder = Target our_proc_holder.action = src name = our_proc_holder.name desc = our_proc_holder.desc icon_icon = our_proc_holder.action_icon button_icon_state = our_proc_holder.action_icon_state background_icon_state = our_proc_holder.action_background_icon_state - button.name = name /datum/action/cooldown/spell_like/Activate(atom/activate_target) if(!target) diff --git a/code/datums/brain_damage/imaginary_friend.dm b/code/datums/brain_damage/imaginary_friend.dm index a5c7710b067..7b5d6760ec8 100644 --- a/code/datums/brain_damage/imaginary_friend.dm +++ b/code/datums/brain_damage/imaginary_friend.dm @@ -275,7 +275,7 @@ name = "Hide" desc = "Hide yourself from your owner's sight." button_icon_state = "hide" - UpdateButtonIcon() + UpdateButtons() /datum/action/innate/imaginary_hide/Activate() var/mob/camera/imaginary_friend/I = owner diff --git a/code/datums/components/admin_popup.dm b/code/datums/components/admin_popup.dm index 0fff57863e3..c552c596c80 100644 --- a/code/datums/components/admin_popup.dm +++ b/code/datums/components/admin_popup.dm @@ -49,7 +49,7 @@ admin_popup = new var/client/parent_client = parent - admin_popup.maptext_width = getviewsize(parent_client.view_size.getView())[1] * world.icon_size + admin_popup.maptext_width = view_to_pixels(parent_client.view_size.getView())[1] parent_client.screen += admin_popup /datum/component/admin_popup/proc/delete_self() diff --git a/code/datums/components/riding/riding_mob.dm b/code/datums/components/riding/riding_mob.dm index 9de207a6423..85d144ea857 100644 --- a/code/datums/components/riding/riding_mob.dm +++ b/code/datums/components/riding/riding_mob.dm @@ -141,7 +141,7 @@ var/obj/effect/proc_holder/proc_holder = ability if(!proc_holder.action) return - proc_holder.action.Share(rider) + proc_holder.action.GiveAction(rider) /// Takes away the riding parent's abilities from the rider /datum/component/riding/creature/proc/remove_abilities(mob/living/rider) @@ -156,7 +156,7 @@ return if(rider == proc_holder.ranged_ability_user) proc_holder.remove_ranged_ability() - proc_holder.action.Unshare(rider) + proc_holder.action.HideFrom(rider) /datum/component/riding/creature/riding_can_z_move(atom/movable/movable_parent, direction, turf/start, turf/destination, z_move_flags, mob/living/rider) if(!(z_move_flags & ZMOVE_CAN_FLY_CHECKS)) diff --git a/code/datums/mind.dm b/code/datums/mind.dm index ccebfa54b86..ecc0fa17a4d 100644 --- a/code/datums/mind.dm +++ b/code/datums/mind.dm @@ -830,7 +830,7 @@ if(istype(S, type)) continue S.charge_counter = delay - S.updateButtonIcon() + S.updateButtons() INVOKE_ASYNC(S, /obj/effect/proc_holder/spell.proc/start_recharge) /datum/mind/proc/get_ghost(even_if_they_cant_reenter, ghosts_with_clients) diff --git a/code/datums/view.dm b/code/datums/view.dm index dffbc90a4f2..e8b6c1cfe82 100644 --- a/code/datums/view.dm +++ b/code/datums/view.dm @@ -33,11 +33,13 @@ default = string apply() -/datum/view_data/proc/safeApplyFormat() +/datum/view_data/proc/afterViewChange() if(isZooming()) assertFormat() - return - resetFormat() + else + resetFormat() + var/datum/hud/our_hud = chief?.mob?.hud_used + our_hud.view_audit_buttons() // Make sure our hud's buttons are in our new size /datum/view_data/proc/assertFormat()//T-Pose winset(chief, "mapwindow.map", "zoom=0") @@ -99,7 +101,7 @@ /datum/view_data/proc/apply() chief?.change_view(getView()) - safeApplyFormat() + afterViewChange() /datum/view_data/proc/supress() is_suppressed = TRUE diff --git a/code/game/objects/items.dm b/code/game/objects/items.dm index 46df27b23e0..d330ceb0180 100644 --- a/code/game/objects/items.dm +++ b/code/game/objects/items.dm @@ -1225,7 +1225,7 @@ GLOBAL_DATUM_INIT(fire_overlay, /mutable_appearance, mutable_appearance('icons/e */ /obj/item/proc/update_action_buttons(status_only = FALSE, force = FALSE) for(var/datum/action/current_action as anything in actions) - current_action.UpdateButtonIcon(status_only, force) + current_action.UpdateButtons(status_only, force) // Update icons if this is being carried by a mob /obj/item/wash(clean_types) diff --git a/code/game/objects/items/granters.dm b/code/game/objects/items/granters.dm index a9b9b78015d..e6d4293a25d 100644 --- a/code/game/objects/items/granters.dm +++ b/code/game/objects/items/granters.dm @@ -105,13 +105,13 @@ to_chat(owner, span_notice("You will now fold origami planes.")) button_icon_state = "origami_on" active = TRUE - UpdateButtonIcon() + UpdateButtons() /datum/action/innate/origami/Deactivate() to_chat(owner, span_notice("You will no longer fold origami planes.")) button_icon_state = "origami_off" active = FALSE - UpdateButtonIcon() + UpdateButtons() ///SPELLS/// diff --git a/code/game/objects/structures/deployable_turret.dm b/code/game/objects/structures/deployable_turret.dm index 92fdc82f23d..4a265d882be 100644 --- a/code/game/objects/structures/deployable_turret.dm +++ b/code/game/objects/structures/deployable_turret.dm @@ -114,7 +114,7 @@ var/client/controlling_client = controller.client if(controlling_client) var/modifiers = params2list(controlling_client.mouseParams) - var/atom/target_atom = controlling_client.mouseObject + var/atom/target_atom = controlling_client.mouse_object_ref?.resolve() var/turf/target_turf = get_turf(target_atom) if(istype(target_turf)) //They're hovering over something in the map. direction_track(controller, target_turf) diff --git a/code/modules/admin/verbs/SDQL2/SDQL_spells/spell_edit_menu.dm b/code/modules/admin/verbs/SDQL2/SDQL_spells/spell_edit_menu.dm index 3bffae75958..7c74c38ca70 100644 --- a/code/modules/admin/verbs/SDQL2/SDQL_spells/spell_edit_menu.dm +++ b/code/modules/admin/verbs/SDQL2/SDQL_spells/spell_edit_menu.dm @@ -404,7 +404,7 @@ GLOBAL_LIST_INIT_TYPED(sdql_spells, /obj/effect/proc_holder/spell, list()) if("confirm") if(target_spell) reassign_vars(target_spell) - target_spell.action.UpdateButtonIcon() + target_spell.action.UpdateButtons() log_admin("[key_name(user)] edited the SDQL spell \"[target_spell]\" owned by [key_name(target_mob)].") else var/new_spell = give_spell() @@ -895,7 +895,7 @@ GLOBAL_LIST_INIT_TYPED(sdql_spells, /obj/effect/proc_holder/spell, list()) var/obj/effect/proc_holder/spell/new_spell = new path(null, target_mob, user.ckey) GLOB.sdql_spells += new_spell reassign_vars(new_spell) - new_spell.action.UpdateButtonIcon() + new_spell.action.UpdateButtons() if(target_mob.mind) target_mob.mind.AddSpell(new_spell) else diff --git a/code/modules/antagonists/changeling/cellular_emporium.dm b/code/modules/antagonists/changeling/cellular_emporium.dm index 0e1e86baa8f..84aae218a10 100644 --- a/code/modules/antagonists/changeling/cellular_emporium.dm +++ b/code/modules/antagonists/changeling/cellular_emporium.dm @@ -95,7 +95,6 @@ /datum/action/innate/cellular_emporium/New(our_target) . = ..() - button.name = name if(istype(our_target, /datum/cellular_emporium)) cellular_emporium = our_target else diff --git a/code/modules/antagonists/changeling/powers/fakedeath.dm b/code/modules/antagonists/changeling/powers/fakedeath.dm index 32c29c05105..835e13cfb36 100644 --- a/code/modules/antagonists/changeling/powers/fakedeath.dm +++ b/code/modules/antagonists/changeling/powers/fakedeath.dm @@ -18,7 +18,7 @@ name = "Reviving Stasis" desc = "We fall into a stasis, allowing us to regenerate and trick our enemies." button_icon_state = "fake_death" - UpdateButtonIcon() + UpdateButtons() chemical_cost = 15 to_chat(user, span_notice("We have revived ourselves.")) else @@ -58,7 +58,7 @@ name = "Revive" desc = "We arise once more." button_icon_state = "revive" - UpdateButtonIcon() + UpdateButtons() chemical_cost = 0 revive_ready = TRUE diff --git a/code/modules/antagonists/cult/blood_magic.dm b/code/modules/antagonists/cult/blood_magic.dm index df9db661adb..d08db4802ea 100644 --- a/code/modules/antagonists/cult/blood_magic.dm +++ b/code/modules/antagonists/cult/blood_magic.dm @@ -2,15 +2,10 @@ name = "Prepare Blood Magic" button_icon_state = "carve" desc = "Prepare blood magic by carving runes into your flesh. This is easier with an empowering rune." + default_button_position = DEFAULT_BLOODSPELLS var/list/spells = list() var/channeling = FALSE -/datum/action/innate/cult/blood_magic/Grant() - ..() - button.screen_loc = DEFAULT_BLOODSPELLS - button.moved = DEFAULT_BLOODSPELLS - button.ordered = FALSE - /datum/action/innate/cult/blood_magic/Remove() for(var/X in spells) qdel(X) @@ -22,15 +17,21 @@ return ..() /datum/action/innate/cult/blood_magic/proc/Positioning() - var/list/screen_loc_split = splittext(button.screen_loc,",") - var/list/screen_loc_X = splittext(screen_loc_split[1],":") - var/list/screen_loc_Y = splittext(screen_loc_split[2],":") - var/pix_X = text2num(screen_loc_X[2]) - for(var/datum/action/innate/cult/blood_spell/B in spells) - if(B.button.locked) - var/order = pix_X+spells.Find(B)*31 - B.button.screen_loc = "[screen_loc_X[1]]:[order],[screen_loc_Y[1]]:[screen_loc_Y[2]]" - B.button.moved = B.button.screen_loc + for(var/datum/hud/hud as anything in viewers) + var/our_view = hud.mymob?.client?.view || "15x15" + var/atom/movable/screen/movable/action_button/button = viewers[hud] + var/position = screen_loc_to_offset(button.screen_loc) + var/spells_iterated = 0 + for(var/datum/action/innate/cult/blood_spell/blood_spell in spells) + spells_iterated += 1 + if(blood_spell.positioned) + continue + var/atom/movable/screen/movable/action_button/moving_button = blood_spell.viewers[hud] + if(!moving_button) + continue + var/our_x = position[1] + spells_iterated * world.icon_size // Offset any new buttons into our list + hud.position_action(moving_button, offset_to_screen_loc(our_x, position[2], our_view)) + blood_spell.positioned = TRUE /datum/action/innate/cult/blood_magic/Activate() var/rune = FALSE @@ -97,6 +98,8 @@ var/base_desc //To allow for updating tooltips var/invocation var/health_cost = 0 + /// Have we already been positioned into our starting location? + var/positioned = FALSE /datum/action/innate/cult/blood_spell/Grant(mob/living/owner, datum/action/innate/cult/blood_magic/BM) if(health_cost) @@ -104,9 +107,7 @@ base_desc = desc desc += "
Has [charges] use\s remaining." all_magic = BM - ..() - button.locked = TRUE - button.ordered = FALSE + return ..() /datum/action/innate/cult/blood_spell/Remove() if(all_magic) @@ -275,7 +276,7 @@ attached_action.charges-- attached_action.desc = attached_action.base_desc attached_action.desc += "
Has [attached_action.charges] use\s remaining." - attached_action.UpdateButtonIcon() + attached_action.UpdateButtons() if(attached_action.charges <= 0) remove_ranged_ability(span_cult("You have exhausted the spell's power!")) qdel(src) @@ -331,7 +332,7 @@ qdel(src) desc = base_desc desc += "
Has [charges] use\s remaining." - UpdateButtonIcon() + UpdateButtons() /datum/action/innate/cult/blood_spell/manipulation name = "Blood Rites" @@ -380,7 +381,7 @@ source.charges = uses source.desc = source.base_desc source.desc += "
Has [uses] use\s remaining." - source.UpdateButtonIcon() + source.UpdateButtons() return ..() /obj/item/melee/blood_magic/attack_self(mob/living/user) @@ -409,7 +410,7 @@ else if(source) source.desc = source.base_desc source.desc += "
Has [uses] use\s remaining." - source.UpdateButtonIcon() + source.UpdateButtons() //Stun /obj/item/melee/blood_magic/stun diff --git a/code/modules/antagonists/cult/cult_items.dm b/code/modules/antagonists/cult/cult_items.dm index 3d54936f0fd..c4f7758c0c6 100644 --- a/code/modules/antagonists/cult/cult_items.dm +++ b/code/modules/antagonists/cult/cult_items.dm @@ -805,14 +805,13 @@ Striking a noncultist, however, will tear their flesh."} desc = "Call the bloody halberd back to your hand!" background_icon_state = "bg_demon" button_icon_state = "bloodspear" + default_button_position = "6:157,4:-2" var/obj/item/melee/cultblade/halberd/halberd var/cooldown = 0 /datum/action/innate/cult/halberd/Grant(mob/user, obj/blood_halberd) . = ..() halberd = blood_halberd - button.screen_loc = "6:157,4:-2" - button.moved = "6:157,4:-2" /datum/action/innate/cult/halberd/Activate() if(owner == halberd.loc || cooldown > world.time) diff --git a/code/modules/antagonists/heretic/heretic_living_heart.dm b/code/modules/antagonists/heretic/heretic_living_heart.dm index a619e242376..8609a0d96de 100644 --- a/code/modules/antagonists/heretic/heretic_living_heart.dm +++ b/code/modules/antagonists/heretic/heretic_living_heart.dm @@ -43,7 +43,7 @@ organ_parent.icon = 'icons/obj/eldritch.dmi' organ_parent.icon_state = "living_heart" - action.UpdateButtonIcon() + action.UpdateButtons() /datum/component/living_heart/Destroy(force, silent) QDEL_NULL(action) diff --git a/code/modules/antagonists/revenant/revenant_abilities.dm b/code/modules/antagonists/revenant/revenant_abilities.dm index 8250450a4d4..0cdf7ef5ff1 100644 --- a/code/modules/antagonists/revenant/revenant_abilities.dm +++ b/code/modules/antagonists/revenant/revenant_abilities.dm @@ -189,7 +189,7 @@ user.reveal(reveal) user.stun(stun) if(action) - action.UpdateButtonIcon() + action.UpdateButtons() return TRUE //Overload Light: Breaks a light that's online and sends out lightning bolts to all nearby people. diff --git a/code/modules/antagonists/traitor/equipment/Malf_Modules.dm b/code/modules/antagonists/traitor/equipment/Malf_Modules.dm index 29bc273c602..cb331aac9e8 100644 --- a/code/modules/antagonists/traitor/equipment/Malf_Modules.dm +++ b/code/modules/antagonists/traitor/equipment/Malf_Modules.dm @@ -430,7 +430,6 @@ GLOBAL_LIST_INIT(malf_modules, subtypesof(/datum/ai_module)) /datum/action/innate/ai/ranged/override_machine/New() ..() desc = "[desc] It has [uses] use\s remaining." - button.desc = desc /datum/action/innate/ai/ranged/override_machine/proc/animate_machine(obj/machinery/M) if(M && !QDELETED(M)) @@ -458,7 +457,7 @@ GLOBAL_LIST_INIT(malf_modules, subtypesof(/datum/ai_module)) attached_action.adjust_uses(-1) if(attached_action?.uses) attached_action.desc = "[initial(attached_action.desc)] It has [attached_action.uses] use\s remaining." - attached_action.UpdateButtonIcon() + attached_action.UpdateButtons() target.audible_message(span_userdanger("You hear a loud electrical buzzing sound coming from [target]!")) addtimer(CALLBACK(attached_action, /datum/action/innate/ai/ranged/override_machine.proc/animate_machine, target), 50) //kabeep! remove_ranged_ability(span_danger("Sending override signal...")) @@ -508,7 +507,6 @@ GLOBAL_LIST_INIT(malf_modules, subtypesof(/datum/ai_module)) /datum/action/innate/ai/ranged/overload_machine/New() ..() desc = "[desc] It has [uses] use\s remaining." - button.desc = desc /datum/action/innate/ai/ranged/overload_machine/proc/detonate_machine(obj/machinery/M) if(M && !QDELETED(M)) @@ -541,7 +539,7 @@ GLOBAL_LIST_INIT(malf_modules, subtypesof(/datum/ai_module)) attached_action.adjust_uses(-1) if(attached_action?.uses) attached_action.desc = "[initial(attached_action.desc)] It has [attached_action.uses] use\s remaining." - attached_action.UpdateButtonIcon() + attached_action.UpdateButtons() target.audible_message(span_userdanger("You hear a loud electrical buzzing sound coming from [target]!")) addtimer(CALLBACK(attached_action, /datum/action/innate/ai/ranged/overload_machine.proc/detonate_machine, target), 50) //kaboom! remove_ranged_ability(span_danger("Overcharging machine...")) @@ -566,7 +564,6 @@ GLOBAL_LIST_INIT(malf_modules, subtypesof(/datum/ai_module)) /datum/action/innate/ai/blackout/New() ..() desc = "[desc] It has [uses] use\s remaining." - button.desc = desc /datum/action/innate/ai/blackout/Activate() for(var/obj/machinery/power/apc/apc in GLOB.apcs_list) @@ -577,9 +574,10 @@ GLOBAL_LIST_INIT(malf_modules, subtypesof(/datum/ai_module)) to_chat(owner, span_notice("Overcurrent applied to the powernet.")) owner.playsound_local(owner, SFX_SPARKS, 50, 0) adjust_uses(-1) - if(src && uses) //Not sure if not having src here would cause a runtime, so it's here to be safe - desc = "[initial(desc)] It has [uses] use\s remaining." - UpdateButtonIcon() + if(QDELETED(src) || uses) //Not sure if not having src here would cause a runtime, so it's here to be safe + return + desc = "[initial(desc)] It has [uses] use\s remaining." + UpdateButtons() /// HIGH IMPACT HONKING /datum/ai_module/destructive/megahonk @@ -785,7 +783,6 @@ GLOBAL_LIST_INIT(malf_modules, subtypesof(/datum/ai_module)) /datum/action/innate/ai/reactivate_cameras/New() ..() desc = "[desc] It has [uses] use\s remaining." - button.desc = desc /datum/action/innate/ai/reactivate_cameras/Activate() var/fixed_cameras = 0 @@ -801,9 +798,10 @@ GLOBAL_LIST_INIT(malf_modules, subtypesof(/datum/ai_module)) to_chat(owner, span_notice("Diagnostic complete! Cameras reactivated: [fixed_cameras]. Reactivations remaining: [uses].")) owner.playsound_local(owner, 'sound/items/wirecutter.ogg', 50, 0) adjust_uses(0, TRUE) //Checks the uses remaining - if(src && uses) //Not sure if not having src here would cause a runtime, so it's here to be safe - desc = "[initial(desc)] It has [uses] use\s remaining." - UpdateButtonIcon() + if(QDELETED(src) || !uses) //Not sure if not having src here would cause a runtime, so it's here to be safe + return + desc = "[initial(desc)] It has [uses] use\s remaining." + UpdateButtons() /// Upgrade Camera Network: EMP-proofs all cameras, in addition to giving them X-ray vision. /datum/ai_module/upgrade/upgrade_cameras diff --git a/code/modules/antagonists/traitor/equipment/module_picker.dm b/code/modules/antagonists/traitor/equipment/module_picker.dm index c11ace042d3..001f4434652 100644 --- a/code/modules/antagonists/traitor/equipment/module_picker.dm +++ b/code/modules/antagonists/traitor/equipment/module_picker.dm @@ -120,6 +120,6 @@ else //Adding uses to an existing module action.uses += initial(action.uses) action.desc = "[initial(action.desc)] It has [action.uses] use\s remaining." - action.UpdateButtonIcon() + action.UpdateButtons() processing_time -= AM.cost SSblackbox.record_feedback("nested tally", "malfunction_modules_bought", 1, list("[initial(AM.name)]", "[AM.cost]")) diff --git a/code/modules/client/client_defines.dm b/code/modules/client/client_defines.dm index fe324b6d665..2d32aa99586 100644 --- a/code/modules/client/client_defines.dm +++ b/code/modules/client/client_defines.dm @@ -166,14 +166,15 @@ var/obj/item/active_mousedown_item = null ///Used in MouseDrag to preserve the original mouse click parameters var/mouseParams = "" - ///Used in MouseDrag to preserve the last mouse-entered location. - var/mouseLocation = null - ///Used in MouseDrag to preserve the last mouse-entered object. - var/mouseObject = null + ///Used in MouseDrag to preserve the last mouse-entered location. Weakref + var/datum/weakref/mouse_location_ref = null + ///Used in MouseDrag to preserve the last mouse-entered object. Weakref + var/datum/weakref/mouse_object_ref //Middle-mouse-button click dragtime control for aimbot exploit detection. var/middragtime = 0 - //Middle-mouse-button clicked object control for aimbot exploit detection. - var/atom/middragatom + //Middle-mouse-button clicked object control for aimbot exploit detection. Weakref + var/datum/weakref/middle_drag_atom_ref + /// Messages currently seen by this client var/list/seen_messages diff --git a/code/modules/client/client_procs.dm b/code/modules/client/client_procs.dm index d3628060cdc..99d6db75ea2 100644 --- a/code/modules/client/client_procs.dm +++ b/code/modules/client/client_procs.dm @@ -879,7 +879,7 @@ GLOBAL_LIST_INIT(blacklisted_builds, list( if(dragged && !LAZYACCESS(modifiers, dragged)) //I don't know what's going on here, but I don't trust it return - if (object && object == middragatom && LAZYACCESS(modifiers, LEFT_CLICK)) + if (object && IS_WEAKREF_OF(object, middle_drag_atom_ref) && LAZYACCESS(modifiers, LEFT_CLICK)) ab = max(0, 5 SECONDS-(world.time-middragtime)*0.1) var/mcl = CONFIG_GET(number/minute_click_limit) @@ -928,6 +928,8 @@ GLOBAL_LIST_INIT(blacklisted_builds, list( else winset(src, null, "input.focus=true input.background-color=[COLOR_INPUT_ENABLED]") + SEND_SIGNAL(src, COMSIG_CLIENT_CLICK, object, location, control, params, usr) + ..() /client/proc/add_verbs_from_config() diff --git a/code/modules/client/preferences/buttons_locked.dm b/code/modules/client/preferences/buttons_locked.dm deleted file mode 100644 index b4f54ff10f8..00000000000 --- a/code/modules/client/preferences/buttons_locked.dm +++ /dev/null @@ -1,5 +0,0 @@ -/datum/preference/toggle/buttons_locked - category = PREFERENCE_CATEGORY_GAME_PREFERENCES - savefile_key = "buttons_locked" - savefile_identifier = PREFERENCE_PLAYER - default_value = FALSE diff --git a/code/modules/clothing/chameleon.dm b/code/modules/clothing/chameleon.dm index 838a5304d11..a4224e8bf79 100644 --- a/code/modules/clothing/chameleon.dm +++ b/code/modules/clothing/chameleon.dm @@ -164,8 +164,8 @@ ..() /datum/action/item_action/chameleon/change/proc/initialize_disguises() - if(button) - button.name = "Change [chameleon_name] Appearance" + name = "Change [chameleon_name] Appearance" + UpdateButtons() chameleon_blacklist |= typecacheof(target.type) for(var/V in typesof(chameleon_type)) @@ -210,7 +210,7 @@ update_item(picked_item) var/obj/item/thing = target thing.update_slot_icon() - UpdateButtonIcon() + UpdateButtons() /datum/action/item_action/chameleon/change/proc/update_item(obj/item/picked_item) var/atom/atom_target = target @@ -326,8 +326,8 @@ agent_card.update_icon() /datum/action/item_action/chameleon/change/id_trim/initialize_disguises() - if(button) - button.name = "Change [chameleon_name] Appearance" + name = "Change [chameleon_name] Appearance" + UpdateButtons() chameleon_blacklist |= typecacheof(target.type) for(var/trim_path in typesof(chameleon_type)) @@ -525,9 +525,9 @@ ADD_TRAIT(src, TRAIT_NODROP, ABSTRACT_ITEM_TRAIT) chameleon_action.random_look() var/datum/action/item_action/chameleon/drone/togglehatmask/togglehatmask_action = new(src) - togglehatmask_action.UpdateButtonIcon() + togglehatmask_action.UpdateButtons() var/datum/action/item_action/chameleon/drone/randomise/randomise_action = new(src) - randomise_action.UpdateButtonIcon() + randomise_action.UpdateButtons() /obj/item/clothing/mask/chameleon name = "gas mask" @@ -580,9 +580,9 @@ ADD_TRAIT(src, TRAIT_NODROP, ABSTRACT_ITEM_TRAIT) chameleon_action.random_look() var/datum/action/item_action/chameleon/drone/togglehatmask/togglehatmask_action = new(src) - togglehatmask_action.UpdateButtonIcon() + togglehatmask_action.UpdateButtons() var/datum/action/item_action/chameleon/drone/randomise/randomise_action = new(src) - randomise_action.UpdateButtonIcon() + randomise_action.UpdateButtons() /obj/item/clothing/mask/chameleon/drone/attack_self(mob/user) to_chat(user, span_notice("[src] does not have a voice changer.")) diff --git a/code/modules/mob/living/carbon/alien/humanoid/alien_powers.dm b/code/modules/mob/living/carbon/alien/humanoid/alien_powers.dm index 5b484f3522a..4592dec8e1f 100644 --- a/code/modules/mob/living/carbon/alien/humanoid/alien_powers.dm +++ b/code/modules/mob/living/carbon/alien/humanoid/alien_powers.dm @@ -210,7 +210,7 @@ Doesn't work on other aliens/AI.*/ /obj/effect/proc_holder/alien/neurotoxin/update_icon() action.button_icon_state = "alien_neurotoxin_[active]" - action.UpdateButtonIcon() + action.UpdateButtons() return ..() /obj/effect/proc_holder/alien/neurotoxin/InterceptClickOn(mob/living/caller, params, atom/target) @@ -332,7 +332,7 @@ Doesn't work on other aliens/AI.*/ for(var/X in abilities) var/obj/effect/proc_holder/alien/APH = X if(APH.has_action) - APH.action.UpdateButtonIcon() + APH.action.UpdateButtons() return TRUE /mob/living/carbon/alien/adjustPlasma(amount) diff --git a/code/modules/mob/living/carbon/human/species_types/golems.dm b/code/modules/mob/living/carbon/human/species_types/golems.dm index 0716b39bcb2..0f4d4629cb5 100644 --- a/code/modules/mob/living/carbon/human/species_types/golems.dm +++ b/code/modules/mob/living/carbon/human/species_types/golems.dm @@ -569,9 +569,9 @@ spark_system.start() do_teleport(H, get_turf(H), 12, asoundin = 'sound/weapons/emitter2.ogg', channel = TELEPORT_CHANNEL_BLUESPACE) last_teleport = world.time - UpdateButtonIcon() //action icon looks unavailable + UpdateButtons() //action icon looks unavailable //action icon looks available again - addtimer(CALLBACK(src, .proc/UpdateButtonIcon), cooldown + 5) + addtimer(CALLBACK(src, .proc/UpdateButtons), cooldown + 5) //honk diff --git a/code/modules/mob/living/carbon/human/species_types/jellypeople.dm b/code/modules/mob/living/carbon/human/species_types/jellypeople.dm index b62f969d1e7..1988641a375 100644 --- a/code/modules/mob/living/carbon/human/species_types/jellypeople.dm +++ b/code/modules/mob/living/carbon/human/species_types/jellypeople.dm @@ -60,7 +60,7 @@ Cannibalize_Body(H) if(regenerate_limbs) - regenerate_limbs.UpdateButtonIcon() + regenerate_limbs.UpdateButtons() /datum/species/jelly/proc/Cannibalize_Body(mob/living/carbon/human/H) var/list/limbs_to_consume = list(BODY_ZONE_R_ARM, BODY_ZONE_L_ARM, BODY_ZONE_R_LEG, BODY_ZONE_L_LEG) - H.get_missing_limbs() @@ -466,9 +466,9 @@ /datum/species/jelly/luminescent/proc/update_slime_actions() integrate_extract.update_name() - integrate_extract.UpdateButtonIcon() - extract_minor.UpdateButtonIcon() - extract_major.UpdateButtonIcon() + integrate_extract.UpdateButtons() + extract_minor.UpdateButtons() + extract_major.UpdateButtons() /datum/species/jelly/luminescent/proc/update_glow(mob/living/carbon/C, intensity) if(intensity) @@ -507,7 +507,7 @@ name = "Eject Extract" desc = "Eject your current slime extract." -/datum/action/innate/integrate_extract/UpdateButtonIcon(status_only, force) +/datum/action/innate/integrate_extract/UpdateButtons(status_only, force) var/datum/species/jelly/luminescent/species = target if(!species || !species.current_extract) button_icon_state = "slimeconsume" diff --git a/code/modules/mob/living/living.dm b/code/modules/mob/living/living.dm index 8e5578c80b2..234e4eb8c02 100644 --- a/code/modules/mob/living/living.dm +++ b/code/modules/mob/living/living.dm @@ -750,7 +750,7 @@ if(mind) for(var/S in mind.spell_list) var/obj/effect/proc_holder/spell/spell = S - spell.updateButtonIcon() + spell.updateButtons() if(excess_healing) INVOKE_ASYNC(src, .proc/emote, "gasp") log_combat(src, src, "revived") diff --git a/code/modules/mob/living/silicon/robot/robot_model.dm b/code/modules/mob/living/silicon/robot/robot_model.dm index 493ec9ef5c2..77605191fa5 100644 --- a/code/modules/mob/living/silicon/robot/robot_model.dm +++ b/code/modules/mob/living/silicon/robot/robot_model.dm @@ -484,7 +484,7 @@ if(!wash_audio.is_active()) wash_audio.start() clean() - UpdateButtonIcon() + UpdateButtons() /// Start the process of disabling the buffer. Plays some effects, waits a bit, then finishes /datum/action/toggle_buffer/proc/deactivate_wash() @@ -514,7 +514,7 @@ var/mob/living/silicon/robot/robot_owner = owner buffer_on = FALSE robot_owner.remove_movespeed_modifier(/datum/movespeed_modifier/auto_wash) - UpdateButtonIcon() + UpdateButtons() /// Should we keep trying to activate our buffer, or did you fuck it up somehow /datum/action/toggle_buffer/proc/allow_buffer_activate() @@ -551,7 +551,7 @@ // We use more water doing this then mopping reagents.remove_any(2) //reaction() doesn't use up the reagents -/datum/action/toggle_buffer/UpdateButtonIcon(status_only = FALSE, force = FALSE) +/datum/action/toggle_buffer/UpdateButtons(status_only = FALSE, force = FALSE) if(buffer_on) name = "De-Activate Auto-Wash" button_icon_state = "deactivate_wash" diff --git a/code/modules/mob/living/simple_animal/constructs.dm b/code/modules/mob/living/simple_animal/constructs.dm index 46762c1759e..7db0ef33636 100644 --- a/code/modules/mob/living/simple_animal/constructs.dm +++ b/code/modules/mob/living/simple_animal/constructs.dm @@ -54,21 +54,18 @@ ADD_TRAIT(src, TRAIT_SPACEWALK, INNATE_TRAIT) var/spellnum = 1 for(var/spell in construct_spells) - var/the_spell = new spell(null) - AddSpell(the_spell) - var/obj/effect/proc_holder/spell/S = mob_spell_list[spellnum] var/pos = 2+spellnum*31 if(construct_spells.len >= 4) pos -= 31*(construct_spells.len - 4) - S.action.button.screen_loc = "6:[pos],4:-2" - S.action.button.moved = "6:[pos],4:-2" + var/obj/effect/proc_holder/spell/the_spell = new spell(null) + the_spell?.action.default_button_position ="6:[pos],4:-2" + AddSpell(the_spell) spellnum++ if(runetype) - our_rune = new runetype(src) - our_rune.Grant(src) var/pos = 2+spellnum*31 - our_rune.button.screen_loc = "6:[pos],4:-2" - our_rune.button.moved = "6:[pos],4:-2" + our_rune = new runetype(src) + our_rune.default_button_position = "6:[pos],4:-2" // Set the default position to this random position + our_rune.Grant(src) if(icon_state) add_overlay("glow_[icon_state]_[theme]") diff --git a/code/modules/mob/living/simple_animal/hostile/giant_spider.dm b/code/modules/mob/living/simple_animal/hostile/giant_spider.dm index 883148c4b20..facffb201ce 100644 --- a/code/modules/mob/living/simple_animal/hostile/giant_spider.dm +++ b/code/modules/mob/living/simple_animal/hostile/giant_spider.dm @@ -337,7 +337,7 @@ if(ishuman(living_target) && (living_target.stat != DEAD || !consumed_mobs[living_target.tag])) //if they're not dead, you can consume them anyway consumed_mobs[living_target.tag] = TRUE fed++ - lay_eggs_enriched.UpdateButtonIcon(TRUE) + lay_eggs_enriched.UpdateButtons(TRUE) visible_message(span_danger("[src] sticks a proboscis into [living_target] and sucks a viscous substance out."),span_notice("You suck the nutriment out of [living_target], feeding you enough to lay a cluster of eggs.")) living_target.death() //you just ate them, they're dead. else @@ -403,7 +403,7 @@ /obj/effect/proc_holder/wrap/update_icon() action.button_icon_state = "wrap_[active]" - action.UpdateButtonIcon() + action.UpdateButtons() return ..() /obj/effect/proc_holder/wrap/Click() @@ -486,7 +486,7 @@ new_eggs.faction = spider.faction if(enriched) spider.fed-- - UpdateButtonIcon(TRUE) + UpdateButtons(TRUE) spider.is_busy = FALSE spider.stop_automated_movement = FALSE diff --git a/code/modules/mob/living/simple_animal/hostile/mining_mobs/elites/elite.dm b/code/modules/mob/living/simple_animal/hostile/mining_mobs/elites/elite.dm index c8f26feeb26..b29de2f72bc 100644 --- a/code/modules/mob/living/simple_animal/hostile/mining_mobs/elites/elite.dm +++ b/code/modules/mob/living/simple_animal/hostile/mining_mobs/elites/elite.dm @@ -77,24 +77,32 @@ While using this makes the system rely on OnFire, it still gives options for tim ///The internal attack ID for the elite's OpenFire() proc to use var/chosen_attack_num = 0 -/datum/action/innate/elite_attack/New() - ..() +/datum/action/innate/elite_attack/CreateButton() + var/atom/movable/screen/movable/action_button/button = ..() button.maptext = "" button.maptext_x = 8 button.maptext_y = 0 button.maptext_width = 24 button.maptext_height = 12 + return button /datum/action/innate/elite_attack/process() if(owner == null) STOP_PROCESSING(SSfastprocess, src) qdel(src) return + UpdateButtons() + +/datum/action/innate/elite_attack/UpdateButton(atom/movable/screen/movable/action_button/button, status_only = FALSE, force = FALSE) + . = ..() + if(!.) + return + if(status_only) + return var/mob/living/simple_animal/hostile/asteroid/elite/elite_owner = owner var/timeleft = max(elite_owner.ranged_cooldown - world.time, 0) if(timeleft == 0) button.maptext = "" - UpdateButtonIcon() else button.maptext = "[round(timeleft/10, 0.1)]" diff --git a/code/modules/mod/mod_actions.dm b/code/modules/mod/mod_actions.dm index c49f43d85d7..b8634f35640 100644 --- a/code/modules/mod/mod_actions.dm +++ b/code/modules/mod/mod_actions.dm @@ -72,7 +72,7 @@ button_icon_state = "activate-ready" if(!ai_action) background_icon_state = "bg_tech" - UpdateButtonIcon() + UpdateButtons() addtimer(CALLBACK(src, .proc/reset_ready), 3 SECONDS) return var/obj/item/mod/control/mod = target @@ -85,7 +85,7 @@ button_icon_state = initial(button_icon_state) if(!ai_action) background_icon_state = initial(background_icon_state) - UpdateButtonIcon() + UpdateButtons() /datum/action/item_action/mod/activate/ai ai_action = TRUE @@ -180,14 +180,14 @@ /datum/action/item_action/mod/pinned_module/proc/on_module_activate(datum/source) SIGNAL_HANDLER - UpdateButtonIcon() + UpdateButtons() /datum/action/item_action/mod/pinned_module/proc/on_module_deactivate(datum/source) SIGNAL_HANDLER - UpdateButtonIcon() + UpdateButtons() /datum/action/item_action/mod/pinned_module/proc/on_module_use(datum/source) SIGNAL_HANDLER - UpdateButtonIcon() + UpdateButtons() diff --git a/code/modules/power/singularity/emitter.dm b/code/modules/power/singularity/emitter.dm index 0a71c1e4f6b..39152ac9c83 100644 --- a/code/modules/power/singularity/emitter.dm +++ b/code/modules/power/singularity/emitter.dm @@ -458,7 +458,7 @@ for(var/obj/item/item in buckled_mob.held_items) if(istype(item, /obj/item/turret_control)) qdel(item) - UpdateButtonIcon() + UpdateButtons() return playsound(proto_emitter,'sound/mecha/mechmove01.ogg', 50, TRUE) name = "Switch to Automatic Firing" @@ -475,7 +475,7 @@ else //Entries in the list should only ever be items or null, so if it's not an item, we can assume it's an empty hand var/obj/item/turret_control/turret_control = new /obj/item/turret_control() buckled_mob.put_in_hands(turret_control) - UpdateButtonIcon() + UpdateButtons() /obj/item/turret_control diff --git a/code/modules/projectiles/guns/energy/beam_rifle.dm b/code/modules/projectiles/guns/energy/beam_rifle.dm index 1942417a1f2..01a2e87700d 100644 --- a/code/modules/projectiles/guns/energy/beam_rifle.dm +++ b/code/modules/projectiles/guns/energy/beam_rifle.dm @@ -196,7 +196,9 @@ else P.color = rgb(0, 255, 0) var/turf/curloc = get_turf(src) - var/turf/targloc = get_turf(current_user.client.mouseObject) + + var/atom/target_atom = current_user.client.mouse_object_ref?.resolve() + var/turf/targloc = get_turf(target_atom) if(!istype(targloc)) if(!istype(curloc)) return @@ -293,7 +295,9 @@ process_aim() if(aiming_time_left <= aiming_time_fire_threshold && check_user()) sync_ammo() - afterattack(M.client.mouseObject, M, FALSE, M.client.mouseParams, passthrough = TRUE) + var/atom/target = M.client.mouse_object_ref?.resolve() + if(target) + afterattack(target, M, FALSE, M.client.mouseParams, passthrough = TRUE) stop_aiming() QDEL_LIST(current_tracers) return ..() diff --git a/code/modules/projectiles/projectile.dm b/code/modules/projectiles/projectile.dm index 0a5600c6f88..7042f2a4423 100644 --- a/code/modules/projectiles/projectile.dm +++ b/code/modules/projectiles/projectile.dm @@ -949,12 +949,10 @@ var/ty = (text2num(screen_loc_Y[1]) - 1) * world.icon_size + text2num(screen_loc_Y[2]) //Calculate the "resolution" of screen based on client's view and world's icon size. This will work if the user can view more tiles than average. - var/list/screenview = getviewsize(user.client.view) - var/screenviewX = screenview[1] * world.icon_size - var/screenviewY = screenview[2] * world.icon_size + var/list/screenview = view_to_pixels(user.client.view) - var/ox = round(screenviewX/2) - user.client.pixel_x //"origin" x - var/oy = round(screenviewY/2) - user.client.pixel_y //"origin" y + var/ox = round(screenview[1] / 2) - user.client.pixel_x //"origin" x + var/oy = round(screenview[2] / 2) - user.client.pixel_y //"origin" y angle = ATAN2(tx - oy, ty - ox) return list(angle, p_x, p_y) diff --git a/code/modules/spells/spell.dm b/code/modules/spells/spell.dm index de944eb4ca6..5501eb73d2c 100644 --- a/code/modules/spells/spell.dm +++ b/code/modules/spells/spell.dm @@ -231,7 +231,7 @@ GLOBAL_LIST_INIT(spells, typesof(/obj/effect/proc_holder/spell)) //needed for th if("holdervar") adjust_var(user, holder_var_type, holder_var_amount) if(action) - action.UpdateButtonIcon() + action.UpdateButtons() return TRUE /obj/effect/proc_holder/spell/proc/charge_check(mob/user, silent = FALSE) @@ -304,7 +304,7 @@ GLOBAL_LIST_INIT(spells, typesof(/obj/effect/proc_holder/spell)) //needed for th if(recharging && charge_type == "recharge" && (charge_counter < charge_max)) charge_counter += delta_time * 10 if(charge_counter >= charge_max) - action.UpdateButtonIcon() + action.UpdateButtons() charge_counter = charge_max recharging = FALSE @@ -321,7 +321,7 @@ GLOBAL_LIST_INIT(spells, typesof(/obj/effect/proc_holder/spell)) //needed for th cast(targets,user=user) after_cast(targets) if(action) - action.UpdateButtonIcon() + action.UpdateButtons() /obj/effect/proc_holder/spell/proc/before_cast(list/targets) if(overlay) @@ -382,7 +382,7 @@ GLOBAL_LIST_INIT(spells, typesof(/obj/effect/proc_holder/spell)) //needed for th if("holdervar") adjust_var(user, holder_var_type, -holder_var_amount) if(action) - action.UpdateButtonIcon() + action.UpdateButtons() /obj/effect/proc_holder/spell/proc/adjust_var(mob/living/target = usr, type, amount) //handles the adjustment of the var when the spell is used. has some hardcoded types if (!istype(target)) @@ -507,8 +507,8 @@ GLOBAL_LIST_INIT(spells, typesof(/obj/effect/proc_holder/spell)) //needed for th perform(targets,user=user) -/obj/effect/proc_holder/spell/proc/updateButtonIcon(status_only, force) - action.UpdateButtonIcon(status_only, force) +/obj/effect/proc_holder/spell/proc/updateButtons(status_only, force) + action.UpdateButtons(status_only, force) /obj/effect/proc_holder/spell/proc/can_be_cast_by(mob/caster) if((human_req || clothes_req) && !ishuman(caster)) diff --git a/code/modules/spells/spell_types/aimed.dm b/code/modules/spells/spell_types/aimed.dm index 8e35be95735..c8432f4bb1d 100644 --- a/code/modules/spells/spell_types/aimed.dm +++ b/code/modules/spells/spell_types/aimed.dm @@ -46,7 +46,7 @@ . = ..() action.button_icon_state = "[base_icon_state][active]" - action.UpdateButtonIcon() + action.UpdateButtons() /obj/effect/proc_holder/spell/aimed/InterceptClickOn(mob/living/caller, params, atom/target) if(..()) diff --git a/code/modules/spells/spell_types/pointed/pointed.dm b/code/modules/spells/spell_types/pointed/pointed.dm index bf5d818f2ce..94676ba64ac 100644 --- a/code/modules/spells/spell_types/pointed/pointed.dm +++ b/code/modules/spells/spell_types/pointed/pointed.dm @@ -62,7 +62,7 @@ . = ..() action.button_icon_state = "[action_icon_state][active ? 1 : null]" - action.UpdateButtonIcon() + action.UpdateButtons() /obj/effect/proc_holder/spell/pointed/InterceptClickOn(mob/living/caller, params, atom/target) if(..()) diff --git a/code/modules/spells/spell_types/touch_attacks.dm b/code/modules/spells/spell_types/touch_attacks.dm index d492d0d792b..6267706074f 100644 --- a/code/modules/spells/spell_types/touch_attacks.dm +++ b/code/modules/spells/spell_types/touch_attacks.dm @@ -25,7 +25,7 @@ //Start recharging. attached_hand = null recharging = TRUE - action.UpdateButtonIcon() + action.UpdateButtons() /obj/effect/proc_holder/spell/targeted/touch/cast(list/targets,mob/user = usr) if(!QDELETED(attached_hand)) diff --git a/code/modules/surgery/dental_implant.dm b/code/modules/surgery/dental_implant.dm index 1fef114b341..ece7c70b8ed 100644 --- a/code/modules/surgery/dental_implant.dm +++ b/code/modules/surgery/dental_implant.dm @@ -23,7 +23,8 @@ user.transferItemToLoc(tool, target, TRUE) var/datum/action/item_action/hands_free/activate_pill/pill_action = new(tool) - pill_action.button.name = "Activate [tool.name]" + pill_action.name = "Activate [tool.name]" + pill_action.UpdateButtons() pill_action.target = tool pill_action.Grant(target) //The pill never actually goes in an inventory slot, so the owner doesn't inherit actions from it diff --git a/code/modules/tooltip/tooltip.dm b/code/modules/tooltip/tooltip.dm index 11ab9bb803b..83bbe5f2995 100644 --- a/code/modules/tooltip/tooltip.dm +++ b/code/modules/tooltip/tooltip.dm @@ -87,13 +87,13 @@ Notes: /datum/tooltip/proc/hide() + queueHide = showing ? TRUE : FALSE + if (queueHide) addtimer(CALLBACK(src, .proc/do_hide), 1) else do_hide() - queueHide = showing ? TRUE : FALSE - return TRUE /datum/tooltip/proc/do_hide() diff --git a/code/modules/tooltip/tooltip.html b/code/modules/tooltip/tooltip.html index b4d858da51b..5be29994cf1 100644 --- a/code/modules/tooltip/tooltip.html +++ b/code/modules/tooltip/tooltip.html @@ -130,21 +130,29 @@ //alert(realIconSize + ' | ' +tooltip.tileSize + ' | ' + resizeRatio); //DEBUG - //Parse out the tile and cursor locations from params (e.g. "icon-x=32;icon-y=29;screen-loc=3:10,15:29") + const parameters = new Object(); + + //Parse out the contents of params (e.g. "icon-x=32;icon-y=29;screen-loc=3:10,15:29") + //It is worth noting that params is not always ordered in the same way. We therefore need to write the code + //To load their values in independantly of their order var paramsA = tooltip.params.cursor.split(';'); - if (paramsA.length < 3) {return false;} //Sometimes screen-loc is never sent ahaha fuck you byond + for (var i = 0; i < paramsA.length; i++) { + var entry = paramsA[i]; + var nameAndValue = entry.split("="); + parameters[nameAndValue[0]] = nameAndValue[1]; + } + + //Sometimes screen-loc is never sent ahaha fuck you byond + if (!parameters["icon-x"] || !parameters["icon-y"] || !parameters["screen-loc"]) { + return false; + } //icon-x - var iconX = paramsA[0]; - iconX = iconX.split('='); - iconX = parseInt(iconX[1]); + var iconX = parseInt(parameters["icon-x"]); //icon-y - var iconY = paramsA[1]; - iconY = iconY.split('='); - iconY = parseInt(iconY[1]); + var iconY = parseInt(parameters["icon-y"]); //screen-loc - var screenLoc = paramsA[2]; - screenLoc = screenLoc.split('='); - screenLoc = screenLoc[1].split(','); + var screenLoc = parameters["screen-loc"]; + screenLoc = screenLoc.split(','); if (screenLoc.length < 2) {return false;} var left = screenLoc[0]; var top = screenLoc[1]; diff --git a/code/modules/vehicles/mecha/combat/durand.dm b/code/modules/vehicles/mecha/combat/durand.dm index 862f4fcdb8c..fc8f624e320 100644 --- a/code/modules/vehicles/mecha/combat/durand.dm +++ b/code/modules/vehicles/mecha/combat/durand.dm @@ -212,7 +212,7 @@ own integrity back to max. Shield is automatically dropped if we run out of powe for(var/occupant in chassis.occupants) var/datum/action/button = chassis.occupant_actions[occupant][/datum/action/vehicle/sealed/mecha/mech_defense_mode] button.button_icon_state = "mech_defense_mode_[chassis.defense_mode ? "on" : "off"]" - button.UpdateButtonIcon() + button.UpdateButtons() set_light_on(chassis.defense_mode) diff --git a/code/modules/vehicles/mecha/combat/gygax.dm b/code/modules/vehicles/mecha/combat/gygax.dm index 43824350ee0..5f23d21b82f 100644 --- a/code/modules/vehicles/mecha/combat/gygax.dm +++ b/code/modules/vehicles/mecha/combat/gygax.dm @@ -44,7 +44,7 @@ chassis.movedelay = initial(chassis.movedelay) chassis.step_energy_drain = chassis.normal_step_energy_drain chassis.balloon_alert(owner, "you disable the overload") - UpdateButtonIcon() + UpdateButtons() /obj/vehicle/sealed/mecha/combat/gygax/dark desc = "A lightweight exosuit, painted in a dark scheme. This model appears to have some modifications." diff --git a/code/modules/vehicles/mecha/combat/marauder.dm b/code/modules/vehicles/mecha/combat/marauder.dm index b0cfd022e0c..9e67af31838 100644 --- a/code/modules/vehicles/mecha/combat/marauder.dm +++ b/code/modules/vehicles/mecha/combat/marauder.dm @@ -69,7 +69,7 @@ SEND_SOUND(owner, sound('sound/mecha/imag_enh.ogg', volume=50)) else owner.client.view_size.resetToDefault() - UpdateButtonIcon() + UpdateButtons() /obj/vehicle/sealed/mecha/combat/marauder/seraph desc = "Heavy-duty, command-type exosuit. This is a custom model, utilized only by high-ranking military personnel." diff --git a/code/modules/vehicles/mecha/combat/phazon.dm b/code/modules/vehicles/mecha/combat/phazon.dm index 16dc0ce3555..643caf402b0 100644 --- a/code/modules/vehicles/mecha/combat/phazon.dm +++ b/code/modules/vehicles/mecha/combat/phazon.dm @@ -44,7 +44,7 @@ chassis.damtype = new_damtype button_icon_state = "mech_damtype_[new_damtype]" playsound(chassis, 'sound/mecha/mechmove01.ogg', 50, TRUE) - UpdateButtonIcon() + UpdateButtons() /datum/action/vehicle/sealed/mecha/mech_toggle_phasing name = "Toggle Phasing" @@ -56,4 +56,4 @@ chassis.phasing = chassis.phasing ? "" : "phasing" button_icon_state = "mech_phasing_[chassis.phasing ? "on" : "off"]" chassis.balloon_alert(owner, "[chassis.phasing ? "enabled" : "disabled"] phasing") - UpdateButtonIcon() + UpdateButtons() diff --git a/code/modules/vehicles/mecha/combat/savannah_ivanov.dm b/code/modules/vehicles/mecha/combat/savannah_ivanov.dm index c50314d7a60..3b28c661952 100644 --- a/code/modules/vehicles/mecha/combat/savannah_ivanov.dm +++ b/code/modules/vehicles/mecha/combat/savannah_ivanov.dm @@ -117,8 +117,8 @@ return S_TIMER_COOLDOWN_START(chassis, COOLDOWN_MECHA_SKYFALL, skyfall_cooldown_time) button_icon_state = "mech_savannah_cooldown" - UpdateButtonIcon() - addtimer(CALLBACK(src, /datum/action/vehicle/sealed/mecha/skyfall.proc/reset_button_icon), skyfall_cooldown_time) + UpdateButtons() + addtimer(CALLBACK(src, .proc/reset_button_icon), skyfall_cooldown_time) for(var/mob/living/shaken in range(7, chassis)) shake_camera(shaken, 3, 3) @@ -219,7 +219,7 @@ */ /datum/action/vehicle/sealed/mecha/skyfall/proc/reset_button_icon() button_icon_state = "mech_savannah" - UpdateButtonIcon() + UpdateButtons() /datum/action/vehicle/sealed/mecha/ivanov_strike name = "Ivanov Strike" @@ -254,7 +254,7 @@ */ /datum/action/vehicle/sealed/mecha/ivanov_strike/proc/reset_button_icon() button_icon_state = "mech_ivanov" - UpdateButtonIcon() + UpdateButtons() /** * ## start_missile_targeting @@ -322,7 +322,7 @@ "explosionSize" = list(0,0,1,2) )) button_icon_state = "mech_ivanov_cooldown" - UpdateButtonIcon() + UpdateButtons() addtimer(CALLBACK(src, /datum/action/vehicle/sealed/mecha/ivanov_strike.proc/reset_button_icon), strike_cooldown_time) //misc effects diff --git a/code/modules/vehicles/mecha/mecha_actions.dm b/code/modules/vehicles/mecha/mecha_actions.dm index 266a84a51f9..5cbd0c8c57a 100644 --- a/code/modules/vehicles/mecha/mecha_actions.dm +++ b/code/modules/vehicles/mecha/mecha_actions.dm @@ -38,7 +38,7 @@ button_icon_state = "mech_internals_[chassis.use_internal_tank ? "on" : "off"]" chassis.balloon_alert(owner, "taking air from [chassis.use_internal_tank ? "internal airtank" : "environment"]") chassis.log_message("Now taking air from [chassis.use_internal_tank?"internal airtank":"environment"].", LOG_MECHA) - UpdateButtonIcon() + UpdateButtons() /datum/action/vehicle/sealed/mecha/mech_toggle_lights name = "Toggle Lights" @@ -60,7 +60,7 @@ chassis.balloon_alert(owner, "toggled lights [chassis.mecha_flags & LIGHTS_ON ? "on":"off"]") playsound(chassis,'sound/machines/clockcult/brass_skewer.ogg', 40, TRUE) chassis.log_message("Toggled lights [(chassis.mecha_flags & LIGHTS_ON)?"on":"off"].", LOG_MECHA) - UpdateButtonIcon() + UpdateButtons() /datum/action/vehicle/sealed/mecha/mech_view_stats name = "View Stats" @@ -104,7 +104,7 @@ for(var/occupant in occupants) var/datum/action/action = LAZYACCESSASSOC(occupant_actions, occupant, /datum/action/vehicle/sealed/mecha/strafe) - action?.UpdateButtonIcon() + action?.UpdateButtons() ///swap seats, for two person mecha /datum/action/vehicle/sealed/mecha/swap_seat diff --git a/code/modules/vehicles/mecha/working/clarke.dm b/code/modules/vehicles/mecha/working/clarke.dm index 49454ce7402..7f55038ab17 100644 --- a/code/modules/vehicles/mecha/working/clarke.dm +++ b/code/modules/vehicles/mecha/working/clarke.dm @@ -86,10 +86,10 @@ return var/mob/living/living_owner = owner button_icon_state = "mech_search_ruins_cooldown" - UpdateButtonIcon() + UpdateButtons() COOLDOWN_START(src, search_cooldown, SEARCH_COOLDOWN) addtimer(VARSET_CALLBACK(src, button_icon_state, "mech_search_ruins"), SEARCH_COOLDOWN) - addtimer(CALLBACK(src, .proc/UpdateButtonIcon), SEARCH_COOLDOWN) + addtimer(CALLBACK(src, .proc/UpdateButtons), SEARCH_COOLDOWN) var/obj/pinpointed_ruin for(var/obj/effect/landmark/ruin/ruin_landmark as anything in GLOB.ruin_landmarks) if(ruin_landmark.z != chassis.z) diff --git a/code/modules/wiremod/shell/brain_computer_interface.dm b/code/modules/wiremod/shell/brain_computer_interface.dm index e0244f5b017..2990ebe568e 100644 --- a/code/modules/wiremod/shell/brain_computer_interface.dm +++ b/code/modules/wiremod/shell/brain_computer_interface.dm @@ -226,12 +226,16 @@ src.circuit_component = circuit_component - button.maptext_x = 2 - button.maptext_y = 0 - update_maptext() + UpdateButtons() START_PROCESSING(SSobj, src) +/datum/action/innate/bci_charge_action/CreateButton() + var/atom/movable/screen/movable/action_button/button = ..() + button.maptext_x = 2 + button.maptext_y = 0 + return button + /datum/action/innate/bci_charge_action/Destroy() circuit_component.charge_action = null circuit_component = null @@ -250,9 +254,14 @@ to_chat(owner, span_info("You can recharge it by using a cyborg recharging station.")) /datum/action/innate/bci_charge_action/process(delta_time) - update_maptext() + UpdateButtons() -/datum/action/innate/bci_charge_action/proc/update_maptext() +/datum/action/innate/bci_charge_action/UpdateButton(atom/movable/screen/movable/action_button/button, status_only = FALSE, force = FALSE) + . = ..() + if(!.) + return + if(status_only) + return var/obj/item/stock_parts/cell/cell = circuit_component.parent.cell button.maptext = cell ? MAPTEXT("[cell.percent()]%") : "" diff --git a/icons/effects/mouse_pointers/screen_drag.dmi b/icons/effects/mouse_pointers/screen_drag.dmi new file mode 100644 index 0000000000000000000000000000000000000000..48e4fce85f7a47f6dbf35267945d64b0cf05a50c GIT binary patch literal 326 zcmeAS@N?(olHy`uVBq!ia0vp^4j|0I1|(Ny7TyC=nN=YXB`&GO$wiq3C7Jno3=9=> zRF4~SH7H21UAXyQM1Gfh6ZaN# Y>3t^de`FVdQ&MBb@0DpvZ?EnA( literal 0 HcmV?d00001 diff --git a/icons/hud/64x16_actions.dmi b/icons/hud/64x16_actions.dmi new file mode 100644 index 0000000000000000000000000000000000000000..ae81ace4d55a2c26a5c12fcfd6dcac28ee029db8 GIT binary patch literal 3404 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 UWbCdm^m_!%jn5jD5}j}V9|Ff!mjD0& literal 0 HcmV?d00001 diff --git a/icons/hud/actions.dmi b/icons/hud/actions.dmi index 6e2421041106527cb1661e665377d04134f33011..f402659424723212062951d189a1bff7a8cb3434 100644 GIT binary patch literal 8753 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 AO8@`> literal 9016 zcmW++1yoee7hYiLE28oNY3W>G|NHx& z^WK}8d*{r|{pNo6o_S|tb+uIp@o4Y>005zys-ixsg#P#9V4=P}GS%~cW*~GR{+32Cw1b56UGY?%n8$1y;e;c?qqJ|9F@3c3q~Z}G-?VkA!Xjh?Q3oV zjyS!k(ax^&&ug2uYA~f(ds5BNVJ7|YJmOrBiG^nYRL#8wZgq;_Zo-TAr=AnAE$xS z9&@rhW|hu~Csy15024q>QQp8m=QuaOpTcksDLWffDoM+XE04QmEBH(B8=tIYB08{3 znk78^yrlpQt*IZ)$0FCm@2}5uT`cTL#%c!&#Y_)oxv%n^1>t;TEU#6Kv)Cdd6D^W0 z4jzm2bN^{`?rXP@Kfegc3vEd=^EsHiTlE^3xB;hH)fw;g)lmJY?tr>_gM^PI9KLX= z51re6R*G5O@h+;LbU_Q{#WZ z7Z`(a^ZtG7n)Luc`21n-j+52)fJW_X?ieZXTv0FQk4c&wh0@jS+17dA7g8_f__oMt zA0PjA3uuN(`P5%JQ`L}-3 zv$G-+Ox}37wmS*qt?S{;68{OYiBhb-2%*;zM?M?LU)${H)kr(tNw-u_N?!jGkIptY z+!evTJ(fF+sSv&Wg;7?fWF?I2Qjo&T7;6J6bXt3BSXq7I(KAd!KIJ$OHaa-F7~7RrGWS_xxw(F3^hz zeSHvqq~hW6qPMrVV~6!4vDfygHK1dunH;C4Ro9*49uP`G0!(C!o%-1$g;>7edw5h3 z`>k%OtSsQs^+;SBH1FD$Jj2!M)!&UpNJHUymua7ew*G5&Xp>!|TgLJ;@YJpM*l{v< z3x6OnQH|+t&IS_=jRbfH=bg$&O-Vo_JYbJGG&D3YG6F=$CFLJ;$7fIco_FLmhF0LPCc~kb(RqJ$h?XH}9bWS`Fpy?vhw_$@ z7SA4rNdlzAz`ERRD2BY7ug?8%0_thO37a~9l>gvugUnil?dM#Yyw>H^Dt~*dVO+3# z98m-42ulN=Fq`v{yXpD&Ly@M9O9xy6HC6*B(eBGmE{4iN=!(2Gj7x1$s5;4BYF=My zex==fHRGJ~0*ToUuLDb1%FRA!g;$@YuSDtLL5vcSs$;uS&}YHyt?pMP)nnRg9U*_5 z@9@SH@tMjEcwnaVQBi9sLffpKM-(Q?B@YN?Zh3|JZS8_hGa7d2z+Nq7hunPVh`_Au#oW}p3jk#69n0UCtG^3md$REGdrQ>RhAG9?u zI2PLN{RWOdH;veIm8B9eib`#Ijnj1!o%-s8j9=fx~(OE->7R#hZfggcy%$Jt* zbV$7V>tO+(aqQpYdfadVX1ZY`{B+}J6_i_3b>Ua!wZRJI`V^%fQ>P_Qg7=vEo$D@n z?XAJHw{w0+89Kv{va&32SUezIY@T-`d?Ma`3-?8J zP0KTDftmO7XGt14eFkhfw^4X84ukl&7uui4-8T2SLSJWF;P4EWspQlA8vVyU5PdLt$a$uECEWx^UNN=nR!hbBMP;L4B_&|JsO zGr$S$*KfY7Q2tK12wphJ6blz<8D5Mq10s(LO`G6`d#;ZgTYs|Mu0U(sF{>#t&+LIB zrjgyc>O-TWptp_AnQpCB{WtH|9yIO5SK+-j&$&O@3|#mYz2~a3>}n8OJ6Q5P9&N%h zj#9ZmbZ4T z4w_9T(&nb=M1}j>7cHO4Fg_zEm*%A=esS=71g%>e8muxH3YU?p;CseqY_#Dh0`B0^ z3Q-FeA#RjkpTGyC(@TtpGrA18R3t?`p7%+K2M=&(dq(EZ65(A+%+Ff!O^TkCKB8`*@RfDj9y`m$VME_SZ*E>!-w7 zm1wYhiYhyFv!Mk{a%OQf3W6wtjc7;`0x)FC;opJflMmg|e8a)7hVVQ`72myiEyZNm1M^e`##&TjP6BEvv|B7Xie!M}< zx&(m}^t1(f!5G8`4Q|c%@Ad;BVTbHBM%}ytNl5nheG~!~LO&<*m@Pl=QtgJU6!&kFE@HVVsrUzz$W&0@UYwN9KGLk z8D-K$V#}g~r3VOurN-lh-?8M`(rM?jMwaw% zRBPR{jK$k5Z3ev9OB|YyY3c<3uqCqL692FpN^gybXVtFh-}1bOYmnjD{Y;^bf1@It z(`9E44RnkX2-wQZrXV50;zc&^=CyiGep5mMGQ>SLeIaDf$|I}qxhvPLDXdp$&=LuP zt|6l|$(XsHUvk470-v57lmSZnPl|iaibog#9{Kgt4a_~5_W(NVFNP-V6JfisY*XL^ z+KmtCAU>5J{GJ0)v*MNQ*391KJMLngFZP|By81kIZjCHDPK)8}xa6Sf30aJAdGTCG zw;af3$hhu);mU*#+r|Lk{19Gjj^wbxG|3JN^%KsrJvDM-!*j(4DWi4$m8E!Sh3ek= zzPXxPN4mE_ujSaw+(l9fr|iGYlKC(Ki#K?H_lH z_De^y&ah2+Ym;A9N=n_|n!Sqa)7s{$4_!XUFu~-YjVVYJz=XN~$72U_HEX00fk0mK zv`WiB)!D6l>5@Us+k84P}HH7OHylR4|Nyxf9VZnPFs3DXeyNUrZx zjo*VIT;Reg&$<|7>*Nb>IP|M1JgcaRz_G04Xye0$qR)<(eAt~7i380~of#W~uozlF?? zi#~)Z>4#wVCN4tl@D97Xbl1oRFUfJT5R`EWE=~Sx&dkmAnFd_)hF5{BFW=(I_xd2YHU2L&$IO;4CEm4zV4_0>Agp)d^L% zk(w<%+!NYocn=v_zjAVBXqrzseKa+BDxc0V_rkM}z)x7x$WJC?xZC`k@m4`gD^A$v zH%{U0wzOUqr1fQ3Z~m?t#@GR7C$f!`80X-vQ=b3EzIJTX;|>O$RG`$~p_~3oM=>=w z*;iDFhmf-GDTa(~j9zylA|m?w`pG1t_aBv@v<$(f_s6|OzvODqC!4VSA#=qB`PCQ4 zI`Lv&(?jU4)S`*z`dG3dO;HIJ{=x@hwzEGBr=qAV2B7z!?9Pb~rWfkoVNaLpBxJIH zt4!HlR@*Z3ICZ>6W-cjfRz)Q_1AhzIjbvmD%RW9~Kg`$bOxL%}G(9SMT6Toq>TSAZ zJ*#^V4f+2nemuBJQ{jN|@bLCT1hct^FEU#LB?r&!{#LJ!rR>~Y(qw4K%cG%s@W9Q+ z35jLsXFJ?ci_v#<dk0h5uDae+WC2u1otOI=;LnoDo( z%b3!p(XpQh*E4RoQQ#{~Ow3Bt1|AL>s6GVqGuYVV{7UdymBT&1m7}BM@ADQI?E=-?)q35K#s5R3 z&hZ%&8Oi9#U0!_*zQU$<6^zshKkez{2@rKwjvj$UZc}`rM5wB2hk>+~ zQavXXqgIBxXzo5NB5qE0QF(-2L?rd;5%D!EOC5DmM+vdlt+eVA_$K9E2e3=}9`!nl z)_L#iqZR!8nT$)$aT}VNdal5%kqDc!stY6jyUAG(Py@*dXd<(cJ$Uj!Y~ zSU##yI$Qth>XeZDTjWiw{+Q~y@oiRdf|0X*Xe*)r4S28QyTzE4NfnqZkdS?2Q}5wW z@)kvYnkF%65cqzI);50Tv{W`1t3=sT8cp1{<;%NL1-SnDO!=D*WJ*d(ZNg_DI}v9w zv*wSbW7KgISc%=E4}wp<55}%3{FQoiP#X!P6Df>c{p0cEkP3M7GkYLKUj`iRe0{Q} z(@PovJi1yuZ1$4Kxeb+$z$U&<9d4V{G%3vHUPPyV&eH6hm4qKUozO$ciGIFpD32lV zjq84!3X;dEm7A-c56e5czthG3-m?*EAJ!kSXuEmV&zQcsnPmfk6z}fryzoD@%7Z)w z47xVGds=CpS#&O&p{M163*Y=ryfQjBB)oJgtzU$=`gFp=;R%Jt(kR_2;Ro=h~CrEKCM9-KYBb#J4fm~Ey_NSFu~ys zf}8hE>d>I4U|h_0SLlrO+rVJv=RITgi^NV7*EWAYp>wdcHuF;rq%Ni>C583=G}%MU z2$7ZdPH|PDbPf7CM zsNFRY#SsR(eXF;XaD!bAR>=s1;b;8HQSTA1f#~^EB7@_jqrFa5Kf|Vh>+b%qF4@o4 z?@#UzLL57qGyD?3J$k(4z5XTDF3FJbDCsQv>9j8~SP{Y2)~uSzgxOY3Ji1q2GerQ1 zG2b&a3Z=D{Stpkv*#QKp(hIwDr2QXFHBD_BsCqA;;ghUE&U!g4kM7c6V(-ePyn17h zcr`Zjp$$=!?n*lqk$ix4&v}^j2yeb%dt+%zzfuQHR2_|;aeg{O=!O4W&a5@9GOhwY zUBhc`(^}E%41C2^+mTg7!){0~G=vQP!-*{g71bLHqYu3N{I0F;1hs8-5OW50SyuhF z<_p_SNRWpzToUx+#pMSFn>aN2njCx!*{|+@EhMxC3&viriMAmcuaRVv)tnJonU5j) z8z*#qcsq>3wP*F_0E0iYs+yYLA0n{YJW?t2)Qa2DelHAK2K~&rK)FUbtHq)ms#z7gL_+h`!&ZZ+Kd zYBrZgmhLtfs%vMdXUx|UVSEpat8ymloRQFmnM!Ma#E4j>=1l?(rB^pU8?kE>nJpvR zlvE03b6B&Q5FmLHqhFuHW~Vujc7Qn@&=da7jB8_u4_1ZLtj6nhcppL{dWZrsa%7@@ zsOUsCJwZmco2Y0UR`zKf8}x4%-c1eoj`H^1gnjXvv z&2BsoB+rWb@}&bYuA*KFU)mmgU=rE4CcGA*T=A`NRqJgq9pRM)Q93QPdm4VxqGEfG z#_CJfPCq%ai46%`v`_h>^xlEBOS+slz*3CDpLj3FmC5sg+O$8$Wj_CSa41wl{g5=8 zU?Ag4;8pqz?6SN5i%I5cB<<9I_i;2#+ikm_h101jY{bG>xJ8__?#Mf?3*uqgm)G z^~VZ}RpgikdZ$h&Gt=g{J2vb(v+1=tC}XQ|756OGszPbDi1TQbz2-(;fj%EcTk1W<(r&Lh6B94jE>oC&OA{?(v0>QgXH>%Oop)4sYd zS0T1pyEwVO6%0aF8qhk$;g+t1Df6DV{iZ3v=?*dl8F$Ze(s%` z*j&L$7SL*D(8OJbg~<>dl}>)Y1g7H~>JvAQ%bH;9^mpX|?DM1gY|obh zC(gGxB-Q7Xz^_ax=ai8e=sSPM+jP43-3ulixg-n{z@?>ytMOo}kEK5u;U%7*PO@SRvvNTAiUV2n5aKB@c_;1G|^pqCjxog7AUVlLXd&Q=^V>H8Cs>0IiU1 zSB6k%^zWo1ekW(;cvI;;!ocNftV<6M|8@pgptMCgeuCBS!>fYH{mBosWsT31*oa?6 z5E(@rk^5&`tpCb5HC>}~d;p4jlcd(84Gl3dlOBm0sBy1*4uaadVheymEIO?QSSo`#cgo=H?#%9 z2hF7_OYBMt(MpwtbCH}^xLDG8C@KiDVk!G$k5 z!}|%j%L~AT@h8kDVw~aA+`DMYgg9!0*25?2Kmx2Ng>c=!9U^3~;s@pLfSxdoFt0GO zb&YlRrzP|>;u(W{7;BlZzqvLUxuGh9Bu_(Hpo%n41Imf%QwzGRD^#lVHfj-VNCg;u zU;~%s0FtcGN@%K%wO}^9ohUhQyO|IggeSmmosWs~6uEh6VXIUiG$14Q`dim7xhjL0X)c4G0!H*N@gF(? z6SVL1H;U#pNjffOOM;nSnEczCo_Y)p$C4O)*Hoyk9X3Rsm9Nm_f4lZpGb zBe;3}gu3I&(_gKPqTpca#dit{;iY-y2TN=^Kynggl41digZrz=146cJmtXB1+Iiju zlg}O97bf;Jf8}UP{V9=>XYKas_>-dJLin3=QCy{(chM;{3ch>wD5=Y%8Kzs%)PlZj>rkGGc>c7-IAztv<#N5; zIL@a%YcbCt*Q^XNU$?B-T7ap`xe14{?V?G=As$Jp|FhEi#G=fvU_Udu))(}{4X&^N zBlWR)=`S63ht8Rm=Xi{=^HdApjT^M|`qv!C5B~O)l<@GxAvdKoqQyj8^u^AAfw9cz zzaCIQ{si<4K*XB8+a<>c)tg_MIN03FT##G+5SWN<;o4x#r?g?=Wp-YiZO_zp z_nANW0vLOSlV3?__9PH$>feg(!4Sl^iB_Qe#*tE~4)0E5m=iiUfG7U2YEyWII6ZQa zvUS^XJ58G{kzq=p6y7vs@$UGOEPxvB^ZD!=WDT39AMX!0oR{R(N)={*5c$fI?WLmL z2v!Li73nhP$LJ{*KMb!h7y5mOq(Z2X85F?C^vCNue0-iLe3pb-xj7N>R{?lEiFb{D z7-Mm?GJF0m-p*VOwtIBn7n9DYUjNqwkqP^pP$lI%X$_ZNj5QR?sogI+xz3_EytS`vN7-+6WL;%%37_^_WI-2@505 z4^{c~;K-wfQr7;9$uIx)(j=Xm?t))_RCw$b6ADv5pzu}005u}1^@s6i_d2*0003DdQ@0+L}hbh za%pgMX>V=-0C=2@k-cuiFbsre>nVg}FZ#E7DH0SOl2;H|iLr_34-{>^eg^~H3VI`f z4|n9<*?wKWr@Ot}CbJ)$gSdivL_N563+R>gi!tN-+jO}EG zK-}zT-^}n}NVv~`tiTgpB`+(Z3Pa9i%^nkG(UlqeQW-2^n0ZdC{$RSjQN< zOC^&OR^b|S!5Y9ZdZbN%s0MHib5Ox1Am}1=y-W`=y0)w$Q9mF-rUy1XO^C>%oBtH? z5aW@?8|HQ(a=}z1i2e#=L*7u&GOba_LsG$v-5ueY=Mtk^>rpb4p8sRd_IkhA%WX2h z1biu{lS@_L000-vNklZ)_e#e#gIdF5!|mA*y{wxOYkFv*<-!;8g1>PJpmz zNlsTmkU{03LIR1Tl`f}i;=X_veS!J{Uep&5ytxGFTvaqhBG&m(t4pYmqe}$h;eQWZ+(UD^!4>EG{R_qe}9wec(A|x>^D&rOvXn>MhZ3F-QAriM6kbn?Z*f> zGBN_Jzp>B)jEs!b3!zF2_LrCauO!ZBX)Ck(Qm%L{wL+(bOPS?q@9tsp3Od|Vt1ey`$VZULhU>Q z9N1)Tzr7n+*8$AV0jpMuV|8cTo^4MjQ~RI1E$sWymGLNFYXZ*C0XM4K3^84J*AG3a zM4&8n)*PXA6EJxu`&yH{>6~^%jyF3ewh2e9$tMwI`!_w9FTazo#`BeA)&~67ZRtiH zJ)*x>R-QHxDNkF-2LY)}t(zj}&|OR9!?Z}Zu`fHG))6g;=<@yVx-&apm5%;8nXhvj zaN9rY4PAIwY!^Z|D(W<3JnG z0`(T7+227HC*Tm0&WGBuPu`B7TL=M3MfHwVcOXZ*jDK=I`OX{ajXR+Y0m=5Nm1g9V zZDeh;bm3j#Yc~r5D%-EDEeb^R^EnEkBOvLMwS4#A_#5htNM=hw7paKnLO@<)sLG@2?GpX6l(!8yRNHb2^3R13@X;et)oP-? zX`p{?dY(GTcc5uiIMgdhIW{jo%S3b`psjon(D=MskGH6CK$4DtT!j+w{0PvzGI?C3 zzUgQ?p~%zb4qRnulQcFj?!X~-jPh741e_SLFGIcES<_F?#nbnGBl_%>fFh|`a%YZn6AwEwt`JOp%U$L(7SpmyE<8DN+6 zTkJoVJeFlYjeykVxpC47^>6<|7I-)9RkRLAZy#YDe8cbWT&wq;FR2^l6swK*Q)j#Nx)sJqt7n+nh;Po);DI5uOz!(u&O#H z=aZdKm#6I=cx+GlmXzfjc?cl)I(4@AwK@_OPCzDV3-0|!tt{~KB*au+3CN%A(jfDr zM?^>CQAAq+ILbb!<*5?C16702uJX|Xt&>qhL?6$B^AeC0YYRI5|LIxo*gpF*0nxK$ zp0A{Q`kW7FBNYL4Z9!A}GzxLzpnV=``ATvlpvlZw^Ili2|GIWIQdkqR6zms4K+PHs-wLbZmV$j z1^W*6p9V6gSruvDLbClP9-L@7hK30C%eCJWqGJV>sSq72s8j_93@TN@0fS0ahz}U- zmuf%62MqR0wIAXG2K%Mj&wdiJ#N*Qi`{mkCe->P3e7dqE+ut*-K5w65@-2_3;QBvG z`~J5+ZWrff5!lxgu~dK<7R@#$pcX_s2r zuT{Ua-dO(J(x(4Gcy-Ln=n@~1LT{w$!n;un89>C5IeipZ(-J?gDEniFfbVRM_Ai|_ zvY&Los>G+$spxj8%6@EFVsrdlRTMA2ZxfkIWuK^e^40Wp%BpClr;pl`*q8mWLjbbv zCmj%|UVJ)|k9Mgm0l7Ebp8Ibb0SomPA3iu3jXzvL}b#>J`mNW{QvM_ zzy0>;IIR~saZotj-#r&aMm4ancEBpcr&FmB?NS{9$q8iw@-@Uo^n!W2vgL;C>*brp z7XfAa^gofyWNBaRfK`i6$CbBTYD++B^Kr+ce{xz`i|7SUT}ZzcNUmU$^YdYUO-h+8 z?W-NI3i0VkM3qLhOSyfbwkqCv3sq@QY z|LQ5>Y;tqt>L~!vIoVG-VBYw2v>tUY1SM!o$6fEhyzNp_-f_quek8U}Tn7HVvwrw+ z%W>R4{(a2gN_rl7?0<1ZZ0D}(&!H-?2m(%B0H%%uxIOBGOdJQm$ZTof&$?h$bf*0? zQTndc=Ic~-1Z-5hH0%7A)u?C(as+Rb6#F9A8_rY^?Ye^ZoxDLpTlfVRELym6B)qi7NN zFy&@0(>@XCrU#?Ipr3t^yzZK`zhaem5@P#2IL-dpA^mlZ_KP84Ju;KDbs?Zh+!Y&n zBp@eWL+syhOMIKAOQ+TO<*~ozfo!{$_KP9luGOO29h(=;*QYrhO{S%3O$!pego@cOt{2Ro0n6>fG*xXrAlGm9i#FdK z;&VdZx)(V0dU5ux^YSzwut59%3CLBC4$8Ec2?*eomO=e_AHP}bY#<-1n0@~Q%&RIB zkmU3Gy4WvL4Ypq_0adEl9T@DFYu`_Nz(pLNF4!;Eeuxhk?3Zdk#0Ly2RUtZ7P^k(I z7*wi)0|u3<5FaquFV%jC4;bv1YCpsW4E9U4zqsF&)ZSfiY?uNR?8kQPo&}d3pN@;x z3#-nr&%!ClK97K4D$^O-;aPCS;v(YVm|Y=Ij<<$)Ic7hqM5~rE;BwIF9#sLG!GNj z(uRn5@>ZcD33Ny8)%M5s=<{6)1f&{>)Vc}4cBlA|*#s;*J{>OyC!c)2Zfh%70^YHY zMGV-NbV6GKrnNJ_^9ry@dSm^WIpCd#^w;=ogX(GkhyS^G8*p|Gxb5$w{WV?jpfqni z7mrT|_>E7OdVWO+Xp*mqeVH(_HmwA{x{y3}F0EZ!BUIk+&&$S%Z%RRD0s>KRoOTM$ z(3K3wWYI|t+Ysw!8PugQ5XZA{a=^PWRx(-GhD|8Ca{rtn;3 zcuO+?DLhwE@#*-T#jE0?2)JcN9SMKu8DOY4P67Hc=;rg;2E1b*@P})_^()LAJuC0L z5o*)OY(l|Y1eC*b0TBtYTddgURj?|*EM=WPbvWJwo4OcZqmh?@^lApwf>Q206OoXp z*ePAZ|0g;paV6j%t^v2L1m0rp@BerNSp7%94_*Kc{f+p1_lv;J=fzDxWw=9Xi{>Su zDVZ()_jUxFs6|Es;&=SSaR3L!XFB%jd+Pjrw83<7`0A_hau85;gVjkW<;$xf`r+jt zT`s5X_rHFHaK7tTM92Q>-=a3)122p1=S{$YpTw_~%aMnGS@a`iQ7{()TW%25Esv5Z zM@aG=pH6#TjfAT6^Q>BvV?mG2CkfjQwezKx*O7o}`TpmRftk-D0s;{QRoCVrpl!R< z@cY^k&?H81k@4wdxx_Nevd<$tjLnOEy1|IBI|kJ+umSWGEMgq+2QNgQKd()0ktrzW z?P6a=zhipNv?o703OW<8p!jf^ z_DP(2fS!D`@2a%BmiL1BKV8@HFwIv!uS(;9y0Tb911k8GxaAr>ZC{BJu6Bo6YUEWgQDisB-30QV~I#Q$CfU_EqD6o!f!tdEozkA3y%u{cMM&%{RNhtF8=HeoaVTs^EY@r7AdJP^k*>0V`y`Y=!uM%h-O|3h@Dh{nE9#;sf#^MLD7) zW!iVOh z|NZNdX}|g+f4U@l0@5s53RJYNBMPMB5FJTtzr9=JJv%4Xn*huiE$q44FG`jK?CI&r z)iD?z9=2<1wzL7b1pHoJW8o=Xl05HGi5ie%dRU*=Dj^RZN1QZBf^dDowyY`&+Rvsr~kNfS$=SB8cVKA>g+^Gcv4Id$%B38UfRYn3skX zB4AzQNYAV@JO8OscWTo2SJ28!x+HS~-t<7^d=tk3^hc|(zSk#?qqZjaO^Q(;2p_ zNI(Gi@o50-gcClq4tVNHJe`g`vkt&%;3-Etm6{PvV{n&F$DQxwq4;?x*@E>QgQ9vK zt3?jj(kmS0*2e`2O$e~%0pP?zaovf7(Q?qq(_+gVk<)MJ5mBz8?PBrx5aQbdBglNQ zb`=Q-055D7+YYEnNXP2oVjL&WW{m?5ZUA~Oxu*}rcl89MF*q6q8R`W#q_pvV`!jLP zP;We+-|PpzyDNSyOJj#bWQEyT4LNI_4st}I-_%7>h8;EMr%n>})`9Fsd8G-6h;mP{ zHlgyEqn)gAJnCe)rb|jE;Ot!d$CJs&_04;QqZ0X4=b5a`Cp)V0kW{^0q8}j2d-sd+ zvYV>v1jMNLOe6#t`9|aCxhSg_OAhLqE=f;7>V>|sJ8EmWMpv4hvugv|#0Ui9?NL5X zNsefv$`erfoRwy)tZ_VYP}g)xdIE0P9JRS<--Hg|-4#)g^xtbDE{?*@*q!6be zH4oCXSO~~_x%D>TQX(J_4X;q=BaIHf`?=_7tXe5L9)LahWc#LyMKC?g+M=}%3OSz1 z7-7{3_{@!LOt5y0ddKT;^hZG5I378uYq})MDES$5`0%yl_+OC`Qb{rabx%a{Mv3>K zyac?=#ss-&?C%BY9p@lm>Np<6j2Gv0mvKOoG*aHTY33y$pnuEIVkaOU=Y#xIq;{-6 zPUvW-QsaO&X)3AOWDn{cUI6{^G%nri3V8b1yg3O20qYtb9&YOC=~>7Vlg4^NY9;0aYGVV-QO~E7 zFDK;UZ&RWOqm3XSe+0+(F^)`CjDXe-lvkA?AW?(|z2@&`BV`e7&on!)zzCsBlz^qE za`ORcc8e}ORny7X%0&~96S`jR@no7$`!-q(tK!O<4_J>6$J-q50Exb{sh&<6EF?ai zY$v77RJHhcRZ@r#xXkUBtq>nDXxS-5#|kP{$xcW~>bdV>EBp`t@?fQ^G1v0<^z;-` zp2ea{IAG6x4=m7&t(1IC=z=N zvUhAfixDYV)!WUfgI){H3Z&#RpVQ z;~AJ~#bc`{lgIs*E4Q*HX~wk7pSCbn>rF|@A8}NFyh=)&11D=x_qx^Pr+n{TMK z95qX;f~1>gVPJk5kFB1>z)Wl6#tHsWh&8pNJ$F>tjiw(`TQ@M`_D;eO+bhA zG8G8uB!2{??XSK_whL_uI6fLxzuQg$N4i8cJTMA$Y^_zpi-3Sfx&Vv@0;b4+8&G%5 zhJXV(&nZKJfKKw?222fF1H(4pC@?-c4WLyx+9&`_C(fyoLL1OY`3b04>#3Ag8?e^f z9hhlt|9S@|J|1U1;Kf70_U6gf31wO!Ajyn?y0;Z&#Sn?*TibdZ2du)3nEI;}0s)O+;)mRRgluEBtC>Bp4e=}k*>2K`aQOKvOa_q z2w0asHq32Liv3UDb9-Bni9K%Z!2<@Jgptqv9%P7h=2g6phQ0) z5HOOOfG%$004jp0{{R3ySfe*jCC08*s@e+~dWdH_(M0BO?z3>g5Z5C9M%06>5Mb?N|e z3r7HGPylrRZrxV^e*iXS05VV=-0C=2@le=!iFbqX!>nnt0FZx=$6bXt9%`XV7%)~_WFeuvo z{n820vGjIH9FV%a(B6L@zfNa=_&&KAxlt|t!@oa0yKbRg1})xRT{j?I2YD1tKv3mw zCR_q#xMJJ6t|xBVeR17|A>%{;u>v;?BSo1QO&Ch4Q;C?dh&`Dh-t3VSV%@MhYKtMH z)$T^v##rx^Yayv@!eeg_R3}x_o z7JKc28l6PyaUjNnR2 z7kV&8c@u^9sHXxo!RgzaWV(bPfJ&Tnp+|tpM7BMsnTWegMey5Gl$j?8(0Wlr5Y00R zBEN=UL$T1S*;X>EhTv1#%Pk?-3Hk2vA1y&|o{0o?K@bwbXd**!R=N^3w*<>xZtjo~ zLNJ;a2YCs*nK_vV^BmQh z5(IG33m_7FBC%Zhh`%?q%c}U7lA!DVY+&S95S;PzY4Rol%$yH;f)K_RkO`7lE(y9; zo};@z4TNAe&k@uN!8OJapyY$_6-~s$2EjU(%P8~&U7)z0z(1xYs5S|fqhtm+NN_F; z)K8RP9zQi$4bH#;g57a+C5R#s{FV*GFHnLxHqbhY2Q@&j8ay@radFBMbaBEHLSi2d9grcol}V0aLW2aIg|;Ec4Af07PN|N`#l#1l7jl^- z3rFzK%xQ`{WQ3W`gvmmai&=c6hvu4KGn+|nxJpfs7e)`DxcML@Xz4h}Ot)Bq^@QfE z88vY8!CrfA!ur8$l5K+Al>cMbBp2v!LU5%0%@^j~h5H?pHn#N-dC1M>)rAmTlbm0_dvE=&`dyzun8x{!Azg^HHywh4epmgjOF(Nk57s`>u2VwN-gF2G`d#(A zEK@@*BCOg!uT$}7lmY#&`dt*_s3k#*CgLG1@M0~osxRin1PVOU>u3FfQtEfr z?}AWAGf;<@>~(@*Y5&9inu0-vPsZHLT0k_0xdz*yVcTc zmRi57ewP5&j#?9RaU%O58t^@cnKT-}>hTUyzts9&^}9^4q&O1ACBa!FXg$H1BN!M- z^*g^prTfeh@?O)s> z8b}?L87E)d;q~>E>w!$rcOgsA+1Kc$>JuJof~})cf-f&G?)2l8C;0PcBxreps}EXA zumO0$Tj2;2M{NjtAACFX2#QhsT{HTYp!EpxNPUnxYU6`0h~Fe1TnA$8LXM!M=Lp*1 zgeAddsv{756ZGJ6+!CbD6svw&SUpeBQi8oGjcwl~ea^K`wsJAm^FFAF53izuY84Asb9Z2{c|M)dY+JG33Uj*g-pT{+|>iD{^IHr ziQ+ANuRW{3`Ks+B3BHT|<_q&jeefXPyU6xV&yB-Li#HIwYE-yPOR znOe~Io+n>OuvfoJD-)gaHKX5pBEN@VRX(c;_Ud;IP~OrZ5ES-y?Is9CZH?BbJN3JD zbD-`L)cRb45F2s?d-c0R*j}`Qpeu4wg0XK-u6}dc*z-`8Cn>>o;XK)SYSyjCu)Syp z!DL{$uO@c8{)3`dC#CHn&xOYo3trwzeaTlEF%$gd&z*Zx)NpZW6-{~PTW zs13nvpg?f;cQ4fMQY8BmAsB89KaG8K9zm%5mm|2=h`IV*x=U^x%LK!Jpc#VE2MrQb z!3ikA(m;VAU!U7Ejs+h)dM8%F!qF%$$Iyt7A*h)ud%8nwec3Sl7NR&gpxePm2)f5S z1_Ayv?s-5+HXx{a`6s=@hho)TOX9`bD3b`XAhKM;1}G8$;CUy z!Pvva7$D|izJ9lZpgvXxR=eAnR7aj7)CQ{j6k%umZrcX~K#`yzg??pRG$-@HUj1&H zp!N@$LM~2?N3=4g5Z`V{M)OS?JqpJss5i6Ju~f3>pM9o zh9DZKO;cUE!v4Ymg5Gj};0XHH&qRX#{e@Q|coGOMvwvrEUMPXR`wL})(W}UrC+Jli zL9}niSjFRVM3M!8o%;)Ag8TIw1f6}0KZp0`OhIs2_Utc|3GUa6K8Qv+a-Jk;a9cP` zCg`?p;bL^%wiOq)qvN2|#grfu#lCo&d@ro25MfC$YCJ&D+PK#|N2B;i&I9A1dv`Or zmQnsx63llP02-}J1N#I+)E>yWu5PudiV}=BVN^JkQCy3E74^ylxl~mUME`m z^DAIyAX<1$f^4cP2&NE@2z?B1L}6U~kB)=VWZ@vBs*>QGV%Re@W|Lq;s7J7`XH%6# zuqALQ!Jb}7RU*N}N%lb(BO_7VnGXu7YKx%X5-ky+26hScW;4tVV~JpT0oiXV7YT;% z3`emzn-R9cm*Ze6$>}xKX!-qMYT#7}hAUTF;WI&4i<kbZH$AXvzd$ZH(!`P>VyAt`48RMEjs7eS?B-&002ovPDHLk FV1mRYv{wKC diff --git a/icons/hud/screen_alien.dmi b/icons/hud/screen_alien.dmi index 307c41075efb0393592910d9c1cddca02cbff33a..88791da700ba2efcf9e7377b335dc8d4c3cb6f09 100644 GIT binary patch literal 20520 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 E16b(**8l(j literal 19547 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 S`U!}JK}T(!k5pOvQvU)7&jD=! diff --git a/icons/hud/screen_clockwork.dmi b/icons/hud/screen_clockwork.dmi index 896bf43b6622875db284f5f45740d45ef7261bd6..a0aa0af594eb854d36ea53d80026c363d5b8c7e6 100644 GIT binary patch literal 18821 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 literal 18064 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 Hr-UW|i*ni` diff --git a/icons/hud/screen_cyborg.dmi b/icons/hud/screen_cyborg.dmi index dd288e6950a2c9eb12fca0c031aea5412d025c40..0b17f099607f95f7b91ed431367e20a88965321a 100644 GIT binary patch delta 5374 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 R{Ff8BedC^XnWjzH{{atcb|(M; delta 4044 zcmZ8kc|6qZ*Z$6kku=t#Y^5Umma@)7B0ZL3NJS${GBS?nf6n=Q&NBv{@}xm3`Nc! zvc3k%`?6o*OMvoiGaoQ|sVPy_UudWVXEY=sJAxcG<>oQIhbZfZF=HH5|v`ZoB5!K9bL*}=8yS-lh zrg|BZQZ1Rh)q+!=FM_~4QP)pu-wT=xhv-({wJCxCPCV;)^-`m$mTLz0fOHVA~ zR({(Qy;%>Zw@U@E)^6^;QAE)7=k!Wn-LI_I-J^Dp$Fd`2$8?J116&5i-@ko)-f)<| zZbEI9ui_2LbALZxIpO^R!E7fJL;&@H9+zqD=*T|Wp#IjgM z3~P+Ov9X_kT@S=Ka?OMUGJ*HdP|@60@1CoErW63y`(tlYiWa(KXh@v36#MPl4XYUZ z?)WMSwgB(JQX8HTT;O&>8YN7E4(segHC-B+cA2{)(2k`1Y_+9nOpTBbq|IAKAU zUhMMGbUA;-SuT{uTBQYtNljZ|{QO$0CW&e{YFe*h`EgPsTmu^);n?z{(Br~Q4Gj&! zJ~PJ8&{o0=p`hjcI?u5`jZIIcU5(1B8TEp>y;Pa*=^~tr(lY+FZbPh0%f!qc>>&cA zEO#SxZZJ0Uq>TBIj*XzE;JLDwb;i?hfO2&J-H30OVD-$i+LWnePCLWy+<}%*Fu`i9SqzhoWnw>> zIEHX*(FhS&=66O|;}!Q>H)QE=VpwyA^sofU*vJUCGHz%UL!(C2y*YLm7mNTxZ3pQV zHA#~MhHcX!(JWRt!`dnLmZY2ivEHQ^^xn!k;VIePJF&>CJ%ZwJvo%BV>wZB=5G3l9 zlIK!heH$DkCCHrdxPANN#;ZSoYh2Avo$1k42vzQ-#_#%SOrAR~C2Y|ZDH>$? zO>AvFolF}X1c2LE?B>!r!n8ydDtUThRk}AI_XGe2`d9HcUH`J#S@d&Ntec;LKeH#| z9IWr2l>hMHpgYK5Zf<%oSHOvEw!|M^I^~3=dNwk~8TX4$Gbc@pmsvZ|AGoG`lu-1| zhg=(>v;q0k9S2ZxvAorMVPBxD19N@i@$#-Rr<3I4Ui;&nc8r#yfxDGiaOPsEcos{Q zRdnS3;%8+~)y~_*z1m8^uYT~?idNfiQXOQ;BH%F-O43ZNI06FYT)y2<+1Z@O!F~!^ zhww!w>++7UqxZ`=2jUqFF_RDyZyIu2uknw|4miUdlo4q1Q1-3V6()b`Oj8lu;wj$^ z-15vZd&3W{F(O*_c6J^f9SU>^c7_+K_J8r&b&xXeTuO3mKF#P4}ZA$zc@%LScJg{FZ_H4eD<(i z78Vv-Sgh*2iD%JD?C0v)7bCF9Q(R5ig7^fjqzzA@@A0UQo~jSD9B7@WqXv}J3RG;cs*ZmeqrIh-@kv8jf({1=}V&(J;Yx0B^OuM$H64ccUQ}EbCyGvNBJ|h z-4b^-f!Ku6{01LNIT zhDK^;X8XeD!YHjU7$7Vx%*vfSrLUhHar1Rv9t_E4y}?a1H8rg_KY;yrAQM|ThcD}q zmTl$%!^Op#z}bihQ(&t15S8eC84jzz?*Uzs`noTpa6!HK_tt!(mAsi^ zVo4UbN%MK>{|C{69-W1L5m3XbyX^_2POijH*d?$zA?2>&MLyDf>7xAnZU(gKZpw2b zT|+}(GrKhxp)0rV^UJd{TvLK;nN@cAaKp z0BrWE)9{SIIb>kf7Ux$d1YI!kC8_VB@goncc2A^x?wK6uXg}yb%U?~QAm=k4*(fGX zA4uo+Mnc{DhRWLPrK|PJh2rP>Jf;;Ra5HYFOutXW_|gdh*F#E%Gj|6k&@9-L96;PR zCu|TrvX42TtH~#AJ|(9UjJ+O3p`;UpnvN%#w>yEauO)YTEug3{EOjYNlp}gU=~@08 zz(&zmeH(fSWbtVmeK}9nE}5zTnV(l zq0QOJc%151FhEuVqWBe(39Z`N1_rUe7e|aYU!u$sRF-x-CH{PuI5V&0+v%E`vY$0*V$E)dX(FDZ*U+9U{1G;7Gdt zBc~rEH-`lxvbYe7%cO zQHYGS)}JRW5?6NeVn;tDIxzQvsAXR2tlVbI?$F!6q~+y1JfE0G^TFU#G@q>VAc)*l zjCZVAEeTo%E$f^8r8v}ATo1I$OG3|?8v;=Dp+ycO_G-gJ?P3`<1g2kx5k zGi%rSP_b?=@z&N>fJ8t%IaduiRVmgO&1$(0wT9Q;tU8{QxOGVg4c;33`9l9YsVAT+ z8Q)e~C^QM?dg;c^&-)&KX8nT^)|ph{IlKL#|8G_)!%50w_2aO2nI&Lr!v zcARxqj*HWfG;Wh31pqq~gyxOi;I(kzM8e-SodGFxy=5E3ndTnkM%b789g)7m)xuoc zOH2>?mWaemAU$gw)lI3^YneOcaAnPS}B*18df$1tu`rO4}&cqE!Rz zUQU|KKIdiEJ)A>8w>c!v0;<)pA-=gX5pSODP8@{TvwN9UQ`P6y>3%Uh>YTV`)@xiz zH}aSZ&sNou=o;-95u-e$TyvTy*_twX^)_|W`?jn8+TN8w3LsRRojM>frdsCE ze~s7@0o}d4_V8XL(uWQO6w%-RwZ)4&$cuZ|1&KjQ{Tm54SZ6q}3Y?%w$=bpU1rbH7qFuQ@3K2ECHu_>_Z7GqU67RafuHyb z$Hi~+USAs1qs(THl? zmRb(|IdGSjAtEAo7J+=cJ3jpA3R!B*syv3|TAa&LjsN(opHgh%p2A1YMDKTqfJ2EZ zYN_2jfKU_^Fi?U@3h~#OW({1w@?C8JoTje$sBQ<5yLJMAHl`vXY(2H%j%#@b z7Rj}<6l&x?dj==oTz}mF%J#{ZjV0LIIT!27Sl50i;J;~nGvuJfQ--%{GeocEUYNh~ zQh%gi*HLmCMZhVa@8#BBQt~G1&UH1c8dK_0GULg0v#)(~W8U-uqT#-&oE^eSVZ4$b zN4OXSCu-a@(0m_l)bLF^pgWUN@XAju`=G_(SFCLUd%eIM)_V$^@x3ZqDTapcE>+*p z?9Mv0YyLjWYj6C=3(mK7WNlgcm-lNpQ@!@X;Q}f3D4t;b(JS7qty(?;oL=lxZdb)O z>0ofU!GN***{Ccey<%q374D!vDMoV4mlSS&DrEQ8;qOJ%y0JEV_QJyxF44+O z*d<|Nl;0SW^5$`q%q=odR5!g109*xgaTU8##K8aAm&5}%z%@JmadcRTSqg8_jXS2ZEYYB zx1>McUf5C#5c~8Gl}tR;5vbD9pu?qqIiW)M?9qVC=aj(7+5PAVcpa@n_SyVt8go3S zChr#HODVT8bY4_}NT_|WcXNCzLLjxEKuw^R(7}O6>+9&2&RTEhnDgYTucP^fPdMu5 z{?10k!p#6@y(T+26K>iedGGTzLG7=joeuWB3-+fsQ1|qQTR*xz>eeF{it7uyZyeSbY4vA<+>I@*i9JoaTbJ=&k4E7JyE^FVLK=1%me zhQxA$>{GZ&Vy0DXdeFIQ2Zcdx*i43k%M<8@5sp0YEPzvXZPQz9v!cH80qvfhMoY{N z6lS|}w(b)UM-xh`=4F&nkKQq1_=Aqer*@<=D}GWCf-WrXKj8>ie`&&En0k}8$n?ak z2K6~Wk*JN1%0+=0H|#l8+#utdx0dF9R4PTCv1BJ1_y;&osY0?cCWue&8c^LusT(TL z|KLakR3D^kCJB_$s&@yCsG%L-C*@XJY`UI${=FPUZv&T}+@7)4@Z{9UfG>V%geXTG z*N&uvF5AWM9$i=s(mjskg5m#0shi^Hg zb$XbPIo3G@l*SU8{;6;o|I$=zi{{Yh>q^}_6P15r;h5VNK+hhpIrxr>o!?*Ir_st; z;ts#$Fo-`nal)Yr-Q2tm%gU9}3|GqjlRVVV@4@no6Cu@n-y-d2hoTL!dD>6Q;z>$N zZYiPXZ$j8yCqzSQc0+LK?yD%!XJ&*S@URCH(`PdJT~Ls1^doh9Xd`mlc=iL?w}a(l zXH<`PTu|DvKpA)V6Jw>E2#sBD(dhTj!pPPcSYjU5k-s&gDCL!^LJme?>ETe49>@(& zDssv*@^({SKA!9>63wxHd6d{~t-rp?8bkXdcX##|_H&_z<@;6H)3s@AIW99Z(Vf=% z35g0~Cy{b4!4L(e%7lks!&A9Hfx+pKkzRPg>`g|H^g4v!txn z()S4oaGb;F4G45F7{cRZCts_{OI?w{5@3LReP%Ijg9oK~JT*gH-&MZqZ?^sE_xHH! zF3AHrYzKhiIu1$WrI~Ag!aw0h_mbL+^v|&);x6HjWoi0UrlSkdbefBlJr~BO@^pX> z>Z`<5a152xBR^ND613?wrB+a5_{gmpO)`$J?LAWGe$?ly8k}VJ<)JK! zUVGK6YJ0hk=4o2ooS@2KaSy10M%T0CAydB;u`7JIyP2BW&C5T`ebB)xpKS5tJTas0Pk!tT1#?D6%%kD3>~sV-K0ukLK6doEb%<6agw z0h6`iait34x>XPQ>cb>2@UMF7!$#lSd7(&F*mzB$o{Ap%0XA=o5d~NpzJk8sE=oY; z4-=CF{dK_RfKXiOAivJ>ngmWfdo5`HLSdx@#@^_vh{&fxX+?oc^n&r1AAl=x# zo_`?S7(;|{Ef*+2IcshhsA%H_DNZdLtN?Ipckx}?V{E+AS_FQuGynehX+m7y^y`JK z-$P_O;ca3{p`3*Z<@HC`P^m+=yy6LK)`bS5`+gG18t^6sdpsE|=FxGKl&;0+55 zhO?oCr%B|Eh0ZkYtPa0H=Yz1 zFeTUU6=1`9toUf|r-pv(ZEwpWiYEK9tKUiV-%avLUZISuD0vKg3ycJB!8eJ|X_lN# zUjN+L-3_l&qw*3$$uwT~rq11-TyY#UxJ+~6t$`Cfjf+yO2r0c(m_uydlR*6_R7I){JQ*(B3Nsc!8to>olT4e>&3mVjyKkJFrVDLgLRdiHs*vSmyO^tD}D=iFex|9{g7t6#RR8$b&<8djUKQ{n1uW1D@@fKm3RBcyrb zZypU-H%|7wI{d|a4&nvQmKP)cv8tQfWVAR1xOU$`g9mey@%xkK3Mz*SVrV|yV@Vs|$=;}t|FY4x1p0`CoFNz*MibqI%FEQS6u`l^aks$e# zFyd(P*Q#GcTzxB-v}&J8D;Qb|QSHuTW|7Ia^Swt@3fpnT06Kzp?-9f=y|}SLI;8o< zf6?e%inw~z$s;0PKL<|<9$hDkq|Y!(D-?mt%nZGIRwp0lDeDBDnA)86s_&A(5n8y< zBo!DD`|#^~(X9XfKb~JNYg&FDeg)h9-#RD6z)a#fS2l|wy$}7Z>jq$7HuVF0%>oV#5K&x?Y;A1tf9z4_I@V?I5d$%slj zNbrrvwp&XnSnkUDo*>fnzhUVAKq$g=slj!hSIMeUMTf7Hp*@5+=C@dWf*a}qG&6CLYL;yZP!> zzWv56#zqzrYaRD$@s+0K8|mfYyb6)S3xj!C=J{q1;id0Onfpf1SH#{g`M*!fWz`Rw z^0F?|RxUVLR>z}Bq?cv5lnRWCrgbkxPG^86-&i5)@_l%C*vH|jC}M-c>6fui80bE;eBA;4-Q>dfvn=HTh zF8*w}hsFn=*igbw!w_fcY_ph|A%`dW2sh0CAgL#3d8Dx#us!U+{(oLn=pD2pc}i6* zqF6VS+q}cPI#l=OfGW1nplrNV>+@%Za&==#^8amdt>OfRClMx(R^e#`{htT$&D_qU zpw~U`yQz}yBx}*?DG9Q6JiGnNY-{(x4Uis5n}O(6Js?6ilD$9V*P;sno4Uzy5P6z9kbIMxj!EIYn?0l0M2e%6B)`8bNrg1;2IZf0Gt2d z;cEjyQ;(fWchV}SCwkd(v?70NZ>p~!=ZfgfQO~(_S5>)d%B^0r*m3ElpgtNW0vBHu zPFwz(yW6_GnUlD?C|K{0?(CM)KX;q3%Yr%x4A4Me*-g zMxTFI6nyWKmGw+QQPrses~w2mHtWU9+V3vS;xN8Fcu$|0t@n9~uopfm^O`B?e}U2e z17$nczjH^C@aC`XAAc;}B!e@D%p7_jcnOif|AYP=6uFl}~U!Biu2}Jh;(h8=6Fa@%g39sy^si@F8%6`-P(gEc` zCG3j?4m00)E#j|j=|^_!Q4PP2?!cK#?&pxr7;##*CVw1X%E87DmAFaVl&f#zRg>ZJ zv9*~Cr6+JWyJSUl_|rwQ%K-f1AX&qKSXx^8B0aVnK}m{{FV0KmkXrXLA=V z%uNnLA+?#=*z>v#V`qmgrX$oyeu91G8=DM=8`XrTfD;v z>>s-B{Z9Em>Ye!-zl-SKD{bm!HZakrY7EDBB!T|6u?&SNhc+Ew8;pD8f z7-fe%_meFg|5E~^>%dMFz+4xQ?(mSt3&JFfWWS|2*_}AJFggxSFqR!vG^)1>j1_mL z%LMG5W8?3QiZhwJryCa%s`Y*UGD*$9u<+Bb)_SZkS_(AB-mbOlPktuYAtHM5#v{Pi zmP?rxNROZqDnGjUjEURIEGvySs0MNngQ3CCA`&M&kk-+bE6(QiwzEUv`_>XRa`7;g zI2wlzq#-d`!ygZSX{+y08Fc(;EJz!pB>?j}NOb|^qkcldPnv+;y=e-QLuFZ6$4?)IIrYmXU`u&m>C=M3cA?X;Yn+2apWZ~9XJ z@4UMSZpmLP+LLK%Ux8QteE(9wNBDkzr*-qNCC`RA^@a*0D*3@6l;;5XpRu*CdX)G| zUq8F0($YRlj)tnO#EfV8$UWkcPLEkpp^vY=Ey4{$A~~ifo=GD}a)$7t z)|yDtT_4)x2m!khGfR1wf=sFQoFFraq)G?*wSj>FWSauMv$JDqYm1xq3oj}Rc0QvF zr=~xsBaz;=8}`M>NiRtBj_sMW?8K;w*BorPA0Tl# zUe>GNzJvh_hentnO&C?*_?&<7`AwdTwI}~VI5{Ak6izNoGYtFi`J#EN7S#~GiCd+> zT@~lUc2D`6k3yi>?(WtA`in92UCNCKT(>&)#>h#-<2o^kT5h2kCG1*nhafpHW1U@g za8Fl%D%w$(XKA73?X}0y-003bHSOymFbsh(Kon)Aw5A8EZy^71K8O*K%1nPHp#TmQ zJm;Ms4F6|OkJVn=9=DJ{=OM+ zc9QjzE-mM#Zd91ye;esuH}zS>@vk!I?+4A>IiBWEq8ucwL~lCRW<96gf4ctYi-VUZ zyrQ>Y{Tqj?AESSA;SO9@0?3eIf9E40Mt%9;_4f6hPydqD-V)U$-cO94CVF=1QY*@r zk^tU=L0ncwW^F%L95=3d3&d$31jX{07b67JorFkDD-}AcaEU@VTQ_*ig$uZdSCUnT z^fjQn6(50dDuI!Ae^OQrOWk=vGAy$F5rpbJK=FS6xF=sQzz z@Mi9?ABj!P52<*UPA;iAOFxr)n3F{}4m%*o<(Ir1D?!uq@mXUYvEIrkDCuWk}Z3b+b@Un;J>{M{rNwR z`k$ogHlImekFQBu{el-(q0Sfh9%gT+-mz+|w4=*Z`c z`)yCGD#UFyPNy*R-d(RzSuy%sIpch^<~fZS1L6C&=Gzn+Am$r@Y{-O)_DEc7<|uF6 zmzb)TVZJ=lCUp`2r+gHovNYoOVj}l>sXEXM?JV0(Syr?4WC`OaLXw1&;Q!cs?Hp3_ zc(~;_{!PKlRGdJ>d_>D-ruEAkKi1^jqluE1vZgE&r~lQSzu(#XN3E`3L5*R+JdYN) z`++$}i+kPHF(Tn^|2^S<@BP6ge66Ez|NNXfB&7R(Jt0ZS;-Ue)4%j+u32Ag`IX$G~ z^*eV>22`jdTF|5ZciLs%9jtUG2-v2eJa65-xrylV?{BP2tuC;=xXe?#O4=~0ITO~Q zpd0?7b~h-Ee|38S{;jLWc5FrK6>2#>cdib=lju=rv% zbE`PQGl}^k^3(8a(;=EkK0IlBaM0dMULJYe^2uq|=lNVS@CsEH9!@lWSnl3zGF62Z zf;?|$%HLmXbAE0akJtTDs6`>WFW`5h`=OG_>(|G$H>tbsjuO^#5)iYsTa8J!C3+vu z>xFjGx9=qToc>br__Oh{jGPszb}C&Y!2tMPk8$Tk!M@`!(k9sI+xmgdsTaRz$TY%Z z%u_kw!ae{kEiDA{W^G|-;+v&>D%6fnT@=t<^IqwSI-J4t;$$Fhl@{89{T2f(kJ0(EZ=cgL$XXjvQSn%Tkl+OchcA^0=J{q`-}Ch ziWs9bfGG_jIBM;nG|=Xeej@C1U}}b_$;7SZ+X?EH#Ut>cWx0Ib6 zu8Ny_wn$bMyM(Ko@vHZEsgj_s=Jtu)m@;4X;c^nlFluu5RQu&$kEpQ;M__wCkk(ps z8Twd;+u?fThd0sDvYP}JdlQ3wBfYPnA+d*K7X+r9G^mZLR+M|ka#enOa1D+@GB6lr zSjQkvlZ@!Zhd3j|bGHr`Qfjx@rm&S)63_Xj z8bXnPpsN($8i4FCss%)RT8PyY2hPsX`=onE!~N!)xS}?=GEOtASC_)ZdgE+GqTZ~@HCnB5QTjEhAYi4c_j{{QDEe3(ybq!um}V8 zTprU8?lZ2kbU|K9jZ{ai1cuA0#i2P^lzn(hMuxj9P6gpB{7{$?+D&c%1!sG}ZXI-xd7QxsRQ%&&iU!$qF zjwc*sL%4UYoUS;M16O@O3)s&{LfVp3nUlaSEUy!9+Ck~`QpRpknz%*=jcK_hUi&3k zNN3;kY@*hD?E=uB(#lDK8hSLfffBH%-W~N|cZ_@EIdvx->V^cJ^je0_Lx^-aHv^nG znoz4M^V39|1^t-c#JxPaA$aV5)Z>sqC6;!kT^EeMK5l~9K>wNG6@iGOa}c}i+_3|$ zjA2Gcfaj^B0r~8#h*@VW{uMLN`JC4kyZ4>OHPntMx`}+`$-Xy@mu*94O6L4I+Uu45 z0r6!xQy=Skli;*m6OqXdetv8=^?60n(cGFiuj?0qnz!Jj0;$h`R-W*&X+yu)yWL>s zMIGU3K(38se?BZMY<+#5ZEFSp?iUP5?AYz-fIpU2R?4)vPmrnjUg_FHs6)3dI0bET zi)J+LQW$WW(xT5HEe=Sk(0m#@`ke8Zi9kxv$Pip?1p}vlfv)6>P7u_tPm6I!RzAy4 z)aMYB%!La1Q-N9xPOB88@D^$p&zu_iz(StK^ zw!i!;@YqnMZQA{a`fc$@F*A;CY(M;NzObJOa<7@Zx~NChE>?Cw&6BwpS{TjUua-)l z<#am4l=giX6AsB|m+B;V&VE6YjW|5a=OHK@ zI?d|WRlnz}Ll|0=8riDkS_*iMzxkG6UV5*1E2E;KqHtM*?S7A(>9H0CN z!YJs2o{TiE zO?GT`%~NNKB_M-*rd?&;o~f(2kF&)0sb`9Tl3v7hXDkO*u%p-FxYqZ5B%%U#e3)5s zcukuA<$wWsv@vWy4j8x+DhQwA4{Lo9opz5ty)wp&@7SGfnD^MJ8mIrXx=Ox(5c2KO zJ*{7@AI?6kS>jQrYm>#tl3$8HPGnk`t4`pCtPH>>&lD2(22gyh)i$%iEJkmlCtei#u)LS6fZq`(UX7vLdx&V2iUxxUB+?cNcp21{gPRT^xI3qms>Ki2FtV zoTa6=H?ikvdU~42c20EubgaY()Dpg4?3zhS zu&sRoD@e`Ww-Y5l@j~WdJoLXp%3fI2NBd#G7hCsY;dQ1xM8%nDc5XOW!kFA@F7)k_ z%5@m+)3Z^D>-{i!XPP(I_G=g#lhARK%RqMq^Gi_?sYS846VhaybAadEP`9B?*kMl9 zd8B*2O_YK0s4z2A=1ssWOD9*ebPC#5o-!&l0Y=7tbJX0Z-<2-**?_ST@?1eqh z3}d&a!37l!EC>OeC{}|js&#i(1fzyt#05hxOgMeX-k`R4Uit6b@e^N89x~o^uJfsT z7UzF@XM;#tiMYitz0aNpYE2EQm0bV+#@pK_xstC7ViYy8clH~4yp$uWwZ7!K0a(wS zH1C~_3rYqPA$b0gZPV&2+>k{KOcZdMwt@n2A?w7u3q8)++-K0}R#vhm(|F>^73|G{ zX|5=b>peQ)Bl7z7UKj}f{C$0Q&yIiko&Ej$$L-|u@SmK)|8bZ~*nF=*kD}}WBJ9&E zr7_hh=qb}5eFmvIS}*NVj4*bg6md(hZ2s=KL^fJmGTOSdex_QQ(?rDXM24W@XF3LuCa@{swV#wftHR2Yl^ssjQ5e@(c|zIo%ap3i>^{TcphAR zr&46aTc#jYvNIqDm;Z;{eJJGCffHq<-0z3pPqehKUQUpN5t8}K(KN={tSI8CAbtdQ z<29`-OP+>f^o|?%0`Z)0lX++}Tf8#|q|O;~j@qk7^H2hl$&F87Xz%qAa(9Nfe0@&+ zTJ`tW0pz2k(EJa6<9I(wD?PX?c`-^xxO1*}@hC>7hZKCk<9 z)5hk~5|oKs(o4+{)t;V7X?sO)Z&^SHDW9(7J<`l^!T>NWFvyX2guO=`iE-Xe;8m_O zvyPHX;}}r4knC||{`M?P>lfaAj-=ueprO>H9fu_| zwOriB-xJu#{%Sf?YyX)yot#P{G`YdW?09pu=Xh1aa&R)X->6Vi2u+g(BiKd+_cO!L zARc#^MTq$~d7ffGR0S6iGaHGG*ODzz=D!*HGM`vgz8HOb7#v07%Gfp`#2~<_>w^ns zjL*VWfB6bpbl@Ff)Sg}*+N*ksOsR`Wn8xjG0R$`?#t7#mU*QEqOt#(i54y;4+xfyZ z$olshrb0}rcRtT|2z1a!pPEgC7}_N9hC_wf=_`x4`F-CpMmQ83{!y|%viUlKsnBC@ zK+Yr=>a$fpQDbZS{tBD}N^?Z#CC1?NAQNLCqLFu#T4}+Y8mLjNVa;l4qRk*(skg}k zm>8o6Tz96lE0SSpHO2|+LLHq`R z8;nww6p{`UW1KZJ_oljaD7{&>kjVqw`Q91Cg`ke9TmFHpnZm*Xy9=({vKu1u@WY-9 z&N78WoN%+L!F?E3nc7RHaa2>9HQ+}8(eM{0(m-iXLPA(1G3;rOGC0Jk( zabb51tBh91HzCJ|n_F9hLqjh;fbn7j-4<`Llbvau?@+z3buxc)9T&a zcNy*R#vFR#x@x29pw=TZVJQY@7GuOUpRShB`h5dY?*V@YF)?C2rCti~W521f;iQBw z9fOzyO&i&Vq6y6FJ{VFHFcViH||> z`&hTp&AxC2#f)wP@EJpiCyArNA_UPP_P-%HSP%SJ%FYJ}wkS+P(3jxw>OxZgR(i zkmNJB;B9n!!PRts85uS{M$-1j?n>BLSOj>BhRDhfGyo~+krHjMX`F;{ygM^;nax&+ z+yU1%wI6{sm%HFXv75`+KFi2?T5AZJ^jLfwA1z&);<5P%R0{Ks188{7{b*oZOMBRi z`Z89IEB*3)Y6XZ4VSckrscwes#GAlIUqBOGqn_ z?9Y-WToZXXK6Rp^6Fz35WO$B}A6zcW%EVl9M&i@{B8YU93uRmN3LIxAB;E(q`kUnj z?+|y_A9&Ui5KDNCo+ZQ7w?qF42dUn`)SBK^Evyzyj@urW+;6x4vbbpB<2G6GqhXVP z_}gysY;hpIz-U``+df_O-t8K%I=yOIE>_Bqf{km#_?28dt^_q|5l z9uwd4jQ&(_G;txU*6dekL1Q}XEgdm6#Zf(2qJ9*BqmT+ECNsFL2PMdL9$HylA!J(^ z8(eqxlE>SbZ;LD)M0Em^5M%I$A$2`?gTh8;Jfe1-;e|DBbj^G<)NQKj#ydsj3ibQq zP2xfB{9A20w@#q^+V-Fbm?LRG<7d~2TJ4R!vDF)$-&^r_!_m#A^Gk1ghFA%%6>~P2 zm%+7JC~Kd?XE;$_ulhBCzS9JnS;J%)F~{Mwf*ey@FDjs>wfzxVNvl5WJq;HGr3^ec zOLRS6hc`Q6loF0VK5H>av?r$QyZ)5j^oLHrLMed>0HJz+rOz`q=x4c7QuX*~n4H0^ zWg1-*Zt3a!mLA!9;@1uv+W*8p$fjwG7A2$o6lptNI&=t`A~q`%A#v@NWY;zk{Ojih zs>SH!CQZtZacg_F!E^ogc7-_t(n<7*Mr{B*qk2P{T5AnEOjzge%U`a&wJs0p1Tf1n z<3$92YP^rkfil`34I*j8-S!qBm@;I3ID~D3^7M`rJ|t={^utAVC!kyW)@VZUgD5ou zT@+{fd+L^I+{JMhQqrF)x7m6Mp6XYk+geyYL9*VYA|ZC2iqy_waYXKOOj*;8K$59Y z*iX>Ff#I04IZt|2!pxvJSld7cDz(HnSo7yUNhNgkri6C}Y zOIt6JlgVld?VxG5`)}-~i)tRJb%9%?;W+rjFtJ*odV z3szrfoJTay1_Hzpi|ql+jfee?YyGJa@^tQ47FUOQ>pMH08uGMXPUk#f2;qk? zKJ^v2xtX!}TfFy%tA(`%RimoTcK;Q)RYSo_b`1uZN_EGvNO6DY;pu6A5X8DvSkc#Z zxU+L>KpB!QgtuRm^tMJ~X{kPTCrkXeYCSQDm?@Z?*+fBm#_PS0g83gz#?XkYx4x&_ z8@CfSs&}==5Nq*@xO>WwOJPimAsiDBRJH%kgYq=7My;>cUZ2ljHUCx+JZz`0rvqi6 zPS1ZiGbq#;yq9QkJ~)x_Cvaz<{ zlPD-8enh+b;RMP)5MuzB*6j?>ZmB`ZZ)5LQ|8a(nbM{pvWzDv&L(pPW<#0yB zUVs1ji@B?%R7yBvMBH`8z5ySS+%ExxByiiC<_%Y0{$1Uz9-QWO-qacy9W^=ITRiI! zT3aApOY)O96!JX>ctdz!_oYhEQ&+=&YG+0m&p#I#7#;PC04|pkgq_*z>+4Hz+W@8G z{T-~Asc4AZmUYddD#ZG$;Rh{=2y+4WPYjT~KP&HePH`{hp-ONi-ZIk@B(1B}d&Prh zm6d8**O@X*Q3m_z>r0e(i!_IKy0-U?j_|AP7)C@S4X{62V(4ddvu3-ub#qDh3Up(o z_jI*2IH-~a2DH1)7dBRt<=BwDmK$#Drk#(aCKtqzR{tFtrJD#UzPk{+(^=Qd;$k8~ zLc)n^>o>L6Y9&8Q=C267uXb%qJsyKQ=WgOY7C&mTd2MYdL5f&)(fS_9ZJFpp%_a z<;K_wrT~(pL&IEdnw4d;yI;r(eV^mO2RAl09%<9uyE#2MF&!Gd;qvdd`t_FAKhpxG znglG7SV{7FOpilY`{dQsU~&<32G#V(KpwrEh|f1Kpu*w$S73C=k`BpZCGSABCko7% z<|FGGm{e6I7OAAJiG?v$G{oQP>q&A8s6R_w+vBQ=yJK9RA!*;DLYzUrV?@ASiEZ4CHEaBJONSrOI0X{7)3j{RR;GHg}h_vQrIwYMZ zN44#I_|A0AS7)3|Nv}=n!3fR2{G9Bp%*u+nP{z>U>S}(`y;e+!kB*TS+3f7>I?e3H zT}(5uPc{SmlE)N`ddEJHPGIm8MDY5|q&bDSOx5Zu)}&^s=PA+lToaR1A_wSg5@5Mn z??e}}n*OS7VhbJ_@SeNnnCe8vUTAKjUl-5zZDU3fi%KDhBD zNCoDOnlJ7{$V} z3obyV%T4K6_LCCdxZju{*fV?5c$^vlR;YC_;ckFJeu&!B+W@u%#qI|zRy0SRNe3%0 zI&V^IVLPm!D8Q^zPF@~&b8|CS?J9qKTuB`-Vfz>lpERZ>Z{^WOrYTWZbBb3VX=bY3 zbFenBJzZ1sJ2$XA?89}pqr<#5@%Sr3y2zS&ajg^Kb+J()P!-4H-%G`1_6CT+SVw%g zJ>3Gd3JbmSKK3f0)yFvn3q|)&Q1cOwOB(M%xL2=7CkzuJ-fR9?%7z199?^0woV{rN z@)+vm6JnvOi12RYhT7-x^6VO z*J8D@K;9XrNkt<_nB*w*fap@-=I2u`WVQ9Q-Q|9}QVQ{TQzsRyRo+pGH7Z~R z$M&L;E;8+q5!{%f(x~nC3(P1LV;(M6jT^S##-RX|Q5cLY2g>#k8?$v=?bAKjd@^0( zhS;%d_Lm2P&e>TG=T-AJabu*?cu{*t401+q46WXF!gK`Bj5>*ad%0fSuaMYRY`i*| zUf<7-*>$g_N=T29av5UY0<-PFv#ygL_f!a1GciN#VNN9v4%Sg{orfrvh^Y(Y# z5{v+P@7hY(ah{P1x=K}BRrZX5;fwJ9Y$h?jo(M}niHqlFIAivlv6smi>{YbN@0yc|F^`7Xq5 zDTuYQV@|Wh<=6tFb~wIyriN@jJIjy+buBfoqInqM#%Ca?{oV)ifq;lhugI70-S4xm z!%ui>3Nv~G(3=k$Z3EpI<1%uUsH5Q@^d1}8ob4T=3>T-Ub})p4Q52mnxF*@|2kyB& z=%2r!yKX_!<3f}Z1bOTlfHE`W(hrHNM^9=OFswkk?wd)tZ0mwYciIDB$QU(oN|6(B z6q4WnS3a(Je~JwVEOeeH zPC9cGY}VA{czM_`yoF<5f!)Ei*H787-YI3AFnYON)M5o1V8XZrXia zv;Uj-MLL&MCK3clC?rYLp0T)o>8_Q>-)}?c{=P)qv1fHyxZ)K3v+26Ma5oEOT(lVL z9Oc03G03I>cXk&uJb2bG68j^K1YQf(&eK%ST_F(aJ{-venSup$!5CJCMCgLKFdDm7r`&3hZ&}%^{bB9gtXZ`DS}-<7c96 z*)!CJgX=%1jtIV?abY9nlE-toDBWT6EECbp7(=29#HL!06O?jg$c2#g`3B zo2O8J>(+%F5F!uiFSEYC&~x8xi}mPa^#wulvyIAjNF^n_?QEiY2PT6Ab2~S1CT>*( zMHHnDyeTXmC4G!!#>ucT!DUU!@4V?mkC_EfFD1cfCN4lOk}2#7);%#=V;^Y> zJ69ja=@`Dpf~33u%UV^Nls;L^%}>S3Up*-}Xnh=i48+)89fnVg8chtDYTtnVD$j3O z>?YLK^Zy$8{g?SYk67-KQtOx7YOuhLf)W=(u|-5#z|~xcSuDa`=wx?ROzXE=6yFlC z;$l9FiGk&5cR3~Qag?i?X34PrRNByeHBK%a-24DC4M?SmwC#XK#2m;u$wdA>Rebk)TrsH{v-1QsS7mkqD zpqy}^9vI2>F9|k^R>h(?Jv-V~2n>$VH7BhZzGDFRffoY>6g2`NmqxW7UE$8YP z-tB9ng)+3VlwtrfE$HLmSCOBYb=srnzn&CX>71+J(jQ~wCMW^og$7df9R%L1QwM4E zRr~^Q;j*i%3Pp9rp2qdw^?KM4jX?kDLpbxjMLrY1LMrWPR+g?+vwJ3-f2+b1Ht*Su zX3%HFjbHdo{9L)BKi0F@{ARi7`mg|9o)dJzu*)0KFDt;OwL#l;q@; z)FQW9$zEvADvUSu*?MWtb`5xS)R&sw;TN*&WSol`KQFQc!2Lk=5rrg99MV>#+tB^% zGkIErJ)0l-DfS~~T5seh#&QYeLzYY~u6w^PK6aJVuKszk&Cn4t?`1NDxu7HT%T`4D zyGD37>V;_^t2}XX_z=SG@a?U-exbVR)SzS35U zidyN|K&(H^^~=s!e%t=>wROVfwRZj*opa&`BUw`lye8$9v-SWijvOhC!cz}j)>ljS}#>?-bH=NmZH-16P%l;cTfJnDbZHhHda7X zS5%qW!+a!&EI%upaa({aw2HZ|D0H3Ec~|F-5a{WP~m#Y`x()(3@XV?MeoI3X-}1P zRehf{VyZ}`ke~AoSlcp2?q@r^%N42vZ_k&*3AawNw~I^VcXbvzVi z2e7pyaO{_G1f^Iz%NJ4hMg|V+y)>!SYJk7wT<6x+o&_|*<9@Z1tTn`pWk$MC)7A^0 z5DFVkIP*>N@b3r_eehGYZkcbcY)KuJovIEXG(K<*BHp?$Q)=~za=BL9kFGIJe?LFa z(`zZ|%|veUWtuYS)3~Erc5nTHeOz^UB=AR;E&eVo>EdIGbsS4W~YKR79WWUC#tHX}BdLoVlGuC9s6Wfbab6 zWmbj-S<^_N6sto2BF#zvtbPfydUk??+IjGcxTz}TLqyVeK1zo^SXcDeWXLYeIBBiM zBqdIK&_oNb(r=+0(Fz(Vk2q?0p|32I_m|?r7pCD$I3Br7m~B}3qvyLE7hXSNHVB# z1NU2lc=PF<=b6)$6pv!kmhj)?aoQJ$gl(mc5*OZ;U{i`H!k}Ix=9d?HOftrAJK@h6 z;Twbkw6563nJlT_qzmS!wtJ^%*^d=iy&$e`2d)$jX#y|A2&TnVDC}SQ0yw+nrp))E z&6fUPnm)!#`yO=QM`q4__C@#kXkn#oY?Sb5W-YULwfv%W+VEMRhn05yD4G&-(#RSY zzTrAk+pnNqUq2l+K0lm=BNNH5Eb={9NDA%OBplwCd##oH`t9_DwVc}I*>HJIPb%zhSI+W=#Gn} z9IXT0qse65dXC980QT&M=mq$FMw3is;gbT{>;U(%LrAp0^ajI=?r1%kW9PiTTiajn z7n{)=U{!TGS%~c(cAVgO51A!wLeOMSa`}`~b+Q}NnOj;Eaqnm)dlt=6QzhJ7z2LsN z_`32c^{8U~`#X;M9QW3bqaD4_ZVV|{Y#}whq9T=M68{4|ZGfXvY80iyVqVn;kt-cL%>A|~Z$#j0dBAUHh$CAt&Fh zy&!*#>PW!fvNMm@z?<)=S?$+Gy=dP!0luXr%BvD*jY&wi*}X#5OK+O1=wD5+y;`OL zZwW?kB$0?ez%F<w20 z><>70j)yc4=BcoL$7SA?Y5E@1dU=m329YW|i1+j<(3m6r@-lpxPc>sZ^_2vnM%WK# zxmWQ#l)f`R15*wMJn%%cIB;ZyJpuG^5mL=&qR=&t13< z*R=-@$Um(1COaK5e?Yc=q{-b=(wcf0uEX-!MBiNo$@hZFpQPG$LhSyt*U9%K{PY9% z)9aZ&@?K^=2wZ~llEi)!4j5QRwJ1GZ|kq zeSP4_d+$|#K8{yfN&C&|i@`c;a^V`Xf|t(MfT#Ve>kWSADf)Wc1Z!f9yzoYm_to4; zU_i=aDq2&$mU_()lBW~-HH=#@1RIXj1iuLiH>^wc4yU59Dd$Pp0cNHLmiSg`RcQEL zK<-+}VS}!9s*HYHA7`)>v#WkvvzfhkCiA#xuzw9^G5Zlq$eGyV$6=P^ZC=HjHF{O7 zKt=Ro>Zm7I!A{RT-1^U$Y^Soy&cW##j~=UPfAOZzc>3y4$A-gSoRaAC)1sDZ)<16R zLJLcjosp0Cbr=q$v|>c>i1pxU@tK;gJhC(x5*$x+mb&=Qgztj_5szbloqge%IxhA5k&zHz(+MQ>;IeF8?&=TS^okwrox!6d}L5@4M&!;EZ!_C&Thf7!6P$ zSi{ZKp@q~td6L5;p5aE(el74^JzR@M%YPwPuJimk%g$lR1H41Gvt+Xegr@$O0mI~I zW(s4h^}au)x$_{_nI4>Gp)-C!JNHMcyOn}zqcO^1nYdc+mq05O{{>87vAD8ne$a|L@Fi)dl<`g_E_;e!Jo14IPgCJ9hj*B;B0k=RSFiv|kDtE(BVK(_Z%CtGtL z^`(zR=0f38-|Y>VJmL&udJUN^DNWRQQHtz7$4FK4Eyj!GZ4oAoiu+}fb-zx_9(?#U z3;R0x+O)K`(jIxnbMod2bybl!E<>^H(%L!(ILLfBvD!k>e{C?KP{JZru#?AC->V9u zUIm8k;O;$jsyM)bSYfe}52T>1dxy$dW@CRMpw&g{imJZy#}+))Pd3poIvKk`X%2-v zMEa(Qzg{^#N4X=q&lzYIO4GCBVok-*O^NArg~Ug^b5afVQ)}?~HqVGKZ7Uy?xm<6@ z?qkh2iP&O8HI*vw9uC=3%GrI^B6vxxKA-rhhSjrlXI+H3_KYDk*0!Byp~n?Gzmv8(Fq|NPmM`A-!lXAZ3oDwg?moz~~(M;UIG@nD=-_7sg z)LOgiJnqgEeyu%vlk~?;CVMvGAWT5n#nRZHA?Olky!i}=&mrhrTzGvUg`mwgHmM!~j|FeM4Z!b*_ zRY7{aAy|>~gAcB^s?NKfG`;IMm4e&W_03fM2gU;C|qSJxo(Tn;3Tm3?Ur5nO6c&ljH9kixygI?*Nk-B6&R%#BAi zW)0OE_}KVomeGcJ8cZVLaFPkWBt9{!E)Kjh#qxHKz6pJ(X6mBJ%5{N zz13AK&UO>8$X4Bz4%3Rgsxha;yu`Dw46U&cm$#uOh$p!0=gP5sv$vaGd$wOec!#lg zyAFngBUXI|9&5WEd?+6?x{`wObau(?iKFbIB*XyrGt+oi1 zvf7HGdT}W|18%3BE?X{h_|Z0?CSht@C1BBEgf_UCDM6y zKEQxt7Vj@w2`tz6vF97fT{BR(M5M`a;q@W3)^7cFI(aa$FL*AjzE)m#V-Ex_7aa}w z`S{`9kg|Y+idw(Ob>t7S=( zkpB(E9G#}5cXtHL+VwU_Tvg1;d9L_JH3Jp|hdP*`B2$!Eyx9&;?k<`DZC?&{LWD?+aU{axkpjA z(gdIUk8KTBwJ6A}s70FT(!94ufyS!Wap^mvYVQW>`Ylt^v#m_Xie>p&nQsK|K1r*W zC7ET{oaCI-t5vZd+4QAO%Z^7{NN+#>@{Ht_b4PHnsywjr5|^7YG>f@cHFd#gq)E292bXM*y{ zFC?jiD>TMF^%-gNxhVuD_=$AML-5VbUMTEq`zpN>zKmETHfnmx7jz1&Zl4IMIO>== ze`$PIBl`0oTv1@M9fG9uusSJdw)UAyx9HlazU?oTd1(>vA}5q7_*Np-ZkO_g{re28 z(!J_R)BQ30eX#p7*P~8HHztUmJ{4`*C385zxaH@EohwOpPm?_c?!;A9(4I^A&D32) z_62^4Ke~}9jXk>cm}N*`=Q(~Z6-Yqs|HHCTK%fg6F>J~U>b=WdAto##K^sKE!23!s zY85frDf84LVMAZjS4r>QoelXg#fuX*#2@|<7NlpI=iuSlEg&c$*0om|Q@FmiM)ZYm zVdK@4C9OiR(8imvByb)AVVymHYG>?F3Z*K9a_rN>VeJq-cs!_7>gUfDBZGTC8?F5Y z)deo?45kfa+fgwWlh|R+yG*todn(#B@gWZlHzke=Z@zlIZUz4~CbfRsi@A;PJ>JyNS=-JV^~)mZZ9=Iu(rtP z8_hgD`$hNmw%XI#kG_UMw)D9C9WABY#|VA5-pcb!=O3|<#t|1P82%o-XG|m?E!2p{ zXX*rFQkRx%XH@O+z}u}69_Bp8qv>i9A8ZrIJ~^zAB*@>H7wtoO_q^fTOyyVZa`N85 zh-|eY0K%eWcp8XC9nvjeMh_t0&XkaX<8g6TjX=qY3niq1fS{5_jqV0n~w z_E~ky3GGeWUVGZj^Jjhn*$d8hYiB53lyU(|v}NmHoYGF&j~B$MqE|8Z6(u$9ylYE< zkfj#S(ypMLV$Z58VO(VHX9UxaJI5b#phcHTN&j2uYFNp|~=*Vc%Kw#(Qfm;*W#T*a&##W!vSc z!bADk>m$A%rPjYqUN`C@sw1}=tWc~qACyPwH+S)cA8B?<^+-fw+m7(N*vaQ{Z-U1Amg@KKJc?btN~B7darw zqSkSroDA5cq?*LEjKzYJj+LApLkJm`uNBpKviOH-&ow{-j?O2cO471Gyd4F&kjPw~Wl8jOtf!xyfWw9PdxF-85?j zPF$O@ph_N7HHoXL;V+ch#lB_5Lm!NgGJ8p8?qCtO1Pjoq(c-u@`y<(yL={cq)hv`3mlj=w-q zx_!jgp%&X>*$2A~PMtUe^0Is7^@yL} zysLZDJ<6$ z#<~20R6%(3L_I)w%(TYFy-R(g9d~MD1JJ_<8zQsQjyzLiIo??syo;Ubz4&=TG2_)& z^={g^sz|RmY;91^wndT!i&?%Mb(xFvyv*B(&KHu%>vU(~i(x?U|aReF0C)0`{3|vHUX` z?ptOIKlaotE@cM|$@8c>|m8=GAPwUYzgI7$AyA)C&!ki(01+C^H2 z65hIc>z3 z8I`Txwh;b^_Ef;So9dkIG)K(oew^}e?&^BWt8{WaXX6-ys{r;^62}Ii6bW$f4V0v~ z;SvmwDH5Y62KoXV!#kaPf_^4VJPzrV>}yDcK0bX{%1sIlz8|9g*A(^H+X^o8LT3$7 zy?{k--E>#Kr=EN|Uo!lsChTS1(je)JPT3z`@K*+)R|(f0}( z79K|`w6i)%@(OyA^Ck+LGd&`8Fe0jbOUGaVbAOnI-%QO`i-Lv(vM+eBh?^mcK=c^u z?za6k=84=;tAd6V(ICO4@(f1f1-skcffiRPUH)JQ;fy+JYmIY`eWRv?ah2JS-oq}? z+@rY`9`h@<&eUXKDU_z)Dj*;MiNKW!q*uVx*i-Wm*TcT|_Iw)n)ZC+mXIeVPyL6L7 z;noOY5wc3*CIks#@zda-O)Nxvn&Cp+|cXw zOQ;VliTB-J4I;*|M@WRn<$#5H%xL~}K}ol74Mc$B?u`u9IL}xDP5+P+jLQ*{>w1S$ z9`B40_zsXd#niQj8Jy~z(g3b<;-v&cc0UkkeJbR2sZZd`HJw zmjb*p2B`OWXS9R3%MqW3v`Ym-6qZ+BtzDia=30=B2@yxTp-?MwCr}w*zE&n zK1Uy(bq87ELFmAL(^-Bfx{3#c#DL=@Dn4(Sh4eN-w^aXY@P-G=Ur&HZe96eD&WE*u z|M~~EIiFiDCDmjfz{TnYllg>YaZIy3_T~F9)N%o!#H*PC9$^Ncll#wwwHJmd_AhSh zc#Jo1QP!DFvx276aCHDsj5Dxl4;klP%+4o0-21Gf1naubx9UCsmF~2C0F9|%IiX{F zTaGi)3i~=TWF_GOfA*YXlcZftiGISPs%M?x2IiCQ9dp=1>_x(#(DCZ9P1m^nSARK{ z7V*185hiC!R22oiB)~N~gLA#f@?^e1>Q>k!z-B@q2wgUzJka%@j4VHtRK)~|zw7DQ zf9tcApYWbApiLC@eS{fe$AVUl&}{ zZ?Ig4toK?G{5cO+0VmD}^C82BuPSHKYi#?bF~^7Kw&_TP?q*24+lM!GW`F+GGKl& zh&6g?w!=MixqTT8t8b6tVR8znO<(R$C?uVJTn;AY*fo`BnQ|6@ECTWTApUu|k)dT~ODv%^FI zP6|PcXtqBu8D{T&MFd9I4pL;kEcTEGgRUZ7X~o6dP>}p!hju1o1jIn2Ap$)KFm8233hGO&Zxb8f`;BGV+v zUZ`j6?H$;WUu1yH!#Q%2&01l%tG zCh&dRWG-Gozw;V4jqK`-+VJ0~3;|eHW%;k5JD=e7iLf+j#3B)v{*R@7yIJ^iJ+Mi^ zHZX37@%>{4wqzyQZkiLn<~|5y>Q=B`YIdeQQWiY_6i*xaEZ5`&g0EyLsI}E2AM~Vg z0Y>Pi%h>C%KTKWVyk1JpjpHYM)CkX8-XDu|>J*%sH!XpDorOwB!0fdS0m!aV$H{OE z_?AA$Z~8;(FR2;FmXJ8od!(9HMo=l{t|lyd&P7aR=JY{JbxeSmEo1V$2*)L*p_@D* z&hl5rJS?QGrgv~%zhO#*I0h*VQ!~_QvLS}2A5Krg@`BM&^Vh_ySF74ejkfeaFiat1 z`ppi1JRZ4l(q-!PE&godaR)GCReP(0 zkaHCQMyHxD{}nFkP4oW;n}8>k#lAJ4x*BHXWzSjb`dV`bc@?)eDR1f;zI9#y_LB}t z@NLz94SeADz~dftAP#?us5W8YLNOF2AxdGTyc`C6y+Gls8>0rpBZDraR>Od1^q##M zIz#VSyBh3}ffRyY0jOOmovGzPusd)V7KH#`1zTgn+S>TSGa_5ed*!c zDU!$R(#re6*9b$&K|1k7Yr}tIi1*rgyjTw@t>N^Auz4lQfyXz>=k5KY29!A@FvDbPKDgFA^jKTS+g!3R zuQR6D`Uah98^QHu0P4G_IZ%MK;fmemOv}kv?NF-i495oikAPg+g|1=>d&=-3^hmSS znEJGjHPvcNW7=mg^*{q`$_(FeeP#LW7h_Es_5pI%%UW6Kz-c`l_G@2M4WzGcSlmdh z4PAyxujLkjr?2avs8VdN4EgBC-vpiyetEOz>#er}Q#r|>k7{fKTKU@hUm5+3M}y7tMJVR-gJYaiu?}@nJ z3Fn%I=PJ_k6Qoo@p%wzi@7JW9N?RnGs;1p9I&sTQth{&_}lkPv0;<<@Vn5x zQLTAI{tfAIIq(q2WFI-MM2=7HX-+Vgwq6R(f+_bPA;;zl8_FNe@( zbP-ti1IwFl-pS^H6NpVTiR;6Xkli#!`if!wVzM)*fTuNCW6MgYM{Xt&oxANvVZA$$ zhTTB3zB_-1@vCLL)UyM7Z1}SP`;?kdG9IE`W-81qU=9Gf7pidtqi zBKt>FymW4T^E`>U$lrh+jWr*7Kz(7`=u1FY*e6C&x)Ch&HLNBr?%KTl80XMMF1{Y= zOTrBymbvM@&67AM{m=AdwH|251&+&sr_d)|uzIk^{0ToO?Y%B8Z(G{=$%tj{z2zb9 Xkc%~K)lXRqfIr*42lrH1cwYNIe!E>1 delta 23202 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 literal 14147 zcmXwA1yoy2unyAV4MmDu(c zoZW1k9035YtmK(7#~xO6z{ZzHocAlV#%(w3L6}HhUk8gEvA7gk7mBBH{E?bgX?&X{ z9(HmYZsyu^$5S);3|XKE41I|TR%?bH4)y&xA%~;K`3~?>WOv>aZ>6Tw#}c=dj~Z+; zL7ME@i_K%oCO!N2^OIOQ5}wY55vD8y-Bh%hfjj0Pxc7+%nB~#%!TJJB2}~|OHdK1Q zxKIvPJ*bmL($L|2MUD5>b7wrn=Zyun=rOO+_7yV9j-$moNJdh1k@7bAG1a5GmRU4f z;J*~sH|ekaC`R2Hz}oG!{<`?r{Uk5iayR+C$WJYJnwB6?B27w-Gu|YsP4r?^H8Y>x ziq()c%C0bXp($T0YRJ~K7GhL~DJ4hIWHlV_HJjoWc+Kc@9`(5AxKb3H?+Rw}vW8~W z@}9=CMW90?dppJE!hef^XF>L%;A*3Z2>>7m$V!N+du2iW?CdEQ-S@OKz-qQaJ`a4W z+mm{>*KTnG;?vu_`b>hE-o_{25QrAZ&-lk51_;sYKlD4kWqtcdiI12@#Tri*1wi{V zUY#)CA0gDl2Bk7%F<6TcpU#mNp24Dyv~63DOVDLXz^Tx7zm+~uY>w10PhhO0`vDRq z_deFl_H~-o+F$uX7XF#$yBCzfs0)C1wwDTe#RAOl`a0t|t_Se!emPh2|JyS-G_V>U zH>Sq}2XGv|l{sKGd>oz!UR~~+VdwbXvs{GMfZzkiV_c=54>`YY!O8(mf+0asfIG@T6d zni2n_1|owde0w78Yxo+18W;H1?NZ@xrGDZ$KRX;E1Rq~L^w#?Mb%>GzVGRnu(6_al zON+? zHiz%AyHzloyg5a|l^BWH*x>`#w?NF`^KY`!7Ps#d)7u?K76cA_;hC8_Q=_BNiw~W0 z@Z>Ll9!^efHsGo(cl$UpeG2{RRu9&XsMsST%5|1#3V)7CK~B>fp+T6$+z~@LL1@a+ z`}{yjA#-1_?GzAO5nyJSQbUEJ!etkUz+1hR$SqJqvg5i~q?+w=PtlIg^;o zsgX$#!yJiWBuaMsnL5AqGEAILE81JC5I|BaGUpx0#sFo6)&}iI3KH!yediN$? zPfx+a4esqWwi=qE!H9x&@Ai8^9JUT%MS3w6#Zk`30tfi1P9>2DNKva)d=mVxyn3ev z4ke-b+IFu`1f&F&!}YCjIDKQ#h4j)K9p@56Vy|wb0(#|0S9xT;@5-Ns*xdK6cmS|Cy&Vt=1Ti$!_!`?3+_&*{qh7SL8K z-P#l(A#DmUz3+Ln+2(sj_eC@(rGLE7?w%bvr6~-T*7Z5-`4e(jk-DznVISriSRj+< zo=S~EJV3!NsIHaM^QS6}QFeA+P6wWacia31DLB4ZwMx4jld?UrWQWt=>XKI#U~Osd zT>JBIV$XeMrz##q$Vbe96&GA0O&QLG#earnsAnMSD%kO^`%VJdmpD>Q#YI32n7WA? zn8Owm5s`~<>3;AxGFZbh?G=UB73zI`0y=4R1?9w`d!aCmF&-qv<$a2SzBNAI4(xE)^Uc z(!2cppw=6Q{XVnfPsM+)j8=4C&1}P_K;&HFKkn~$7PLRVv5tJp!p^a^$T#tBt}dNw z0FD1k3N_g>PoZT_Y*yCIMzsaU(6^!VuO1^Nl2jbi4cK3jB@dK26^^BkH7y@Iv-+aa z$YDCg(ugYlZ_%qRu7*v(J7T$Fk`m-=Mf{BMAOyI>L2QF*aDSb1O5BHmbL}yG1uWQ_ z0SavTrQYSIgi+jK8aa41om!2~SBP4dzahfVMz2+FP=laO#{YIo@qJK`^YwI*U~GH> zzbkK-r6IiqpXCoYjJzEVf2TM3`JzdryJjyz#;vM3_`D)Z%pds$;c-zTfn*e{_-|zt zV%yaszlObCevbl3OUp1c4iAY0Hk+w&d_e%OpvRSXk~+?iz7yL(TgYWIMbbxb z(xk*#IB4G!;~Ny9&c3&~9kaa>9KKgwepV4ZvlAz$F~{lwDQNCaA3b@P2&T%E2{9pJ zG!l#*ha%lvolm1N=tT`3HRhM>LRA_01%tP4J^;vJ_0t~(EIh-tzzfV5);y+!; zK%j7Q72V0g$HmcHo2Vo2x*?i3M^d^|$Vy2D*-~!^O8Dar?D>6G#_Zr}RcfXtj)WGV zs8(N(AdESIrkup@V3-S#7evpZ0^R-69niR8De?vd@Kh2J@RrT-@~cpZ^S{wqbi3 zdK_`xYB-%EDAK(SD;TrjecH@g#SF3i+wz|g9u$}bP1mYN13%1G$u$|$gueXs&f_NV zeeCuF09cS?Z95EMd_0)rZ(h8=Y?9Sp0prxyHA79oU{@2N<`i`eTnP=8rSXB_kjVyv zFSRh;@m?&ioF3c>XfKu>H)X*ZL-p$-jqiDfl1)zbhI$NUY*AwW{4LB*BXOdkKn!L9 zU=TBb3Xo??diDMaXDV)>$!H=RN2Hu-o{(67sdLB!ufaONsUbRfNH`J5o4^W zS-fTuX~2co9Hu;{} z(OIei6yvc^V#o*88j7Yi=N&s6W^s);xo40B%GiEdH?-rH#v) z#b&e^6bfGNle!o>Qq)+KeC3Qy8v`T!wL@1&Wx9Aw`V+zqdD+NNMyfk{B{xK&6x*vQ}CC^8EvYA z#hQ)x-)vnXO}$vNcK8crp7?+BLDJmL7F;sGp823QSI6K^k)cy%wNlQ^iYZrPp_Le$ zgh_bsHNJAi5rT-yIfmj`B$MB0}c} zebAkPx}Hcbu!}A>Q`q@q5zLZ&|3On^?ly(E{hJG8c<3W$WRd4*#lK2NhF~$k-R`wf zB=JCDZHKHG2G!^VlTiniD{=VX1~RhBdG8^u{NJ260&kma0X^C^71{rGI_^!%h3B zZJ~6EWccrg2+qxak;UB4;;^eoH}@-pV=^>ybfC7mO2X9W3+>zM$qvSf!%#O56~>g? zhe^9Y2IK=AElnw2^kf2EC1>!ofO$nE);1z&ET{%6;r70vY8aPG3K{McdrF_$Nr1hs zBAsgD&=Z6v`A#FaQGF_-R}v7;Ie>;N9Uc#J|K0cKD3notu6Qq@DrJGPf4Q87AqNu< zp@(uLQM~jXPCI1g^0W5w_;l!O9d_B>XHSI@v-}>VtcX#W^HgYXIL{t4DMy~`8>mm5eixyBY!xU@48YM*g%deLx{G|m89UB0wyeZOR04rIouN|9 zhnGl4GS-5PYTw;p8*IlL4jdn@nqmf%0X*Ar5m4EDWO;!#%N{wKf{2 zxJ#3CMaYd;kQ8XV;dNeCKWw)mH8H(-M3y^d+bbUH$2cNCzq_K>DY;YiW zHt)pqBZZW?RP|Tx9e5drNPF*Wk33&EtRj*4f{gGN?y+SG~vBw_9 zleLhPY*zJa*Nr^-NE77XDB0!v*fstns`Oo$^S@Y+1|t;~1eAUVEPt-*6QiZKmiB!1 zX=>G}aWPIyTx7ln9IV#`$7|wfOoNE0$ZJW+CcH@6F2;;)!!o*MFR^t6M($Ndd4Wku z$T%{%-y425In7db&KdV7Z(Np+Nb>EWJx)u!-I#_Cf9TnJzEq?QtHs8uG-Q_=ggsVG zJHrjPC`DCHsHXAdf{zO$1_3Dr3}6(vjuBKmxgUej-JvD`m}LSuzr|^ZMWgj3V2-(4 zSYze%s9a+2iJDd$H1Cr*;EmlK!Dd+olJ<%vh}sK#VVaeqHhmEiFdmwZh}f;evFqDu zk`&>`hY#LEHPIsoZe1`^qBX4L;?*`l35kvNY1-12uciayOW6I%U zN|db*u_}Vsqtf>K0Y`_xW;bY)vUd>vv3^SN!uQgCyz13a>KJcm&l+#uCXWDxZ&&;T zsytZi?&C`s#c&I))z1>7U0{23Aa`-wU)#ixFuNpDZP%hVn$MihoNx0Ia-EaNSu zm;cCg!*A~``fryf1+P68(Xkgn#q5Q@$C-M(Jc+qns-V~YrJWnx*N@=j5OjHP6HAuK zl8L}>xnQBFmMf}Q0zyXFT8tGy+eJ^$4R`+bVAD;6xHuLVE9J*iO>Jc-Nxpk{m}S(L zH@*ifE2fm7K8m@-rZQc@x|o?2dFNxQco8rsaD8?|s;v62m-CL%GmT7NOy#zt!tGGEG#cTwJW zUt5#cw|_i0Zml@5U(eq5uBTr?v76GEtS4&1(^(lhdgVH;$)ST}@RDit@bo#e*-`AV zOXI%l5Yh!hUi7B_*OfpU->L(%@Q!qMyaL+q0-wp(9e(}uG04iSMVdozM-UFWL-aNb zpMXXlF@evlexr7tZ#(9KuUbwk?g9fozLc$?-M>_oiDf8d*JapIi?H=Q~QIz|Vkd4WR$$>ardA|w24^V%>K9{!8 zjMa-p_Q76ga9l@Xk*y)e zpP_b;jBCt10FK@3R}?LJwa+*g$h5p!j;#!N*HpF0-E8Z$?PoF_b6@4}X@o#}=G)PB zsXV`tAGDdG#UA}m0xQtt^1u@~UO4N)y=OI1?;G^S96E=opr-}4I<%h z)%k-YXZVSzdubvArqb}g`9CEmL4p_yh%k?XF7#`^KmwddS<1SMSkS(tqy{!%srB2{ zp6}9xP;Ev`Nu#S#C8sGcixsi?@2WRa(c`34wv;0i1AQbq96Y>Ok&VCXClM8M5)@BQ z(nx4pHlyIyHEq@bp<8yKZ;TrwEP@`mq{G|sGOiu+&jJj;;j8XLpBeqT?0FhV8%t8L zmZtbkM)Z;BNkp- z2m<07QtL@LwNYE`$2hi*MJM3RWEqo=DHp$^hyMVLwIfqzk$~$Y^zF@`YOR<&I*T$n zg5Zgogi4jQI`oh6B|!qCldFBda1>dFSCtM79_NiS1CQr1*#0n(c0Uu+3Z{-k3bKeS z>jnXc^9JWKvylC}np~Jm9kwz@Ec(vRW!0EwtjSl1s66pH90T+a&3VkL+5&~+!vbF4 zCm@8o>XhH?4=3IT@#6pB5dXaV)k~)wiekk48CR`=^y+Or_N4Ij)z8$DQdt0Z}eBz9;w-}r0M7kANKib`U(&%}5L5A)+}K>fBpb&3Rc<`1IV z%M@d8<4M;DTRl9ClU41_#aRnBH*0`vKBDR-nVkpW00M#-BI`R9XWg_Nh%pZAvWu&2 z)2UFRW4iJ4$91NKj~jQrJHe}Eylw;LglR4l4k`mKxU~6eq4u1ZN^!Dsq5&i~^>O(| zv62upmQQUs75;qMw)6cAhn10sQbByXkKsQ*l)pW z-+KNq$KiGrW6?}3l^%1UGvtcR^ge#D?A`D0a*VCCN{6yC5g_dWLj;N(o}I+mq7U1}q^_Oj{I!NiV&r%5*zGRlv?`o&R00|PlJ*49|1SJ~E2Fa#Eu^tN4ZCm`|CB18);mgcmqU#juR zTuU2cvyZvxCkz9nf79P++JpAjya=8&M5^Lu^vbhkEiQbA&E^+z#7Fh7vg2S~QjS9-b8 z%{0^U1YGiA1d^_VItp!w>c{PNhh#!*L@KWJEI)&EbuuknpB`i9dqcv7kV)WHBjWbD z|A>Y`ZH!hU|F0=zav&zp9TT?QNJLhZ4exVSn>#t#-+pprU5dH`yE(W}z)X#u@OF>& zn9}ELqq_jOFmh)NqsIJz)0pM$P)Cp#kkqzpI*?RU(CdJtyn>>AXn|DligeAD3P`FS zx_u5OUpKXl~#X~>wYL&y52ksWZg2?a(!{#7q|c6 zHsLL2+~S;Kd#mN4$JX?KM;!HvC^@shH#cEk`<_ zP1#LaSu21Ctq^Jc&vnGy`Qgg2Lx3whb%MR5FKi#*|25wlX8?m zk)TL3^Mx#$;$CMPG%Fb>m;a8JRFeZ8GmUe=N}WU(t6AR~ypKyt;8y7n+epX1uQS|p zNyj%n&1FfBkDOwZfi*p9G|QEx*Y~P2pYg~b3isRlmWGG`4Hf5)U@AC3bJT4w_GV%7 z>8&JS*38nzQ|>g1cp{{XJ{Ac`3)s+nsrF*`VRT^#(0b}qtu`^IyIp=QM7nrsruVeC zH+AnDxjMN|p)nS`J^2zKGh#wOcII)OGw5%-ej0TZgwPNUt!~KwjL?7-``nP2kHjX_ zq*BHNT^u~N%25x%yBZ1LzIfQazNkX#iF+f3P1_@l)u2esV(q@_N1lUBCYuE-E5qyW zV{AM<$kZ<`dH2X<1FhK|@lK;?3kR@Zoe}?PrE#TB>(Uq4f9Vq_{;x>-04tZ4|N7bJ zzdqdX*lFc;J`?S66*Yfck2vxx=7_(z&b7Q<$pPE(NmVi$;UG!JmL3RymRfah$_%%! zC63sCllyo2!lXj5Hp#vpY5atOHT>(MxP0gLVfs*Oi;{0Yg%}2^mKXIuP&8umu0c47 zk#tYLPi~_CHvHiK4rgu|c&qLB!HwUGzcJC?;jgAaBD z$qM;U020)^AMh0bgog{9avyy_)CnXI?lyyV+KXUdC?+wGR57j5v+%K}#636$ELz!l zVx1Aw+_ruB<(p6ox8*}4bvX6<&0hB1#^5>5a}kyOEO8@P;+vfF3{Mt0{f`$Aj5WlU zaWlmvKq1Z2LtXC;!eBG8LN=D_$?gYd8%8N40t_2194%}Sbq&wxjO+#$qysLRXGLKF z?{nov80WDE;0wPUeI6_7P&h>sDPpgKNeRT=g6f zKSl}*Y6}uW{wqiH@i;VpSC~M^(C@&GuvU}jVfAP_t>(QoS<<$*GqDzRqmD0(D+T55 z*VagdlQO1-%HQn!Y(@7#wUAYWC_$2-iiB35^+o>-HTD=+`m`LOTy33Bx>#Z%TqI5= zUe_xeu)h)baxKQk3f;*X8(SMI-j;RSiowRRORvv5R3`?rQ9H)CjM!I^AxL(P8_@k5#r}WO}cIl_^TpvDsYLfUGQmm7O;j zhD^!z38F4%mgFc4d`L6vC{jBGx7msEYo)M6LOoo4gUGY{1zLa2+e|L-ToR{e(yY)##|u>f|zAy_n53ER44XkW0d zx=$?$qSq!=*^Hoe%PIm&G+)U&ukrXVsu=B9Bo5OC z0RY_Gf4Klr|AtIL?4U!6O5XjfOCS~JxpJd0qV}U^4~~;XsX4)$Ckry&NFOf%*v)AL(YRPcuhW)5yT*~{_ociyKZ)bfG<)ri-QHo*fF4DD6&6}Buv|5a3flXoJ6zvUXS9kb zDui-C6+v8Db+Y@R=oePwU`nOXjGAphyV5z$ zn%0XHTtqT;ji81$1M0aRhOTs8Hoox90a7Is~@&v=7+gVlDNNtBVZD)t~dSWQ3iv`voTh8>Zs zCv&bMn5y>yZUb`gEs1J(`}ml_l#V|OKG4{lZnp?bSyvHddId521fbjFG5D$2YVfxF zneK4d6=gZ|7LJ^h6#vIs)YiD=HE&+R^nyj2E&ELh*SI3xRGK5 zdBq&rnL$sDX!KZ3v=1;+P(Z>dH7}n>G8o!g>B1Q1KU#cZ)*4+rfSCO_88%(LhRJ=O zJf2{&{qt_3W|*=YFK%pXkzAkjIjrdpwkJG3CYYq18AJk1ipTNIvE=X4X)RIUgOX6C zrByc%WaK`b_QM4$o6Fo5Y`lT{?9kxHQEADnK?ZJyjIh_5frFG08Seq)f~<+Cp&tR9 z(vZClqNbYF_`tA zJ+UIqi8ZyE?#?45cwB#G34 zlHqFkgUzPevSlZcU<`q6Vu1PM`Phn$Y%S=nl`W&q^N^=oMs_x(~hZ_5% zYkQZRo;OEYCxwlh`?BsRmMBK@DX@qV!jmJ z&LxAI3Ox&aJ|9$%Z2IJMcGw~sbA_IZ(!|S2o)II>b#%14N)qGqC({45??)5JJa^Rz zQ(vkA`Inbp15pC|Muh9u|J&i+L#!%T@b#cG7$A?(9EyU5k_&{9AhuG`(1U z;n5?bB_?clDY=N zxYh2Zft-sL1XGSbY4oZBbeiC|RX^r6369`JmzaMd10udvC7v*AuEpI~Xpgs?KalXR zusDzap>e2AcIL7f=`fd`jAJyyKy50(k2Q#RA+2iq@ZjrjNW#qc-1FUCuf3_MDK}j5 zZ#-mp^7tJw{ZDqJZvT{hPVAx!&E4Bo4lY?&D!^imlHS_aVE!&L@zcr z-HnzS{nOaU)Fn$0E&d)lTzYozcV4Hjn0|d6?I$X7%rf=mM1MUoaMrsD7b_|9O<82{ zkHh+J;iv176Qemwbmfs%w@w3xe^RS>O?VZLo0Cz!%aVr%qEe>{R+&-!tdoZq%;?yY zF7BUN1=Xglum$vPw_$rQ(&wctB-lNxAxi3cLf;Sg#Y))RX6e0{2y!>GT0rSA1uj~e zP$33%H2YaO*ngth5VtVA0rX4Gf&uEV+nm4>;YP3^)k%KTAhRnph?1OY))M_sAtqk9 zXs$`+yZ%+&)n%%Tw5H1q`iU;$AjWTywHymZJyKp=YsYRDD4IUvn>&U}4>HuD4=S^5 zbZs!|zF{f*{EHE98!=EFLaLo%^`g({vfGhVC6$)rP5%=nsOX`T%2Wg9Nv=DV=#+<^Y8R#>K1Wc~p~AYjT7P6FBv>`xJ=PtMD* z=4yh%l|Y$>7tsqClIXYzD%9oEd198ZPug-iVmc|^F7OMC2Q_D6 zBxk~VbxAl131PL8Kdxovs`I7#KYndzHu_cIlR#2F5=<}R!K-LsCW~m`jOxn&${R^v zN_5I^WE^oW=|m^G|BDFyWbdT;Dj-S%r^S)ldl0|p&S2j~Mn;sWNN3Sv5}xA$9;plc zHq;WT%N&APOesuGVe1ZE>D@^$Z%)9oEjgHF5XRFGW91ThZEe>JEl9~vq23$AVKr>} zwDcnYL%;EaqkbPNv}}X-omNeQqS%NleuQLcKi}dFPCsbDc2Dm5tMaJbJ01-U!lsz- zBMD1P;>{bq@`e2HQ$oftZPrUmGoen5Mt@RySsKIYyLX7_uFd;(=*PW;i4`R&0kJ|= zwf_6m59_$1$a~{p)&!l-tGBdg$S_5KNWZ}LtFe*Vh5F0l%g(~PBcSzSL_y=9m2@Bt zG6gQy(iMP*KHT&<-n|}bXE8;Z+EaMDy}eyuqogp_wRRqCho+q#Qp+4H2 zw1(aaBG2|wTUm^*f2M^UF0ZkcY*=?LAr$a^T%uRo1y^;sTo1QxrPoiWlZq7kIArt5 zAonC}4)g9XgI@q%B0LP#F!PvFjAcobmf$eor5QhruV1zG<#K{51@;g0ej*d4{5h~W z5nJYAnC_iPpV!e*1m4vvrXAg2!W?Rg`$S$|*HKLZZqy~NgRaF+ZYVi^YysoEKy&b> zwccKtBEnQ=34Vu_#2aKrt9nR>jCNe9WoGlM2UR(0vUOFn*Lms3ymXy7?!Udsb(JG} zOTR*-i9EMpuF7^B&@n%4UFu~r#LNHj*~`S2(r{rdLK+sA>=#sjU$lH)yet+YJ%Rj5 zjuOVzknDbHv2s{{3fl#^(Kzrdbtbc`j4cn#ms;j6D?qYO>0GQ|=M@R0D3iZ1_@eNM zb~=jON;vMIt*`sMdbI1OG@684ua zmE(Q1*!$F?ZBR_)Fgi?{DST_cHTuNyjl)VfDNXp*WbBy#Ro>L{FSzFbo$r=`h01bo zoVLVjf_fZ$XGCjhIYCWRx`+M!yA>Ap_b=aI0^C~|v+Pn(j*&h8#I|dhcKa2_`O$9fH;YC8<>h3jx8mt*#=}=W^-VU?o$1(R z+3fh)A{`NMi>OCo6x?WiN8@8*J-VeMkvcwl2c`&ID+w6|F%KLA0!~PKDx?F{gUMOwn6KK2t#_;V(xZU) zpQyS{{n-u1e>fN?k_|6h0C^q#=dYjY%@&hqOFn3E38rVBPp-rtivpWZyOu9j z5%FGk_Vr`p=72HI@tYoCK>+XIMD94s^f3%jdq8tsf2DmnIem3v*?GN)VgZjbc4%d! zQTrtacG!aHM<`7Kx}lHj3>PXoQdo0HpWb9;8s~Mb*%{qGypih}pND##)lNXF$cruI zO6@ZFU`ZaPj!ef6i+@dk`QGsmMdJ^|4Gf5*RTh0`zm4eyS<^0LU}ryEt)1CFrNw~0 zNUN)|EAnC6h(${ihsQ7&kZf~2?1fa&3$VcoH`ZVzJ3eqve#&Pd=*1eeO<1eWtlk_- z_t$=4HW4+KB~aN75M+%^iX!Ay*8S5(r2H9~;vAOMq~(bl4TE(L*fQcuykX!W1qLj8 zHWIAdhBM&uDFuAYGuM0eoBS8~e!@fu5&|)YXvm9oIn^alsGV{ zAU-4kMNZ-Kkr&EC;g79xk1SjMI5$#3PANUaqTcNg!Qhv&V>5r~xT&Y@r(x05(|o@M z36T^pk+G8^D)UC88px0jw}<9~Van?Tt?=sHlVtOU9-p%A4{#N|Xeh`JA2nj6hqMwe zT^fs8|C;Bc31;T&p^2=foSK~Ge}Y@=cK3(|LhOE<+O!pKTq&Ae&M7R+B02@^XBv5A zAeI-k-wj8-_FpZ;1$Zo`;ekbJ8$as_cs&ZNH|X0fRySQiNI0p;sf~WWb77ewnmgQet7!>dMU|s1exjdhOF= z>Dkl#RA*>H720`Y%mQ;PV?b>>2q-6>N11SN-AB*1yg+h_<$>YFB-!0hBIVyXyyaGkSo) z0ja$+<1Z+$D75EMdY#s@xNP20F|5M@JI-dW`>=dz(57zD9)$+$Hh*9kcg6@0Z zg1{x8uZfT9KYIJ|K$q-*jh_h=?bjgzJ4D8EZstuMF^evnA=ydUGbt10mJmW*Or1jBf#~{6b0G1%Gu!OeVUB2QW z1v=io`aji=@bYlP*1XK-YEH*SzcYL8Co$+;f8BnCI~*3?ihDWE^m>#Y*By|8-ohp; zb&U8!X~f~IP)Owt@1Q64oWuI)V+3)Gc_ipY3O&{8zm`7-z8;_23WK-rCSG5-+V8$j zxLJ_rU`AzrXI11i!mI)aHR#BU_M*qc+g zPu%Zeoz1&#-#U>Yhc_6`YA-!K!9)c@S19_l8=`SasSo3?ZqH07-9lH%cry;P@yq9j zg2aMXW8(`Qu}W6*$L`=(!=Vev`T+yRFaOi$BmT~xh2hxtgwG1o{jsEqkO`^#(P|CR zRo)eW0M5&|&o57>R)$v72TmC`|5~NFF&F6uXn>No+7FOFYvSwHB62hjPV$92Y>5*x zx@I8m7{gTRPj9HPpLt4DF7St}sH)h=GNo!p5@-H&OBvbxR_wNwcxX$#(20==xK-^8 z?+EXl46N#rk4m?Zs0S}?$i>(|_2J6_i5E`!qx!u1|~@X%zn6#g35dV@%fpz>U=N~I z0beHbL^^d|yahbX)hKE6Yc0Uk8RwrI@_#qOVm#G<<=;bFw4h8@%6zt5wTmd&{Zcza zXEB4{H;MXqjJ&sNIy-J!2~cA0vl35X8Iekum;jHazu^`?FiX1nl)&8QFodjp+M`Y# zvik+~t6iVku-^;Lvx2NORfcQs{O;vO{`(trIJi9Z(PRIvFFsh6O_^C4O8A$&^uje= zH}g4}2o=zt8oyI_Gg2TaVZKusMWx7?oEaei9i8OUU;9;{lHwTcf?EK&>J`#QSZZ_R zm3CX6C3U7|87A|E`JL3J?z#G1<7tQDC48W>M8|tREUC>gt+l)Xn7If6ItPgUFgSsY zG7Tbq%;XZ+shcv(PK+;buJVe!IbT?R(~oX3Bp2sRb!Ge}cljJj7&Pk-i--Q4(0*ma z?O{B$ew`qTIB2jGFm5!0&4lwPo4>NJ^s}h&S$H#|d^&?vFiq4d_(lyZP zEK)v+wf-D-*SKf}AeWDuY_C&C_7oF?U5?h=*}u#qgf{#8ZN=0G@r08Xl)~(jR?9># z%pm3ylp{7o*4%D)y{MgQy+Th9<$pQ$&f6i*Rlo*LFfhOg@VqyO$i1^S#cJ$a-er{6G9#H z)ki7uW4G+;CyeV7_teQIQl7x1-PSlpzK-uqD&YX_pqy|I6Fzj&A*<_U4CTx3T;jg; zU8eqZmSsr5?B9ujmV`BAGRWF?uw%Lcna9Y$&aMNh%0aDvvSw}c9&(E(nH!%>Z59m6p$<>i|r!a3{ zZNi3j{-Rb`MOuXN{@~UyKF(H{c2Ih9_({3^Ig6a^E06GuIOPGdwPdHisK7IyM|7>) zJ=B`*znb)hOkP2`d60*XD>qMVOuKIJa02#bOT8rwvoJ{oZ_an#@@L!jCyprw#Fh|c zbN%aRl?DMdH@0%0^xc`QE7T^romNl0#JC0U8t3(Rz?(XjHuEBykT;BWD_wR0P z)oe}G^lU#fJ>Ap&)U83U>_A6T0T!OBnl9pI&L&P)jxJUX_E1pn=?U>&_5m#5;E8`& zN?uv>_6zz2>MCfb4C3}I(&AFd#KOxn=YGvArstq(nw5^OjdgEbp$a$WcD)t&Fq5Hu z({%&=74u(uDDPj9c9<-WiVe8sic{&M_TyE|9B0b~;l2B&sCF}$5siYto0Gr*y(pSv z079Qad4RM%7tF|*H;lPyj2Ia{62j$)z<_lV4onn<05*3v(Oh9Qt*9d{620&l<5A`B zp3b?(K`WaJA-Y61nkME(Yee4aRzb%(S5<0kP1uCF#P&C|jJln94bEbi3!6wMCVivo z55%sj>NVADFtn{0EJM&h^I)oW<|er)!*6nPW+#q=vaNPmi4oejDtv4w7r3_V8O$Gj z3P!s~R+TowecspubRr4oanUh2@oM*FMYlb12OqJJHpvU9p2ia{pf3x!PAY7z~GkB7>3^7g2RjKWX!*`30^01&HyQPgK)V zD^Zq)A@2kQuu3pii(te?o1%C7nWee59LTNsJT9(r`Si~?d$y1A`s~YP9Ua-5xN)~_ zp5fQv&)SOm(IV!coMIS8ECwPWCX}cq=%}fymw&w27c&(%GdG*3n2UvZITkZ(*E|cy z_1Gc3YkxXRVAOHNZE}6BOVR|rgRdPX6Af133n}%mAAs|uvt zoxAgc4v9RWjFY{%(E;oaBJ1vIzK^g|CAbY;ALD^$-Gy7KVc`x*+a35Imn7Yya)Hnc zdJv4;la=wxCKy)hj#-QP89SusBJZbemO;MlIfSyVIfuEX| zqWXiezV~Y+SkPW~=bMRXiO$Ch>MLm7J(71Yppm5V&z^sI(g7yX8|dJT7X*H!KuNUv`-Fm!#5|8 z>LeF7krPa%$Z+Tvyw*)9o}SPXuhd ze2uPokq)3~C^!B#a8hF)1?=T#MLbuvW~+=CGo7j8Vc4W%1SY4b_k$?a(4?rJ6M`hg z>~>c}c2B&G)YF;}E8Z8G3}Sw+n&;c^t5vtYdx1TmaG08K*yoSTn*oE(s@x1Va4N2V4W24sYd$*-QG^3?{OiG z6%vpwg;4-1Trl{}(q)L5+5Ms09UOmd(d3IaO-6E5NX{+XyV1Rzzp+_oH!;-VWQ=BUntppefND_e5h3g^#|_?a*Y!=cX& zSN;AAT24EsCxVR`g70S{U;3z(9rYIiayWb4(T;;V-k0Sa%Wu-^$rWA2TbE#tMDH~g z^zLg=;lPoYmkm4JSm%+SM_e=nz=36I^<>o>K*g=I^RiQk`D}UWc4MZY8i7Kb1+6Bc zezBd^VHl5rm)eBnbh@@-HX{2q52{pSW1xQAB4$g4R#e1FFSMckBOTRK)ERl2wDbO` z6}U&3<1-mS7R4}4J+ba$#$(k$^XGDDLVi*Y4+sn2isSXA(0UkB?$h$OSO{Cc+~R%FAf-1c#oHy3{>K?1hf?`u!tmnZn|b zy|NyElkq)wo8uT!r%m9{-l>Vm;_0Uud+@UqPlW8MC1VmkY7Ns|668ZPdE1@C9zs0l&9Jv9#+66KX{-s3k@v@p%&R5`pX%FxjM zi$-BYP?%S$R+X{fhmF<)}U}5%l<%&(b%Qm2Uwx3^e6DlV2T78}o! z@j-7wFu2^b7#rS1xd2U@OV-($omh4Z%718(*-SX^PNkV8VfgR`E8os{X$MKkbCe2C z5d%@u@d(hrb|vnxwr8XI9kR0@$DOuyBDuEfGK5d3nBc36ion@?G2Su!3{A8aE}jZ$ zx5fGPOxf&AhCs=bBD=APuWbrjEmx*Ydk%l|_hY@QkeED~6jy>cLf0w7nfY;|#U#c# zOEQOI&nA+@QoVfN-tDGiizDyomox^Ab@_wRiClnY!$?>*$10e(MLPwW#`gsuC76g3 z^Mrzw=gdk^Tucm8Sti)zBUn%D{Fnl3ey9ZV>W8)u<3f}vMP%ZPlrILgG$>?0r>iix z_Ist%o*1Q&Dg&IP!ww_f_-MUX=tLxt81|HWldram_c2;uyB zCONl%vjt@cALm3#Xtw4zn@?EU0X)k`5D*@3n`I7 zf;xl0Rd(5UwL!*U&V^+XYH~Os0jiZ{O^<=L6G&tD?xY_tH1ntF$zn9PZ($Kb!o@t* z#fY9G9Twc2Dc^#8SHT4{;K1?ezk`)8bq88if7AZ+k@|C-`!^Y%k}%!VK{2WrJpfD5 z)!d@J2RU5n!ukM%cBDt!3zgI|baMipBiq6`E4b4DtKn~7PqZTXPeb=kRUt8M#Z>0} zwU3mas&~c%wDmO$OA=2dnUX{Z`1}jVgko4XaF%s6>mJ*yO$=}mwy{!_#*1Vw(|%BL zEglg^IrlA}J3saf49-7}eK08vuLW}VnU{6D^N;zonPgR{MinbT7D8EtCA0-7jq|l# z)ON636%Ylk-;Fg3EYm2rIF+a?{x;k$Ci7Pk(}okfh5Xk?%psJW$p~D%O4b zXCm+BdrYZK&m^bkWA|_I{#)we2Xwl(R@CTyantexo~C9lEHx1d#2|{_mlXzvBn#9G zi)0_!&F(9=x~A}i_o=d6-L{;XmTpVBhUf0K9lb(_;CfZSy4C1?lS)qz@*~I1;^M8% zsh3sn9ti+S1*UlF48Q;bcJs1JvedeYov~8bVfG15Jx6a7&(Bdmu+I|Y` z`lO%lv&l4O%7@R%2Ly9bk6bQ#G#EdlmDukccd{T2+lwJrCI%&b33x2C2Ae? zNlMc^P%vdU8h8JXizl-D-h8ibGDh>Mp%O#EA@W&%(7px_t^GUY!L&pAmSZT1nI??! zX2RrH>GZX_>oW7F5;8+J852rzs4?I9rEGZlEoAA>r71|+)Jxr^_jM>e z1sa2vZ}1@-t0P^MUQHLlpLq1_y_0ms>OafR{L{KlrYba-qLP^Zp!Jhu>9}DD&6%im zTApa;b;g-*tb`Ole0l?2SP5%4SJnyoB&j;PJdhaqD_72mq_PRIuw=X9ZpQVvA&kT~ z?6w{iY=H5ZMv*YXwEsv<+jNwhz3&&nKXk!o41?CIkn1xKg11c;UOfmiC}Kdg6Z`hH z@ARO{k12#~8?ZJ$9rjwhcr<6T5F%So0)gX4julmdx-0|X@SoIVl;H6{P5Ak7xNOrr zO@1dfF%ndkd3@?Io!chuO0LRQ-sTc$yrctpS|2MZq?08Dr^>=UJbVtgrx_s2BtKKL zY%dARZ}JeS9v-vO?zran9NZF`5YWGcR|WltX4kTX zJ^hP)(bQ8oU&O%xZw>vP;-eEXE;))c50Qil`)F~eUyLFg8p(B{N5WGMZLf)uGVfqB zhC4Oy?anWNyzF}@iGbx8v1^uc;f4uIyabsNQwI^bcwZG=hzuAHG2{Z7Ieh-bVlw9< zxaEYV3s{+W#i%$AFT>A6yU0h0W`~Z2!dN@UkKX9trajk^N}NkQqu! zL{zIal^P160l`H(QRP@MrI8oihjHI429ntyX4B#!Gw1t|De!&0`iVYEr@x&V*_(c4 zV`-T?aPVb{6Wl{Ki6`#-o56Fd%;iE9!C5dn9^m0X6KhTcTnKje-6m7zFy&FNhW866 zo$>eQU8DbejUyRGhg|5?+j228ec$IfyB%3tegKOqof@7dl%DM+;AZ`<_|Won$*GDwNJeo9Cgj}GKtG% z4A^@^2q~ut2ABv_X>C11WWVg)`LuRdg|GMVrZZO-3gJn> zR3WP>u8taqu{%ZK;xhazSrqAk>T+d*iktZ%gH{HkAA?mb#@*uGP|6KDp;UIuC;~`w zHi+^KDUZ-m0*UB_{M!3(*t)l^2|Z_o#zoBiS{kh%)2E>v%AyijEdQLN+4+TwVIUk4 ztVc-@x#<|W=%+mF-16EgXtE?1_K=ig%^R4@>V47>Xo@N(Giy&{9}?bZ?Td>~b0x5z zI~(}3M}#NaC>&jG$OBWH#b#g*F;t<)<36UB4Bhgs1ssKQz&2i&;hq?3saP6W11>!*%A&c@ z=FRss{6qLczxjg(-9J9KAfQ_9=T>zvz-)0%99((If0FWw7TvDJVA;DODHhG{?PB#F zHswtUDR4+DJ_-_#Q>Lczdf^rHD-SSRE23{y`0|Z*|JJV*du;Ho$Lv;RUn6GLqq1Uy zz>8(2+}j;9p!tFCgeZ@69?*$^spl7B_pf3meiMCI6QmiCLvbjgA5Mu2t^F{U(7VHV z0Kq0#eDpebrEO3B#*P_pp3fAU^_4&8FVeZt%~ym9$GBkaN`&gC7T`?e< zpzx2-Js7}b5@4egK|fA$vpp3z zO-oqErv9W^bi2(M*W`;FhaVD#Wsx%K{#ATm^O8m-y{{Zm$#_T2niP2l+oI}ZB5as` zLH~#-=#oY`J>PXI!8J4`XpC8?YjS{8x#e&;ckWU>xHcyWLUffL%{;E0BcNpznI|e& z-^OU3Cy+w^v7}eG44|J1?EZ(hH#C03N5g>{NBfma9fHJKe8HD>Y097YStap&l~-nl zq3-JkS0)|m#M4#Yzo`s$Q6U$@aS0|6zw#IUfmJRNE_-j~&FLbmu}8}}CrqJ=N`U@)98|LP>To}PXX<>s zsue^0mtTb_f*9$>(_FMt&H90&1o>SA>0d!XN~hG7{iQ5B_|b)DYCPMN`7XqeC&3)W zib8FN?gQ+&rnfw{5c%!7KicO&(H%$K_wQxyf9tIhYF_wT5N|T;6DmWYGZfrBTP^*r z{Bvn}GR`;b zGuy9?xj{#<`1<3dr_a=7`!t&e#B+mw2mD{y@R@D&B#FcJkBlHX5=G^QPx0*8eZIUY z^$CuCHLmgQoDgWpc@Y<=HvU|qm6g%~yq8pLP{K~9l_k<93E9lmaBEA^Hr2v7d5N(ifsN0;5?DEj2~{d)$c zjW0ExYd`WRv0=8o2(# z4}HBj##IRZ!f|7MaUyeU+1P6O2#EUxY2Lu6x%mpltEV(VMBgt)5ksE z<3<5k^*w>fch!gep!|ge-`_%on@U3w{`UsUu3?!mF`|zmF7aCzTlRVNaX1n4``{r= z2h@dy1r@I~V<4j<$h|r%rvVM^y~m&yx)kd_Nma>5y``mBNoJy@W6S4&u3{aShs0Z$ zg1Dd`v-Y&3t4oA0vHTjgH}1vd+;c25xH0svcpW>LVNH5pV8Sw!B`E!HTWF+eyNLa3 zT%1*~7%bNlN}JE3YoqS<4|NC=9BB52qiQjGEYR;gysmftqQ;WV5%DcyqWXxj&$-2B z&=kXz4e?1Jfra=zt?>gGzC?ew74f6)`H8w`WPj+Li>=&=gnGSbu%?cVkXB@nazBHr zKtoGG=nK733BF@b@CG4wzA#le=aHG~kD?*sCqKBK>&i@6 zpxV|97UMU)f8b<1g6bMc+-_q5peChshE9NL+DPYuEd{P82O2;!5n?dDWC;WS~%B7ZRQy zNC3NI4j+6}4Gq8bPm7Tn4~^z)=8E{K<|V(qexI8|W5LP1pri!uF^{w3Unj-6Ic$g; zl{(VoN@G1CesYwz9qhW2N^O=YK3-etvR&%5f8_gcx}39U?>m zaH7nDT%RsKr>$%`PHk+60l?S37ai?oD_f!rKirZm02*0q+_=~2iBWUX*NDxK4BgKg zpZTu4;ywdqpFuunTPsUXA?x&JG}GILXAui8p#*ubFm}QMA<1bNf08Lco)xopyrtE$ zqkU$;E?6ijjXlxZ?}p)whKP^~@1A07@d*z0hRE{()>BMrzTy=YitGDp>P_jJ-*?FU zZTzqUV98SY5x5)*V@*KI?&t_fOmxLz(&exwDoKD&OIx89n6U7WoY+ILn8&aDhqx%= z(RbBC@Qv5UHCgLCjX!vR{U!X8TY()GhQl>pCg1W&b)@4a*kzM) zsv*NhGpTplSchlx;T7>lhg&-PSKao$=eVv;ptG~6-rB753b8*EY@YER3IAtH4All( zx>?^xO<6L)maP8kKIxffJ4M9Q$bZ)cPLBhQjD%TI-t(|oljFsiLhl+8WFOwRykl>> zT5U7DyReYfr?n0df_ z&(K4d;nctm%rjGj1PYu=866L~KvF6fT7EEQ1fB4|RITZU7MphpO8No=bs9{&8XXTo zYwN3voiu9};kPeWZ&wwj8*BXrZwqf@3@xY%DbK;dAffxsjNIGA#9O5&oN;JT4^Uv( z!ay2h!OrW~Pk;ITHfEwcj9RKhO-EQN=K9en5Z#T68?O%q%l!(f!i(-Ys(Jt4EZ%#9 zH=ceW9n#N@IgvpE_aVUBuhNRLQtwWxJzTcbeD^&pmKdo>kMgRsH`910#>BM0PmqMg z*NipB*Rjaj@Gx#l3Ejf)NU{Yp&bi?F#+#dxv)$jG}CRA$2 z4|F%(0!!6qz|3@3*tT2EjdrUOFX45}3lvQofj6*^7n*DRs`pG1x2?Nj*3C}F@KH)i zzv&|h0>?)L4y}$mt(VX53dbcV)5I}(Hjj5BAe zG5-iBkLJ*QG2r%oEx`3hD!8O8|9E>-WKKO$E2Mj^2OS(wB|juV(N0?zjFxBEQ59JS zv^TiaPH(JP3{Ozvgv$+wxd?3;&G--9zIe~0D0~|3Uz5|wpS8ZJ#!rRNT!Flor} z{>~1SRHkJCkn&80H1rLmZ|F$6Kj9E)l;ywYaEGpGn$8M=2y`S#QqM)9f$xx4Xefub zoeC(;=Nbq+S&~eQJhi`ZbKC3dhtmn*y!G|meB~5vdE@g#_`+NK#_4?rqyDQ3s>36E z$}5$@+m-=T11JXJD z=47{erSkIxMR_06e7^+x{7hLF@vT7HI(3P<$;&v0>6dHdTelA^ZatnYc3r{14G))n z?vBn~H191}Qdv{lb&G@3UIPi)-LZxe5vtR``hGL%o8MWXf#JH_*{8c4{EW*4$OEMU zk4XJ z1RutbYB0}Sf^umaTM7Ih{W=I*`eB|JLW?|t2oI5YdymNZ(F|kb-;wJ~p|Nh}4PgqR zE*iM;(u$qIja0~)tf2j@jRP$oPBx|5Lx}P{K}u-8M4i?FK>H<>Hp!5F`AqV4*q+&R zR%QSvH~tGMk$b?qD~crM=lcm?8urD|Wdn_5)xyH0sz?!Hy8Jcjd@4K+72erKT`JPk-{zT3=4^OiihM?6VX+zfRfqD2(hjp?pRyU9 z2eslUUgIQp;Kz}Y-8`>AN!DE^&|80+$|`1ugg^O+T0o&a5E=AtW6Ssjx^MQa7dWWI z%La2k%%y%aAF&O_l>R~e2YX_c_snZ~`y-RZ+Zp2W>&P9{;mgVZqSy53*xq0pcJ4}C z!Ods1$4erM9`faBt6npM%G0){C9qh_=&lqe_bR}~1WV#^N!qyO52@-n_uZ}FX*yzM z(t3M>N?*NB_K8&HD(&?P8s^sm)h@g!P36o?n}7Uxa}(3gR=|d<;U9k`#w~a zAptCxoaQ}ZC6?`F39No}k504DVM=2#)SKp;=OdF9VaZKNOe0~UG zlVK%MQDu*dzm=C^P-tj=5@dp<|EYY9PuucmwLO2OgqW0CAgBn+sq@B1o8rY>6+wjw{zyq@Kr!-W29eSY?k z-Fv#ZygYsR{X722`}GnrdEkl)$G(CZ$A5waRv{loogX%FSy~i2Bv-MtIgFDtAW)d2 zJ33R88{Dc70bZxh?;#rcvOd&beoc#)RUyK`QIH2;gHw&jWDTevhbOqk|28AlFzA zl+76ZTITPSx8>&)ftzzlS;qGncZ$#SZ#yoyZ*5Hhrgw$zV6^2VzWe^>bBcV^k^K#p z=d-8ZUy!V@4lLi7l>O72E`FsWkY#QBk#@pw{tY=18ar+vTnN^zL5mkMuC2VHx$L>Ss}k_U*&C6)7nO(|qQ+BIi+0?cv{x;RtDh%B zOzDrVP7b2(^qZjr1VC`~)c1eXx#$MoC$T z?Re6e9&1_Nj>9!BA%tg!Ys*jW9y6GxAH>{y=v>cy;Y0p*9ywvgiBV0M50>;Xa(o1( zD?IG5X78QW3go=J2;!~^WTUgNptn`xqYGtmW%mjBZhe~L3R!XJAUwV>g5q~Wpo%pc zIWt~}OnMl}Yw@@*NW%vlIX4xF8QZ>d1_#<@5IE~vgzhQ#)i3gZdDbpzy8SSh)KOU5 z=3#zZ>Q5r4LmQd5X4mK$Oo;Lj)!Q-ue_G6s5`^eVi;ee6zc>F#;zm$>Ecg22aP^+s z1-Ixsvp`YH^Vk{=M$KQ%=FH^3g}5GPou&xlBr;*$1mp%GxP+CdT5$9pBFv72=mlBO z7A@`i7ys*e^eYK_kTvZ>{wl~HTH#7*lG;vsNMPbv;{3a4u_%Fxd0BrLETgEf;EYB>Du z?f&4;O-)U8PfiX-6;vV&sZtQ3<`w-Y+wOw^(8_=eD(O;GWN&nEN_jVnrt<-a3-V+$ zEvR=m4jw-fN~cdR!F1o(3nE8BcicR*=aA2gNT2A{G*KC6fI_ha=K&aeUmaSnqz#^OElEwrpaA zwgaM*GQHya{o#gqIq{}-V>TxRcnHZ6sjm!Kun3dgM3x^6nz5(96s1Lg#3Ex5?Q{HOfxGShv&`D3ugFU;ghH|PFJkbGk)15Qdeic& zCFf0>H9q?0$TGhR{Lh)dB>Fv75rnSvd36FJ5|H+?R+Ur6(c)rFkR0C^rno#avVKM9 z&m=ui&$q3qik;yhM-_VEz`WlI2!A1_NjLhYF&al<~{A2%G&H^V64imYjnR$)AdFT|L6!@~IhI z>Q8LuL#NNg_0(fN!5=J~*`b1Sa-+-|=MlPALqKg}jYe;wcmZwwv@%qM3+6y=$91|w&0op>+-q()MJ)KHLuKu5G0RAf z>qLvrl-Ml1Ogvbmocs4cA_N^tOstrWL5Uk6zLy(=)mC#Va8k18AYjtLE_`R1?Ze*x z*->XyCL$PK1oIMeWsi`DHl}K}T#~r9wx^7ypoQM$L&NS}@?ohNu@I1V9e(#Mq5mh% zJ#H9xU{Hzv-jkCI4J}G zO*TaZ?NQ2|MSa0emF=e6+}QmDs)f@dMd-ebe_I*>#=@3g4#7WH*!b0~NEE zZ{%|PSc4Vg1!~4vAZLF*@Y1KEcXMvmO$YirpGCs!Pb4`a7JwtB8LH3CU%RjFaja)b>dIt88FWSI1zhsjSyDuks z1-4wBLo69-8{^>^F6{R>?E4*OfW-yeBlU9G^-obUIO|WA#bff+s)v6?7E=s`at5RX&$e^vS2$O0 zrn(%|pb65qUHE4O(_H1@G@>F-C}>*stvzVq?xqE@I}L(Wpbl!%$AlnDF=C>U()cqJxX8(UTbgZ9DeeQ9eM z8(SM&-B`l~`gb9rOro{mD{8lw&F+hyK)Uhl&9U=*!1VP-HG)CME;s6P-i%J74S(HW zRzq<0DCs*9e8O#n%hudIQx#>+;g9_Zo4vSMpVJTr<}ukqc=MG;qviK8*9m8CX1yRJ zD%kOCKy0niyq7_R;y0oiDSR}hz6maPa(MQ z-{bgH02$CG_nrrjT$QwTn}P977u|!oe@MD^K;VYaHH;*#FP42@iDq6?pKB;>D-=z( zsG~!jM>k-EIXnf`k0y+hPFH-P8p5e=+q0W&C*h+rY5(31dY>-0=jeNK53OCK;2W@z z2stpWLI2W6l|?iRrb>I(tuYEjSiT(F&K@Op0Q9tZ(ec-V<6Vr%Y0A1JLDT)9Vl{-D zYc@>t?whQgmytk36izJo8n1VSWym$UYg-82xZdBmjI?ai)uC&=R_X{!I!a2Nto1hh zP#o1p+x2|sl^5lxq6Ng`kpWcz&*d8fOvmZL z)D~mKNv%roX>GatQLGiQ*A* zV1E@U%s;E~7AA;|l$m`w^>-jKd+DF_r;AuzBww%?)i5GCaed0&c}W5PxG`?7xv`=~ z)xUbfxRAa>Snl>kDR-cD89$l8V|FF#j)~|-xPEwFArUchUsh8efxllhTuu4|Xr;ll z56RC)?*iHoPL07#8W3F%p6FRA`#tsAZ+4z%-E!L^Th_asXFd>XY8UtJ+w@ekNt9!`<_tCQHhX(l z8lU^uWOAfZh9aE)9uMeNT!v5pWV(@MDqlEW)EpXFsfn`2Y;@8IjM`g}ZPt5$AtX)i zW`d6>OUFq_C!6Jy%NVUMq9!U-9BGndY!qMx+0_u&GCcj;o`c8iwzGfd`|GaVES)3> z0elSmk6hqTKs*ZGGU;Z3SXfVh9Og?0fTW>Jl|H}!Tv(PZT~1dQBSpW26gc z>q~c8qnDdT3Q)GB9*&38y;egXytQ%=ypSiNj`-e`;$7`(x7kDXx50}J1jU?farRt) z`FB6@$3{?IP1;q6bJY=Gc=0=(s!tEvAHs&TAV#ueh|Frr)0wb!MuKl*>{$J8V0@jv z7A~|ln$p21c9F?$+u1iq)a5KYU;v%M&;h&Fr&w!RPGA-COMdn&=8?RnPFf$|Vohgy zKD(ybNI>h2!xg zI_Bo&nH&bOCja`dBl{3>7ZVhXVEVv&k>nDl#~0}Scwt10GEUa&5q!dA=;6-yT@7$) z!lVgLd4Ogb=CSCwr@EWWEDtrcY=TfwpL=S*40Y{cBzwdaA;adB$JvMQsW;@)ITb|y zPCeV0{fj(Pp8<>^Y7z}Kvh<@(Dlq;+4HpcEumFsX|4c*MAir9?c0dbzss{H(tG|Y^ zOzryQm!#i6X~6y`Pj)iDR1&e)v|t3^hKI7+pSj6`WG+8ODI+L>g>b$v&=qEWh}=}8 zNOpwZ$r-05{_Glo5;2qb1-R8n_I;XD`CNjCCki880FJ0_hjDb@18y{CL1*mFOpS2s zJ9TZljd8zoN4Mw)i#%pX`h*BYYs_NMEMm z7aSukB>9vsd(wS>!ohh>u9@wJIQeHOOscp|Sg2Y31XQ8oIyPsd!fqc%gyho!g=ESy z>#bb_KqEcFQ5rpntkXDz)br1eL zig&@Briz9jgP`^9N1ewa$)f3ZTpzJ(NN=j>w{k@{vkaX+onAlGLm@MzH47z@aW0NV z1GT~@D6?TYk)-YIM599WK z!lawml<*EUesML>?GkZYL3R$y#ifwhAR!3)`4&o{S)@$k-ILioMRF=HT?d9oEme}6 zf6BP)8-2Z70Pt3DSPTVjoLhtL$rccoan=Rf_#{@j5anV-v12@SGz>&kQwkA;_o@Kk z^NGJ+e%n#b#JJ43jZ$s~#iZ1=wMl69xeAQ_ zdzZ?TxUL;v$%K7f>HQoCa!fzh&G7@~2JR0i4)(o$1qbj+5e5me>Ut?=9A0DyMhg;f z5?qp3Kk2&k#%{dhV9arSqvfqYHxh~uY?F2ETW2B2qVm@D1`^IeC25Y zhNcifhG;!z*?~$JG~JaxDHwqFJJ$*8OTGyxVnU(c|7O4OyYNP$h2oS#Xw~iZ66Gp3 zW!ska6vozw813BC)t*NT&hQbR1g5kxPx3}Fck?*Cb&h_S{RRqg^FQacXF~5uERQ2x zDa0>z9r+(FeL#iWiovFIsF&i%4&s9ckdQ}tymFc>@LLmORn=}Imt8S^zx`^ zT?{Iu%5r<>N--(f5mf7K_Vv-I`7O8uaJloOyC7`cT+x}y>)x8GJ)6jBe#g*te=o_B z+yXIa@`ldUEeONRB>+X!Mq6-02aSxwB(Av$wD2jz>NBeFgNPiLZV#m(_$#WKAFbc@Ow#r1sF3JL)ruhpiMy!jD^JN_3sSK$!|EX~GGLlfRu&#tild@5oL<$g zA(*ZD%jUiS{=F+zo}!gC+A0D9p=8@V)Zq^yVT0hC>=l4Jf91BM-6vC}A1<@Y zqg^M5rFam$&w5RJA# z^eR*p$?pfb5Cf#V3ye$=`&RFKufIERfGd(|8QCRTv0>Eq-@Mo0`(?jYOL|2`hH1dk zgeP6EWF^k|aC){t&r$QAi~Kx^ysLCv@gbDMcQE2+D8;i zCEH1;q6PDEIfmzNJYi~8dajb za;Dv}J_Z};Xb)3FJu!nNFUFJSDf=IVc$^J}wJU*5N_*eGdYjWvifR|zZco4Cy3y2n6&2Qjr z&nI?k@YbpLJEAbSgObH7;Ysh8>)n|?$ogPvayNlA>!`+!<%~r3YlySxlatB_3UOj! zI{^5i6opQ?Nbz~e&B{qo3buhDX%n82E`&Ko9l2sr1|Z(P9J7PdKt;+_xa9Zu4<_9T z%6fa>oRf~U!3S*nDx@G~WV@fBe`Itu+#wxvX?j2>COG&B8qN8uV?U+*`iN45D9~+< z=`RTy8$G>T4BQTXnVVIDDzy=mj01aZM`z zaF}&QK^PO^?# z_5Mxte&8s&2sNem*E`EVi7FZm!t;@nqnsx0?!S14WHc+soUxmtGc31)YG+~80l=@) zHN#P+_O4;Sv|#bjH{XNpE{a%!>=S9F(Igjjt-{3ZkIYQA+t<}$lVObZ0D8^vs*-7Y zh$EjrB=b#rnxnM|ML46M2i7q@`BcDVB&LR&OZ(H$Nuk&1g6;Iyp!kArFtrFzn1umF zEHn;`<`&n*WE2X<;{bzdYf>*qxAQsulbmkysy`e0pNd z`yJ>eMXgNzbLPJCOV)ZbIWTn>6IwKZb$f_pNeG$V90D31{i*2T297UJ1grwjNgTKy zE@}tH&7^hVsEB$A9K1z}=E^Jhqij&5t^|fk1{I93;|DqZuy`_Yn2Qk0%MUvinzfU~ zNm)|LtpdM`$BK>iP}IMpY}ZLI%yO=Ebn%s`zh@QO!-vYW-)co*;z7zunK;cw@M&1W zSbENqd&9C$T<qXyi0AX+Hjde;S*f5-0f}!e}#?NQs%pRY-H*R%JUt1wWsW=Z| zStadFe$*lM_9IrZzSM7BgqRXzvk~QTY|1i7>GsIQh?4yv3C#uqlZn55usI@=%u+K& zu!`UCvF)bnD=RabiYeo4EZ6uZS+P`DwP#Td%Hs*71WusKWVpSf0Ib~a$IYDhUbCrV zGlj(4?UTvoLVEwiM$G-$&^tR_jM(_5d z;gK53k}Ci7h}*Prakqc)k;|bV_}OAN7AGj>m*`$|kU@a*m(M6$9)^E^i*9&c?|H$) zr|XA&4wF22DBX+Z$U?LGA#oCKxu>muyK6-SDOS z&v*HEUeS5{2S6NO{w8r1s5N%e`Q9bEv#K%*mtB+#FU3jZf5R_R7RpNJ*qRL7|6DAz zDZ4lvB&wg0t1-(%obo;9zVzp-zBI*Ujf0mcj~c)%u3dk&fhYcN9k#=Y}t988|R7VAHBA&9bQ1TxFI%rv@`&6i8wRaxK4m zjAj5@NKUy*Db3)9`cx56eg95UzLG#EiMJIfo}})*ywTuAYW4%C*Jdwl3vOIU3Prng z4U~_M4Zv}q8+7{{XAzwe%0o>evpY{^KQ}776RZbIy=Bafiz=j)GMg&(&l87Z?}ofm zs)$yC7!We1Wv2x(0y@Bfd@&`0JWkEWe8X!k!5Ya={`6U9CRyFLptF_%$4Qz4RkFfu z!*91xqYR^;PqH!;*JiI%&=7g05;H!FjiQN_JXveZH!<6!uky8%X`>S}tltpVDy~TZ zP~GFcKWO_~K0S%|v-SiWR_ld|}s1n_UX>7GWq8=xIa*L9MoqW@z?Q6{o7wKtxL z*Xffud#kio0n?eqPB89!M(jDA2}+K>8cWZ#5(jESe0A6P$;pGgN-;Zq&iPTb!-;7U|ZU23zvr$#H8S#zV$Ziw*<=H1OYDhYJDGv7|Z14?Ge zH8R|dhPzf$Hv?@KGaE+m@DuM3xv3UdTZ{)HBUeJ+W((%IsR}?-Pd2U73kpRkULtT4 zOE2`;4uxO#Vg{dY?VIK68Mh-NM@8N_a|Y-+y=rb>N<}Lw-R#Z((D1818Xkm`nXO4T zAKVhseIHHjUH9Eg_sVRDfe!AG0N8ff1Cu|=YF<8lA~KiTXy#QxZ+d;nez_#ZUPs!< zoK}y28MGu*4)H@{4+&KNvs3OwtC8dthwIKYyR}2*HQHhUTo^5tjel3N+IDPn=g6D} zV^@j3N7cdKH;YP+PJ4`960^H&-;V1hSMp#B6oxR866sjJl?dlowVEBY0GRt#&pZi7 z?{GSHSKX&)^9!)mY}>R3CM<{nepX6J>BPXW^y(zTR&l;Ja~4r? zN4&Bo@Z8P&pT#wdNASXTxqqeNFmH4TSe{PDav^;9c61o6^dP#2de~S<#a)1n?lBdQ zUC+4{8BYu&^erjmr`P8E5CFL1oF-9(E^XW8)QML4(Hr~G`-m|Pj66M{&QmSnwJ*>v ze`s0XQ{+v}F~PwhA{7@G&d_@>M%$e4u^A;*X4Ws?Z3IOLCa zXH$oUZ-poaw9K-jX4BXivhc?Q2h<;!co3 z5WOb}IZHWkuk@E>5Bi@WtH3$Xu&&rrxhEbw=1-bD)wD_a?h~DUFODrg6sB?M%fnI( z^--;iO}r;wcrOko)0yYz>roHm3@+2+e{i3?0kWrhNZOM?-_2LZPB|_^WZuU1hb5&Z zi*;PlF!n`KzWtHGo6p&=G7a}U4eadH#H?5lnkwK}!J8AV&mf`2wm zigG34xI;l-`WLv1Zas>BTXy3J(O@4v=BJ7C@a+EZTzH{4Qu=Qj)i=O0%U7+GNyJ>Cy|s=0fIVn0WmtG1~} zydt|z#yilpr}ix8>$18dQ`qal^M?Wxssg#fO_F2VSqWM zSlKl+Urk5+axZ4;zB)FEU%Y}RO+9H~UV*(h$>JLoR37Nbof+zRv&z4X-#heffqgQy{RQ+MqLD)958KsFrx_0Ixp!Jk^jEhMWU5xxKpQB*|q zn>N(Piiy4Orf%oeXHQ_s_ED5B|K(xUx;8!d*DT}E+@^T0A)u!_xNg`d5@5o^%llD- z{bZXDEv@rK#JvCBRB$2!?eJf^GFkM1(Y!eXZw%parM_@yqdo`;_#vGDq*j!lnU8#MMbd=_Lgf%jWO)YcAQWTw?5*Q0NS~N zoUxw6i{zudPjo{Zlr|WsxlmB3Pl_^*()0j%z-tK6# zgQ{_Yt0uFz<+Y8)x!-~72XRTSH{d5d4>#w7`uDZ>?e=wq3Y8FTZ5%gnaE*OnAmlIS zF#Z&@ls|mL%{UYvR>H#zNe6LTR_9I5Y&rRkjSS3ZZ*!j2(&3$1MiZ{=`Zyg?*5c|X zZAL&F?k|0_75=`b5@HxGo?wt!@e4PC*%n1LY13I>7)1ss2J-d@_8i>X!HA@10;kLx z4>DH(N3E-lTRz;(D1!}eR`vahZ;%Vde?Dr-tDd~cjjLUXAl}=i^|ONeAwqp(;F}74 z;ytc=2M-uGa|8AOB^ug=IyDI?I!x6DfSbS!hV+8suGf^AwA5Q(%FF51x0MX)h>>Y5 zY|oz7_`a3v71n#q{hjOA%)FxdgL47$oeK9k*{5$?CS7u(zdp~ z-}{`-s17}B)$aK1?7*zjc0k2~4;k)NE#tE=cuznr7?k^B=-;>!vE1Uci1)Af;Hd3u?N5j*;T{xR> zr_mX0in|{=uJL))UCXZ8m1|f7YA#T_A?U6y;I|t+nBgJO;;2o7iH=Xm#jwyG7|zri z#R+-n($K`*LJpLOs7FNf+)jA%Gta&B&EoBNvYKItI_??jSILd_bwW9~+=~jczHo$J zw3^EeW1^ocTcwxbhINIPUN<)WNSgW9(}1Ird2LOg`-pt#F()9$WE&vBL*XWBuk4BI zO%F!FDcv%;<(6XcZz7EngJ#6~oYqvHA>AI+Up(E*;J`sLrSN;-ID4iFg0%9K|0N)Wn zojx6zrP8XJc+PZg%nk$2KMSVpm%ngAO>e#vSnV!dUJbyd(=@!Q1Cr0pME72oqFC_j zy8l3W+|O!dsIl1I$3zJ)x~4vMJnVPi{a-Vvu?|Ico?}yNhR=tcz~$w5q=?K(iOcZ#eQ4orNDKP}d72*kV{!-F!y*7_hYAP4QpHe}h_l*X3!kw?9_G1rCtBTkH#g zqELtlU|~8qNOUi5wnj}mA}&ElR562=EHgX-YK6Aj6?NqYw+{Fw!DOTQ-%~Ij>)N6Q z0DzO1HugoBpL!;GUThM2LMECa+Z24eI(T z$!LD?G8?P!G9smP_S^4}mhFg+Hq=9|_1WQbgiFGP zC}O3reGKNC>IFYO)G-aI6MKh0cssWcdOzWZI(%A-jyWRQCxRcU*6g@LC96NyXGWbG zEb+4CicuEZUJ1PMFo^OM9*sS&GZJEhA>Vk!F!r5(=(-3DdDiO!9}yTgZ(~3K`~dUp zT}~N|26XT&Ivd0=iyG)nVpxDp^^ohFI;T1@p~t4$1^%R|@L_Lx%>`Gx+=*k4Fk3@z z$tc+6J|0IQ1<^Dr*e^xbGmW@!ri%03PDf(Td1VaN)7{PQ_CJEjQ!fvzVl&P-%oS#b zgQm+OKW`FbSkH$^XyE6QXx)|oJdwqR<)UKl@-3#&l(T#87jO{hm#lbS*tWwgB!IqY z74l%(8{M3+Pr7*aUx)EYv>?A&Vo9?UD6y(`>Jg@{4<U*9aTW>SF0#vhW>)3nY}BC9`3)NSvCqbNZupV1ZrfaMGe)zI*U zYZ6kPfbSN}i8gDn;TCT%k0&padwR3qRJALbxn|~&KjrRdM%A*EyU-|qMh+aG=9|iR z(Gh}Zc2-4gVi{{7>)U@8#Iu#imYh)c{q?q3PZP2AWJh7KyX>af&-8wC%lIa5L{NE- zG3!EhGj9@f1gfVgvmW0Em~mYX8ClB^I}jWwRR0EY(}9P8ylrhoxD6?xuth(^go?TU z-F&^w>^6RH&zlJf!8dD;aqGV0Vt$@3HV%d<98qd)rN20VofQF$fHU%Pxyng0dahy@nY}HUQE0jV4Lv%Iy(MjrpoWR z_AKo0Ge58!RRU|};B)4WuKMTl2?lk_Qu_89;WP`#%Timwr-ZV58b4+dH;KzVAOwKOYiw&N60ZZ z2wE0E6d-CJ;S@u^<#h7DO9JC195OuLAEiT4|+qR!GSXPqM{q(SObrqqtr zXNf97_E1W>42x7?6!h{F$Hz8W1*ml(ui37%`ZhgX6{ZUYB9CVeF0IF_M`94eKEJ42 zD3idF3N#|j^BkSUr%~^qK_AQ=+i>NfePlB=eUV?j8FX+&2I}br&W7IIg>tG0{E2Cn z*N7-GKnaK(&kpio{NRLX1ThDAJb3b?MQ(nFH>1)kPF46^M?T6;2FcJSZ7Kqys0^{g{~l{87mec^juVnxkaALCvuwdifKd08-fQbV?%*$q4|Xpl%~~YN zhM0#>zQLK$aREy%Nn=yc9{16ijA_CCJL6M}@hxu~gQWyP9#fuGZaTb>xAVPV zElr&%=XI46A`&S7teQ-nlzG_y15r)wPyhe` diff --git a/icons/hud/screen_operative.dmi b/icons/hud/screen_operative.dmi index 88fcb5b98eae2c98804536f5b79dcc33c4ec2527..2dd3057137259ed0165dc86f2aa01bc2be9866fe 100644 GIT binary patch delta 14613 zcmaiaRZt#HwC(rd!8N$M1$TFXLy+L^F2P}Nw*Ucxy9EvI?k>UI-CZyLId!Y<+ntx0 z>6zNyy=zsk5<@rGty5y&VYTp8jjL%dVRl5oUwUCj#ya zgSkS7YO)usN9u&p5S~gks!&o}w4P(sV)NI{xG%hqOpdB4i`Of_}J7*s+tt@7I5`)>K>sc&e*sK zOXw>#6`9{hLCgt(LUx3~Odg5sZ-R;1YNeE9O?sf*d%p#fsD1j)gC=!D36oCvF3E-A z5T_B3*r}oJ#zzIwROYH_qm*)I@am>h?YLw`tqO*&hEeyPIHPX9T)R$HWrhfKz$Q#K9u|T$1j$@4Q5MpO?sLkni z^{uRkG!eH$ys#abO1(CsffBhv3fz>up(gEcw!Z`2U_TL&ZVOHUwT$6B38tsfwIZ%L z=r9|?xdPEZlC-%Yc*{EyoH&kf(WBqm=ho4le(p=%`R)Cf@$Kk%gvBD94TfA@k=!!B z0askv*DuG+AE4HU_>Daa4FO(xR9{X`f_1;p2J2jxjq9*d`*;<3eS!G|b8#SMubfUy zf{tVU49Sfp-d;DRn_Y}4j_tptvJ?IVB9lz6El`TfI}z5kL%xK`U~KcKg_a>JnAO7X zoBy63QJX7n>`8QV{}D7Rr~{>@92+{AxLjL?q!d!*58z#kF~|gFlO}1vF@f!q0L%3x zSgFPshJa1{%KcY8;=$R~yn~=gb?hhrcAAK-TC$up`&2G&P}BbzeF$}O3X_5r4aQGG zEO;$+7J3zFj6_(HGN<2cw0P*1FV_Flx~7sJJLNsGCyHgK+y3*<=Imota>)tQAdWu{ ztT~`*fCa>66kRLyJfwZuRPz|3mX)+Ea@JN7Weyldm+H5cAYQvO>v2`>E!+O+s?BnJ zUG-4+O8Ke0)S+=zkT&doM{U2^t0FU{yu`Qa91bDWK2bWbZ%=1@VZrmmOP5QfX~iIZc1|4TkUPfxPA`!3=yyQl#_1vmeZUmQGkJgBi2>#?(E0e0L_`v|l8|_^s?h^!piS1I7xADXD2I zrg%yER#RoETa7T$C=U4_ldO2~Ns^6UkKFHREFY@TOYZqolUHGmJ& zkeJU%X+!5lG!a+4LW@lR!;uVx_Y4}|9@+&d6>IKD9m9*wNF88lYIF{PyKV>qS zn1QCi2j1q574#uGNH&@M7N=0L^$a*B(qwJDH^fsvs0783`wHy z{m*x@8YOwRRCSeZIx)%GVKA)EH^nmZUHXv?p5znxo`ERI3Y}GT@?)Jj0RH-V1Z|O1 zRiJx%KMW1r9-hhM+8q!&MVlEwr_3SXnLyk#5~A& zrKGG43pZZg3`L%(Wsh$RjCX|^M>#FP3pWySN3>P5#<|E_;ZiXG;vUjJDJjymYbN74 z@-?xet{A9HAf@Sr)b(RAq<#)qVbB_z;)o+3;_|&a{Li*Z@V@u+Z7wydpRN9dp@n|` zdyNV^?9AMQ*PRnUrW71LGW$4Se)Rhsv(_E!to6-FX(P*xARnOGsOGgTvyUAERYmzt zkEoC?yj>aA+v!9{kl?_RdWE9P8H(bpA~0t@3Dtc_l;Phw4%k;D*j_3~cA{E{xZo`* z!{1`!ESG>AN?1m5tm+LsiHxE-Zj{_`OcJ}3GVt)q^&j{0@S!Mb6QW^eE<2|ER>4v<0nqyx__Br$Lvu-RQSPiI7Ju`65eTsh;vg$->DDn;W`@iX>n&Lln^t z^s8|P8>si$M77hfex^FUX}Sy=CrO82b|VxAM?g|;d{q<0{x6#r2{T@8AD;kKOvWzmRwI9 zqV4j)ab)Bq%u`%owUT1mTjY1xggkjzs!jkD@=qwBo7j!8tDJ^Cq@~I66^o(Va!-~^ zr!T?FirdW+oS~7lv3v`oAkmj68at<0+kwK9UEtFBDZ0~@haZpV-&b+?x5j;W9nk`M zUcVBYGJYZ`3aN_Bz=0ex%wRB-lzI}HEnI)0T=*R~0E3F};jG)}gw%=*YiK#;BL;|8 zwY~ZnfUxyKaAD%WpO6Uff4t}=5!i3Uq|qrG&8b_aNYDH|dm9+<5tskk%g*EVY6{m7 z_@gD(`FT!82^v^X?@4VCOV{HeZgU=FUHeTXmanf*L_-Uv=sxaM+Z&kifap7{DopIe zZqSLY_7N(gXQEu1ibb?e@)<3miUN#r5%n)Uqa(p4r9vsq{tL>1i5E@f)(@-WT5qPA z{YlWyntz|6kVA*ZxXLAusHRG-*0kGD%gccm&bZCpAEjXsOtLZmw09jecOQD{@i^OO zqQ#w-2k1+dbY(ZB<0kCN#f#w^>`F~8CZ0X+OCJxqx)S|TuFXKAB>c$fHGoso&7|d7 zE_a&3D3w4@#o#rczV~Tcq`m4##;q6W!|0sa%U(g?sDMjq>J|S%tmrHSlaxG@ z5GGV;z(~Ttzh|w-m$_RK1K>O}@J4DgAx*>iKIsR4+bif_Bz!nBvY+7=%}v#nI5A0a zMpo!l^4bIEhkN9_iC!3~ab&I3rY>`q!%#4t@OJOlmx(NDLK0Fd6T)XTS=QANERr@_ zJ5zR)@^<x8vE1aaXtJX+itDF2oxS|&6U%aBj>{9 z!xQz1Ja)|xd~xj&&i$6o1?d16v_A55^!cpWQlPtpOdf+YCoeD1!n~vI!V2+u6q@D# zs)z5hPNQ0S&2?k#9-^C_Zmbe?iyJ|wttd^Y^VJjOpg&E2oQOY}!;^qc^SMB~LjuRu zyX63>liE-}fIqi^2@$)s5z#N0DyRj9#1nHVNY>X17<8~!QsKlAQnV5V|TxwFRQ05L$daP##c*S?23bxiZHTMi1yBDTerYZn)|{ zmk21(AbnC1;X>j~U7qwJhx??^5jt#)w1QOw+uB&3L?9>kjjRASvL}v4TGVHCa1HL! z^pL}u8Ap`SWm`p+{s9)lGF4h^vf>a2&bOg0WWrW!OqWaj>SkO_m5Fgjh196OK}$yz z_2{(wB%+CKhQ?1BSGe%$m}*+}FjjJ*!wUG!x(6Muu6A88_A9&dn$H@I>LJL|gBlDi zQbmr#2BWo$I}ev$NI>#aWrH1wmm_1o@^@b$WX6i?_OBP;Wy3fsUvObZHr4zedOr5US+@W-Uj_h$c}9P2O4!i|}jOQ4g1 zM4N&74RsbtRl;<4NC9t-2`pha_4aM$M-QEEOU-Arv@(>h3Ax{UqzZ-(@sn7rpS8Vr zbWm)GON5>C*Kf&`&^wiPL@X^q0O?}OKB`%7Co{BI;ZVtOQg$(NNGb9~0sj2fXC=ZLnysg{R~ZW8@eqiKP|Sp%pqV)#<1B|sMN(6!YOV0jSE~{^TGlpefV8=b(K|ea zmD;ERrncxWm=G*lWnTl0^hrbZ6qG}7casypXE4o2$Di-DZzJ*78^rwkEr(Gz8A(3t zr-Uh3XNd%qmTo3!Yg}#Bb3OE|aXG>V$1m0}rw>&v!lINP%~At_Oq>ir{`Tkdq0IUPT|=u|+kPfUxcd@>F7l*alv`w7%TM*8SvxS zPn_ZLr?fVn!euQvQBKG4-%g8&>XMF<5^~IcnjQ%pLGajl;31;BH$=SY$_`oo?JM9y z^{7JJeNtm2q&kCdop59NaGQmqC5M4J%~AM*3mq3E{FN5qh8~~h7hmQ9aq6_huP$3z z%&_N9=iBwLzF8_FjmYMYB@KLqG>_%&M#yAwc}BS~=Wp-o$>mc;4yO=&)+b1y221;c`ykm5bEVyb zL(yKS(_i+*A|nu01&)zccvUY@L)n3z4roG#%z+c^FeOyfI5mH#6s%nX)AMtfMGp3Y zs8rtP{9rxmX+PiF*|LgOB>Xx@R5@}Y_g9yf61(dEYZMiOJi;oF$sN|1#V60>GAWmE z*RMV@c&O@#weN8IQ?R|t^j}py7f1?&v5qN@lu&FrNlPiU_spECB?8y}ZAbK>73YyImH_2)QioX5`uG5m z1Sd!Y8)fYJx+B%g!@z^Zsv+itu-nEOQfw=cCogI90z&BNkgA<;ByjZF;E9m`Nj)rd z?~z4o*?>897*xo{)x3IH#3AIB3<%&Md=&EA3}dE_W0rR7P8=!m>*vLkHV5K}8HK}r zm~K*Kzg*+px%c85@E^94IBeFPQ@)IevmsgwDP%KOqE_8SAM2YXFKkandrNm zaKkMlY&zyM4#XK6fcl^%Hl~e;5+vK%wU$Q);fyULVU#e#7#kh0A54S!uhb!985tmx zF*dOpWv-R*6~H6~;*c(u06GihJ{`8o0+#>FLd&L-NMqAGqcyVL0=B;n7JuFXC<0;w zHQUqUWEh>OM4)ebWY1VKePaaN5MW)8Qb+5I3-3urBIi&{lSy#qwM`IPt|ez^fqIpQ zc14)*)7U$AFwx9|ci2em2Yi5!fR0bquNF>?fJA<6wXt@3b4Sx307hzJEl0hGK0~RT zjCDr+Szk#poW!JcC%s0J!)}flrs3Ff;3?rGwtVk{>{q>DHe1|)t`tY+6QfK^vf%7f z7xJ!=2=tT~H&J(r=>+yj zrVdCDt>#$ONT?^$05Xkq``2=KO{SJTBN3Yv4pagiqK$~W(_+z_mkZ0a^zA@@mMxNi zt`8IU;Ypp6?`i&0mSyTU9XfFW6PORyVsBJy57Hj$RO8R9&m2fttsL*z7;(T=RB2 zH#IUzT&*7DnNiH@h_c8Lb^;&x<+3FKr!(F(xpuO$uO_%x$Z+S~z=sRtd0Y|mw^RAN zTj+4o=x?sN$N8BZsUms{#!9!6Q9W*0`(k8Lig&kX5e40vpn$LtDtU@&yquLgv3gP0 zf4KzWf9l?Wx-XOxJig;T46z=S8J$oNePD;8_8{YN|7)E=vk?t#o$q1H6h#$C7w3G| zjo1BZ7JOERGr0#UlP;&GWsCPj3dx}#Woo=`i`8P=HVB`qyf3d*$1OKaq-STe8Tw!q z&1BYqnRX(hmu{~2SV#{1pfkA=3&n1!lD?f+&6)-9z$$E_28`f)S-yr5!m>nQt>tZ{ zXJpkAD9;F!lpTkBMAEZQ4X=$$>vuf^_4?RfU}H2r+e6v~S#i1O=)?cs>OxX9$c^&Pq!@-TMRBzp6I+D!0 z*VafGA8#mkJxu$W1Mi_$l-Mu8ZY$^}X2r^)buiKLhv=dLbp+z$)OOr7JPC^&S%`>; zf?)H+60mM@AR*%P_?sv-N#96Wb5#WtW5lFoEKq0`41@iQK+AiP$pI^=_1Pgda|+&8 zCI}TC&M+D@9l<@L{R9pd|GVRYo%1hwx-#_PUreC5T*4!?bDUkYp1?40>`boo1656V zp@kvqc>Qeiw{55rh!hH92%A%{FQEllS&K9B%>Y|8%)PYgy0k-}^7Hr0CtohJZ^X8q zm`F5tSOJFU+`chz4rZ1-6=0+w|2qE#X($M=csqVg9<4JEl#Xw6X!@J;eNaf@NR#-!zI%0!2BT`>JS7% z|K=L27c#TTu3HU~8;Ttv2-9Jb%nW?KZySkCW}-knf#l%&1qR)?Xd=bG9A2fqp#1B) zZ{-z0%Gd~oeKwBDW^rFbG+>wGfs{@lCM=UwYK1xf!nhNz8_En6H%$=v^cy{OiNVycBM|wkK_&(@ ziAlPD;5X8R8B1kp2~>uWns{Yt2F+;3+T?xh=htH@_6C2m$v+Z~o~y0A%f=F3Frf?D zdm@g-aHNxnkbnsArL6@y=QmZ(IEh^-+nZ-9I>8nHk^Q+0=5npmVF|M`LvT%HZ?wk~ z0Zu%d2c1GPWGb)GCr*m%&tB5?0o>KBcTlm=Xl=;jNxUpl^r1oVNB5}09c29<(P9bU zW<4FI_f%`%+n2AhW$lRgh}5B2;a}abQGV@RUHqYb`~v|{vl2+8#BWeO9vJ`HjGjrS z8LD$}j!7f_Va>0a6zN#H_7?@G#|AW2)qUTpzH)Jom|^j~OQ;eQAkuFBec<)_qfNS# zd>wIdZ@tk{H7=BaXyESag3&Gguy|ecxW^dDosn!Wzw8niP+WJV=qS9c({XEr8y`>{ zV@X3(ntcm=ROmTmlsneEW-+EjsPHK;(%+ylPcVIkN=n#8zDv9KLH{77=SZ=m;!Vmx zmkI9+L_oV2+)(a9;&Bf@Hw*=FND7@gxJXDK;t}Yh3#Xzt&}zEp5@Ptr9iYQd>i}b& zVG-^EYRNLoMnc_&riH(Y(s0mV(zd@Fe?K9#?}xI@TMZL{$K()&TubpzM?Ta#bzY{B)-=?O&$_|3zDfOcDMb$(glaZexu6&;#fjO>GW*80s$#vYk zHSqo3rMZjr+fHQN$YZf@+#!&$J^kK_zg)T^X6C~&_}5+ zESvS^!b?%W3dBB9n@|XDpBiYGB|a6&BLjE|3Ds>0Prsx;v&7UZQUf|eBB$_6Jh-R) zQLZ`Dgv5|}RIqhe?-zZ-7_@U zZ(I_I5)yc@*p==NTC#3@2{$+oK{D!DYa`z=#Gs^Fc07UUQ^3U^YmH~b4E!aYyX_~qUfuDA}!iR%>ND=XC z3X`)l5{%WC9z+$bn5J2|yCUA5&rDI#Xx3t8{GKu3LULv`{ur{%;Ipt>=9yN>_;w=LuNCRB}mo9iIWyoNppBfmi~$ zS8ASHG6w%EefPkgJS_{bH)ircdYT%UbYXa}p3ms9IF8-M;Lz;H`{c7!o z3fu2BN8Tp?+(NC+n|A9Vx78ptdq6}3TD14ZA>}EM$e`M18jTi5W@#7H)MyCg#OBKc zD@b?#$F=GS+6Hj18H3?WutxY6nqeoQITafsi5KuQn$s^LU`y@8xA#8oS5Ie3*9#q> z=cNUE>j8RtYaC$$Q4owP-ch;OoC52v6<0-i5EUcwiJ7h!7^JpFYApd{wUlyDVgkB5 zI7c(=o`(J&k=;qEIYmwf*3fOTq@r$M=Z==CE=yiAiNGr*QE{nGOv{&76(8^IGgw8--{GQ zdF_Q+3nRea^EyBb$3Wy>fBl<2{;dX}b!@!aT5+S6P~f|P!uR(hjqB{8>qsj1G3904 z>N{&@4eg&AbILAYWHd&VnSh4K-*ZamSzTXtu77Vq7+B$SMi9~MH%Q8!l*h0pN5#adws}Uc?rL@)a*221@SG} z*UxCp36Kc5Sh5N}5t9ID&W<9b-_PM$mVUC^(Q+lECsn2gjBOb?Bdl z3c04C)bjbNjw5EjAG%qw^zmoEqdu|txm#_k>O=|^Y)cJxjgi>FfX|D)5EP&xxz`PT z4rxU^iTo5=+XqM+m0+rElU z8X^}S;oE&2_sX=+@57~Ern`^XgPrE#ZcxhQh6C+5gVX z)$Y#5wVvWm1RL9q{|@w-B1paL?JEs^^k^_C<3>S8A>F@DPk)n}$;ytFu^}6?8fNe&}`n0rx1rQSH7n zx&f|HEiuIV#*otYX*Q;yJELrY)f~s*IBG_i)Hw7(UKnPGuZSBq`l1OsKV62tUte4@ z`%Ou{?D(BIY;v# z+L^#Kdz}gU_m`{uul2aXx`3=v+UxYRlUJ?cqukqAUnl6OMXc`5X(Qa_AO#)gUPkyM zOvFXZrklCibY6HxglK~`*f zp$6{J?|siOKv3|ntyR{rqc{pTOO|K*il2@wev};PnM4 zYx%EYk*g&~=@@XYY@@*uc42m0(?1AQA6YUa&O(GS_~zM=oA2_{TP!4)yd%D=Pa|2Y zZ$abhUAmi$iPg&|AS`9h^)c%VsI}@?P4GThh{V%I>g9b%+|Y2daqr!L1#%g~frZ)c zp3S~fq6-v%4+ahnkNV7@D+r*UsA9qFlB)||e0}#fX+b+(Glr1Tb_pekLPoW23~~Zz z-v`IE&%5eert*ggE0MBmYtx~L?0*y<*ZhOI@Fk_k0p(9Xg7OzYTk}PHobdfdAdr+i zTc14pl*gOJUw>LtP~5C<4r$Og`Ne1px}6TK>(BIGw1L5d_q+Q`V@e6=S&sTbo%>E> zMO1u~q>y*5v<>CF)ub!0M4nQ!fsfzYw6yaPME1m57I^qbN0 z>KCOE&6h{|Jn~s*ZhBduAnix*j^dLn=h_vZ`0M2&Q%Kbu9y&8C>&fTuF81fo{d{j1 z%D(IrY<~YU<;fE@^=S$`VkH0%Iaph4(&INw`PfEI_Wp4;FzkGKkFcJ1hF16PT=gk9 z8RL*#vp_W24*U&Q*zz(%+41KOz2KJqV6)$$UB_X+%PgRC*fkUV22!*>&CA3`0EiQB zHi#2<8)qorjes}o2updCcDM7j!?+BNg%-oW3x9JE9mP&7F)K9Up6Kgvn^%vq{_C4T zE|X!s3laXl_8SsDr`%VMFQ2^+usYjg?FS=6Gy!^5u*Elq3EXFIz zur%A__EpoJC|9~AV1Qh!<9pwo-$AuY)xz4z*xp&N4*XB_ZpZuGy13JRQ(RcXVZZpW zp0ZMFX>PW=+KJCZs+%J(s>Vkms~Ht%!R4Eh`<#x>^gUyp&HW861Ow>OpxaFTcT4mA zZ`aYwRojZ8!oQ(VZ}uE zL?o6PdoIry*pyB3erdo5!Gt9>y|fBecV8l;RX}d&yS1agulY11*;^t{s1a{Qrd94Q z5;8ek@2ZI}!Fp7mL4g3b#9uS})h~8TeK9^pU8c0_V3ihP#DAk(m4xz_=O~P|^^2Yl zqfHNP+Hc#08QyMFlrI-InrHO1WYdC!6G2$6F9zQuN8Tk)7Um16clqo)0hyW4hXIXe z2bN6F(H$@P_ z$Kx7}USk99%}+nhp0BVy?n=y?&PVijnu;=a-*&kms2}>TuwM4c^X7hp>h1eiYLPZF z30zvA>0Ps&Aw#)8O&+gkS7&BX(c=4cxUyfqZZ*+f0jO3{#9j}hJnh6OBPhIhkDl)agSZXByk@ZdrEtjtn@6 z5R=oBaaW7Ph~SIsh8V3ppOa>(tcTmMbp`2mY2MEftALnE+EO2+YF1w_$Rub4=s04XJrH~f5DbmovLNS%{X`4Olip} zQoNps#e6@V7*OGaS3h0pe0g(vjNa+vj6j5fn1opW-X4%_gy`3d@iNa>zHprN_IzG$ z4T>)W8w0~A98@tGJm#z9v(lL(ee1hl6n+U!_8B+%`m#(KSBEH(3+Y+QJ9qe0agqwn zrYOHzko(lv_@NR8JN@9>ZdDmwqDS35bpI8jY3X2ND8)eV{WM`XVM*-Sv@hXjWquzxR@f%}RX* z3Z2(w2QVND1~B;U8a4yCA*FwwM-Roa_`&w1QtDF--7BPn7xI9PL#Svp29jmoslKw- zLJSOZ5ZPU5?UgP3&l`d3NY*#k`a zA__Go{w|v|tdEk9PEO3_$4}XUX0Vgr-6X!qz6}cK4V=&{uKb*4 z@sr#CEAJss{lTe2{Evu9&3;l01by~*;Oji~(<8|xCvUDhmaFO9cfD3}2@B;DxH0@7 zfPPJjuaG5jO(U%|GO1B)@Wz=__LK~9qRyJAS77e}jiaz}`cd@m4{-(wH>%AVFkKiYx_4ryF`)MjH5r zHNtxjfxyDheVz6fFGG(MAT3p?dIm{oX(Rt zq-ou)_DPWw-3RBP^^sgJ97F`$y3~W_znZS10@ap`qSBcwzF~osL?-%BhzUE&+%s_e zt5@5Elw$`%FR3=i;%oro#tU-~C_auCLe`;_CRk6W%hR>hDTtA)qQ9Jmq4@^=Ou!{Q zI-~q$IWGVG$P^JzdG^lvqjP69VW=ajq#}q=!-tqEhZ{UF09pechX@N6a0^qIuUEq@ z`ZniHFwAT~`=KAqwxC3`?|v7&j-DL+rGaqpz{(G(hTKVvG{w2Pi*fc-o^Hx^bbynvR_)SKXrUlJ>PY$RAN(7Pq?1xAZx^AnA0NVNdSRb#kb zAyI*4msYFanXT%7c7o$?oL9L%62FbK;`ohHhM^_41V4ZR~PubYMuhmU3%VPnd#c^5Kz9KYzpVS9UW9K--R)JLK@LW|vs*h(pGwV*iZ zRX{wI?sW?8Sz}Bzgd<3dQcGyL7TA(8x8HjR)j z^$}MFCdT-aLgGnxZ7ddFIa2a}*(UHe2l$Zr!`~%++=^{Jj*H|(lPDTrN?*=4XK4Ax z+Ls;dWYn=>Ao@0xlp>rQesGegLNfzD3&Yu=2~%UB)aUAz8|=^|zwhth2`Snw$3lv% z&c*(9UtZqf%Yge}VTIF@Dxr6}Q1BXtEu8jqWQ(0_!NA0RuYrJ(zTKX-|GNwSnrJu zA$gQ~`J|Sg+)=+^IhOiA7W!M3!hx3?h^ee_Y8&ds&Xv*wVn1+m<+nb$yn(#zzq;Y_ zuzy3q3r@B#4!gOD;@CpVjjZEPg~Ms6G_=q~otmkk7B!q(3l66rbelgp@-ty6R6p>O zFBQG4EH$hBw%)=xO6edzXbpfU(_}ENbJPFB=cu*?%`gb*!dgz=TzGS>*_`taeHrER zTpF4Dhz7XCufR5w?T|Y5o{P~IA_;s5b^6onIV&=s0f_v4%oy6DyJ*!?qNugG&(6HQNV?_+q6X`+ahm^jg| znL4tSIdEou zQDFH>-3KXfXR*}kPM0T={!iLuetvm1(i7R7G#*O%uMH&;=W3Fqu?1lV2M<5`nEE{U z;H#b@59b&Zm|Rqjp%G=NM8oFY9@tPYzkkc_A7I=8H+A=uJA@m8W<_Tq0xm8{PA_Th z(#*7Ocie5RzvP|AR_)deB`d}Y^5uhszXYQA{^p!Kd=l(@5pskodIdBP@62+@(u7%9 zOpB8-3bpZx!QM1wHxYlbn9k=OkTNzEbVg3^CWT7ox|@Fb36C>5J>FHMEtpTdTRDV( z1DNq9%m1&VmP4dOFqCf(4KK~iU=TloV_>i~F!KI<|rI$(Vn)@_#Wg;UISVNv^g291~o{J)**jViQ&c{1J{ClHr>iL+WF;s`F(&x< zk%^nh+86XlnE~%3xXu!?7rW6y!KE7-Jf#zQs2&Q37Xq}6(P<|gNIW=5oMFL7lXn^+ zyy-Lem6^;t_j=mOL-C~?z@WL|tX}f1{azx8wu@Bc60fzTHjdhrusbon+lSh{Xb?dK zJw0LK%Ipt+pVWjy?xZ#DY<_Jk*_U4hMcv|HQmAK{m6W0he^Q==qAeGm?2?|pOML&q zV_US{Hm&PdGbixA%J$_M3LaxoZ^q;mpp%rNdohbq|cGobqIAB6Y^C|HE z#jIjcNq&4_R^jZF5s-NMPvzrg((vq%lb1jXr#ZfDsr)qA#a^2Gq@2+ zuLNIQCm&6LKJX-w*f!3=-T905L7>IVhhz7OvZc!DYa_M-wpAJ@^K|*kc;BGwx4FnB=;O-JExO*Tt2^QSlf)8-X z@4wz#Z@qQzhudHJOLw2D-Boq!)ZRn6+;c$JS4YoX&eF}?)z;bF*2xhB@=pIU zJ>u9y13^D=J0mP^Q-42WHj5`IY(hm4yI9ptvn7r)0{9I#AnBUh3H15B51+R}}= z1U;IK=0%CIgiF*YvpnC|qP=a~n?BEZFNU_gZ!Sy3TB`Owi7?EtP<3HeL&?K#`Gsr{ zCN;3{q^MlXzSs3ha_3qUD~Ul|;h_f8#v(pSDx_B=q?@y8AG>GP zjx7^6hO|km|IUJa2=xBgCXXWi1ueVLFW7Q_N ze`n}L(zJ5~jmfk9^yM-~U$sr8CZ$4g>oYgoK%SLKs5K1AlxOSZc|OowlmFc1SU87q z<8d}5EK9erljiy_s&pQa$_AFpbeUq;9jlsK2&>JyI2IbYJRRB4)$ z0!Pdcs8aDSt+MUP%z;wBW8n@-$LPh^;!2CG3?;_~ZKeCaE9URg{l+AgTdpLm8-Odc z33jRAmADkpU>b&7Ay_*F1<_B~fQZrT9!i4rAbe6d7v8VQf%E+&xQ3X^H6-W{U7}qr zX=k={X9C8As;NH9e0Hd_U2zyy=G$6~3MLiP85%-gy0I+Qevp*Vv}g#>UJZK=mU01GCvE&9SerAR8L83PU@Sv%yUkZ}uM4Jl?UdK~|cImWqTVrI@+99?+fbBK-Z*TBI~t zA~=!y3W}%Rp@_*V)n;tJFdQTBlgyqbsmfa2Yhhu}3VLA^q#aynl=-$J(fUf!%KV;} z6uunpa40Xk-eR8&#YmF^#(&4YK)PX|2}W^^lK!r3NGN5HX;I{g@()c-?1NEl2ngr3 zG#dPOv&n&Y+}YRO%t z+cy;5=)@^Dd^xS9o~_+WZumm0j%xlM`Oc^1JLlIkf%!nM%tdNmeuc*?*7ll;Pg(aP zcS6C=JrjGJC0Azk4IcxL~$fQ27!a^B`1({yDc`u~4IbA)#Ws!}IIi?jQ64OUGV0IWOm~K*hzR_Ed!#k~hbEk^ zIfh$k;sHQ@^QRtoJVlqd68^FgO45zn(3G(f1H&#bLxvSm2{XB>5ZF*zBT`{+#6rH( zVVV5Ba$}s$Bt)YS#9Hy3jSt;9#tPb+c&4`44pfGP@)Hex@_sIn$W5iA{ThKc!b9+I`^BpLjV78FO{+-ZuG}T7O@jt4AFYCzG#U+@ zf(e%`{Pp)mj2z9j@z@Cg6jL^;w=oY6&k+=Pw{Khz<`jILmy`;-|T|4$g;|Mr4Cy+P#Hpx(+bRQqhgAo zi(O=TCGQTC!%4G6e^mO_`Uk6T{m2c=ATq>yB|V^nE_Rt6{ps+O6jV>3;iFH7BDyTr|2w*D{27XN_Rlb9do#{*hboi8MQ2n`viMo5(jDT44rA5bM&;|G$CsR8H&PMYtk2? z3cDgXq~0HViyt(eKU2)!Y$_32?xuFAlw#>qZYdQai`a>S;-sY`{@wyQ)89|f(`INw zD#mi)*uThMWfUaCmCZoA?m~iMwv;sx8k_`#Voo_et_&OX_lCQq>4c@gD#}o89;vwB+nS^JxT>DBk0pA!NO^ zYFj}c(qDEL<6^pSkq8(bNH^!<7AW(92+To04wo-}yVU<_!fGh2KAE?_zDRS*BWg@p zo>YG1P$sSG-g!?l?k>IAZr&J@o$rrU2y3Sp`5y1qH>JhG{IOpyV9c zByhg;8J~#-)E7srIoQ;_{x|?Hma%cQQ$I1`Pm84hXebeJ-1cFu!)XmqaCxu-z2*Ax zvO{?gztv9`Q$ZOj07aXkLRsg94<2+JIkR0kl~tvL6~LBU;=G87Od)@B(CAAtHE+4- zkX52Dgt#%$0Pfs-TK>S6Z6Qb1Jk#Pd(V4};ggwS~*MX7Nx^Jo2GsNRQ+L-O)$7|E> zVj_QG_aS$88psNhp!8`7#jhUom5Gdy#Fd7-r5*f})n9iLMrwr*wU%&LjfocppC0Cli$L4vHDc?|Nx`6J%043@87 z)m%@@A1%KLB0jBWRnE;nT)dxI9KcYPS9&$N97x%HXmYru{ioqOl6#kvr%vr{Fs_~M z&z=K{`V22EUX{Iz&7cH)DcV*wL(4$1jG~Ej+`D-E>$9Y{Ri0G2^=k&*hxf&_J(sb< z7maT0K=eA>?@CM_xcecxtwF@QU(Bdij_*dkdCr`uyFu!IW{s@16}bqxAI;ZeS-$H2 z^4h=E4y<7R*c(7Yf8ntgfy5Q1{(Hf<(Lp@0HZL`r+A~k%&v^+J>(y_l5Y|3~^5@(dTN;3MC$v(Ce@Dd72=N#f$^g zVPg(PeLZh~pPh~N=y0$<7ZU;{^=j^z_U%eYY4CC3m2rJPe{Tk%QN0UYi5_B=sI?`! zaxg$;Hd=N|_iHFuSa^qXXgy9zmbF|zWE67%6{~CdK&?x)BgA(aI&Z8xuxtoe6Rcd!-f+CT+WK*x29BnOl?Fk@R8idjB z*8=C`^&S{SF$wrN*==nZ&ek1mCw3H%KP`FSEaSApph=okY|cL-qbWXyZv$e`>nmk< zKD4#qt|yH@dm-$0XErSbv!BhCA`rT#suaKGF`l;?Lv$>7BpSY}K8^V$6xs>o2{%^f z#P;uRcf-55-<518C(*bXvfrN2;ROt}H_9+u=&gN6=~&bpu@?NcvN~dKI%7IosUL!s zW~l9!`As3+=|F6#si0O{WSOxSG+75MAF;OL8{Gv6m=?q_=eFSfskKyPCuBis)$|FW z2si6FWLs~Ck9N(v?S@#bJo5#_8ZU@L3Rhnfciacygw@4iP{?H4lVvTs5-`8@tkkYH z4St^wLSg`)^y73kp5@VY#t#RH;~HAtc#G~sad8L{j=BPYIBx=Ge>A;5uNFbm%qbpl z>2)ghrs~Y!U<#uazeRD6P*8;F2L1*;r-4B}a6)gWep5NVBnuhR%H{`DY$ukcBj?Cv zn4NFMb<$f0WuF0^mBoJWvr$*5fSGVXvt9bzn-)$bU8zWXeKIXah3Ol zaxXI;oFin}th4DfWlTHTDAE&W94fCa4mYw4SQkgS8q0% z^TOTF7_x&-RHecvDMX(s)oKq7BxDJIFfmXfyK-`fHdppqzw%?mf5^7Yu@_+*b$4}H zG#lq9rV<&J^(x;;Zn1~PhhLa7utd81>%Fu))*JeiaeV#}Tf8pNj5Cb>qLL&i0Te@r zXK*eLjeN>JI$2^Mi4davV{U;sZx=U=4e$Jm=*$YShN~*6HA(XM{N?)2jyDAv-}V=C z?=^`JLjC5T-Gy)Y*^Atoosp?;_I`8rlJN@H&W|aJ;;u?*G+g)+A6~=#iwNRPK*$W> ze0oPvzcq+8lnN_R?v)J>M55gsv+T-$kVLRz>r2M3^rd3SkVb7d=5oflf9)0PU8L(~{^xAsUC<578erYe+H zKQn^_Y(5MFUF+NZN&jJt7JNBxFJR$RNk@3MTq=!A##~^ogpA_fy;J40^*XUdDjXP ziGiVEx&A|&XxZ+7QNzO0_y+--$@VHx(;YM3B2b;6>(w4r*hSJ%UOz)jPAoa6+1HgK zTznMIZh{0c`E;2!B!%g{QJ;2mcmFG$`81bZ-mNp(c{ie#B!!71fBG4c=aHDgY>kb* zZSd0SEPdxSL@N6C`UqJ$EkTbKMET{y4WpG(6!0e?gkac8N?TMW!h8An>5YWC7vC9w z0AV~ZDeG~yj?t0rlqn9ergB)D6Z9u-xim6UaJ5BifM3}ujgR?&i$u#NV`9Pek4t)Y zcMqCy)xU;J%v|c6Y#VdhB;KWe!Ue|BgV6%5_b$eFH`v@@bJp8|JCo$QpQl9-f3FlB z3NbM@$^NGXXlP-n1=aH7P56T0IKaMcm6xJGMVPeS%e@!uo79)Dr`-3=hL$CIB#*>j zt%s>Yop;%n&S|fl^nX0H0klN?;j$r#xk4TAwNgH2l%O>bT1kd@kQ5KyKaW9E0MtQ7#-7^Ez-x*2?x(f9|spF2RpE#ELDBE>1jL50}%5~A!&Ye ztKB;zlDJQ&mwQ^4l7+@ZU{+W5{OpGCYQUON4EL`L*Eo@~q?15*NWpUrJ(S9m-T+X% zkXHg#Lxssq41HZHBgt>h+$ur2bsUK&WP-%-qLxK^g5SQW@fvGULgiTH?s$QxaUGbYfzToiV-YsN(rQ+o2*lo&9W3ivB_6S%;@OaKdbt5RiTEIxPr($WGDd;aFnj~ACLLJXPMBq;KyHx+#q0Fu`!-M2o7(BKA=2 z%}*sg)i;4Z=M^$DSEV<7;sVjf+LpVt-4J>l72Gg2D^N;#G!^AFX~ozQQARW>!zQ0g z(pF7za}sb@{|8CybpM?IM4yp%IKSHLS>Gb9UqJ?4QcTlzaFoB#u$||Ts6sL=5Bu;^ zECKURHk5;abrBL0XcZxC3L}<=4oa$&w>ZQggWrIdM4~NyyfV+^49v(GCRS)_4iEbBb{wf0etVWc0?bxpT+y zcl=wAjgdV9F-J<$Vwe1-))N_8+(iqjN$5W@@W;B84E58Kia%Wd*xlf#m>c^5e^aVN=A0XnNgwkHTR{& z@|B@^F67RyjvL$N7qqSWly~OPvpUT)N^MPZ{~9G-D`A3Wxg1f{u68O%;mK~Y#X@e%9MY#s3`bYn+E+%?YG8;XYGm%+aq> z5N=RaE5?YGE#*7u@=;oD4!O)U58$}&Q-v%rX!LB)Be(3@skl;FX9oHet3xyh%x>hX z%6G3&ZlH8Pr0|G$=|{Tk75Id&eOr4=p2KOm@YGvCTt2|P`NQRzZ}R9*)Y=ozY1)vr z$0M=sxwj}N@92e+WdnwC`bBg2o?WnmKZpGr`o_rIB6bj7+fi}`yFs~*g0 z_bj~&pKG+mp?bGnKeY%kNN}^?HuntIFpcU85%I!$Tk)d-2mzloWtUK+!d_{mujl2^ zW$A~HtwBGKllj`-$noQu0T8ZM#Q|YH$pR`D1~?IgW+2okVa%L5eZ6TRS!>#w z20^Pc82I4TFcVV|Ea<>DC5G3%y?V2s?tgU{>%Dr5swW)44eQ?lR82sDclBrMbNBYbgBV=nfa50eZogw9}9mW%*J?1lZXj!caUCn zsuYZeD(D(Bz402X-{P%7Z5X2Ub<>wpRA!q@NX(0qv-%R)v()V;({zFrX82Qq7Wz}n zJM1$y7IYDpSnm=Iph-$-)hP*y4GQO3f|5W!1b6hxZ5 zQpL)*1Z7B9wTdnL2|KY7bJ?L!EYV;@+#DGGZgq=C@1M-+z%Jv0aAq98c#9EUlL1%j z%E~O>{2|8l7qaU0oEwy^yT--dZHfBX=<&piiSygWkHG6yio5H_@x!$blIaBSrHQvV zs)W0&6>6pPz^+Anp@c8w)g0#Yq~{j;gc}>?w+HuE6;W+A%#K1cvgE^~Gq+sgFt$n4$ZFTaLZW`0I-P4#-DLT;Z^|pP6ng2q3Ba3f7L84)}~_ zODd%a0$kJmodP9*+b-cu;|7#~&X61^m{7|jwnFy3V6@;Uddam>3Ud5@-;mqMbyw{5 zQVlA~hk)#DMm`Wcle0w@-}s%;kH>LJ{{{O=w`zjc6AK{Z89xeF3iwl~tu=^cFE4lz zGj(Pyk0BIcGp3oZMMxz!5-x9~5xG+CpCm8`WW4cTqbR~|<2k;XtnGo=i99y$V;qlO znf?}-&`LGemMqDx{`G=*!f!kWlKAt>Sp&Vs7DfMUm zejR|ej5ZsLxJ?08G&2&ELM6JuC-n1y7cW&-5hKV{{~FtMchQYd_LYc8a3kgD>>&#g zAT-TTC)v!VX)!g#U>%NOPM#jj;AnA(T1B{h=AO=p&R?&H<-okfeipZb>SCsQfSC!Q z^QBDZ@}L`-l$Cz@YXBqLn1JB;?%BO0{;uaHQJcuS^E1Xd!Cj}mr|ocYv^T#cs_2!Q z&sHbtLwV;%GA#OhI&W2pEpL(5x5K*$fZ@W6?Zz9&hAwT(COzx@_m6OaZgeQsU$ruaVB+lvWrORVF9R}LXYC0X_9_^ab>BKq#{HZ*a(-Z@htNqQeU`JKl ze5?Om^++8v#sb?TKRW-<%LT!t0%nXfC1u$uRF0WjC@y6I%`$hqaJ`?D4Go6|poPw# z%W#XYtWElXHisL$HRCZ`(4|63tv8XNVep*VFhcJyI2PA&uuItiPZVY6*)6H6;*5K5 zc3(*!I8mpuz^rTc#dD+_ZX$?U^Lb3OcWur0b04vT_N9mjaK>E&e_TW+O#`?pd?JKvr z85v0TKbnm1R}nFDJQKnF>R)t7wD;3?u0O9>vo;wgU7!PO4z_QJ!YD- zKm9Zo%w-W|DXQ8BPtC@SSCWHep85>#e?M4uZ|=%T*oYEPCZUWOJ*XxHGOryZ_iBf| zA7XRAcQiOSO1roPG#p-JzSU3(@KT)nB)0rl7@Q{of3TqLM5fMMoW(xUD5E-mM4y*V9tLTBfX8m>Q!foX;Uc5@(1he54ks~2scu@FY zRK1p+mb~okt%D+Ex1x;kOHMNC0U*_c^F@<@waDPMu}D&4_)yz{DXxc$dBV+-&qoy~ zDwp1`A|Q$A$yhmx6bpsjgk;F(iRc~Eo@&L^y}iT1u?32BjK7Ql`b~ATJ3$91`QSez(VXS)DPGC`e9g)aqpM&BLk{j9wqOh(#)zZD*^XAMl<3R`ND5N;ifSQ zV}gyl8CrIGORztX6|4Wyt!W(RTBmLI{%z}@q1DNWC~|&|?^)T^MNzj$F`5cb59YDc z0S4&S=IXlor7FGbyiqE~kHrX&Z;q*=8E1G)Z7mXC5Ntm}sBXH&!}AnqK7u!LCZ?u( z9`i`6MK+dkW2pw;%2FNO{>3>(UQpNCrONnox=cw7nC<~D`)Tkv-ZPp|8MvvdtG^27 zBO2$A7OUHm7@SQFW}l>=nt2TCc*ob!kds_%H&8cd{Jh?!XSp)PZ>Owfe?Y{k`Kwat zORgWF>-)g`#0Y1S$8TkE10#-zrHxs{e7(lm3i{ps<>$Pwa15{2vF{z9ivBg*#7OE)tz_Q#*E6$3)177w1xQ&p)KL5 zzK}_tto$T}if>6przqkya$257Yd;@{$eC`2teqm-6r!c*2*%IqX0Hfvq(oG{To}i8 zc!HGQ!-74i;O%93i0|6#k!SPCv=X zAR{HjA&PwAFLbDn8EFD%s{t$)hV%#Eu}ZK6>2g(~QFp!`1L3E{Jx>Au_`8qC*auqc zMlpHDA=~CLyY#Zq@VNgAK?Cz<@M8IUHc2>hXirYkuS>w=VMJHfz1iwgr8b>P@{_Bs z>{;S>*qxUTg5-|5OOF?(K_XmLX4)D`}shn?yOv3EvN zI`Jh|pkcq_uZLJX*<#+kP+%l1jUccTajn1bja4kQzp73sov9R&D!Gr``0BrJ@S>R< z8=c)=eoovIuI64*YJCa;M&Z`>dyAhY`SYvRzA!ko_Dk13?uqCjUtizZ(mPgASb==O zueb8*FR+{i=!ZcLh64XUQZz@rPl`J0>e5u9*~7D`br@Li1D>L5rf86)Yoe38K6@FO@h^Po4 zH>STf{8(1=z%gvhYrVt(2%ZKcfoB`{U{Xy~vFEYj-`~>?T{LD7n}MFmS^F;xDuK%Bf>Fk(a=gy|*FQi{QJY$BK_53n zt5@k&`{dlS4ymrEBr6W5&Yp7B%nv8kpn5_Yd5C}yDVwpb?8N;B#Mm5Z-+W1b;)w9? z%PUJNKpaS2+|lEWP|jbau_#Bdva2k~uIagH%Qw5}CVm;%i1|Y)^6!_thS2Pt_yGZT zKQxWih;VFbuoBwcgdry450P_~8V)NYyQ_nbJ(vnK*4?#_-e+7S6R!>N!qK&H;mPlW zUr$w22YIb;vpwt#d%4VHobJ19^eR?ACL1@HOnbHC5w%{fv+y8&gk(E<7w1+~upBlO z6l@Zmi!UX*){w1LA8V>VHs~DG$!qmPwl=OmZRrDxz@nAt(|L(fG{S zKCkV8pvzqWYp8OzA5}?1v>dgDo9N;Nbr+ztNIcir*&h5DYvXvl zQCSfSI`Q39Z?fN~_dlArE7I{y1XI{MlDVBA*L@ezG%zr#&Mj|c9R>kf>#Sy=ODw6o z9@AV2a0KV$_xM4Sr#M#dx2~hxjbmTVa(#lr^iQfnvMG7^$58}9JkX?M-SowjHeEzq zTzrZSxG%LlKuDgP3tr+M+{R^fRFlxWxR$)yxkp?U7(c)7*j%j^Ec^=L>_d;+6a81R zeg;C3XV)O!N!fQW%BrbxCf zkWr8Eg@Ff$@s3Re$h*Q@;q~A1-Oo;At(s^j1Bq@qC0}OP0Iayb-p(@_``4St%jvv7 zG|@C>D3+}{>gvQq7MR)?1DS?FTI;1|pdU(=w!|Yiup4qUO@>6t4Q4foY>hfB>?B&tnOp5raMcG2RJI;+8tN*5QUT7kJqlOm@bO-4bBGRD1KV zX{Ph&0YC;~)Ef{9xgTb;(QS?owkG@}(L4A3aGj5V`{NMxqsV*7FU;)h>Eq{;vp;Fb zFrR4J>4+sR?Is2o_fu7Ip@wHx8s(OEe#w(wp5}pvRi*7Lsa1>L7iN1qGx~!*2JmK_ zDUMvmp#B)3#BO|whsGrKbgd?W3vgmm65legUh&E+@b}Z$Rp;8PXKjsS|k;cq;g8LG|*ki=Wk9T5M*R>9S+uo%-3p;!MUfX=W`BOIJjVk{H1Mq1G zsL*kX{Nw5Evf#o1)=|^}MC=0Qq-aw0xo)pTbSTxYrHEgr9Fymvex+z{jBnUjs2^47 zqE%9uTFT8BuY_Gw?jiAQd%Ti0W)Two1u*wT`{Hag)iznO?pW~ka(LYjK~ZD1#vDrQ z>(AfBf7}YsC+fp{NySA@wEJ!c0CTLA_J@w;zjpUbkGAK3(#T$@MjaUW`fN)cmQo+z z8vn=@;6a9#jHmq;kvL$d^eF${L6ZIh&BT7NXISB_LC`a0{=I8={dWGdqSj!h(nt3n z)K7({)V-wh{Ot3x`gcTkclT^3weWCks2p0{?mqPwNu!CF-Gs-fnFo*e3V?F3^lfSY zIhuRrk7LR&H&1#h7}~+3lVL{;dG$Fm)e)N|P$_U5-rv=6;rcG+x1{!2OLMas-@|4( z_I2z$plOk-u@f>BT$FkbHhMANk8lt}__5$U99s%I7H(MI-dY<3GSWWvvss#`mrk=Z z{wt*LCM?&=5EXE6lSYRb@c58(I+khVFk3}C#cFX%4VxnWn+`HGa`g+>^AglSf=#iH zk@^G>)l)50tx8Q}h&e9@Yqy;D3SB1~Kb-&drmGz^!yjw}!#<#1Nf(fK=bIU@@eQ1; zm--%s4e6S)oM^hAEIZrd%0^Gwe`u{uPxtqWLqGDPEqIwaNydjsD3AYXk6kw zPQ2F!sEDdkDx9}3W`m6b(naZtg)cOydvF@Me>9*M>1z?|e~SG?4q||!(WF|R-``$i z^>Dp!#(`%Y2eMtZx6~6k+2VeCL%BVi=Cp0yvb1p&nTGit=S*SI7IehLRy1Zl&{nS) z6X5&c@$wj~fZMSO?2#gx@^~&EN>DFf=#HhgK>et{Jj(bnsdKf49ZzR&S0~WPybo?= zKB!w}3jg#KK`j>(AnTK`bk2z=Qr@p*ulcHFDBx$&p##K)>jJ!&+dI|QH%AR-$3XiX z2T~B|pEcFr0#mXMeLoMh-&z_~h>T9Q&VdjUHJgasCg7tKP3L9vl-TKoqW9WXoURf!E9FEz*>qMiP>?MuvgI2OW21Qh{eN(vyA!k|L!t= z)+!I@O@WygBA6&h2r0;Uuqye1B##OWbcHMO@cf}jcpvM+?g_!@PkeB>uYuy1fY*Cq zzu3IX1Pb4ZBKd4|7fcEAf4nESbf6YKZlb<-pY~#6Fn&(4AAtx{qF=_2#rr#38?e#p zbg(385O`T48C8a%i-QbePUB;`B*8#Qhyhod`*4yxddy{PG#S1ec(j>2n{~iD8Nl<8 zmkeBqs&>mAD3W!s8${!Sx9n8RaqQEbs=VPG*4FG{Za4eRPF zV~&>iZ%K=T>U0C`2A<{)!~!u5Q!Aua{VsQN&9t+)vyhdC8rNI8?Ta>2<7{3kch^)08SBb7<`pjbfd{){nto8ih9CVIJ!ItvZBG&x{)S&IgyyM%CI!?{e9yJX ze+N27$i^=6kT_LRuc8rs(6F#=;-ldf0pa}Fgn#lcB#fcs79|+nN7e<0_;saVD^Lr$ zehE<1gAYHb&F-y+wq3M>*&G)-9hFoDwx4Cfc+7jcqXP#pnNXD{{hqOt!-`_<_DVlp!(h*! zR1qm>(@g|~_KkE?eHI0*vr4Xqzw`QbwvKuY>+Q3YA-rF~Mi7QMk zv9681vh6I_zEv64SZBL9^)#(&tb1WM!K(I9nbXP9JPMZ6>{}U=m-yDJ?tIRLo7VAt zU;3Y{VjSzlN*6KsPayWriPCyFqs-Z!4EtMKm||?EnYlIgqgeS)hb2q!8(7;RQYvTh zA1_EUG%;~Z$`cO=%1N+V{m27n}MULY~#)cX(seKDl^n%K)H~7V@|K=wP zYxY?!6h>4UY?C)E{#3pzZE}7O&Jg^vvT)9+raF)(8#|%i*nuZt@_eM5zzjqh_k@`) zneML)SXK~y?YHIOHEoh6;4P{_esc^zM{lKF;s?Km$}K>*#lCR?NA=vg*8A9&0ym?j zzCtD?!P%0C`kMiKVm|9HyMzSt;HUqfbC%i?OpNHx45A-f`hWF6lp+5+StShPFby?~Em$Jtg&)kJsqW z_4z$Fu__Nr8IpsAccHr7_8s3C%L(y`l+9bMhso03VYdYKl7CSgbYXt+r=9nKeMuOj zP_<{k0z{hlpU*F~H4FC_(1WGNQR$X@=6g8A{+9gH@IapgREg8Oc;P~Iu4s0HQbO)e zaw@>z(hb$-Wd4XO1SKnu*)sMej&zkc%%xu+4tp|CBk-Sny+^%IgNPaix256v|0v4`T-?NfEDY}EQ z9rrKT=TE^mYD_Y$i3v)mz>^|l@)6sR_GSA$D+M+c$j23!PZrrs*`Kyi$?f*xGhac#_CRlOFCh-m8w0OR;WEX;|{4%==!*KO9 z07UvPNp;C=N&gvL7Rd`|F8qv%f%73lTCS47tGzpCj>nCGXfdfu7mK^#gR>VIml~Ut|#Z>g+cL;)ZG6+keWa{cL+yZ!fN7c1wM{{ z87MZ%3*QW?CE}jPkb`w5COP55j|frjd>c2Fu<_nkf(ownEs4;bQoB@NN5fuC%#ULQ z(E2e(7yM>*-Z5$XN?pR}Kr2+k-Wkm_|3u8(R2wX%Z3YK%hcNgE-!fD3{#%1LC=p_k zS<9$!&jkb6$}%P1kVm0i-#@TifSIe-w>dLXu&q`Pi)AtT9v6K=Y8yBUX)H{bKg!Ix z_i;x>5_g^vBJbAu=fJn)^Lc+PZ< z#gQ2AGAgYB@dT;7CW@b;?n!q~@*5Jr7|ri>Ux9H&5)C9P)=*CV=39~KW?61Avy3)v zSa|~M6Z4q)NUL=O{Flpy6^>SE|K&i-F!sU zl99<4-hXS8<*|-udPBz^$;Oe@%mz%h>09tHnxUEeoBVDz?X*jj+dO>Olz3zGL!5%AI9 zs6W^2;Ikb7ppcAQ#Dd4EBfFDZ*Bkpc$}S+&1%Ci49CyOQ-t<9Mz{64%V;S*tgm2%qr_si94sfHZ(pZnkimjO z!H2)Z&-${wt-g+@^QAg`pUVM*kmu^N+Q06~Vx&5nWPH4rg+Xdfd>DTcA!3r74ro&r zH3do5TUj`t1%QN~-}_~8DB_sNSEu9JKB@_YV9&;~?Eo(~XE;&ZnL!cmcf78lab znvL*-sv{lyfLR!rea{*l@e^L_t(&f$f@4a@#f(#+{xZ@$>+VrSSp8Q1NtE7F414+S|+P zn|F6cdv|$#a~m1${pIz|EkcM8$_U93dM|a;E};2{F~u0~_w>~W7KAZYRpi11xj}G% zW)aMt8I94I{5f7{4Z*U8b~FiiK+t(Qr4j(sCrvO{12i+r2qsw;ou^|e2?z@kq*OF? zo>l}Y!!$@haJhdc#tcVkMG&(s%Yp>^5>_obPd5aNJ_QNBZfIrBQ0OewpIKTFz|ton zf*cow?DO2#G!OM-YU-4xm^XrPC{@rs6Waqtp-prk<}D#8Y|jbl%uC7UJOmWKq%P1ur!Yc zhX2SQfUp-WfvAmhqgu|Ldhhl}mX7)RW0slw!IA*erS^lAPd;V2NdRjKZrg=+w3x4_ zSl1>o1B!nMU_D)GN8=eGzbJxe4sTD`xiju)kuo}OF76^ko*?z*{f{tSuWlW$?f-Ar z^TA2yg9~S}rGF%Wd%_vgrxRpiH09@Ae}AiF+drB>nMvj6U4MV8WTVFu5N#$ipTECl znXShY$kU1T^RBx z`9U4UYI?Ei&us1Vcl`XI)@NcwQn|`>qA2b3cl`XIj)%>rb z!))#Jcl`VbTFwy8P1y;$qR3Cs9X~&);guA!j>4IXo}fE^eo$khouIGh zgKN7$yPgkzsq;Zo|3w+e`)8Q){+-ebr{C1R&wGT8$a-few})q?eV>T+5%4E2#2`>O z20=>r=fJz2uC|)lqkRNaUeL^lNF27-GmL);G9w1dZL#kqz(q@d`64PB0&S1AzgGl@LKBDq zHq`)uv5HoNt#G@F^s!R=`jvk(xnEU}}%Q=ToFcCj0h-lon1?b`)O)o(e8>49UPG-6J#A%@p!qCY_}Gt!9s<|ji@&zn?LyCs=~Dg;fZ8uo z*uir2>DWWy`g@opHw_^IT5Ky;AN8Ici_P!jv3dQ2y!fRdaQ!{ZiE!H!Bq-&dNoWGf zNPajR4?BJR7k=$OErILrqd9*g1_6w{JeK=rPmXE1Wm{$w@G+nD>mQ=Sfdgm)*WaTB zGYC?6{kE)OEq&(Pwj0VB6>L=)~B0hjc0A|(j_s|G8ZknJh=$4elrXeUH1XX_%12+#I>X#Dk z7<_98gx#(T0+c?1>uCwpE%Fn1GPx{|7QvEx(ZVE957U|$RHQf-W(?{!4{ZQoqy>FPdNrL7>}1)y6;$&=No?$P9vqs61ME zu=L{28FaT@wKoGPs6SZjd)vQIXzjsze zTPpmuh!dnvHKxR@rmnxYW8kT#-55Y7Tl(gdW_wLCLQQbpu8CQRCF?~HB{De*3+|z$Q zw*4k^;Ez*(KRQVFk7B0X0mQHGAG-q#E;DCI!F>+_AE1w5 znoJW-Ao8G7m+ug|{~m(b#3twt&`$uByq{p2*aY2M)K7nKh(7N62xh#(H3Tzn3?TNC zvscmd?#>{Xc?s@6%%?$uZCUokV8(x*3=qHoVS>%^*b@W3!$7@4njrBKBSU* delta 2149 zcmV-r2%7if6QL21Bmo|gB_b8G(a1{x0004WQchC+S1CRULbe zIg1W1Q+o6AyZ%-%7DPyYo-Ytl(sR29!cmil4j1fa%_jIk-IGb@h(#Ef!@B)Gp3>1~QIfKoZ6xYJ(*015*lR*iCP=ND*ga z2B*9Jfg45NyR4VMb-h3BZlC80GFR~N;!m7q000LiNkl;Nj`Vlwi&b>G3Jc1(}^!eumK@NUBk=- zIUy*qIRq;&qHA=2*8Mwv$}GXQ#nw;)nULf*o$?NV@n=J@(gWCtGGLHp(QP{B9RY|S zLCRH2Zqu3|6^sW7fK?|T5niP=K`ag;3lf|voVCeq+7bx<93*(#^O{DebQbE*9IXj( z>O+ViX9d71&t1*)P(R~Tr#xk{0b`*YFw74Jp1GQ3!G55B8tXz;h^k;L3e6%0_;rHi zu7*6+4~|X+?1k71&XN!TKqj65GDpjR0{tag>{C*}fx*u!-ndaILQW<6FuP1Q*{G`5t!142w`UV2W z&rj+o*5SpvKXbL$Kk)OD+MJ0KNV{2P7K+wh|G>{r>Ik}!V>GjL-5Bll5B&TE+AIvc zZiK6Uz5aopzd&~p;<+iiKo9)<1-gq6M9nYI13y2lLCz=q55&4a5B&VJhJC~2%oUtp zpa*__T7$q3?=detyFd^8{G?9tn2hxDM3G;h2Y!B1<0m<;I*w;9et{nN`AN-4yFlO1 z2lqBZyPpq!tMh@a|Ei4S=OavI|559W*H86-*z+D`BeJs*cH6^?)?-h^&JoBrE=5BYKR0cNf@*pu-VQCc+rF^cXLiKyJUd12DUPP(4Zj>I$R#@@^u; z??-~8ApnIejPrB#D1my8N}hx2#ycm++0@$9I)#C)_CTd@V;ne7V zLyVJC?>q8iPq1s-7K)x=_r|Rb5a@~25$sy@br_>2=w7H~FCKxQ1l;NXfu2Y`!M50+ z%o%Q!fYpS6@tx5s>s|QP--8-p3mM75_E4P860o8tU~&=_mcZC!Whu+OrUkNsMnA@KdZ`fZ!zG4#HeZ@b?C(ECM-J6N84 zZ_W_-{vLyrrXfVYi$g8i#_ZXDvD*B;Hum%D?&4QV;QM=w38d`_5>(x>s4OLbA@KcuvJr$J#m^tw zw#FZMfPi@f$@jKBk{l?bMEt!pc|Cy)aNo9tjML;m)b(NC6EHUiQG^kHG-MWacDr|G z>KP*;XzKF>!&xK;a0t+>5`T{kq;WF@RlyHX6?;oiVG3%S1AiT?+t&*382+#X%5K+$ zAW5Im_4EY#7L5~(tmLX{9D=R%q6H<;FVk!eYABk5=AiA@L8Oircm@sUK%S|Hzjq@_ z`y>Yma1BZ3;4GqkUd`iw*Y>qtzZ!xACV?Nyy3av3Ku>_BAR`3psA`;buzO?F-wz4S z&LUOJQksLGN!8Gm?E8B;588Db1=j%%Ao_Kn2>P6}Z3Cf1V>4*^@W^^{L&{NB87))Se-j$5qUx@8^Sio1rb9q{(Ua-Zr@s-#x(8 zN__VK{||yMe|`D3D8aWM-+nAgpv(JW1e+xKoBkH^>;$0yJLFixS8I zJ~jcmoMj2h=PRV|x?ebX$P1H47$k_1~!a=9cytY5x<;2n)b{P74DH(qyt bKhgdL;xuPrL*Hj`00000NkvXXu0mjf*{wKD diff --git a/icons/hud/screen_plasmafire.dmi b/icons/hud/screen_plasmafire.dmi index 61a99bab97476ee3adbaa473dcbf384c4e2d138b..2605c71431bb6003f7ab1e673ba0ac4863345637 100644 GIT binary patch delta 11614 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 delta 10813 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 diff --git a/icons/hud/screen_slimecore.dmi b/icons/hud/screen_slimecore.dmi index 96185ed3cf6d7e78478e3bc9df2e6c53de819740..d5021ed3586fa8345e358ba074e35c4ed612263e 100644 GIT binary patch delta 12007 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 delta 11218 zcmY*fWmH^2lZ8MA2!jXr;KAKpf(1+P1eYPW1c!%faCeskcXxNqV8MdByUdbrch8=E zKVNs%slI)ytGlW~HsFJn;iIX6Pwt8Yn(#T zvnxgQO9>;hzxH#y0teA(Ly=L!KgL{N3OX&>U)xZ4os-Y&UU&=W+ibhG)nb&sRp7~R z^H``GBl18muZ9J0H$HV0ThJo%#A;;X0@z4H+DU>eBt7%cu@2d zOK#LArIK1!XNL;8i%K9nKRV$Uf2B>-H=xI?_s_7`atAbi04p#&d^g0lIuNg|7Lsf| z?AF2vMkc0HkL&GP#-ge zpeMnds^4+Xk=45YK9c+iQ#SxvA7>-7;!hMbbv(<8`Z|?PRC_eh*X&ntPX8Au)~gRt z?Dl(V7vRM%xFs@=U%m4aO5W05B7(!D`fhMOq@v5cgYY<#5$dgX>r@;D+N3gOWj$7e zcIVCHKZw7g#D@jp8TEsU6Ucb|Ftu&TD~?yjxEof2w2ke~XvXLVa*C`m_pp$u`X*pk z*2k^4WSNI6qlx5?XcDs5Cr;*}+xPB@TSKcMK!TY8_c2V4@+XEH!Fj}be$AoRwp(Hp zQ(l7{Wx`E7*p3#=R|oTG+=lA1x6zuj3MM7pSa;)G8f0Y|ES$ctrb3C`MhS>+ef*0K zuE;Mde{BdVl=^GdBer!JU1%cr6?IPxb)IJ$%Jq8z3^J0ns04PD^5bi{p;T7NQ?41n z8-#5rN`iXu)*eGL$?Gz-2;}v&>xL9mkPt4ZS&vWPXi~UOqU72mLpNv6APb{=A;_}wNl55G>garpLG~+Q z#Vp>6;7eH&ejmm8d{*a4wKyS-@PPwqdSB8BY@xpe=JbB+isQ(45O6ZF=n_C&SXPK1 zwHh8*Kj6rUi_kOWX5QH}X~+ZKCFhMPixT#2fPQqPHx00DzY*}Vb((2Ad1~!ST-4{I z0*y{I3xs?>qbMQQ3Z6X%AFoA^^e;ahnx+5nkE_#$&iU>oq&M1yESPZ9auJ^#zNR1d&_YvBfE!~23rR)@{NC*q3}f6E_RT6Q|1(dGPdEb6mcVc8=c zYt0>v!yg&E0)iXB+EYe9;yYjQLv>KYDsbW&ujtUT*y3t2!`aLF7`+Kku0}gqh$wFh zBOoGrh30KN>7wArjqxWKGgcG$EiHhxasNAO=la93>CVQ4!E=kG{$emymniMerX2hL zvqMdI5~?7M-nV$^C z@rNi2#tG1N)i*OdukIs3YdS3H7OKRjVP-R94{nL+-)R+D{%+5e{U{UYPepT~3fSyy zUq;Rn7r-vsa7C>OK~h*m&MK_ZdULtQsdh7JP-KT@L*Sx#~y@&1emb#rWcJ{KY z)3{GIo|Yn&C{4wT6zbMi>b?8yDN$O+Dcd1FhYCzMK7G}dWb^C1H!@kXt30qZK+0msLgQl(j&EO~qdzp*PDHiw^mE3f>YOeD z&yR>~8IND$+3~+J|ET7fbtin&kJWAW^f-Rxy6@R5lJd8-LDvqvdV7KNsXfn*)Q;!e z(S4`i#7tn5b~R-rtJ{YHOF>=4qgBii|rQo*JrDA|+{KC{OD{6Y8Uby2cM_Z9Hzt=1zG!e4ywnm7=QvK#3?h zMH#>}Ywiw8E&VV)pP+{PDK?T8ne;mDDSr&@rrh{sn;BAe_8aNES{>R2OElp+>&j0b z9B#^1Ytjv~vc-(b7+sAYE~au+{pT4I&qsoHe^P(*Y4KSEbHmoX>xHkWjVnCZ6Fd;) z8LCE!MoUN9zj?w8Xh2MK`T#NZdNJW1Ca@g!bK~wL`RAhpxbd<1BAmnEJ*A`GyR6K_ zhjEF|CY^=-v|zX*yd^;`6GR=s{9F`8#1v%+%V7x;!=C8K-}>Ma!-@Vf`k$C$JP9f_z^d;QP0z0zeZ~-}7tFKSq3nF#ceEnAEvgY-h2`5C{0t-)~KN=MwgC zE!^F5{<%ICP8Nx~-m)ezjxA?i!jv$+7y4qS$4qqwCtvbT-#`GAUJe_QB`F~JyR%g5 z!po6*s`g;Uyu_(YCG58qLqlS@*9CTq2GJL&%1`~74`O?ALr9PGb#PCdmSjkiS|w2M zSlZQF=^;Hh-YL)*>H)MRNj>L1u?OsnEgWt{zv*sVu@uqpX>buH#H}vQugTy?5bcjL zb%|Q!zyzt-+8deE1*}fsBv3>e%(%a1OgJ9x3(l`LMU*p7PzlG@2bm%Io(-(QSp%xd zf60+T7xePuq%4CQ)tiger0*KzQtBo7R=UCjYN2(1Z;9Ef!+=Ozu2C&-8qgQ-9UR=8lKHhp+fx_BX z3qEgQ%WlQ1=VSBj8SsvgLooNpn)i1nN<-eoC@{L7t!JZ`S#&w#%yOkj+A!fo9A%9wp8q@M- z0F5#O%vN59p$v1%JR%gf`6VokvBzE~6Or&ssl-^_os~p``yz1V&ByN7F5hEGWY{;fB$&dpfkc{wGTKh;;p&-D{%jTW^uBXbmaUm&P4USLOB&n zT~|B)iz8b%Y@oO{?dH0>q==MBZlol=~dV53l# zk0FsYFt;XJ5@b_1>K8Gv$*>F~YY~t`qu$-Mpw>B{b5&a#A>yj#yG-XEEF(T%?*uY4 zAj|{@#9i`c7Fx~VC|pK&?BZ5*Vw0gcV$9@P;7F*}c~@-eqKr?^Ft)o4&Ti{FZ)Hab z4x@F|!@|xfV%y8!23?~Elxdy27>YG}6VWO>?@Qbsv#Gg->Ov2+4&{ASY_(ZB?omPIbp`Ik_B^rAdu(tg$SAB5?n9Gu%|lfFKYtGermlMspdZye`R=S>~>H*0+Q9o z+o@+=5fr(O-i_KY!M$b#u6kR^8=G12Lbcl9^boKxTgXSU<8mo2^cS8R-Y7%cMMu}L)T;`e%`dgw@xh=w5-SBb&s2*a{9?5y0ly^FSh;&m2 zi2WquNV=@q?(%TE>&wUwj?+qf7z{zUvNp_DYy@**iq#_j9Z=vj`1C36AwwhDX`kA8 zf_^75y{}wfWMmA`Z(Txbolh(FD9I?r7b28|6tvn_3!MB_A{c(cR#CbMQ|3VO=JFFU^^h3qLTSo9Sn8!muC0 z$D;_@BbO|^@so9EFf@tm;aULP!%0J+o(WGp;8h9wyLtlT94SwjtqJx7B&N;2vnZ(| z;95?Tw+yWQlbs${_fyyvJ?C1L>lnwknD_=BR-1WylM8=&e$5Tyck9!s}24H zIm)QQ;3EVAMb=N(QSe5#e7D>4u!lLaD}^pGq)_z9&9A6#awZS&w>Vu_VoWB6a;-nE z%3=h?41b7o@VMUBY+7Ga6bif(6h9|H?XlyH1cN`EhDbe|{np82AblMn^(U1pQAst= z$_cu*89c!5(b~EzG*X69)`Ls{nNt3nAH1oaCrbk$w{Or{7oI{FTdM(#xi2o9I+ml^ zNPCx@m{DD1FhV&1r+eAPq=?N0+T?<3-4+dCr1`QGsJ332G5(jyWrLJVA8LyET? zuk5CG_nZhE5o8kS!cPm4r)9W^Ozq$T_R9M}@6*Rr?Rk6i1)xoJT|=v?CN?%_{NdFP@m#hLaJjm%lG|M(2Fw}%na7x&@WEQnZJ>|1sRc=)G7h@}`I z);7JEzJ${24kFQc2)%W>5sU`q6bJK8>9q?_mv}aAYc_hdnd1F2DsK`ooa`L7Fu7OY z=9ca0Do&PrO1^qDo;M$yfjmtrW@ig(YDq1rVy_JaQ2w5U;)FT|aVT#T=tyf5J6kfX{27@!8z!8IruMB(tgwY4V=8rNx@x88!n~B?VV-^vS5R zsvWD*;O{*NW8_uD=FPYO@~qYpXwDJ7}&Rd|{Qi?Ph^oh%xP|`Milh zJVziLqhuSI=HiqSxzaixdbM;;of!pDS6*D4jo%xQXy`nL?AqbkVNgQwAQ@2HQ;ofg zKH*BQm*Z_5LvVKLJ*MhMYG~8=pcLTKD+|^y1~GHbt$zO?^5L|AjwdEkw--1X_@s|P zeSyHS^epI?>t!1R8Ys`%7UF&NK0cdwI{5s}E2Pv(%@6Qtv5~R-2*r742*64B zV<%^k_0QDAR=M&ndEdW%pI2-xoOR#NR}~-ew9l4d=U4RpVjhn>-OWXQVM&o^jV(=+1bi`6jS8CXdfsTPdjG(^l4SR zMTa3dFA?%8GPZCABb@*u9#rU=By!l7~0Senda8M{G4&A)~&#l5A8kT z3mTy3=h;#b!70QVA*Q`jmYjW5C59>os}iQYyj`<)n5utOqxS>mA1nl&@d9#SOZG&m z*7*~?7Z8M>08y^D1!LwRL>h!Re1ejHJ7wwsRake4ml(e-WXq19bbfxgY@6=oxr%QI zs5}%-Z}@YF(!v`6)xva%{@k`CFMtK*Z`}SH!u+v83 z9w|ZPH$wG;xPXo5iYhQ+UL=G`jzSP5;P;zcLdR#4{?nwT6r0`+WqdC?5ejb?T#pBdT%z{Z(7P zVh%Y7;*h53t!h9Fiqn_P_rq|{u8!rfV+`XrLT6?mD!}&Lcf?5Z!rxTx*Q!B*ow5X+ zWDnRI`T^(aL+^Ht*QW)p63EgVTBdS@5Sm5S*i>I}Jz0y6JZ~GV+)o5oJ<<+iBHr8; z&E-51+-Fm7pl}eVdj2IJ-?&|Em!saZANl@ZM`KNNmi+}* zl86wELt(0cXP$KxNM*FkFmu~D)&^qc@D22stt zg6NDlQ&ol5^13Dl(dc1IZCQzz&eustEtr1YHS~pK;~Xho2`njfYE^Bo@SfJ0YW4v1 z8iHU#(s7QovrOMn`EzqezHox9qpx|;8K7RXyEeE6!d^9F2&$H^Pr8egxZ~tc?`xeM zDoWm}ysDzBT;*Y7{T}8#vhzNF!B!c7Zmor8Ru9BQOdNe;Te^( zdM%*3?phtSI6)ZE!xTwZlK+9yj9ahBL1>{oO=gqXW50+`ZfkJ|p~Z#>tKslx7BIcz za5Q7syfGwSMJ{G*4)om=_QZ(-5+TAK*QcFS7$3hQD7xKBDRmN^d(#q~nLvA{SL(S)PCu-09W*ifu?XZiMHP&W$#xqsZi1S&CTcAC!pdMYASOm^`poA zp>|*ruV(diN@c>bb>gjr;bPro9dpA)TAy@)>cUFO)q!oJ$+sw+d5Z|-ITG_G@ z=J!-b3pKvIL$Gs^WE%)j2YqSP0)q)`Q^>DJMhKWPK$;FI#_$(3^YY?2h@uxxeA={gUtsN> zR08~0PvDSXvPl*1wVs-VXunv`nh@@wPsqh z{+w4RccQ(~i8(1{kk#|+3wEgeKE}qOo^Cf1n*^+rn<9y+&l=TF2yQ)}@(9(i!~w%` za~kPwRL(IY)&}xJV}{id97##Zu07UtGIfwsRi}u-8QkW(^tJLc!jCrDH28Kygp@IR zC9ihgreKiU6>1-DRZlD9DzG+j->xNzYM;01Ki#{;rTNiev~!uGpu`=xdAn9V8piH? z;jni#F>=b^ZF`Tu8#cPpqFOraWv*~0aP^G^~Fy-uG#zf(>-6sN2qAM z)6$yY6k!|f6jNR}(A7=C{ANw>hDBZj2L~ROlM?@Yr}wh&Oaur#TwK|8Z~$|q?dL8c zfT(zcST6?)`*JHUv%T%zx+Nqxd-4*owj1kJfXDEmr;NBGr)DBzW`a3xn>i`JlC`yU zAK~ri%46sQArVgc_>6?IJvOG z74^Dq#iw8>8j7V}92H4EzpdxgeA|%5sMWBo+KOM6&IzQ{oWVO{O*+i|^RJkjm765p z@n2jb3HLm+qH9^rdBunbuZraoMwJ53Oi=-9wk8kIKqEQK<%6`lzJB z8y=eh&qK*Jj|Yjr?fHrO8S}=33rj*kHnF{Hp=5xGft^y)uYP6eUtbbWcRfxXls_1* zsBw0EF&G}@#v{p+r5(3o2z#;Mm2TrKQCfxA=!-k6m5VT+VVLAq4H)_57;E}QC4Z9nTe;?Qi z&+`&2KfHv)JV&d$ILd(Jr0Gk}jHcl+siLqrBz^gK1!+rbR&U{?b4PG8XX_A?CQ2Zf zPoEQJ5>E_Ef7}b(9#49t1D>TI;tDf81F+Gc8Gc7*vO5-pZGw}$Qj~2wv&dCMyuUzp zB8)YX?m^22Nk{4&|K7DSFtH;V)8qP3Tjh28^F#-oJV`Wv1z!Tf`yC?QWv3a55|zGJ zM&9^e&EQPK40!gw=sHPV2<4uJY}-Cx-dud(vUNR;xx*DgQGPx@y9@?KRO4R0{)FP zAV^mzc=60V56=ZPUSr^Ec;l*fzT*%}ZVsvoD7dTtv)Tj;Zs)J_`X|3Yd*goY!fME{ zRXKTH!goy(9lRUnL#lR(cdRYve=vn<|90EQ~s6ey7x}lw4f3dx5 zk~jDzryW@O`L_8j!bh`;Kda%Y-nizpc%GEc6VF>Enpqxh7rsd_P2v$&g3MEay6()3I*k`-v4No{*hvADA=K5fd|dd}WufoRk=;`1_;xFS}Uby@nb;G8kMG zSrs1Tj~9SmCN-qWl`3W(V*7aA@c2|D`q7oi7h*-@y>5@0y6B>@M!?R6E>9%Ay0qNJ zx20*n4H&8t8c-rw6tKe$Agj8l|KN^ViNf?F63rylMmf{q+W*D0GTOIx`d`n;|8!;aymV!R?Q!#aEHrs; zjJ5qCIqGRI2sP~~8H}WsO{D`cCC<;o1=(6->znZc2*nPJ@KR9_SOOm3j|(xqM_@Yd z`oES3fsyu|21D16hfch!ZB8^modb%#D};FosK(Oo$lm@+?vc6t!!R{j1ViU$M$qVQ zl~J4)#2xen`A$9EP3to#**IJ1VV45h=U?h=K&sXP&JE}RY^q)>2$t$~WD2L%pJ$9y zKHu$6OwO!?&t2MYWVqxMm=)E9Ib1>^pY@V~ z@>^KbU1r_g38qA~%Y()vH)VO_dUGpl(E5ZZNW-WzFkZheB{=uPWT1$?Ed+x6lWSO4 z;dVIB^Eu}MtJ}+}=Kq&Of&ZnEJ)-f6N;s zUVAx}VPO{&Y2UPX3;YgI-X=^6-aoJNi|S)!|Exkm==|AtjUM@;r))VcAvT6jp1*gZ z!Q#ZmgloOvdQ7L@JX6LUafIq6z)t%Uo>QQy$map^xlL7QhW8gBl}KMaofm&1EBxHg zBITMf_wk^S0hh#!MbP|r)yNCh$e)nyssqq?!#C@^zRnByJCMW|#OOGTP+7XI2P?;Ft*M>sTPK@&BEln~C;>9icPh_(N;xS=kX zB$jTe01%qy-(x+9`g$k`DznjV<-}r$6!WYjHt0*k-yQ`M#}u~U?NG=8wD?&s`W53% zI}iGZ#eLM%^jSH&?Lp~F=UZwNOc+lHs@-z~+E0UC^jt08ci>DH>IKJYi0%yUw7+4# z$~4-K&feUnt$dVB-W9Wj+m-9sMv9l@@%*r{i5>=pG`6+8!G86~zXNMjN)Ge|_h4Am zyF*2%4JYeMWLbms%;TEmKOUxr1h>WUYRRs%31EwtYxN0=^iMjDCnJB7c{<-Bh2hW+(YQNqqdo=`$_yUO5bN~n9 zSrAn;?(M1t(8Y>F-;re!>Ua6y>S^Mt!jo+?bLwQ|A%ZZkdp!%IH1{_Jq}U@XJ#Grk zpef>RASJC_VA>sgRX_M(DA6cG!FnXA1JVjJN$N@#3Xw5PM5i1x z;=Ohnc?sw<9Ifh14x4C|rVFu`HFOSL3B%?<@7UR$vz*U%9d{*-{OU0(TYz}~kkJqq z5oTm)+p53R8glTzoKOoL#FDKpbcb71#L#FXTMEzmrK^M;E4!;(oN=sRr@3HH^-b-# z_%y5?#TxlgpW6B|QCXF2$ceIaW+F zVX+n~tnude;tV35rUnrW{d}NfaRy>CPpOt5)kVJ2H(r(fFx)bhc>aB%0ngu#l)rq= zenC*1NPmu=nQZ*wc)hh~e&6n)dgWUE9uMW2oZwlCa%%@O8}8+klU9-{moV`AFYl8U AC;$Ke diff --git a/tgstation.dme b/tgstation.dme index b7a7e2b52d5..e8194806efa 100644 --- a/tgstation.dme +++ b/tgstation.dme @@ -313,6 +313,7 @@ #include "code\__HELPERS\ref.dm" #include "code\__HELPERS\roundend.dm" #include "code\__HELPERS\sanitize_values.dm" +#include "code\__HELPERS\screen_objs.dm" #include "code\__HELPERS\shell.dm" #include "code\__HELPERS\spatial_info.dm" #include "code\__HELPERS\spawns.dm" @@ -378,7 +379,6 @@ #include "code\_onclick\overmind.dm" #include "code\_onclick\pai.dm" #include "code\_onclick\telekinesis.dm" -#include "code\_onclick\hud\_defines.dm" #include "code\_onclick\hud\action_button.dm" #include "code\_onclick\hud\ai.dm" #include "code\_onclick\hud\alert.dm" @@ -2432,7 +2432,6 @@ #include "code\modules\client\preferences\auto_fit_viewport.dm" #include "code\modules\client\preferences\body_type.dm" #include "code\modules\client\preferences\broadcast_login_logout.dm" -#include "code\modules\client\preferences\buttons_locked.dm" #include "code\modules\client\preferences\clothing.dm" #include "code\modules\client\preferences\darkened_flash.dm" #include "code\modules\client\preferences\fov_darkness.dm"