Merge pull request #5182 from mwerezak/docking-controller-merged

Docking port door control
This commit is contained in:
Chinsky
2014-06-10 20:56:17 +04:00
26 changed files with 1835 additions and 755 deletions
+6 -1
View File
@@ -275,7 +275,6 @@
#include "code\game\jobs\job\silicon.dm"
#include "code\game\machinery\adv_med.dm"
#include "code\game\machinery\ai_slipper.dm"
#include "code\game\machinery\airlock_control.dm"
#include "code\game\machinery\alarm.dm"
#include "code\game\machinery\atmo_control.dm"
#include "code\game\machinery\autolathe.dm"
@@ -375,6 +374,7 @@
#include "code\game\machinery\computer\station_alert.dm"
#include "code\game\machinery\computer\syndicate_specops_shuttle.dm"
#include "code\game\machinery\doors\airlock.dm"
#include "code\game\machinery\doors\airlock_control.dm"
#include "code\game\machinery\doors\airlock_electronics.dm"
#include "code\game\machinery\doors\alarmlock.dm"
#include "code\game\machinery\doors\brigdoors.dm"
@@ -387,8 +387,12 @@
#include "code\game\machinery\doors\unpowered.dm"
#include "code\game\machinery\doors\windowdoor.dm"
#include "code\game\machinery\embedded_controller\airlock_controllers.dm"
#include "code\game\machinery\embedded_controller\airlock_docking_controller.dm"
#include "code\game\machinery\embedded_controller\airlock_program.dm"
#include "code\game\machinery\embedded_controller\docking_program.dm"
#include "code\game\machinery\embedded_controller\embedded_controller_base.dm"
#include "code\game\machinery\embedded_controller\embedded_program_base.dm"
#include "code\game\machinery\embedded_controller\simple_docking_controller.dm"
#include "code\game\machinery\kitchen\gibber.dm"
#include "code\game\machinery\kitchen\juicer.dm"
#include "code\game\machinery\kitchen\microwave.dm"
@@ -1280,6 +1284,7 @@
#include "code\modules\shuttles\antagonist.dm"
#include "code\modules\shuttles\departmental.dm"
#include "code\modules\shuttles\shuttle.dm"
#include "code\modules\shuttles\shuttle_console.dm"
#include "code\modules\shuttles\shuttles_multi.dm"
#include "code\modules\supermatter\supermatter.dm"
#include "code\modules\surgery\appendix.dm"
+4 -1
View File
@@ -32,6 +32,8 @@ datum/controller/game_controller
var/last_thing_processed
var/mob/list/expensive_mobs = list()
var/rebuild_active_areas = 0
var/list/shuttle_list //for debugging and VV
datum/controller/game_controller/New()
//There can be only one master_controller. Out with the old and in with the new.
@@ -65,7 +67,8 @@ datum/controller/game_controller/proc/setup()
if(!ticker)
ticker = new /datum/controller/gameticker()
if(!shuttles) shuttles = new /datum/shuttle_controller()
if(!shuttles) setup_shuttles()
shuttle_list = shuttles
setup_objects()
setupgenetics()
+7 -7
View File
@@ -11,7 +11,7 @@
var/global/datum/shuttle_controller/emergency_shuttle/emergency_shuttle
datum/shuttle_controller
datum/shuttle_controller/emergency_shuttle
var/alert = 0 //0 = emergency, 1 = crew cycle
var/location = 0 //0 = somewhere far away (in spess), 1 = at SS13, 2 = returned from SS13
@@ -52,10 +52,10 @@ datum/shuttle_controller
return SHUTTLEARRIVETIME
datum/shuttle_controller/proc/shuttlealert(var/X)
datum/shuttle_controller/emergency_shuttle/proc/shuttlealert(var/X)
alert = X
datum/shuttle_controller/proc/recall()
datum/shuttle_controller/emergency_shuttle/proc/recall()
if(direction == 1)
var/timeleft = timeleft()
if(alert == 0)
@@ -78,7 +78,7 @@ datum/shuttle_controller/proc/recall()
// returns the time (in seconds) before shuttle arrival
// note if direction = -1, gives a count-up to SHUTTLEARRIVETIME
datum/shuttle_controller/proc/timeleft()
datum/shuttle_controller/emergency_shuttle/proc/timeleft()
if(online)
var/timeleft = round((endtime - world.timeofday)/10 ,1)
if(direction == 1 || direction == 2)
@@ -89,13 +89,13 @@ datum/shuttle_controller/proc/timeleft()
return get_shuttle_arrive_time()
// sets the time left to a given delay (in seconds)
datum/shuttle_controller/proc/settimeleft(var/delay)
datum/shuttle_controller/emergency_shuttle/proc/settimeleft(var/delay)
endtime = world.timeofday + delay * 10
timelimit = delay
// sets the shuttle direction
// 1 = towards SS13, -1 = back to centcom
datum/shuttle_controller/proc/setdirection(var/dirn)
datum/shuttle_controller/emergency_shuttle/proc/setdirection(var/dirn)
if(direction == dirn)
return
direction = dirn
@@ -104,7 +104,7 @@ datum/shuttle_controller/proc/setdirection(var/dirn)
endtime = world.timeofday + (get_shuttle_arrive_time()*10 - ticksleft)
return
datum/shuttle_controller/proc/process()
datum/shuttle_controller/emergency_shuttle/proc/process()
datum/shuttle_controller/emergency_shuttle/process()
if(!online)
+1 -1
View File
@@ -14,6 +14,6 @@
for(var/obj/machinery/door/door in T.contents)
spawn(1)
if(istype(door,/obj/machinery/door/airlock))
door:locked = 0
door:unlock(1) //forced because it's magic!
door.open()
return
+2
View File
@@ -129,6 +129,8 @@ var/global/datum/controller/gameticker/ticker
//here to initialize the random events nicely at round start
setup_economy()
setup_shuttle_docks()
spawn(0)//Forking here so we dont have to wait for this to finish
mode.post_setup()
+1 -1
View File
@@ -158,7 +158,7 @@ datum/game_mode/mutiny
proc/unbolt_vault_door()
var/obj/machinery/door/airlock/vault = locate(/obj/machinery/door/airlock/vault)
vault.locked = 0
vault.lock()
proc/make_secret_transcript()
var/obj/machinery/computer/telecomms/server/S = locate(/obj/machinery/computer/telecomms/server)
+2 -4
View File
@@ -93,8 +93,7 @@
if(specialfunctions & IDSCAN)
D.aiDisabledIdScanner = 1
if(specialfunctions & BOLTS)
D.locked = 1
D.update_icon()
D.lock()
if(specialfunctions & SHOCK)
D.secondsElectrified = -1
if(specialfunctions & SAFE)
@@ -104,8 +103,7 @@
D.aiDisabledIdScanner = 0
if(specialfunctions & BOLTS)
if(!D.isWireCut(4) && D.arePowerSystemsOn())
D.locked = 0
D.update_icon()
D.unlock()
if(specialfunctions & SHOCK)
D.secondsElectrified = 0
if(specialfunctions & SAFE)
+28 -25
View File
@@ -386,17 +386,10 @@ About the new airlock wires panel:
//one wire for door bolts. Sending a pulse through this drops door bolts if they're not down (whether power's on or not),
//raises them if they are down (only if power's on)
if(!src.locked)
src.locked = 1
for(var/mob/M in range(1,src))
M << "You hear a click from the bottom of the door."
src.updateUsrDialog()
src.lock()
else
if(src.arePowerSystemsOn()) //only can raise bolts if power's on
src.locked = 0
for(var/mob/M in range(1,src))
M << "You hear a click from the bottom of the door."
src.updateUsrDialog()
update_icon()
src.unlock()
src.updateUsrDialog()
if(AIRLOCK_WIRE_BACKUP_POWER1 || AIRLOCK_WIRE_BACKUP_POWER2)
//two wires for backup power. Sending a pulse through either one causes a breaker to trip, but this does not disable it unless main power is down too (in which case it is disabled for 1 minute or however long it takes main power to come back, whichever is shorter).
@@ -460,9 +453,7 @@ About the new airlock wires panel:
src.updateUsrDialog()
if(AIRLOCK_WIRE_DOOR_BOLTS)
//Cutting this wire also drops the door bolts, and mending it does not raise them. (This is what happens now, except there are a lot more wires going to door bolts at present)
if(src.locked!=1)
src.locked = 1
update_icon()
src.lock()
src.updateUsrDialog()
if(AIRLOCK_WIRE_BACKUP_POWER1 || AIRLOCK_WIRE_BACKUP_POWER2)
//Cutting either one disables the backup door power (allowing it to be crowbarred open, but disabling bolts-raising), but may electocute the user.
@@ -720,7 +711,7 @@ About the new airlock wires panel:
t1 += text("Backup Power Output wire is cut.<br>\n")
if(src.isWireCut(AIRLOCK_WIRE_DOOR_BOLTS))
t1 += text("Door bolt drop wire is cut.<br>\n")
t1 += text("Door bolt control wire is cut.<br>\n")
else if(!src.locked)
t1 += text("Door bolts are up. <A href='?src=\ref[];aiDisable=4'>Drop them?</a><br>\n", src)
else
@@ -1000,9 +991,8 @@ About the new airlock wires panel:
//drop door bolts
if(src.isWireCut(AIRLOCK_WIRE_DOOR_BOLTS))
usr << "You can't drop the door bolts - The door bolt control wire has been cut."
else if(src.locked!=1)
src.locked = 1
update_icon()
else
src.lock()
if(5)
//un-electrify door
if(src.isWireCut(AIRLOCK_WIRE_ELECTRIFY))
@@ -1068,15 +1058,11 @@ About the new airlock wires panel:
if(4)
//raise door bolts
if(src.isWireCut(AIRLOCK_WIRE_DOOR_BOLTS))
usr << text("The door bolt drop wire is cut - you can't raise the door bolts.<br>\n")
usr << text("The door bolt control wire is cut - you can't raise the door bolts.<br>\n")
else if(!src.locked)
usr << text("The door bolts are already up.<br>\n")
else
if(src.arePowerSystemsOn())
src.locked = 0
update_icon()
else
usr << text("Cannot raise door bolts due to power failure.<br>\n")
src.unlock()
if(5)
//electrify door for 30 seconds
@@ -1330,6 +1316,23 @@ About the new airlock wires panel:
..()
return
/obj/machinery/door/airlock/proc/lock(var/forced=0)
if (src.locked) return
src.locked = 1
for(var/mob/M in range(1,src))
M.show_message("You hear a click from the bottom of the door.", 2)
update_icon()
/obj/machinery/door/airlock/proc/unlock(var/forced=0)
if (!src.locked) return
if(forced || src.arePowerSystemsOn()) //only can raise bolts if power's on
src.locked = 0
for(var/mob/M in range(1,src))
M.show_message("You hear a click from the bottom of the door.", 2)
update_icon()
/obj/machinery/door/airlock/New()
..()
@@ -1357,7 +1360,7 @@ About the new airlock wires panel:
airlockWireColorToIndex = wire_assignments[4]
/obj/machinery/door/airlock/proc/prison_open()
src.locked = 0
src.unlock()
src.open()
src.locked = 1
src.lock()
return
@@ -1,255 +1,259 @@
#define AIRLOCK_CONTROL_RANGE 5
// This code allows for airlocks to be controlled externally by setting an id_tag and comm frequency (disables ID access)
obj/machinery/door/airlock
var/id_tag
var/frequency
var/shockedby = list()
var/datum/radio_frequency/radio_connection
explosion_resistance = 15
obj/machinery/door/airlock/receive_signal(datum/signal/signal)
if(!signal || signal.encryption) return
if(id_tag != signal.data["tag"] || !signal.data["command"]) return
switch(signal.data["command"])
if("open")
open(1)
if("close")
close(1)
if("unlock")
locked = 0
update_icon()
if("lock")
locked = 1
update_icon()
if("secure_open")
locked = 0
update_icon()
sleep(2)
open(1)
locked = 1
update_icon()
if("secure_close")
locked = 0
close(1)
locked = 1
sleep(2)
update_icon()
send_status()
obj/machinery/door/airlock/proc/send_status()
if(radio_connection)
var/datum/signal/signal = new
signal.transmission_method = 1 //radio signal
signal.data["tag"] = id_tag
signal.data["timestamp"] = world.time
signal.data["door_status"] = density?("closed"):("open")
signal.data["lock_status"] = locked?("locked"):("unlocked")
radio_connection.post_signal(src, signal, range = AIRLOCK_CONTROL_RANGE, filter = RADIO_AIRLOCK)
obj/machinery/door/airlock/open(surpress_send)
. = ..()
if(!surpress_send) send_status()
obj/machinery/door/airlock/close(surpress_send)
. = ..()
if(!surpress_send) send_status()
obj/machinery/door/airlock/Bumped(atom/AM)
..(AM)
if(istype(AM, /obj/mecha))
var/obj/mecha/mecha = AM
if(density && radio_connection && mecha.occupant && (src.allowed(mecha.occupant) || src.check_access_list(mecha.operation_req_access)))
var/datum/signal/signal = new
signal.transmission_method = 1 //radio signal
signal.data["tag"] = id_tag
signal.data["timestamp"] = world.time
signal.data["door_status"] = density?("closed"):("open")
signal.data["lock_status"] = locked?("locked"):("unlocked")
signal.data["bumped_with_access"] = 1
radio_connection.post_signal(src, signal, range = AIRLOCK_CONTROL_RANGE, filter = RADIO_AIRLOCK)
return
obj/machinery/door/airlock/proc/set_frequency(new_frequency)
radio_controller.remove_object(src, frequency)
if(new_frequency)
frequency = new_frequency
radio_connection = radio_controller.add_object(src, frequency, RADIO_AIRLOCK)
obj/machinery/door/airlock/initialize()
if(frequency)
set_frequency(frequency)
update_icon()
obj/machinery/door/airlock/New()
..()
if(radio_controller)
set_frequency(frequency)
obj/machinery/airlock_sensor
icon = 'icons/obj/airlock_machines.dmi'
icon_state = "airlock_sensor_off"
name = "airlock sensor"
anchored = 1
power_channel = ENVIRON
var/id_tag
var/master_tag
var/frequency = 1379
var/command = "cycle"
var/datum/radio_frequency/radio_connection
var/on = 1
var/alert = 0
var/previousPressure
obj/machinery/airlock_sensor/update_icon()
if(on)
if(alert)
icon_state = "airlock_sensor_alert"
else
icon_state = "airlock_sensor_standby"
else
icon_state = "airlock_sensor_off"
obj/machinery/airlock_sensor/attack_hand(mob/user)
var/datum/signal/signal = new
signal.transmission_method = 1 //radio signal
signal.data["tag"] = master_tag
signal.data["command"] = command
radio_connection.post_signal(src, signal, range = AIRLOCK_CONTROL_RANGE, filter = RADIO_AIRLOCK)
flick("airlock_sensor_cycle", src)
obj/machinery/airlock_sensor/process()
if(on)
var/datum/gas_mixture/air_sample = return_air()
var/pressure = round(air_sample.return_pressure(),0.1)
if(abs(pressure - previousPressure) > 0.001 || previousPressure == null)
var/datum/signal/signal = new
signal.transmission_method = 1 //radio signal
signal.data["tag"] = id_tag
signal.data["timestamp"] = world.time
signal.data["pressure"] = num2text(pressure)
radio_connection.post_signal(src, signal, range = AIRLOCK_CONTROL_RANGE, filter = RADIO_AIRLOCK)
previousPressure = pressure
alert = (pressure < ONE_ATMOSPHERE*0.8)
update_icon()
obj/machinery/airlock_sensor/proc/set_frequency(new_frequency)
radio_controller.remove_object(src, frequency)
frequency = new_frequency
radio_connection = radio_controller.add_object(src, frequency, RADIO_AIRLOCK)
obj/machinery/airlock_sensor/initialize()
set_frequency(frequency)
obj/machinery/airlock_sensor/New()
..()
if(radio_controller)
set_frequency(frequency)
obj/machinery/airlock_sensor/airlock_interior
command = "cycle_interior"
obj/machinery/airlock_sensor/airlock_exterior
command = "cycle_exterior"
obj/machinery/access_button
icon = 'icons/obj/airlock_machines.dmi'
icon_state = "access_button_standby"
name = "access button"
anchored = 1
power_channel = ENVIRON
var/master_tag
var/frequency = 1449
var/command = "cycle"
var/datum/radio_frequency/radio_connection
var/on = 1
obj/machinery/access_button/update_icon()
if(on)
icon_state = "access_button_standby"
else
icon_state = "access_button_off"
obj/machinery/access_button/attack_hand(mob/user)
add_fingerprint(usr)
if(!allowed(user))
user << "\red Access Denied"
else if(radio_connection)
var/datum/signal/signal = new
signal.transmission_method = 1 //radio signal
signal.data["tag"] = master_tag
signal.data["command"] = command
radio_connection.post_signal(src, signal, range = AIRLOCK_CONTROL_RANGE, filter = RADIO_AIRLOCK)
flick("access_button_cycle", src)
obj/machinery/access_button/proc/set_frequency(new_frequency)
radio_controller.remove_object(src, frequency)
frequency = new_frequency
radio_connection = radio_controller.add_object(src, frequency, RADIO_AIRLOCK)
obj/machinery/access_button/initialize()
set_frequency(frequency)
obj/machinery/access_button/New()
..()
if(radio_controller)
set_frequency(frequency)
obj/machinery/access_button/airlock_interior
frequency = 1379
command = "cycle_interior"
obj/machinery/access_button/airlock_exterior
frequency = 1379
#define AIRLOCK_CONTROL_RANGE 5
// This code allows for airlocks to be controlled externally by setting an id_tag and comm frequency (disables ID access)
obj/machinery/door/airlock
var/id_tag
var/frequency
var/shockedby = list()
var/datum/radio_frequency/radio_connection
explosion_resistance = 15
obj/machinery/door/airlock/proc/can_radio()
if( !arePowerSystemsOn() || (stat & NOPOWER) || isWireCut(AIRLOCK_WIRE_AI_CONTROL) )
return 0
return 1
obj/machinery/door/airlock/receive_signal(datum/signal/signal)
if (!can_radio()) return
if(!signal || signal.encryption) return
if(id_tag != signal.data["tag"] || !signal.data["command"]) return
switch(signal.data["command"])
if("open")
open()
if("close")
close()
if("unlock")
unlock()
if("lock")
lock()
if("secure_open")
unlock()
sleep(2)
open()
lock()
if("secure_close")
unlock()
close()
lock()
sleep(2)
send_status()
obj/machinery/door/airlock/proc/send_status()
if (!can_radio()) return
if(radio_connection)
var/datum/signal/signal = new
signal.transmission_method = 1 //radio signal
signal.data["tag"] = id_tag
signal.data["timestamp"] = world.time
signal.data["door_status"] = density?("closed"):("open")
signal.data["lock_status"] = locked?("locked"):("unlocked")
radio_connection.post_signal(src, signal, range = AIRLOCK_CONTROL_RANGE, filter = RADIO_AIRLOCK)
obj/machinery/door/airlock/open(surpress_send)
. = ..()
if(!surpress_send) send_status()
obj/machinery/door/airlock/close(surpress_send)
. = ..()
if(!surpress_send) send_status()
obj/machinery/door/airlock/Bumped(atom/AM)
..(AM)
if(istype(AM, /obj/mecha))
var/obj/mecha/mecha = AM
if(density && radio_connection && mecha.occupant && (src.allowed(mecha.occupant) || src.check_access_list(mecha.operation_req_access)))
var/datum/signal/signal = new
signal.transmission_method = 1 //radio signal
signal.data["tag"] = id_tag
signal.data["timestamp"] = world.time
signal.data["door_status"] = density?("closed"):("open")
signal.data["lock_status"] = locked?("locked"):("unlocked")
signal.data["bumped_with_access"] = 1
radio_connection.post_signal(src, signal, range = AIRLOCK_CONTROL_RANGE, filter = RADIO_AIRLOCK)
return
obj/machinery/door/airlock/proc/set_frequency(new_frequency)
radio_controller.remove_object(src, frequency)
if(new_frequency)
frequency = new_frequency
radio_connection = radio_controller.add_object(src, frequency, RADIO_AIRLOCK)
obj/machinery/door/airlock/initialize()
if(frequency)
set_frequency(frequency)
update_icon()
obj/machinery/door/airlock/New()
..()
if(radio_controller)
set_frequency(frequency)
obj/machinery/airlock_sensor
icon = 'icons/obj/airlock_machines.dmi'
icon_state = "airlock_sensor_off"
name = "airlock sensor"
anchored = 1
power_channel = ENVIRON
var/id_tag
var/master_tag
var/frequency = 1379
var/command = "cycle"
var/datum/radio_frequency/radio_connection
var/on = 1
var/alert = 0
var/previousPressure
obj/machinery/airlock_sensor/update_icon()
if(on)
if(alert)
icon_state = "airlock_sensor_alert"
else
icon_state = "airlock_sensor_standby"
else
icon_state = "airlock_sensor_off"
obj/machinery/airlock_sensor/attack_hand(mob/user)
var/datum/signal/signal = new
signal.transmission_method = 1 //radio signal
signal.data["tag"] = master_tag
signal.data["command"] = command
radio_connection.post_signal(src, signal, range = AIRLOCK_CONTROL_RANGE, filter = RADIO_AIRLOCK)
flick("airlock_sensor_cycle", src)
obj/machinery/airlock_sensor/process()
if(on)
var/datum/gas_mixture/air_sample = return_air()
var/pressure = round(air_sample.return_pressure(),0.1)
if(abs(pressure - previousPressure) > 0.001 || previousPressure == null)
var/datum/signal/signal = new
signal.transmission_method = 1 //radio signal
signal.data["tag"] = id_tag
signal.data["timestamp"] = world.time
signal.data["pressure"] = num2text(pressure)
radio_connection.post_signal(src, signal, range = AIRLOCK_CONTROL_RANGE, filter = RADIO_AIRLOCK)
previousPressure = pressure
alert = (pressure < ONE_ATMOSPHERE*0.8)
update_icon()
obj/machinery/airlock_sensor/proc/set_frequency(new_frequency)
radio_controller.remove_object(src, frequency)
frequency = new_frequency
radio_connection = radio_controller.add_object(src, frequency, RADIO_AIRLOCK)
obj/machinery/airlock_sensor/initialize()
set_frequency(frequency)
obj/machinery/airlock_sensor/New()
..()
if(radio_controller)
set_frequency(frequency)
obj/machinery/airlock_sensor/airlock_interior
command = "cycle_interior"
obj/machinery/airlock_sensor/airlock_exterior
command = "cycle_exterior"
obj/machinery/access_button
icon = 'icons/obj/airlock_machines.dmi'
icon_state = "access_button_standby"
name = "access button"
anchored = 1
power_channel = ENVIRON
var/master_tag
var/frequency = 1449
var/command = "cycle"
var/datum/radio_frequency/radio_connection
var/on = 1
obj/machinery/access_button/update_icon()
if(on)
icon_state = "access_button_standby"
else
icon_state = "access_button_off"
obj/machinery/access_button/attack_hand(mob/user)
add_fingerprint(usr)
if(!allowed(user))
user << "\red Access Denied"
else if(radio_connection)
var/datum/signal/signal = new
signal.transmission_method = 1 //radio signal
signal.data["tag"] = master_tag
signal.data["command"] = command
radio_connection.post_signal(src, signal, range = AIRLOCK_CONTROL_RANGE, filter = RADIO_AIRLOCK)
flick("access_button_cycle", src)
obj/machinery/access_button/proc/set_frequency(new_frequency)
radio_controller.remove_object(src, frequency)
frequency = new_frequency
radio_connection = radio_controller.add_object(src, frequency, RADIO_AIRLOCK)
obj/machinery/access_button/initialize()
set_frequency(frequency)
obj/machinery/access_button/New()
..()
if(radio_controller)
set_frequency(frequency)
obj/machinery/access_button/airlock_interior
frequency = 1379
command = "cycle_interior"
obj/machinery/access_button/airlock_exterior
frequency = 1379
command = "cycle_exterior"
@@ -1,8 +1,23 @@
//base type for controllers of two-door systems
/obj/machinery/embedded_controller/radio/airlock
// Setup parameters only
var/tag_exterior_door
var/tag_interior_door
var/tag_airpump
var/tag_chamber_sensor
var/tag_exterior_sensor
var/tag_interior_sensor
var/tag_secure = 0
/obj/machinery/embedded_controller/radio/airlock/initialize()
..()
program = new/datum/computer/file/embedded_program/airlock(src)
//Advanced airlock controller for when you want a more versatile airlock controller - useful for turning simple access control rooms into airlocks
/obj/machinery/embedded_controller/radio/advanced_airlock_controller
/obj/machinery/embedded_controller/radio/airlock/advanced_airlock_controller
name = "Advanced Airlock Controller"
/obj/machinery/embedded_controller/radio/advanced_airlock_controller/ui_interact(mob/user, ui_key = "main", var/datum/nanoui/ui = null)
/obj/machinery/embedded_controller/radio/airlock/advanced_airlock_controller/ui_interact(mob/user, ui_key = "main", var/datum/nanoui/ui = null)
var/data[0]
data = list(
@@ -25,7 +40,13 @@
ui.set_auto_update(1)
/obj/machinery/embedded_controller/radio/advanced_airlock_controller/Topic(href, href_list)
/obj/machinery/embedded_controller/radio/airlock/advanced_airlock_controller/Topic(href, href_list)
if(..())
return
usr.set_machine(src)
src.add_fingerprint(usr)
var/clean = 0
switch(href_list["command"]) //anti-HTML-hacking checks
if("cycle_ext")
@@ -50,11 +71,11 @@
//Airlock controller for airlock control - most airlocks on the station use this
/obj/machinery/embedded_controller/radio/airlock_controller
/obj/machinery/embedded_controller/radio/airlock/airlock_controller
name = "Airlock Controller"
tag_secure = 1
/obj/machinery/embedded_controller/radio/airlock_controller/ui_interact(mob/user, ui_key = "main", var/datum/nanoui/ui = null)
/obj/machinery/embedded_controller/radio/airlock/airlock_controller/ui_interact(mob/user, ui_key = "main", var/datum/nanoui/ui = null)
var/data[0]
data = list(
@@ -75,7 +96,13 @@
ui.set_auto_update(1)
/obj/machinery/embedded_controller/radio/airlock_controller/Topic(href, href_list)
/obj/machinery/embedded_controller/radio/airlock/airlock_controller/Topic(href, href_list)
if(..())
return
usr.set_machine(src)
src.add_fingerprint(usr)
var/clean = 0
switch(href_list["command"]) //anti-HTML-hacking checks
if("cycle_ext")
@@ -96,7 +123,7 @@
//Access controller for door control - used in virology and the like
/obj/machinery/embedded_controller/radio/access_controller
/obj/machinery/embedded_controller/radio/airlock/access_controller
icon = 'icons/obj/airlock_machines.dmi'
icon_state = "access_control_standby"
@@ -104,7 +131,7 @@
tag_secure = 1
/obj/machinery/embedded_controller/radio/access_controller/update_icon()
/obj/machinery/embedded_controller/radio/airlock/access_controller/update_icon()
if(on && program)
if(program.memory["processing"])
icon_state = "access_control_process"
@@ -113,7 +140,7 @@
else
icon_state = "access_control_off"
/obj/machinery/embedded_controller/radio/access_controller/ui_interact(mob/user, ui_key = "main", var/datum/nanoui/ui = null)
/obj/machinery/embedded_controller/radio/airlock/access_controller/ui_interact(mob/user, ui_key = "main", var/datum/nanoui/ui = null)
var/data[0]
data = list(
@@ -133,7 +160,13 @@
ui.set_auto_update(1)
/obj/machinery/embedded_controller/radio/access_controller/Topic(href, href_list)
/obj/machinery/embedded_controller/radio/airlock/access_controller/Topic(href, href_list)
if(..())
return
usr.set_machine(src)
src.add_fingerprint(usr)
var/clean = 0
switch(href_list["command"]) //anti-HTML-hacking checks
if("cycle_ext_door")
@@ -0,0 +1,174 @@
//a docking port based on an airlock
/obj/machinery/embedded_controller/radio/airlock/docking_port
name = "docking port controller"
var/datum/computer/file/embedded_program/airlock/docking/airlock_program
var/datum/computer/file/embedded_program/docking/airlock/docking_program
tag_secure = 1
/obj/machinery/embedded_controller/radio/airlock/docking_port/initialize()
..()
airlock_program = new/datum/computer/file/embedded_program/airlock/docking(src)
docking_program = new/datum/computer/file/embedded_program/docking/airlock(src, airlock_program)
program = docking_program
/obj/machinery/embedded_controller/radio/airlock/docking_port/ui_interact(mob/user, ui_key = "main", var/datum/nanoui/ui = null)
var/data[0]
data = list(
"chamber_pressure" = round(airlock_program.memory["chamber_sensor_pressure"]),
"exterior_status" = airlock_program.memory["exterior_status"],
"interior_status" = airlock_program.memory["interior_status"],
"processing" = airlock_program.memory["processing"],
"docking_status" = docking_program.get_docking_status(),
"airlock_disabled" = !(docking_program.undocked() || docking_program.override_enabled),
)
ui = nanomanager.try_update_ui(user, src, ui_key, ui, data)
if (!ui)
ui = new(user, src, ui_key, "docking_airlock_console.tmpl", name, 470, 290)
ui.set_initial_data(data)
ui.open()
ui.set_auto_update(1)
/obj/machinery/embedded_controller/radio/airlock/docking_port/Topic(href, href_list)
if(..())
return
usr.set_machine(src)
src.add_fingerprint(usr)
var/clean = 0
switch(href_list["command"]) //anti-HTML-hacking checks
if("cycle_ext")
clean = 1
if("cycle_int")
clean = 1
if("force_ext")
clean = 1
if("force_int")
clean = 1
if("abort")
clean = 1
if("toggle_override")
clean = 1
if(clean)
program.receive_user_command(href_list["command"])
return 1
//A docking controller for an airlock based docking port
/datum/computer/file/embedded_program/docking/airlock
var/datum/computer/file/embedded_program/airlock/docking/airlock_program
/datum/computer/file/embedded_program/docking/airlock/New(var/obj/machinery/embedded_controller/M, var/datum/computer/file/embedded_program/airlock/docking/A)
..(M)
airlock_program = A
airlock_program.master_prog = src
/datum/computer/file/embedded_program/docking/airlock/receive_user_command(command)
if (command == "toggle_override")
if (override_enabled)
disable_override()
else
enable_override()
return
..(command)
airlock_program.receive_user_command(command) //pass along to subprograms
/datum/computer/file/embedded_program/docking/airlock/process()
airlock_program.process()
..()
/datum/computer/file/embedded_program/docking/airlock/receive_signal(datum/signal/signal, receive_method, receive_param)
airlock_program.receive_signal(signal, receive_method, receive_param) //pass along to subprograms
..(signal, receive_method, receive_param)
//tell the docking port to start getting ready for docking - e.g. pressurize
/datum/computer/file/embedded_program/docking/airlock/prepare_for_docking()
airlock_program.begin_cycle_in()
//are we ready for docking?
/datum/computer/file/embedded_program/docking/airlock/ready_for_docking()
return airlock_program.done_cycling()
//we are docked, open the doors or whatever.
/datum/computer/file/embedded_program/docking/airlock/finish_docking()
airlock_program.open_doors()
//tell the docking port to start getting ready for undocking - e.g. close those doors.
/datum/computer/file/embedded_program/docking/airlock/prepare_for_undocking()
airlock_program.stop_cycling()
airlock_program.close_doors()
//are we ready for undocking?
/datum/computer/file/embedded_program/docking/airlock/ready_for_undocking()
return airlock_program.check_doors_secured()
/datum/computer/file/embedded_program/docking/airlock/reset()
airlock_program.stop_cycling()
airlock_program.close_doors()
..()
//An airlock controller to be used by the airlock-based docking port controller.
//Same as a regular airlock controller but allows disabling of the regular airlock functions when docking
/datum/computer/file/embedded_program/airlock/docking
var/datum/computer/file/embedded_program/docking/airlock/master_prog
/datum/computer/file/embedded_program/airlock/docking/receive_user_command(command)
if (master_prog.undocked() || master_prog.override_enabled) //only allow the port to be used as an airlock if nothing is docked here or the override is enabled
..(command)
/datum/computer/file/embedded_program/airlock/docking/proc/open_doors()
toggleDoor(memory["interior_status"], tag_interior_door, memory["secure"], "open")
toggleDoor(memory["exterior_status"], tag_exterior_door, memory["secure"], "open")
/datum/computer/file/embedded_program/airlock/docking/cycleDoors(var/target)
if (master_prog.undocked() || master_prog.override_enabled) //only allow the port to be used as an airlock if nothing is docked here or the override is enabled
..(target)
/*** DEBUG VERBS ***
/datum/computer/file/embedded_program/docking/proc/print_state()
world << "id_tag: [id_tag]"
world << "dock_state: [dock_state]"
world << "control_mode: [control_mode]"
world << "tag_target: [tag_target]"
world << "response_sent: [response_sent]"
/datum/computer/file/embedded_program/docking/post_signal(datum/signal/signal, comm_line)
world << "Program [id_tag] sent a message!"
print_state()
world << "[id_tag] sent command \"[signal.data["command"]]\" to \"[signal.data["recipient"]]\""
..(signal)
/obj/machinery/embedded_controller/radio/airlock/docking_port/verb/view_state()
set category = "Debug"
set src in view(1)
src.program:print_state()
/obj/machinery/embedded_controller/radio/airlock/docking_port/verb/spoof_signal(var/command as text, var/sender as text)
set category = "Debug"
set src in view(1)
var/datum/signal/signal = new
signal.data["tag"] = sender
signal.data["command"] = command
signal.data["recipient"] = id_tag
src.program:receive_signal(signal)
/obj/machinery/embedded_controller/radio/airlock/docking_port/verb/debug_init_dock(var/target as text)
set category = "Debug"
set src in view(1)
src.program:initiate_docking(target)
/obj/machinery/embedded_controller/radio/airlock/docking_port/verb/debug_init_undock()
set category = "Debug"
set src in view(1)
src.program:initiate_undocking()
*/
@@ -8,11 +8,8 @@
#define TARGET_INOPEN -1
#define TARGET_OUTOPEN -2
/datum/computer/file/embedded_program
var/list/memory = list()
var/obj/machinery/embedded_controller/master
var/id_tag
/datum/computer/file/embedded_program/airlock
var/tag_exterior_door
var/tag_interior_door
var/tag_airpump
@@ -23,9 +20,9 @@
var/state = STATE_WAIT
var/target_state = TARGET_NONE
/datum/computer/file/embedded_program/New()
..()
/datum/computer/file/embedded_program/airlock/New(var/obj/machinery/embedded_controller/M)
..(M)
memory["chamber_sensor_pressure"] = ONE_ATMOSPHERE
memory["external_sensor_pressure"] = 0 //assume vacuum for simple airlock controller
memory["internal_sensor_pressure"] = ONE_ATMOSPHERE
@@ -35,11 +32,22 @@
memory["target_pressure"] = ONE_ATMOSPHERE
memory["purge"] = 0
memory["secure"] = 0
if (istype(M, /obj/machinery/embedded_controller/radio/airlock)) //if our controller is an airlock controller than we can auto-init our tags
var/obj/machinery/embedded_controller/radio/airlock/controller = M
tag_exterior_door = controller.tag_exterior_door
tag_interior_door = controller.tag_interior_door
tag_airpump = controller.tag_airpump
tag_chamber_sensor = controller.tag_chamber_sensor
tag_exterior_sensor = controller.tag_exterior_sensor
tag_interior_sensor = controller.tag_interior_sensor
memory["secure"] = controller.tag_secure
spawn(10)
signalDoor(tag_exterior_door, "update") //signals connected doors to update their status
signalDoor(tag_interior_door, "update")
/datum/computer/file/embedded_program/proc/receive_signal(datum/signal/signal, receive_method, receive_param)
/datum/computer/file/embedded_program/airlock/receive_signal(datum/signal/signal, receive_method, receive_param)
var/receive_tag = signal.data["tag"]
if(!receive_tag) return
@@ -68,7 +76,7 @@
memory["pump_status"] = "off"
else if(receive_tag==id_tag)
if(istype(master, /obj/machinery/embedded_controller/radio/access_controller))
if(istype(master, /obj/machinery/embedded_controller/radio/airlock/access_controller))
switch(signal.data["command"])
if("cycle_exterior")
receive_user_command("cycle_ext_door")
@@ -92,16 +100,14 @@
receive_user_command("cycle_int")
/datum/computer/file/embedded_program/proc/receive_user_command(command)
/datum/computer/file/embedded_program/airlock/receive_user_command(command)
var/shutdown_pump = 0
switch(command)
if("cycle_ext")
state = STATE_WAIT
target_state = TARGET_OUTOPEN
begin_cycle_out()
if("cycle_int")
state = STATE_WAIT
target_state = TARGET_INOPEN
begin_cycle_in()
if("cycle_ext_door")
cycleDoors(TARGET_OUTOPEN)
@@ -144,37 +150,44 @@
signalPump(tag_airpump, 0) //send a signal to stop pressurizing
/datum/computer/file/embedded_program/proc/process()
if(!state && target_state)
switch(target_state)
if(TARGET_INOPEN)
memory["target_pressure"] = memory["internal_sensor_pressure"]
if(TARGET_OUTOPEN)
memory["target_pressure"] = memory["external_sensor_pressure"]
/datum/computer/file/embedded_program/airlock/process()
if(!state)
if(target_state)
switch(target_state)
if(TARGET_INOPEN)
memory["target_pressure"] = memory["internal_sensor_pressure"]
if(TARGET_OUTOPEN)
memory["target_pressure"] = memory["external_sensor_pressure"]
//lock down the airlock before activating pumps
toggleDoor(memory["exterior_status"], tag_exterior_door, 1, "close")
toggleDoor(memory["interior_status"], tag_interior_door, 1, "close")
//lock down the airlock before activating pumps
close_doors()
var/chamber_pressure = memory["chamber_sensor_pressure"]
var/target_pressure = memory["target_pressure"]
var/chamber_pressure = memory["chamber_sensor_pressure"]
var/target_pressure = memory["target_pressure"]
if(memory["purge"])
target_pressure = 0
if(memory["purge"])
target_pressure = 0
if(chamber_pressure <= target_pressure)
state = STATE_PRESSURIZE
signalPump(tag_airpump, 1, 1, target_pressure) //send a signal to start pressurizing
else if(chamber_pressure > target_pressure)
state = STATE_DEPRESSURIZE
signalPump(tag_airpump, 1, 0, target_pressure) //send a signal to start depressurizing
//Check for vacuum - this is set after the pumps so the pumps are aiming for 0
if(!memory["target_pressure"])
memory["target_pressure"] = ONE_ATMOSPHERE * 0.05
if(chamber_pressure <= target_pressure)
state = STATE_PRESSURIZE
signalPump(tag_airpump, 1, 1, target_pressure) //send a signal to start pressurizing
else if(chamber_pressure > target_pressure)
state = STATE_DEPRESSURIZE
signalPump(tag_airpump, 1, 0, target_pressure) //send a signal to start depressurizing
//Check for vacuum - this is set after the pumps so the pumps are aiming for 0
if(!memory["target_pressure"])
memory["target_pressure"] = ONE_ATMOSPHERE * 0.05
else
//make sure to return to a sane idle state
if(memory["pump_status"] != "off") //send a signal to stop pumping
signalPump(tag_airpump, 0)
//the airlock will not allow itself to continue to cycle when any of the doors are forced open.
if (state && !check_doors_secured())
stop_cycling()
switch(state)
if(STATE_PRESSURIZE)
if(memory["chamber_sensor_pressure"] >= memory["target_pressure"] * 0.95)
@@ -209,22 +222,40 @@
return 1
//these are here so that other types don't have to make so many assuptions about our implementation
/datum/computer/file/embedded_program/proc/post_signal(datum/signal/signal, comm_line)
if(master)
master.post_signal(signal, comm_line)
else
del(signal)
/datum/computer/file/embedded_program/airlock/proc/begin_cycle_in()
state = STATE_WAIT
target_state = TARGET_INOPEN
/datum/computer/file/embedded_program/airlock/proc/begin_cycle_out()
state = STATE_WAIT
target_state = TARGET_OUTOPEN
/datum/computer/file/embedded_program/proc/signalDoor(var/tag, var/command)
/datum/computer/file/embedded_program/airlock/proc/close_doors()
toggleDoor(memory["interior_status"], tag_interior_door, 1, "close")
toggleDoor(memory["exterior_status"], tag_exterior_door, 1, "close")
/datum/computer/file/embedded_program/airlock/proc/stop_cycling()
state = STATE_WAIT
target_state = TARGET_NONE
/datum/computer/file/embedded_program/airlock/proc/done_cycling()
return (state == STATE_WAIT && target_state == TARGET_NONE)
//are the doors closed and locked?
/datum/computer/file/embedded_program/airlock/proc/check_doors_secured()
var/ext_closed = (memory["exterior_status"]["state"] == "closed" && memory["exterior_status"]["lock"] == "locked")
var/int_closed = (memory["interior_status"]["state"] == "closed" && memory["interior_status"]["lock"] == "locked")
return (ext_closed && int_closed)
/datum/computer/file/embedded_program/airlock/proc/signalDoor(var/tag, var/command)
var/datum/signal/signal = new
signal.data["tag"] = tag
signal.data["command"] = command
post_signal(signal)
/datum/computer/file/embedded_program/proc/signalPump(var/tag, var/power, var/direction, var/pressure)
/datum/computer/file/embedded_program/airlock/proc/signalPump(var/tag, var/power, var/direction, var/pressure)
var/datum/signal/signal = new
signal.data = list(
"tag" = tag,
@@ -235,8 +266,8 @@
)
post_signal(signal)
/datum/computer/file/embedded_program/proc/cycleDoors(var/target)
//this is called to set the appropriate door state at the end of a cycling process, or for the exterior buttons
/datum/computer/file/embedded_program/airlock/proc/cycleDoors(var/target)
switch(target)
if(TARGET_OUTOPEN)
toggleDoor(memory["interior_status"], tag_interior_door, memory["secure"], "close")
@@ -265,7 +296,7 @@ Only sends a command if it is needed, i.e. if the door is
already open, passing an open command to this proc will not
send an additional command to open the door again.
----------------------------------------------------------*/
/datum/computer/file/embedded_program/proc/toggleDoor(var/list/doorStatus, var/doorTag, var/secure, var/command)
/datum/computer/file/embedded_program/airlock/proc/toggleDoor(var/list/doorStatus, var/doorTag, var/secure, var/command)
var/doorCommand = null
if(command == "toggle")
@@ -0,0 +1,212 @@
#define STATE_UNDOCKED 0
#define STATE_DOCKING 1
#define STATE_UNDOCKING 2
#define STATE_DOCKED 3
#define MODE_NONE 0
#define MODE_SERVER 1
#define MODE_CLIENT 2 //The one who initiated the docking, and who can initiate the undocking. The server cannot initiate undocking. (Think server == station, client == shuttle)
/*
*** STATE TABLE ***
MODE_CLIENT|STATE_UNDOCKED sent a request for docking and now waiting for a reply.
MODE_CLIENT|STATE_DOCKING server told us they are OK to dock, waiting for our docking port to be ready.
MODE_CLIENT|STATE_DOCKED idle - docked as client.
MODE_CLIENT|STATE_UNDOCKING we are either waiting for our docking port to be ready or for the server to give us the OK to undock.
MODE_SERVER|STATE_UNDOCKED should never happen.
MODE_SERVER|STATE_DOCKING someone requested docking, we are waiting for our docking port to be ready.
MODE_SERVER|STATE_DOCKED idle - docked as server
MODE_SERVER|STATE_UNDOCKING client requested undocking, we are waiting for our docking port to be ready.
MODE_NONE|STATE_UNDOCKED idle - not docked.
MODE_NONE|anything else should never happen.
*/
/datum/computer/file/embedded_program/docking
var/tag_target //the tag of the docking controller that we are trying to dock with
var/dock_state = STATE_UNDOCKED
var/control_mode = MODE_NONE
var/response_sent = 0 //so we don't spam confirmation messages
var/override_enabled = 0 //skips checks for the docking port being ready
/datum/computer/file/embedded_program/docking/receive_signal(datum/signal/signal, receive_method, receive_param)
var/receive_tag = signal.data["tag"] //for docking signals, this is the sender id
var/command = signal.data["command"]
var/recipient = signal.data["recipient"] //the intended recipient of the docking signal
if (recipient != id_tag)
return //this signal is not for us
switch (command)
if ("confirm_dock")
if (control_mode == MODE_CLIENT && dock_state == STATE_UNDOCKED && receive_tag == tag_target)
dock_state = STATE_DOCKING
if (!override_enabled)
prepare_for_docking()
else if (control_mode == MODE_SERVER && dock_state == STATE_DOCKING && receive_tag == tag_target) //client just sent us the confirmation back, we're done with the docking process
dock_state = STATE_DOCKED
if (!override_enabled)
finish_docking() //server done docking!
response_sent = 0
else
send_docking_command(tag_target, "abort_dock") //not expecting confirmation for anything - tell the other guy.
if ("request_dock")
if (control_mode == MODE_NONE && dock_state == STATE_UNDOCKED)
control_mode = MODE_SERVER
dock_state = STATE_DOCKING
tag_target = receive_tag
if (!override_enabled)
prepare_for_docking()
if ("confirm_undock")
if (control_mode == MODE_CLIENT && dock_state == STATE_UNDOCKING && receive_tag == tag_target)
send_docking_command(tag_target, "confirm_undock")
reset() //client is done undocking!
if ("request_undock")
if (control_mode == MODE_SERVER && dock_state == STATE_DOCKED && receive_tag == tag_target)
dock_state = STATE_UNDOCKING
prepare_for_undocking()
if ("dock_error")
if (receive_tag == tag_target)
reset()
/datum/computer/file/embedded_program/docking/process()
switch(dock_state)
if (STATE_DOCKING) //waiting for our docking port to be ready for docking
if (ready_for_docking() || override_enabled)
if (!response_sent)
send_docking_command(tag_target, "confirm_dock") //tell the other guy we're ready
response_sent = 1
if (control_mode == MODE_CLIENT) //client doesn't need to do anything further
dock_state = STATE_DOCKED
if (!override_enabled)
finish_docking() //client done docking!
response_sent = 0
if (STATE_UNDOCKING)
if (ready_for_undocking() || override_enabled)
if (control_mode == MODE_CLIENT)
if (!response_sent)
send_docking_command(tag_target, "request_undock") //tell the server we want to undock now.
response_sent = 1
else if (control_mode == MODE_SERVER)
send_docking_command(tag_target, "confirm_undock") //tell the client we are OK to undock.
reset() //server is done undocking!
if (dock_state != STATE_DOCKING && dock_state != STATE_UNDOCKING)
response_sent = 0
//handle invalid states
if (control_mode == MODE_NONE && dock_state != STATE_UNDOCKED)
if (tag_target)
send_docking_command(tag_target, "dock_error")
reset()
if (control_mode == MODE_SERVER && dock_state == STATE_UNDOCKED)
control_mode = MODE_NONE
/datum/computer/file/embedded_program/docking/proc/initiate_docking(var/target)
if (dock_state != STATE_UNDOCKED || control_mode == MODE_SERVER) //must be undocked and not serving another request to begin a new docking handshake
return
tag_target = target
control_mode = MODE_CLIENT
send_docking_command(tag_target, "request_dock")
/datum/computer/file/embedded_program/docking/proc/initiate_undocking()
if (dock_state != STATE_DOCKED || control_mode != MODE_CLIENT) //must be docked and must be client to start undocking
return
dock_state = STATE_UNDOCKING
prepare_for_undocking()
send_docking_command(tag_target, "request_undock")
//tell the docking port to start getting ready for docking - e.g. pressurize
/datum/computer/file/embedded_program/docking/proc/prepare_for_docking()
return
//are we ready for docking?
/datum/computer/file/embedded_program/docking/proc/ready_for_docking()
return 1
//we are docked, open the doors or whatever.
/datum/computer/file/embedded_program/docking/proc/finish_docking()
return
//tell the docking port to start getting ready for undocking - e.g. close those doors.
/datum/computer/file/embedded_program/docking/proc/prepare_for_undocking()
return
//are we ready for undocking?
/datum/computer/file/embedded_program/docking/proc/ready_for_undocking()
return 1
/datum/computer/file/embedded_program/docking/proc/enable_override()
override_enabled = 1
//if (tag_target)
// send_docking_command(tag_target, "enable_override")
/datum/computer/file/embedded_program/docking/proc/disable_override()
override_enabled = 0
//if (tag_target)
// send_docking_command(tag_target, "disable_override")
/datum/computer/file/embedded_program/docking/proc/reset()
dock_state = STATE_UNDOCKED
control_mode = MODE_NONE
tag_target = null
response_sent = 0
/datum/computer/file/embedded_program/docking/proc/force_undock()
if (tag_target)
send_docking_command(tag_target, "dock_error")
reset()
/datum/computer/file/embedded_program/docking/proc/docked()
return (dock_state == STATE_DOCKED)
/datum/computer/file/embedded_program/docking/proc/undocked()
return (dock_state == STATE_UNDOCKED)
//returns 1 if we are saftely undocked (and the shuttle can leave)
/datum/computer/file/embedded_program/docking/proc/can_launch()
return undocked()
/datum/computer/file/embedded_program/docking/proc/send_docking_command(var/recipient, var/command)
var/datum/signal/signal = new
signal.data["tag"] = id_tag
signal.data["command"] = command
signal.data["recipient"] = recipient
post_signal(signal)
//this is mostly for NanoUI
/datum/computer/file/embedded_program/docking/proc/get_docking_status()
switch (dock_state)
if (STATE_UNDOCKED) return "undocked"
if (STATE_DOCKING) return "docking"
if (STATE_UNDOCKING) return "undocking"
if (STATE_DOCKED) return "docked"
#undef STATE_UNDOCKED
#undef STATE_DOCKING
#undef STATE_UNDOCKING
#undef STATE_DOCKED
#undef MODE_NONE
#undef MODE_SERVER
#undef MODE_CLIENT
@@ -41,16 +41,8 @@
icon_state = "airlock_control_standby"
power_channel = ENVIRON
density = 0
// Setup parameters only
var/id_tag
var/tag_exterior_door
var/tag_interior_door
var/tag_airpump
var/tag_chamber_sensor
var/tag_exterior_sensor
var/tag_interior_sensor
var/tag_secure = 0
var/frequency = 1379
var/datum/radio_frequency/radio_connection
@@ -58,23 +50,6 @@
/obj/machinery/embedded_controller/radio/initialize()
set_frequency(frequency)
var/datum/computer/file/embedded_program/new_prog = new
new_prog.id_tag = id_tag
new_prog.tag_exterior_door = tag_exterior_door
new_prog.tag_interior_door = tag_interior_door
new_prog.tag_airpump = tag_airpump
new_prog.tag_chamber_sensor = tag_chamber_sensor
new_prog.tag_exterior_sensor = tag_exterior_sensor
new_prog.tag_interior_sensor = tag_interior_sensor
new_prog.memory["secure"] = tag_secure
new_prog.master = src
program = new_prog
spawn(10)
program.signalDoor(tag_exterior_door, "update") //signals connected doors to update their status
program.signalDoor(tag_interior_door, "update")
/obj/machinery/embedded_controller/radio/update_icon()
if(on && program)
@@ -0,0 +1,27 @@
/datum/computer/file/embedded_program
var/list/memory = list()
var/obj/machinery/embedded_controller/master
var/id_tag
/datum/computer/file/embedded_program/New(var/obj/machinery/embedded_controller/M)
master = M
if (istype(M, /obj/machinery/embedded_controller/radio))
var/obj/machinery/embedded_controller/radio/R = M
id_tag = R.id_tag
/datum/computer/file/embedded_program/proc/receive_user_command(command)
return
/datum/computer/file/embedded_program/proc/receive_signal(datum/signal/signal, receive_method, receive_param)
return
/datum/computer/file/embedded_program/proc/process()
return
/datum/computer/file/embedded_program/proc/post_signal(datum/signal/signal, comm_line)
if(master)
master.post_signal(signal, comm_line)
else
del(signal)
@@ -0,0 +1,160 @@
//a docking port that uses a single door
/obj/machinery/embedded_controller/radio/simple_docking_controller
name = "docking hatch controller"
var/tag_door
var/datum/computer/file/embedded_program/docking/simple/docking_program
/obj/machinery/embedded_controller/radio/simple_docking_controller/initialize()
..()
docking_program = new/datum/computer/file/embedded_program/docking/simple(src)
program = docking_program
/obj/machinery/embedded_controller/radio/simple_docking_controller/ui_interact(mob/user, ui_key = "main", var/datum/nanoui/ui = null)
var/data[0]
data = list(
"docking_status" = docking_program.get_docking_status(),
"override_enabled" = docking_program.override_enabled,
)
ui = nanomanager.try_update_ui(user, src, ui_key, ui, data)
if (!ui)
ui = new(user, src, ui_key, "simple_docking_console.tmpl", name, 470, 290)
ui.set_initial_data(data)
ui.open()
ui.set_auto_update(1)
/obj/machinery/embedded_controller/radio/simple_docking_controller/Topic(href, href_list)
if(..())
return
usr.set_machine(src)
src.add_fingerprint(usr)
var/clean = 0
switch(href_list["command"]) //anti-HTML-hacking checks
if("force_door")
clean = 1
if("toggle_override")
clean = 1
if(clean)
program.receive_user_command(href_list["command"])
return 1
//A docking controller program for a simple door based docking port
/datum/computer/file/embedded_program/docking/simple
var/tag_door
/datum/computer/file/embedded_program/docking/simple/New(var/obj/machinery/embedded_controller/M)
..(M)
memory["door_status"] = list(state = "closed", lock = "locked") //assume closed and locked in case the doors dont report in
memory["door_status"] = list(state = "closed", lock = "locked")
if (istype(M, /obj/machinery/embedded_controller/radio/simple_docking_controller))
var/obj/machinery/embedded_controller/radio/simple_docking_controller/controller = M
tag_door = controller.tag_door
spawn(10)
signal_door("update") //signals connected doors to update their status
/datum/computer/file/embedded_program/docking/simple/receive_signal(datum/signal/signal, receive_method, receive_param)
var/receive_tag = signal.data["tag"]
if(!receive_tag) return
if(receive_tag==tag_door)
memory["door_status"]["state"] = signal.data["door_status"]
memory["door_status"]["lock"] = signal.data["lock_status"]
..(signal, receive_method, receive_param)
/datum/computer/file/embedded_program/docking/simple/receive_user_command(command)
switch(command)
if("force_door")
if (override_enabled)
if(memory["door_status"]["state"] == "open")
close_door()
else
open_door()
if("toggle_override")
if (override_enabled)
disable_override()
else
enable_override()
/datum/computer/file/embedded_program/docking/simple/proc/signal_door(var/command)
var/datum/signal/signal = new
signal.data["tag"] = tag_door
signal.data["command"] = command
post_signal(signal)
/datum/computer/file/embedded_program/docking/simple/proc/open_door()
if(memory["door_status"]["state"] == "closed")
signal_door("secure_open")
else if(memory["door_status"]["lock"] == "unlocked")
signal_door("lock")
/datum/computer/file/embedded_program/docking/simple/proc/close_door()
if(memory["door_status"]["state"] == "open")
signal_door("secure_close")
else if(memory["door_status"]["lock"] == "unlocked")
signal_door("lock")
//tell the docking port to start getting ready for docking - e.g. pressurize
/datum/computer/file/embedded_program/docking/simple/prepare_for_docking()
return //don't need to do anything
//are we ready for docking?
/datum/computer/file/embedded_program/docking/simple/ready_for_docking()
return 1 //don't need to do anything
//we are docked, open the doors or whatever.
/datum/computer/file/embedded_program/docking/simple/finish_docking()
open_door()
//tell the docking port to start getting ready for undocking - e.g. close those doors.
/datum/computer/file/embedded_program/docking/simple/prepare_for_undocking()
close_door()
//are we ready for undocking?
/datum/computer/file/embedded_program/docking/simple/ready_for_undocking()
return (memory["door_status"]["state"] == "closed" && memory["door_status"]["lock"] == "locked")
/datum/computer/file/embedded_program/docking/simple/reset()
close_door()
..()
/*** DEBUG VERBS ***
/obj/machinery/embedded_controller/radio/simple_docking_controller/verb/view_state()
set category = "Debug"
set src in view(1)
src.program:print_state()
/obj/machinery/embedded_controller/radio/simple_docking_controller/verb/spoof_signal(var/command as text, var/sender as text)
set category = "Debug"
set src in view(1)
var/datum/signal/signal = new
signal.data["tag"] = sender
signal.data["command"] = command
signal.data["recipient"] = id_tag
src.program:receive_signal(signal)
/obj/machinery/embedded_controller/radio/simple_docking_controller/verb/debug_init_dock(var/target as text)
set category = "Debug"
set src in view(1)
src.program:initiate_docking(target)
/obj/machinery/embedded_controller/radio/simple_docking_controller/verb/debug_init_undock()
set category = "Debug"
set src in view(1)
src.program:initiate_undocking()
*/
+4 -2
View File
@@ -169,7 +169,8 @@ var/list/mechtoys = list(
eta = round(ticksleft/600,1)
else
eta = 0
shuttles.move_shuttle("Supply")
var/datum/shuttle/S = shuttles["Supply"]
if (istype(S)) S.move()
moving = 0
at_station = !at_station
@@ -502,7 +503,8 @@ var/list/mechtoys = list(
supply_shuttle.moving = 0
supply_shuttle.at_station = !supply_shuttle.at_station
shuttles.move_shuttle("Supply")
var/datum/shuttle/S = shuttles["Supply"]
if (istype(S)) S.move()
temp = "The supply shuttle has departed.<BR><BR><A href='?src=\ref[src];mainmenu=1'>OK</A>"
else
+8 -6
View File
@@ -1923,17 +1923,19 @@
if("moveshuttle")
if(!shuttles) return // Something is very wrong, the shuttle controller has not been created.
if(!shuttles) return // Something is very wrong, the global shuttle list has not been created.
feedback_inc("admin_secrets_fun_used",1)
feedback_add_details("admin_secrets_fun_used","ShA")
var/shuttle_tag = input("Which shuttle do you want to call?") as null|anything in shuttles.locations
var/shuttle_tag = input("Which shuttle do you want to call?") as null|anything in shuttles
if(shuttle_tag && !shuttles.moving[shuttle_tag])
shuttles.move_shuttle(shuttle_tag)
message_admins("\blue [key_name_admin(usr)] moved the [shuttle_tag] shuttle", 1)
log_admin("[key_name(usr)] moved the [shuttle_tag] shuttle")
if(shuttle_tag)
var/datum/shuttle/S = shuttles[shuttle_tag]
if(istype(S) && S.moving_status == 0)
S.move()
message_admins("\blue [key_name_admin(usr)] moved the [shuttle_tag] shuttle", 1)
log_admin("[key_name(usr)] moved the [shuttle_tag] shuttle")
if("togglebombcap")
feedback_inc("admin_secrets_fun_used",1)
+222 -199
View File
@@ -1,69 +1,209 @@
//These lists are populated in /datum/shuttle_controller/New()
//Shuttle controller is instantiated in master_controller.dm.
var/global/datum/shuttle_controller/shuttles
#define SHUTTLE_IDLE 0
#define SHUTTLE_WARMUP 1
#define SHUTTLE_INTRANSIT 2
/datum/shuttle_controller //This isn't really a controller...
var/list/locations = list()
var/list/delays = list()
var/list/moving = list()
var/list/areas_offsite = list()
var/list/areas_station = list()
var/global/list/shuttles
//Shuttles with multiple destinations don't quite behave in the same way as ferries.
var/list/multi_shuttles = list()
/datum/shuttle
var/location = 0 //0 = at area_station, 1 = at area_offsite
var/warmup_time = 0
var/moving_status = SHUTTLE_IDLE //prevents people from doing things they shouldn't when the shuttle is in transit
var/in_use = 0 //this mutex ensures that only one console can be doing things with the shuttle at a time.
var/area_station
var/area_offsite
var/docking_controller_tag //tag of the controller used to coordinate docking
var/datum/computer/file/embedded_program/docking/docking_controller //the controller itself
//TODO: change location to a string and use a mapping for area and dock targets.
var/dock_target_station
var/dock_target_offsite
/datum/shuttle_controller/New()
/datum/shuttle/proc/short_jump(var/datum/shuttle/shuttle,var/area/origin,var/area/destination)
if(moving_status != SHUTTLE_IDLE) return
..()
moving_status = SHUTTLE_WARMUP
spawn(warmup_time*10)
if (moving_status == SHUTTLE_IDLE)
return //someone cancelled the launch
move(origin, destination)
moving_status = SHUTTLE_IDLE
/datum/shuttle/proc/long_jump(var/shuttle_tag,var/area/departing,var/area/destination,var/area/interim,var/travel_time)
if(moving_status != SHUTTLE_IDLE) return
moving_status = SHUTTLE_WARMUP
spawn(warmup_time*10)
if (moving_status == SHUTTLE_IDLE)
return //someone cancelled the launch
move(locate(departing),locate(interim))
sleep(travel_time)
move(locate(interim),locate(destination))
moving_status = SHUTTLE_IDLE
/datum/shuttle/proc/dock()
if (!docking_controller)
return
var/dock_target = current_dock_target()
if (!dock_target)
return
docking_controller.initiate_docking(dock_target)
/datum/shuttle/proc/undock()
if (!docking_controller)
return
docking_controller.initiate_undocking()
/datum/shuttle/proc/current_dock_target()
var/dock_target
if (!location) //station
dock_target = dock_target_station
else
dock_target = dock_target_offsite
return dock_target
//just moves the shuttle from A to B, if it can be moved
/datum/shuttle/proc/move(var/area/origin,var/area/destination)
//world << "move_shuttle() called for [shuttle_tag] leaving [origin] en route to [destination]."
if(isnull(location))
return
var/area/area_going_to
if(destination)
//world << "Using supplied destination [destination]."
area_going_to = destination
else
//world << "Using controller value [(cur_location[shuttle_tag] == 1 ? areas_station[shuttle_tag] : areas_offsite[shuttle_tag])]."
area_going_to = (location == 1 ? area_station : area_offsite)
var/area/area_coming_from
if(origin)
//world << "Using supplied origin [origin]."
area_coming_from = origin
else
//world << "Using controller value [(cur_location[shuttle_tag] == 1 ? areas_offsite[shuttle_tag] : areas_station[shuttle_tag])]."
area_coming_from = (location == 1 ? area_offsite : area_station)
//world << "area_coming_from: [area_coming_from]"
//world << "area_going_to: [area_going_to]"
if(area_coming_from == area_going_to)
//world << "cancelling move, shuttle will overlap."
return
moving_status = SHUTTLE_INTRANSIT
var/list/dstturfs = list()
var/throwy = world.maxy
for(var/turf/T in area_going_to)
dstturfs += T
if(T.y < throwy)
throwy = T.y
for(var/turf/T in dstturfs)
var/turf/D = locate(T.x, throwy - 1, 1)
for(var/atom/movable/AM as mob|obj in T)
AM.Move(D)
if(istype(T, /turf/simulated))
del(T)
for(var/mob/living/carbon/bug in area_going_to)
bug.gib()
for(var/mob/living/simple_animal/pest in area_going_to)
pest.gib()
area_coming_from.move_contents_to(area_going_to)
location = !location //this needs to change.
for(var/mob/M in area_going_to)
if(M.client)
spawn(0)
if(M.buckled)
M << "\red Sudden acceleration presses you into your chair!"
shake_camera(M, 3, 1)
else
M << "\red The floor lurches beneath you!"
shake_camera(M, 10, 1)
if(istype(M, /mob/living/carbon))
if(!M.buckled)
M.Weaken(3)
return
/proc/setup_shuttles()
shuttles = list()
var/datum/shuttle/shuttle
//Supply and escape shuttles.
locations["Supply"] = 1
delays["Supply"] = 0
moving["Supply"] = 0
areas_offsite["Supply"] = locate(/area/supply/dock)
areas_station["Supply"] = locate(/area/supply/station)
shuttle = new/datum/shuttle()
shuttle.location = 1
shuttle.area_offsite = locate(/area/supply/dock)
shuttle.area_station = locate(/area/supply/station)
shuttles["Supply"] = shuttle
// Admin shuttles.
locations["Centcom"] = 1
delays["Centcom"] = 0
moving["Centcom"] = 0
areas_offsite["Centcom"] = locate(/area/shuttle/transport1/centcom)
areas_station["Centcom"] = locate(/area/shuttle/transport1/station)
shuttle = new/datum/shuttle()
shuttle.location = 1
shuttle.area_offsite = locate(/area/shuttle/transport1/centcom)
shuttle.area_station = locate(/area/shuttle/transport1/station)
shuttles["Centcom"] = shuttle
locations["Administration"] = 1
delays["Administration"] = 0
moving["Administration"] = 0
areas_offsite["Administration"] = locate(/area/shuttle/administration/centcom)
areas_station["Administration"] = locate(/area/shuttle/administration/station)
shuttle = new/datum/shuttle()
shuttle.location = 1
shuttle.area_offsite = locate(/area/shuttle/administration/centcom)
shuttle.area_station = locate(/area/shuttle/administration/station)
shuttles["Administration"] = shuttle
locations["Alien"] = 0
delays["Alien"] = 0
moving["Alien"] = 0
areas_offsite["Alien"] = locate(/area/shuttle/alien/base)
areas_station["Alien"] = locate(/area/shuttle/alien/mine)
shuttle = new/datum/shuttle()
shuttle.area_offsite = locate(/area/shuttle/alien/base)
shuttle.area_station = locate(/area/shuttle/alien/mine)
shuttles["Alien"] = shuttle
// Public shuttles.
locations["Engineering"] = 1
delays["Engineering"] = 10
moving["Engineering"] = 0
areas_offsite["Engineering"] = locate(/area/shuttle/constructionsite/site)
areas_station["Engineering"] = locate(/area/shuttle/constructionsite/station)
// Public shuttles
shuttle = new/datum/shuttle()
shuttle.location = 1
shuttle.warmup_time = 10
shuttle.area_offsite = locate(/area/shuttle/constructionsite/site)
shuttle.area_station = locate(/area/shuttle/constructionsite/station)
shuttles["Engineering"] = shuttle
locations["Mining"] = 0
delays["Mining"] = 10
moving["Mining"] = 0
areas_offsite["Mining"] = locate(/area/shuttle/mining/outpost)
areas_station["Mining"] = locate(/area/shuttle/mining/station)
shuttle = new/datum/shuttle()
shuttle.warmup_time = 10
shuttle.area_offsite = locate(/area/shuttle/mining/outpost)
shuttle.area_station = locate(/area/shuttle/mining/station)
shuttles["Mining"] = shuttle
locations["Research"] = 0
delays["Research"] = 10
moving["Research"] = 0
areas_offsite["Research"] = locate(/area/shuttle/research/outpost)
areas_station["Research"] = locate(/area/shuttle/research/station)
shuttle = new/datum/shuttle()
shuttle.warmup_time = 10
shuttle.area_offsite = locate(/area/shuttle/research/outpost)
shuttle.area_station = locate(/area/shuttle/research/station)
shuttle.docking_controller_tag = "research_shuttle"
shuttle.dock_target_station = "research_dock_airlock"
shuttle.dock_target_offsite = "research_outpost_dock"
shuttles["Research"] = shuttle
//Vox Shuttle.
var/datum/multi_shuttle/VS = new
var/datum/shuttle/multi_shuttle/VS = new/datum/shuttle/multi_shuttle()
VS.origin = /area/shuttle/vox/station
VS.destinations = list(
@@ -79,13 +219,12 @@ var/global/datum/shuttle_controller/shuttles
VS.departure_message = "Your guests are pulling away, Exodus - moving too fast for us to draw a bead on them. Looks like they're heading out of the system at a rapid clip."
VS.interim = /area/vox_station/transit
multi_shuttles["Vox Skipjack"] = VS
locations["Vox Skipjack"] = 1
delays["Vox Skipjack"] = 10
moving["Vox Skipjack"] = 0
VS.location = 1
VS.warmup_time = 10
shuttles["Vox Skipjack"] = VS
//Nuke Ops shuttle.
var/datum/multi_shuttle/MS = new
var/datum/shuttle/multi_shuttle/MS = new/datum/shuttle/multi_shuttle()
MS.origin = /area/syndicate_station/start
MS.destinations = list(
@@ -104,153 +243,37 @@ var/global/datum/shuttle_controller/shuttles
MS.departure_message = "Your visitors are on their way out of the system, Exodus, burning delta-v like it's nothing. Good riddance."
MS.interim = /area/syndicate_station/transit
multi_shuttles["Syndicate"] = MS
locations["Syndicate"] = 1
delays["Syndicate"] = 10
moving["Syndicate"] = 0
/datum/shuttle_controller/proc/move_shuttle(var/shuttle_tag,var/area/origin,var/area/destination)
//world << "move_shuttle() called for [shuttle_tag] leaving [origin] en route to [destination]."
if(!shuttle_tag || isnull(locations[shuttle_tag]))
return
if(moving[shuttle_tag] == 1) return
moving[shuttle_tag] = 1
spawn(delays[shuttle_tag]*10)
var/area/area_going_to
if(destination)
//world << "Using supplied destination [destination]."
area_going_to = destination
else
//world << "Using controller value [(locations[shuttle_tag] == 1 ? areas_station[shuttle_tag] : areas_offsite[shuttle_tag])]."
area_going_to = (locations[shuttle_tag] == 1 ? areas_station[shuttle_tag] : areas_offsite[shuttle_tag])
var/area/area_coming_from
if(origin)
//world << "Using supplied origin [origin]."
area_coming_from = origin
else
//world << "Using controller value [(locations[shuttle_tag] == 1 ? areas_offsite[shuttle_tag] : areas_station[shuttle_tag])]."
area_coming_from = (locations[shuttle_tag] == 1 ? areas_offsite[shuttle_tag] : areas_station[shuttle_tag])
//world << "area_coming_from: [area_coming_from]"
//world << "area_going_to: [area_going_to]"
if(area_coming_from == area_going_to)
//world << "cancelling move, shuttle will overlap."
moving[shuttle_tag] = 0
return
var/list/dstturfs = list()
var/throwy = world.maxy
for(var/turf/T in area_going_to)
dstturfs += T
if(T.y < throwy)
throwy = T.y
for(var/turf/T in dstturfs)
var/turf/D = locate(T.x, throwy - 1, 1)
for(var/atom/movable/AM as mob|obj in T)
AM.Move(D)
if(istype(T, /turf/simulated))
del(T)
for(var/mob/living/carbon/bug in area_going_to)
bug.gib()
for(var/mob/living/simple_animal/pest in area_going_to)
pest.gib()
area_coming_from.move_contents_to(area_going_to)
locations[shuttle_tag] = !locations[shuttle_tag]
for(var/mob/M in area_going_to)
if(M.client)
spawn(0)
if(M.buckled)
M << "\red Sudden acceleration presses you into your chair!"
shake_camera(M, 3, 1)
else
M << "\red The floor lurches beneath you!"
shake_camera(M, 10, 1)
if(istype(M, /mob/living/carbon))
if(!M.buckled)
M.Weaken(3)
moving[shuttle_tag] = 0
return
//This is for shuttles with a timer before arrival such as the vox skipjack and the escape shuttle.
/datum/shuttle_controller/proc/move_shuttle_long(var/shuttle_tag,var/area/departing,var/area/destination,var/area/interim,var/delay)
move_shuttle(shuttle_tag,locate(departing),locate(interim))
spawn(1)
moving[shuttle_tag] = 1 //So they can't jump out by messing with the console.
sleep(delay)
moving[shuttle_tag] = 0
move_shuttle(shuttle_tag,locate(interim),locate(destination))
return
/obj/machinery/computer/shuttle_control
name = "shuttle console"
icon = 'icons/obj/computer.dmi'
icon_state = "shuttle"
req_access = list(access_engine)
circuit = "/obj/item/weapon/circuitboard/engineering_shuttle"
var/shuttle_tag // Used to coordinate data in shuttle controller.
var/hacked = 0 // Has been emagged, no access restrictions.
/obj/machinery/computer/shuttle_control/attack_hand(user as mob)
if(..(user))
return
src.add_fingerprint(user)
var/dat
dat = "<center>[shuttle_tag] Shuttle Control<hr>"
if(shuttles.moving[shuttle_tag])
dat += "Location: <font color='red'>Moving</font> <br>"
else
dat += "Location: [shuttles.locations[shuttle_tag] ? "Offsite" : "Station"] <br>"
dat += "<b><A href='?src=\ref[src];move=[1]'>Send</A></b></center>"
MS.location = 1
MS.warmup_time = 10
shuttles["Syndicate"] = MS
user << browse("[dat]", "window=[shuttle_tag]shuttlecontrol;size=200x150")
/proc/setup_shuttle_docks()
var/datum/shuttle/shuttle
var/list/dock_controller_map = list() //so we only have to iterate once through each list
/obj/machinery/computer/shuttle_control/Topic(href, href_list)
if(..())
return
usr.set_machine(src)
src.add_fingerprint(usr)
for (var/shuttle_tag in shuttles)
shuttle = shuttles[shuttle_tag]
if (shuttle.docking_controller_tag)
dock_controller_map[shuttle.docking_controller_tag] = shuttle
if(href_list["move"])
if (!shuttles.moving[shuttle_tag])
usr << "\blue [shuttle_tag] Shuttle recieved message and will be sent shortly."
shuttles.move_shuttle(shuttle_tag)
else
usr << "\blue [shuttle_tag] Shuttle is already moving."
/obj/machinery/computer/shuttle_control/attackby(obj/item/weapon/W as obj, mob/user as mob)
if (istype(W, /obj/item/weapon/card/emag))
src.req_access = list()
hacked = 1
usr << "You short out the console's ID checking system. It's now available to everyone!"
else
..()
/obj/machinery/computer/shuttle_control/bullet_act(var/obj/item/projectile/Proj)
visible_message("[Proj] ricochets off [src]!")
//search for the controllers, if we have one.
if (dock_controller_map.len)
for (var/obj/machinery/embedded_controller/radio/C in machines) //only radio controllers are supported at the moment
if (istype(C.program, /datum/computer/file/embedded_program/docking) && C.id_tag in dock_controller_map)
shuttle = dock_controller_map[C.id_tag]
shuttle.docking_controller = C.program
dock_controller_map -= C.id_tag
//sanity check
if (dock_controller_map.len)
var/dat = ""
for (var/dock_tag in dock_controller_map)
dat += "\"[dock_tag]\", "
world << "/red /b warning: shuttles with docking tags [dat] could not find their controllers!"
//makes all shuttles docked to something at round start go into the docked state
for (var/shuttle_tag in shuttles)
shuttle = shuttles[shuttle_tag]
shuttle.dock()
+209
View File
@@ -0,0 +1,209 @@
#define IDLE_STATE 0
#define WAIT_LAUNCH 1
#define WAIT_ARRIVE 2
#define WAIT_FINISH 3
/*
I dont really like how much this manipulates shuttle it's docking controller, as it makes this code
depend a lot on their current implementation, and also having var/datum/shuttle/shuttle = shuttles[shuttle_tag]
everywhere is kind of messy. I'm probably going to end up creating a subtype of shuttle called ferry_shuttle
and move a lot of this into there when I get the time.
*/
/obj/machinery/computer/shuttle_control
name = "shuttle control console"
icon = 'icons/obj/computer.dmi'
icon_state = "shuttle"
req_access = list(access_engine)
circuit = "/obj/item/weapon/circuitboard/engineering_shuttle"
var/shuttle_tag // Used to coordinate data in shuttle controller.
var/hacked = 0 // Has been emagged, no access restrictions.
var/process_state = IDLE_STATE
/obj/machinery/computer/shuttle_control/proc/launch_shuttle()
if (!can_launch()) return
var/datum/shuttle/shuttle = shuttles[shuttle_tag]
shuttle.in_use = 1 //obtain an exclusive lock on the shuttle
process_state = WAIT_LAUNCH
shuttle.undock()
/obj/machinery/computer/shuttle_control/proc/cancel_launch()
if (!can_cancel()) return
var/datum/shuttle/shuttle = shuttles[shuttle_tag]
shuttle.moving_status = SHUTTLE_IDLE
process_state = WAIT_FINISH
if (shuttle.docking_controller && !shuttle.docking_controller.undocked())
shuttle.docking_controller.force_undock()
shuttle.dock()
shuttle.in_use = 0
return
/obj/machinery/computer/shuttle_control/proc/toggle_override()
if (!can_override()) return
var/datum/shuttle/shuttle = shuttles[shuttle_tag]
if (shuttle.docking_controller.override_enabled)
shuttle.docking_controller.disable_override()
else
shuttle.docking_controller.enable_override()
/obj/machinery/computer/shuttle_control/proc/can_launch()
var/datum/shuttle/shuttle = shuttles[shuttle_tag]
if (shuttle.moving_status != SHUTTLE_IDLE)
return 0
if (shuttle.in_use && !skip_checks())
return 0
return 1
/obj/machinery/computer/shuttle_control/proc/can_cancel()
var/datum/shuttle/shuttle = shuttles[shuttle_tag]
if (shuttle.moving_status == SHUTTLE_WARMUP || process_state == WAIT_LAUNCH)
return 1
return 0
/obj/machinery/computer/shuttle_control/proc/can_override()
var/datum/shuttle/shuttle = shuttles[shuttle_tag]
if (shuttle.docking_controller && (!shuttle.docking_controller.override_enabled || !shuttle.in_use))
return 1
return 0
//TODO move this stuff into the shuttle datum itself, instead of manipulating the shuttle's members
/obj/machinery/computer/shuttle_control/process()
if (!shuttles || !(shuttle_tag in shuttles))
return
var/datum/shuttle/shuttle = shuttles[shuttle_tag]
switch(process_state)
if (WAIT_LAUNCH)
if (skip_checks() || shuttle.docking_controller.can_launch())
shuttle.short_jump()
if (shuttle.docking_controller && !shuttle.docking_controller.undocked())
shuttle.docking_controller.force_undock()
process_state = WAIT_ARRIVE
if (WAIT_ARRIVE)
if (shuttle.moving_status == SHUTTLE_IDLE)
shuttle.dock()
process_state = WAIT_FINISH
if (WAIT_FINISH)
if (skip_checks() || shuttle.docking_controller.docked())
process_state = IDLE_STATE
shuttle.in_use = 0 //release lock
/obj/machinery/computer/shuttle_control/proc/skip_checks()
var/datum/shuttle/shuttle = shuttles[shuttle_tag]
if (!shuttle.docking_controller || !shuttle.current_dock_target())
return 1 //shuttles without docking controllers or at locations without docking ports act like old-style shuttles
return shuttle.docking_controller.override_enabled //override pretty much lets you do whatever you want
/obj/machinery/computer/shuttle_control/Del()
var/datum/shuttle/shuttle = shuttles[shuttle_tag]
if (process_state != IDLE_STATE)
shuttle.in_use = 0 //shuttle may not dock properly if this gets deleted while in transit, but its not a big deal
/obj/machinery/computer/shuttle_control/attack_hand(user as mob)
if(..(user))
return
//src.add_fingerprint(user) //shouldn't need fingerprints just for looking at it.
ui_interact(user)
/obj/machinery/computer/shuttle_control/ui_interact(mob/user, ui_key = "main", var/datum/nanoui/ui = null)
var/data[0]
var/datum/shuttle/shuttle = shuttles[shuttle_tag]
var/shuttle_state
switch(shuttle.moving_status)
if(SHUTTLE_IDLE) shuttle_state = "idle"
if(SHUTTLE_WARMUP) shuttle_state = "warmup"
if(SHUTTLE_INTRANSIT) shuttle_state = "in_transit"
var/shuttle_status
switch (process_state)
if(IDLE_STATE)
if (shuttle.in_use)
shuttle_status = "Busy."
else if (!shuttle.location)
shuttle_status = "Standing-by at station."
else
shuttle_status = "Standing-by at offsite location."
if(WAIT_LAUNCH)
shuttle_status = "Shuttle has recieved command and will depart shortly."
if(WAIT_ARRIVE)
shuttle_status = "Proceeding to destination."
if(WAIT_FINISH)
shuttle_status = "Arriving at destination now."
data = list(
"shuttle_status" = shuttle_status,
"shuttle_state" = shuttle_state,
"has_docking" = shuttle.docking_controller? 1 : 0,
"docking_status" = shuttle.docking_controller? shuttle.docking_controller.get_docking_status() : null,
"override_enabled" = shuttle.docking_controller? shuttle.docking_controller.override_enabled : null,
"can_launch" = can_launch(),
"can_cancel" = can_cancel(),
"can_override" = can_override(),
)
ui = nanomanager.try_update_ui(user, src, ui_key, ui, data)
if (!ui)
ui = new(user, src, ui_key, "shuttle_control_console.tmpl", "[shuttle_tag] Shuttle Control", 470, 310)
ui.set_initial_data(data)
ui.open()
ui.set_auto_update(1)
//TODO: Canceling launches, dock overrides using the console, forcing dock/undock
/obj/machinery/computer/shuttle_control/Topic(href, href_list)
if(..())
return
usr.set_machine(src)
src.add_fingerprint(usr)
if(href_list["move"])
launch_shuttle()
else if(href_list["cancel"])
cancel_launch()
else if(href_list["override"])
toggle_override()
/obj/machinery/computer/shuttle_control/attackby(obj/item/weapon/W as obj, mob/user as mob)
if (istype(W, /obj/item/weapon/card/emag))
src.req_access = list()
hacked = 1
usr << "You short out the console's ID checking system. It's now available to everyone!"
else
..()
/obj/machinery/computer/shuttle_control/bullet_act(var/obj/item/projectile/Proj)
visible_message("[Proj] ricochets off [src]!")
#undef IDLE_STATE
#undef WAIT_LAUNCH
#undef WAIT_ARRIVE
#undef WAIT_FINISH
+12 -15
View File
@@ -1,5 +1,5 @@
//This is a holder for things like the Vox and Nuke shuttle.
/datum/multi_shuttle
/datum/shuttle/multi_shuttle
var/cloaked = 1
var/at_origin = 1
@@ -17,18 +17,18 @@
var/area/origin
var/return_warning = 0
/datum/multi_shuttle/New()
/datum/shuttle/multi_shuttle/New()
..()
if(origin) last_departed = origin
/datum/multi_shuttle/proc/announce_departure()
/datum/shuttle/multi_shuttle/proc/announce_departure()
if(cloaked || isnull(departure_message))
return
command_alert(departure_message,(announcer ? announcer : "Central Command"))
/datum/multi_shuttle/proc/announce_arrival()
/datum/shuttle/multi_shuttle/proc/announce_arrival()
if(cloaked || isnull(arrival_message))
return
@@ -44,14 +44,14 @@
return
src.add_fingerprint(user)
var/datum/multi_shuttle/MS = shuttles.multi_shuttles[shuttle_tag]
var/datum/shuttle/multi_shuttle/MS = shuttles[shuttle_tag]
if(!istype(MS)) return
var/dat
dat = "<center>[shuttle_tag] Ship Control<hr>"
if(shuttles.moving[shuttle_tag])
if(MS.moving_status != SHUTTLE_IDLE)
dat += "Location: <font color='red'>Moving</font> <br>"
else
var/area/areacheck = get_area(src)
@@ -76,10 +76,10 @@
usr.set_machine(src)
src.add_fingerprint(usr)
var/datum/multi_shuttle/MS = shuttles.multi_shuttles[shuttle_tag]
var/datum/shuttle/multi_shuttle/MS = shuttles[shuttle_tag]
if(!istype(MS)) return
if (shuttles.moving[shuttle_tag])
if (MS.moving_status != SHUTTLE_IDLE)
usr << "\blue [shuttle_tag] vessel is moving."
return
@@ -99,21 +99,17 @@
MS.return_warning = 1
return
shuttles.move_shuttle_long(shuttle_tag,MS.last_departed,MS.origin,MS.interim,MS.move_time)
MS.long_jump(MS.last_departed,MS.origin,MS.interim,MS.move_time)
MS.last_departed = MS.origin
MS.at_origin = 1
if(href_list["toggle_cloak"])
if(!shuttles.multi_shuttles) return
MS.cloaked = !MS.cloaked
usr << "\red Ship stealth systems have been [(MS.cloaked ? "activated. The station will not" : "deactivated. The station will")] be warned of our arrival."
if(href_list["move_multi"])
if(!shuttles.multi_shuttles) return
var/choice = input("Select a destination.") as null|anything in MS.destinations
if(!choice) return
@@ -124,7 +120,8 @@
MS.last_departed = MS.origin
MS.at_origin = 0
shuttles.move_shuttle_long(shuttle_tag,MS.last_departed,MS.destinations[choice],MS.interim,MS.move_time)
MS.long_jump(MS.last_departed,MS.destinations[choice],MS.interim,MS.move_time)
MS.last_departed = MS.destinations[choice]
return
@@ -132,7 +129,7 @@
MS.announce_departure()
shuttles.move_shuttle(shuttle_tag,locate(MS.last_departed),locate(MS.destinations[choice]))
MS.short_jump(locate(MS.last_departed),locate(MS.destinations[choice]))
MS.last_departed = MS.destinations[choice]
updateUsrDialog()
+155 -150
View File
@@ -383,7 +383,7 @@
"ahs" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced{dir = 8},/obj/structure/window/reinforced,/obj/structure/cable{d1 = 1; d2 = 8; icon_state = "1-8"},/obj/machinery/door/firedoor/border_only{dir = 2},/turf/simulated/floor/plating,/area/security/hos)
"aht" = (/obj/machinery/atmospherics/unary/vent_pump{dir = 4; external_pressure_bound = 101; on = 1; pressure_checks = 1},/turf/simulated/floor{icon_state = "red"; dir = 8},/area/security/prison)
"ahu" = (/obj/machinery/access_button{command = "cycle_interior"; frequency = 1379; master_tag = "security_airlock"; name = "interior access button"; pixel_x = 20; pixel_y = 20; req_access_txt = "13"},/obj/machinery/atmospherics/pipe/simple/visible{tag = "icon-intact (NORTHEAST)"; icon_state = "intact"; dir = 5},/turf/simulated/floor/plating,/area/maintenance/fsmaint)
"ahv" = (/obj/machinery/embedded_controller/radio/airlock_controller{tag_airpump = "security_pump"; tag_exterior_door = "security_outer"; frequency = 1379; id_tag = "security_airlock"; tag_interior_door = "security_inner"; pixel_x = 0; pixel_y = 25; req_access_txt = "13"; tag_chamber_sensor = "security_sensor"},/turf/simulated/floor/plating,/area/maintenance/fsmaint)
"ahv" = (/obj/machinery/embedded_controller/radio/airlock/airlock_controller{tag_airpump = "security_pump"; tag_exterior_door = "security_outer"; frequency = 1379; id_tag = "security_airlock"; tag_interior_door = "security_inner"; pixel_x = 0; pixel_y = 25; req_access_txt = "13"; tag_chamber_sensor = "security_sensor"},/turf/simulated/floor/plating,/area/maintenance/fsmaint)
"ahw" = (/obj/structure/table,/obj/item/weapon/folder/red{pixel_y = 3},/obj/item/device/flashlight,/turf/simulated/floor{icon_state = "red"; dir = 1},/area/security/brig)
"ahx" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/turf/simulated/floor{icon_state = "floorgrime"},/area/security/detectives_office)
"ahy" = (/turf/simulated/floor{icon_state = "red"; dir = 1},/area/security/brig)
@@ -875,17 +875,17 @@
"aqQ" = (/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/structure/disposalpipe/segment,/turf/simulated/floor/plating,/area/maintenance/fsmaint)
"aqR" = (/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/atmospherics/pipe/manifold/hidden/supply{dir = 8},/turf/simulated/floor/carpet{icon_state = "carpetnoconnect"},/area/security/hos)
"aqS" = (/obj/structure/table,/obj/item/weapon/dice/d20,/turf/simulated/floor/plating,/area/maintenance/fsmaint)
"aqT" = (/obj/structure/table,/obj/item/weapon/deck,/turf/simulated/floor/plating,/area/maintenance/fsmaint)
"aqT" = (/obj/machinery/navbeacon{codes_txt = "patrol;next_patrol=EVA"; location = "Security"},/turf/simulated/floor,/area/hallway/primary/fore)
"aqU" = (/obj/structure/table,/obj/item/ashtray/plastic,/turf/simulated/floor/plating,/area/maintenance/fsmaint)
"aqV" = (/obj/effect/landmark{name = "blobstart"},/obj/structure/stool,/turf/simulated/floor/plating,/area/maintenance/fsmaint)
"aqW" = (/obj/structure/cable{d1 = 2; d2 = 8; icon_state = "2-8"},/turf/simulated/floor{icon_state = "dark"},/area/security/tactical)
"aqX" = (/obj/machinery/atmospherics/pipe/manifold/hidden/supply{dir = 8},/turf/simulated/floor,/area/security/warden)
"aqY" = (/turf/simulated/floor/plating,/area/maintenance/fpmaint2)
"aqZ" = (/obj/machinery/access_button{command = "cycle_exterior"; frequency = 1379; master_tag = "arrivals_airlock"; name = "exterior access button"; pixel_x = -25; pixel_y = -25; req_access_txt = "13"},/turf/simulated/floor/plating,/area/maintenance/fpmaint2)
"ara" = (/obj/machinery/navbeacon{codes_txt = "patrol;next_patrol=EVA"; location = "Security"},/turf/simulated/floor,/area/hallway/primary/fore)
"ara" = (/obj/structure/table,/obj/item/weapon/deck,/turf/simulated/floor/plating,/area/maintenance/fsmaint)
"arb" = (/turf/simulated/wall,/area/crew_quarters/sleep/sec)
"arc" = (/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; pixel_y = 0},/obj/machinery/door/firedoor/border_only,/obj/machinery/door/airlock/security{name = "Security Wing Dorms"; req_access = null; req_access_txt = "0"},/turf/simulated/floor,/area/crew_quarters/sleep/sec)
"ard" = (/obj/machinery/atmospherics/unary/vent_pump{dir = 1; on = 1},/turf/simulated/floor{icon_state = "floorgrime"},/area/quartermaster/storage)
"ard" = (/obj/structure/table/woodentable,/obj/structure/disposalpipe/segment,/obj/item/weapon/deck,/turf/simulated/floor/wood,/area/library)
"are" = (/turf/simulated/wall,/area/lawoffice)
"arf" = (/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced,/obj/machinery/door/window/brigdoor{dir = 8; name = "Weapons locker"; req_access_txt = "3"},/obj/structure/rack,/obj/item/weapon/storage/box/beanbags,/obj/item/weapon/gun/projectile/shotgun/pump/combat{ammo_type = "/obj/item/ammo_casing/shotgun/beanbag"},/turf/simulated/floor{icon_state = "dark"},/area/security/tactical)
"arg" = (/obj/machinery/door/airlock{name = "Internal Affairs"; req_access_txt = "38"},/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/simulated/floor,/area/lawoffice)
@@ -1163,8 +1163,8 @@
"aws" = (/obj/machinery/alarm{pixel_y = 23},/turf/simulated/floor/plating,/area/maintenance/fpmaint)
"awt" = (/obj/machinery/hydroponics/soil,/obj/machinery/atmospherics/pipe/simple/hidden/supply,/obj/machinery/light{dir = 1},/turf/simulated/floor/grass,/area/hydroponics)
"awu" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/turf/simulated/floor{icon_state = "bot"},/area/hallway/secondary/entry)
"awv" = (/obj/machinery/door/airlock/maintenance{name = "Cargo Bay Warehouse Maintenance"; req_access_txt = "31"},/obj/machinery/atmospherics/pipe/simple/hidden/supply,/turf/simulated/floor/plating,/area/quartermaster/storage)
"aww" = (/obj/structure/disposalpipe/segment{dir = 4},/obj/machinery/atmospherics/pipe/manifold/hidden/supply{dir = 1},/turf/simulated/floor/plating,/area/maintenance/port)
"awv" = (/obj/machinery/light/small{dir = 4},/obj/machinery/computer/security/telescreen/entertainment{pixel_x = 32},/obj/structure/table/woodentable,/obj/item/ashtray/bronze{pixel_x = -1; pixel_y = 1},/obj/item/weapon/deck,/turf/simulated/floor/carpet,/area/crew_quarters/bar)
"aww" = (/obj/structure/table/woodentable,/obj/item/weapon/deck,/turf/simulated/floor{icon_state = "grimy"},/area/hallway/secondary/entry)
"awx" = (/obj/item/device/radio/intercom{dir = 1; name = "Station Intercom (General)"; pixel_y = 20},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/turf/simulated/floor{icon_state = "bot"},/area/hallway/secondary/entry)
"awy" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/obj/machinery/door/firedoor/border_only{dir = 8; name = "Firelock West"},/turf/simulated/floor,/area/hallway/secondary/entry)
"awz" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/turf/simulated/floor,/area/hallway/secondary/entry)
@@ -1214,7 +1214,7 @@
"axr" = (/turf/simulated/wall/r_wall,/area/ai_monitored/storage/eva)
"axs" = (/obj/structure/sign/securearea,/turf/simulated/wall/r_wall,/area/ai_monitored/storage/eva)
"axt" = (/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/turf/simulated/floor,/area/hallway/primary/port)
"axu" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/turf/simulated/floor{icon_state = "redcorner"; dir = 4},/area/hallway/primary/fore)
"axu" = (/obj/machinery/atmospherics/unary/vent_pump{dir = 1; on = 1},/turf/simulated/floor{icon_state = "floorgrime"},/area/quartermaster/storage)
"axv" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply,/obj/structure/disposalpipe/segment,/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/simulated/floor,/area/hallway/primary/port)
"axw" = (/obj/machinery/atmospherics/unary/vent_pump{dir = 1; on = 1},/turf/simulated/floor{dir = 8; icon_state = "bluecorner"},/area/hallway/primary/fore)
"axx" = (/obj/structure/disposalpipe/segment{dir = 1; icon_state = "pipe-c"},/turf/simulated/floor,/area/hallway/primary/fore)
@@ -1266,7 +1266,7 @@
"ayr" = (/turf/simulated/floor{dir = 9; icon_state = "warning"},/area/ai_monitored/storage/eva)
"ays" = (/obj/machinery/light{dir = 4; icon_state = "tube1"},/obj/machinery/atmospherics/unary/vent_pump{dir = 1; external_pressure_bound = 101.325; on = 1; pressure_checks = 1},/turf/simulated/floor/wood,/area/library)
"ayt" = (/obj/structure/cable,/obj/machinery/power/apc{dir = 8; name = "west bump"; pixel_x = -24},/turf/simulated/floor{icon_state = "grimy"},/area/chapel/office)
"ayu" = (/obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers{dir = 8},/turf/simulated/wall,/area/crew_quarters/sleep/sec)
"ayu" = (/obj/machinery/door/airlock/maintenance{name = "Cargo Bay Warehouse Maintenance"; req_access_txt = "31"},/obj/machinery/atmospherics/pipe/simple/hidden/supply,/turf/simulated/floor/plating,/area/quartermaster/storage)
"ayv" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/turf/simulated/floor/wood,/area/library)
"ayw" = (/turf/simulated/floor{dir = 5; icon_state = "warning"},/area/ai_monitored/storage/eva)
"ayx" = (/obj/machinery/door/firedoor/border_only,/obj/machinery/door/airlock/glass_security{name = "Security Hardsuits"; req_access_txt = "1"},/turf/simulated/floor{icon_state = "dark"},/area/ai_monitored/storage/eva)
@@ -1314,7 +1314,7 @@
"azn" = (/obj/machinery/atmospherics/unary/vent_scrubber{dir = 1; on = 1; scrub_N2O = 0; scrub_Toxins = 0},/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_x = 0},/turf/simulated/floor,/area/ai_monitored/storage/eva)
"azo" = (/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_x = 0},/turf/simulated/floor{icon_state = "dark"},/area/ai_monitored/storage/eva)
"azp" = (/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; pixel_y = 0},/obj/structure/cable{d1 = 1; d2 = 8; icon_state = "1-8"},/obj/structure/cable{d1 = 1; d2 = 4; icon_state = "1-4"},/turf/simulated/floor{icon_state = "dark"},/area/ai_monitored/storage/eva)
"azq" = (/obj/item/device/radio/intercom{dir = 4; name = "Station Intercom (General)"; pixel_x = 31},/turf/simulated/floor{icon_state = "redcorner"; dir = 4},/area/hallway/primary/fore)
"azq" = (/obj/machinery/alarm{dir = 4; icon_state = "alarm0"; pixel_x = -22},/turf/simulated/floor{icon_state = "dark"},/area/turret_protected/ai)
"azr" = (/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_x = 0},/obj/structure/table/reinforced,/obj/item/stack/sheet/glass{amount = 50},/obj/item/stack/sheet/glass{amount = 50},/obj/item/stack/sheet/glass{amount = 50},/turf/simulated/floor{dir = 4; icon_state = "warning"},/area/ai_monitored/storage/eva)
"azs" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 8},/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced,/obj/structure/cable{d2 = 8; icon_state = "0-8"},/obj/machinery/door/firedoor/border_only{dir = 2},/turf/simulated/floor/plating,/area/ai_monitored/storage/eva)
"azt" = (/obj/structure/rack,/obj/item/clothing/suit/space/rig/security,/obj/item/clothing/mask/breath,/obj/item/clothing/head/helmet/space/rig/security,/obj/item/clothing/shoes/magboots,/turf/simulated/floor{icon_state = "vault"; dir = 8},/area/ai_monitored/storage/eva)
@@ -1366,10 +1366,10 @@
"aAn" = (/obj/machinery/gateway/centerstation,/turf/simulated/floor{icon_state = "dark"},/area/gateway)
"aAo" = (/obj/machinery/gateway{dir = 4},/turf/simulated/floor{icon_state = "vault"; dir = 8},/area/gateway)
"aAp" = (/obj/machinery/camera{c_tag = "EVA Maintenance"; dir = 8; network = list("SS13")},/obj/machinery/light/small{dir = 4},/turf/simulated/floor/plating,/area/maintenance/fpmaint)
"aAq" = (/obj/structure/extinguisher_cabinet{pixel_x = 27; pixel_y = 0},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/turf/simulated/floor{icon_state = "bluecorner"},/area/hallway/primary/fore)
"aAq" = (/obj/structure/disposalpipe/segment{dir = 4},/obj/machinery/atmospherics/pipe/manifold/hidden/supply{dir = 1},/turf/simulated/floor/plating,/area/maintenance/port)
"aAr" = (/turf/simulated/floor,/area/ai_monitored/storage/eva)
"aAs" = (/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; pixel_y = 0},/turf/simulated/floor{icon_state = "dark"},/area/ai_monitored/storage/eva)
"aAt" = (/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/structure/disposalpipe/segment{dir = 4},/obj/structure/cable{d1 = 2; d2 = 8; icon_state = "2-8"},/obj/machinery/atmospherics/pipe/manifold4w/hidden/supply,/turf/simulated/floor/plating,/area/maintenance/fpmaint)
"aAt" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/turf/simulated/floor{icon_state = "redcorner"; dir = 4},/area/hallway/primary/fore)
"aAu" = (/obj/machinery/light{dir = 4; icon_state = "tube1"},/turf/simulated/floor{icon_state = "bluecorner"},/area/hallway/primary/fore)
"aAv" = (/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/simulated/floor{icon_state = "neutral"; dir = 4},/area/crew_quarters/sleep)
"aAw" = (/obj/machinery/shower{icon_state = "shower"; dir = 4},/turf/simulated/floor{icon_state = "freezerfloor"},/area/crew_quarters/toilet)
@@ -1404,9 +1404,9 @@
"aAZ" = (/obj/machinery/gateway{dir = 6},/turf/simulated/floor{icon_state = "vault"; dir = 1},/area/gateway)
"aBa" = (/obj/structure/rack{dir = 8; layer = 2.9},/obj/item/clothing/shoes/magboots,/obj/item/clothing/suit/space/rig,/obj/item/clothing/mask/breath,/obj/item/clothing/head/helmet/space/rig,/turf/simulated/floor{icon_state = "vault"; dir = 8},/area/ai_monitored/storage/eva)
"aBb" = (/obj/structure/rack{dir = 8; layer = 2.9},/obj/item/clothing/shoes/magboots,/obj/item/clothing/suit/space/rig/atmos,/obj/item/clothing/mask/breath,/obj/item/clothing/head/helmet/space/rig/atmos,/turf/simulated/floor{icon_state = "vault"; dir = 8},/area/ai_monitored/storage/eva)
"aBc" = (/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/structure/disposalpipe/segment{dir = 4},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/turf/simulated/floor/plating,/area/maintenance/fpmaint)
"aBc" = (/obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers{dir = 8},/turf/simulated/wall,/area/crew_quarters/sleep/sec)
"aBd" = (/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_x = 0},/turf/simulated/floor,/area/ai_monitored/storage/eva)
"aBe" = (/obj/structure/cable{d1 = 2; d2 = 4; icon_state = "2-4"},/obj/structure/disposalpipe/segment{dir = 4},/obj/structure/cable{d1 = 2; d2 = 8; icon_state = "2-8"},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/turf/simulated/floor/plating,/area/maintenance/fpmaint)
"aBe" = (/obj/item/device/radio/intercom{dir = 4; name = "Station Intercom (General)"; pixel_x = 31},/turf/simulated/floor{icon_state = "redcorner"; dir = 4},/area/hallway/primary/fore)
"aBf" = (/obj/structure/rack{dir = 8; layer = 2.9},/obj/item/weapon/tank/jetpack/carbondioxide,/obj/item/clothing/shoes/magboots,/turf/simulated/floor{icon_state = "vault"; dir = 8},/area/ai_monitored/storage/eva)
"aBg" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply,/turf/simulated/wall,/area/security/vacantoffice)
"aBh" = (/obj/machinery/power/terminal{dir = 8},/obj/machinery/requests_console{department = "AI"; departmentType = 5; pixel_y = 29},/obj/structure/cable{d2 = 2; icon_state = "0-2"; pixel_y = 0},/turf/simulated/floor/bluegrid,/area/turret_protected/ai)
@@ -1521,7 +1521,7 @@
"aDm" = (/obj/machinery/light{dir = 8},/obj/machinery/door/airlock/glass{name = "Central Access"},/turf/simulated/floor{icon_state = "redcorner"; dir = 1},/area/hallway/primary/fore)
"aDn" = (/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_y = 0},/turf/simulated/floor,/area/security/checkpoint2)
"aDo" = (/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_y = 0},/obj/structure/stool/bed/chair/office/dark,/turf/simulated/floor,/area/security/checkpoint2)
"aDp" = (/obj/structure/disposalpipe/segment{dir = 4; icon_state = "pipe-c"},/obj/structure/cable{d1 = 1; d2 = 4; icon_state = "1-4"},/obj/machinery/atmospherics/pipe/manifold/hidden/supply{dir = 8},/turf/simulated/floor/plating,/area/maintenance/fpmaint)
"aDp" = (/obj/structure/extinguisher_cabinet{pixel_x = 27; pixel_y = 0},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/turf/simulated/floor{icon_state = "bluecorner"},/area/hallway/primary/fore)
"aDq" = (/obj/machinery/requests_console{department = "Security"; departmentType = 5; pixel_y = 30},/obj/machinery/light_switch{pixel_x = 27},/obj/machinery/light{dir = 1},/obj/machinery/atmospherics/unary/vent_pump{on = 1},/turf/simulated/floor{icon_state = "red"; dir = 5},/area/security/checkpoint2)
"aDr" = (/obj/structure/closet/secure_closet/security,/obj/machinery/light{dir = 1},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/turf/simulated/floor{icon_state = "red"; dir = 9},/area/security/checkpoint2)
"aDs" = (/obj/machinery/atmospherics/valve,/turf/simulated/floor/plating,/area/maintenance/fpmaint2)
@@ -1734,7 +1734,7 @@
"aHr" = (/turf/simulated/wall,/area/crew_quarters/sleep)
"aHs" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/turf/simulated/floor{icon_state = "redcorner"; dir = 1},/area/hallway/primary/fore)
"aHt" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/turf/simulated/floor,/area/hallway/primary/fore)
"aHu" = (/obj/machinery/door/firedoor/border_only,/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; pixel_y = 0},/obj/machinery/door/airlock/maintenance{name = "E.V.A. Maintenance"; req_one_access_txt = "1;5;11;18;24"},/obj/machinery/atmospherics/pipe/simple/hidden/supply,/turf/simulated/floor/plating,/area/ai_monitored/storage/eva)
"aHu" = (/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/structure/disposalpipe/segment{dir = 4},/obj/structure/cable{d1 = 2; d2 = 8; icon_state = "2-8"},/obj/machinery/atmospherics/pipe/manifold4w/hidden/supply,/turf/simulated/floor/plating,/area/maintenance/fpmaint)
"aHv" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/turf/simulated/wall,/area/maintenance/fsmaint)
"aHw" = (/obj/structure/disposalpipe/segment,/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/obj/machinery/atmospherics/pipe/simple/hidden/supply,/turf/simulated/floor/plating,/area/maintenance/fsmaint)
"aHx" = (/obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers{dir = 4},/turf/simulated/wall,/area/crew_quarters/sleep/bedrooms)
@@ -1751,8 +1751,8 @@
"aHI" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/turf/simulated/wall,/area/crew_quarters/sleep/sec)
"aHJ" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 9},/turf/simulated/wall,/area/lawoffice)
"aHK" = (/obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers,/turf/simulated/wall,/area/lawoffice)
"aHL" = (/obj/machinery/door/airlock/glass{name = "Central Access"},/turf/simulated/floor{icon_state = "redcorner"; dir = 4},/area/hallway/primary/fore)
"aHM" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 5},/turf/simulated/floor/carpet{icon_state = "carpetnoconnect"},/area/crew_quarters/sleep/sec)
"aHL" = (/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/structure/disposalpipe/segment{dir = 4},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/turf/simulated/floor/plating,/area/maintenance/fpmaint)
"aHM" = (/obj/structure/cable{d1 = 2; d2 = 4; icon_state = "2-4"},/obj/structure/disposalpipe/segment{dir = 4},/obj/structure/cable{d1 = 2; d2 = 8; icon_state = "2-8"},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/turf/simulated/floor/plating,/area/maintenance/fpmaint)
"aHN" = (/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_x = 0},/turf/simulated/floor{icon_state = "neutral"; dir = 8},/area/crew_quarters/sleep)
"aHO" = (/obj/structure/filingcabinet,/turf/simulated/floor/wood,/area/library)
"aHP" = (/turf/simulated/floor/wood,/area/library)
@@ -1772,7 +1772,7 @@
"aId" = (/turf/simulated/shuttle/floor,/turf/simulated/shuttle/wall{icon_state = "swall_f10"; dir = 2},/area/shuttle/arrival/station)
"aIe" = (/obj/machinery/atmospherics/unary/vent_pump{dir = 4; on = 1},/turf/simulated/floor{dir = 8; icon_state = "warning"},/area/hallway/secondary/entry)
"aIf" = (/obj/machinery/door/airlock{id_tag = "Dorm3"; name = "Dorm 3"},/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_x = 0},/turf/simulated/floor/carpet{icon_state = "carpet8-0"},/area/crew_quarters/sleep)
"aIg" = (/obj/machinery/light_switch{pixel_y = 28},/obj/structure/table/woodentable,/obj/item/weapon/book/manual/security_space_law{pixel_x = -3; pixel_y = 5},/obj/machinery/atmospherics/unary/vent_pump{dir = 8; external_pressure_bound = 100; on = 1; pressure_checks = 1},/turf/simulated/floor/wood,/area/crew_quarters/sleep/sec)
"aIg" = (/obj/structure/disposalpipe/segment{dir = 4; icon_state = "pipe-c"},/obj/structure/cable{d1 = 1; d2 = 4; icon_state = "1-4"},/obj/machinery/atmospherics/pipe/manifold/hidden/supply{dir = 8},/turf/simulated/floor/plating,/area/maintenance/fpmaint)
"aIh" = (/obj/machinery/atmospherics/unary/vent_pump{dir = 8; on = 1},/obj/machinery/light/small{dir = 8},/obj/structure/stool/bed,/obj/item/weapon/bedsheet/mime,/turf/simulated/floor/carpet{icon_state = "carpetnoconnect"},/area/crew_quarters/sleep/bedrooms)
"aIi" = (/obj/structure/cable{d1 = 1; d2 = 4; icon_state = "1-4"},/turf/simulated/floor/carpet{icon_state = "carpetnoconnect"},/area/crew_quarters/sleep/bedrooms)
"aIj" = (/obj/structure/disposalpipe/segment,/obj/machinery/atmospherics/pipe/manifold/hidden/supply{dir = 8},/turf/simulated/floor/plating,/area/maintenance/fsmaint)
@@ -1819,7 +1819,7 @@
"aIY" = (/obj/structure/cable{d1 = 1; d2 = 8; icon_state = "1-8"},/obj/structure/disposalpipe/segment{dir = 4},/obj/machinery/atmospherics/pipe/manifold/hidden/supply{dir = 1},/turf/simulated/floor{dir = 8; icon_state = "bluecorner"},/area/hallway/primary/fore)
"aIZ" = (/obj/item/device/radio/intercom{pixel_y = 25},/obj/machinery/camera{c_tag = "Bar North"; dir = 2},/obj/machinery/vending/boozeomat,/turf/simulated/floor{icon_state = "grimy"},/area/crew_quarters/bar)
"aJa" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/obj/structure/disposalpipe/segment{dir = 2; icon_state = "pipe-c"},/turf/simulated/floor,/area/hallway/primary/fore)
"aJb" = (/obj/structure/stool,/turf/simulated/floor/wood,/area/crew_quarters/sleep/sec)
"aJb" = (/obj/machinery/door/firedoor/border_only,/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; pixel_y = 0},/obj/machinery/door/airlock/maintenance{name = "E.V.A. Maintenance"; req_one_access_txt = "1;5;11;18;24"},/obj/machinery/atmospherics/pipe/simple/hidden/supply,/turf/simulated/floor/plating,/area/ai_monitored/storage/eva)
"aJc" = (/obj/machinery/door/airlock/maintenance{name = "Bar Maintenance"; req_access_txt = "0"; req_one_access_txt = "12;25;28"},/obj/structure/disposalpipe/segment,/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/simulated/floor/plating,/area/crew_quarters/bar)
"aJd" = (/turf/simulated/wall,/area/crew_quarters/kitchen)
"aJe" = (/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/obj/structure/disposalpipe/segment{dir = 4},/turf/simulated/floor/plating,/area/maintenance/fpmaint)
@@ -1830,20 +1830,20 @@
"aJj" = (/turf/simulated/wall,/area/hydroponics)
"aJk" = (/obj/machinery/navbeacon{codes_txt = "delivery;dir=2"; freq = 1400; location = "Hydroponics"},/obj/structure/plasticflaps{opacity = 1},/obj/machinery/door/firedoor/border_only{dir = 2},/turf/simulated/floor{icon_state = "bot"; dir = 1},/area/hydroponics)
"aJl" = (/obj/machinery/door/airlock/maintenance{req_access_txt = "12"},/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/obj/structure/disposalpipe/segment{dir = 4},/turf/simulated/floor/plating,/area/maintenance/fpmaint)
"aJm" = (/obj/machinery/door/firedoor/border_only,/turf/simulated/floor{icon_state = "redcorner"; dir = 4},/area/hallway/primary/fore)
"aJn" = (/obj/machinery/status_display{density = 0; layer = 4; pixel_x = 32; pixel_y = 0},/turf/simulated/floor{icon_state = "redcorner"; dir = 4},/area/hallway/primary/fore)
"aJo" = (/obj/structure/cable{d1 = 1; d2 = 8; icon_state = "1-8"},/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; pixel_y = 0},/obj/machinery/atmospherics/pipe/simple/hidden/supply,/turf/simulated/floor{dir = 1; icon_state = "warning"},/area/ai_monitored/storage/eva)
"aJp" = (/obj/machinery/alarm{pixel_y = 23},/turf/simulated/floor{dir = 1; icon_state = "warning"},/area/ai_monitored/storage/eva)
"aJm" = (/obj/machinery/door/airlock/glass{name = "Central Access"},/turf/simulated/floor{icon_state = "redcorner"; dir = 4},/area/hallway/primary/fore)
"aJn" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 5},/turf/simulated/floor/carpet{icon_state = "carpetnoconnect"},/area/crew_quarters/sleep/sec)
"aJo" = (/obj/machinery/light_switch{pixel_y = 28},/obj/structure/table/woodentable,/obj/item/weapon/book/manual/security_space_law{pixel_x = -3; pixel_y = 5},/obj/machinery/atmospherics/unary/vent_pump{dir = 8; external_pressure_bound = 100; on = 1; pressure_checks = 1},/turf/simulated/floor/wood,/area/crew_quarters/sleep/sec)
"aJp" = (/obj/structure/stool,/turf/simulated/floor/wood,/area/crew_quarters/sleep/sec)
"aJq" = (/obj/structure/window/basic{dir = 8},/turf/simulated/floor/beach/water{tag = "icon-seadeep"; icon_state = "seadeep"},/area/crew_quarters/fitness)
"aJr" = (/obj/structure/stool/bed/chair/office/dark{dir = 4},/turf/simulated/floor/wood,/area/library)
"aJs" = (/obj/machinery/alarm{dir = 4; pixel_x = -23; pixel_y = 0},/obj/structure/disposalpipe/segment,/obj/machinery/camera{c_tag = "Fitness Room West"; dir = 4},/turf/simulated/floor{icon_state = "neutral"; dir = 8},/area/crew_quarters/fitness)
"aJt" = (/obj/structure/table/woodentable,/obj/structure/disposalpipe/segment,/obj/item/weapon/deck,/turf/simulated/floor/wood,/area/library)
"aJt" = (/obj/machinery/door/firedoor/border_only,/turf/simulated/floor{icon_state = "redcorner"; dir = 4},/area/hallway/primary/fore)
"aJu" = (/obj/structure/stool/bed/chair/office/dark{dir = 8},/turf/simulated/floor/wood,/area/library)
"aJv" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/turf/simulated/floor,/area/crew_quarters/fitness)
"aJw" = (/obj/machinery/door/firedoor/border_only{dir = 8; name = "Firelock West"},/obj/machinery/door/airlock/glass{name = "Holodeck Door"},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 10},/turf/simulated/floor,/area/crew_quarters/fitness)
"aJx" = (/obj/machinery/door/firedoor/border_only{dir = 8; name = "Firelock West"},/obj/machinery/door/airlock/glass{name = "Holodeck Door"},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 6},/turf/simulated/floor,/area/crew_quarters/fitness)
"aJy" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/obj/machinery/light/small,/turf/simulated/floor,/area/crew_quarters/fitness)
"aJz" = (/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; pixel_y = 0},/obj/structure/cable{d1 = 1; d2 = 8; icon_state = "1-8"},/obj/structure/cable{d1 = 1; d2 = 4; icon_state = "1-4"},/obj/machinery/atmospherics/unary/vent_pump{dir = 1; external_pressure_bound = 101.325; on = 1; pressure_checks = 1},/turf/simulated/floor{icon_state = "dark"},/area/ai_monitored/storage/eva)
"aJz" = (/obj/machinery/status_display{density = 0; layer = 4; pixel_x = 32; pixel_y = 0},/turf/simulated/floor{icon_state = "redcorner"; dir = 4},/area/hallway/primary/fore)
"aJA" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/turf/simulated/wall/r_wall,/area/ai_monitored/storage/eva)
"aJB" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply,/obj/structure/disposalpipe/segment{dir = 8; icon_state = "pipe-c"},/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_x = 0},/turf/simulated/floor/plating,/area/maintenance/fpmaint)
"aJC" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/turf/simulated/floor{icon_state = "red"; dir = 4},/area/crew_quarters/fitness)
@@ -1877,7 +1877,7 @@
"aKe" = (/obj/structure/grille,/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 8},/obj/structure/cable,/obj/structure/cable{d2 = 8; icon_state = "0-8"},/obj/structure/cable{icon_state = "0-4"; d2 = 4},/obj/machinery/door/firedoor/border_only{dir = 2},/turf/simulated/floor/plating,/area/hallway/primary/port)
"aKf" = (/obj/structure/cable{d2 = 8; icon_state = "0-8"},/obj/structure/grille,/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced,/obj/machinery/door/firedoor/border_only{dir = 2},/turf/simulated/floor/plating,/area/hallway/primary/port)
"aKg" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced{dir = 8},/obj/machinery/atmospherics/pipe/simple/visible{tag = "icon-intact (SOUTHWEST)"; icon_state = "intact"; dir = 10},/turf/simulated/floor/plating,/area/maintenance/auxsolarport)
"aKh" = (/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/atmospherics/unary/vent_pump/high_volume{dir = 4; frequency = 1379; id_tag = "solar_tool_pump"},/obj/machinery/airlock_sensor{frequency = 1379; id_tag = "solar_tool_sensor"; pixel_x = 25; pixel_y = 12},/obj/machinery/embedded_controller/radio/airlock_controller{tag_airpump = "solar_tool_pump"; tag_exterior_door = "solar_tool_outer"; frequency = 1379; id_tag = "solar_tool_airlock"; tag_interior_door = "solar_tool_inner"; pixel_x = 25; req_access_txt = "13"; tag_chamber_sensor = "solar_tool_sensor"},/turf/simulated/floor/plating,/area/maintenance/auxsolarport)
"aKh" = (/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/atmospherics/unary/vent_pump/high_volume{dir = 4; frequency = 1379; id_tag = "solar_tool_pump"},/obj/machinery/airlock_sensor{frequency = 1379; id_tag = "solar_tool_sensor"; pixel_x = 25; pixel_y = 12},/obj/machinery/embedded_controller/radio/airlock/airlock_controller{tag_airpump = "solar_tool_pump"; tag_exterior_door = "solar_tool_outer"; frequency = 1379; id_tag = "solar_tool_airlock"; tag_interior_door = "solar_tool_inner"; pixel_x = 25; req_access_txt = "13"; tag_chamber_sensor = "solar_tool_sensor"},/turf/simulated/floor/plating,/area/maintenance/auxsolarport)
"aKi" = (/obj/structure/window/basic{dir = 4},/turf/simulated/floor/beach/water{tag = "icon-seadeep"; icon_state = "seadeep"},/area/crew_quarters/fitness)
"aKj" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced{dir = 1},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 10},/obj/machinery/door/firedoor/border_only{dir = 2},/turf/simulated/floor/plating,/area/crew_quarters/fitness)
"aKk" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 6},/turf/simulated/floor{dir = 10; icon_state = "whitehall"},/area/crew_quarters/fitness)
@@ -1951,7 +1951,7 @@
"aLA" = (/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/simulated/floor,/area/hallway/primary/port)
"aLB" = (/obj/structure/disposalpipe/segment,/turf/simulated/floor,/area/hallway/primary/port)
"aLC" = (/obj/machinery/light{dir = 1},/obj/structure/sign/securearea{desc = "A warning sign which reads 'HIGH VOLTAGE'"; icon_state = "shock"; name = "HIGH VOLTAGE"; pixel_y = 32},/obj/machinery/door/firedoor/border_only{dir = 4; name = "Firelock East"},/turf/simulated/floor{icon_state = "warningcorner"; dir = 8},/area/hallway/primary/port)
"aLD" = (/obj/machinery/requests_console{department = "EVA"; pixel_x = -32; pixel_y = 0},/obj/machinery/light{icon_state = "tube1"; dir = 8},/obj/structure/table/reinforced,/obj/item/weapon/storage/toolbox/mechanical{pixel_x = -2; pixel_y = -1},/obj/item/device/multitool,/obj/machinery/camera/motion{c_tag = "EVA Motion Sensor"; dir = 4},/turf/simulated/floor{dir = 8; icon_state = "warning"},/area/ai_monitored/storage/eva)
"aLD" = (/obj/structure/cable{d1 = 1; d2 = 8; icon_state = "1-8"},/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; pixel_y = 0},/obj/machinery/atmospherics/pipe/simple/hidden/supply,/turf/simulated/floor{dir = 1; icon_state = "warning"},/area/ai_monitored/storage/eva)
"aLE" = (/obj/structure/disposalpipe/segment{dir = 4},/obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers{dir = 8},/turf/simulated/floor/plating,/area/maintenance/fsmaint)
"aLF" = (/turf/simulated/floor{dir = 1; icon_state = "warning"},/area/hallway/primary/port)
"aLG" = (/obj/structure/disposalpipe/segment{dir = 4},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/turf/simulated/floor/plating,/area/maintenance/fsmaint)
@@ -2008,8 +2008,8 @@
"aMF" = (/obj/structure/extinguisher_cabinet{pixel_x = -5; pixel_y = -31},/obj/machinery/light,/turf/simulated/floor{icon_state = "hydrofloor"},/area/hydroponics)
"aMG" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/turf/simulated/floor{icon_state = "green"; dir = 4},/area/crew_quarters/fitness)
"aMH" = (/obj/structure/cable{d1 = 1; d2 = 8; icon_state = "1-8"},/obj/effect/decal/cleanable/blood/oil,/turf/simulated/floor/plating,/area/maintenance/fpmaint)
"aMI" = (/obj/machinery/light{icon_state = "tube1"; dir = 4},/obj/structure/table/reinforced,/obj/item/stack/sheet/rglass{amount = 50},/obj/item/stack/rods{amount = 50},/obj/structure/extinguisher_cabinet{pixel_x = 27; pixel_y = 0},/obj/machinery/camera{c_tag = "EVA East"; dir = 8},/turf/simulated/floor{dir = 4; icon_state = "warning"},/area/ai_monitored/storage/eva)
"aMJ" = (/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_x = 0},/obj/structure/table/reinforced,/obj/item/device/assembly/signaler,/obj/item/device/assembly/signaler,/turf/simulated/floor{dir = 8; icon_state = "warning"},/area/ai_monitored/storage/eva)
"aMI" = (/obj/machinery/alarm{pixel_y = 23},/turf/simulated/floor{dir = 1; icon_state = "warning"},/area/ai_monitored/storage/eva)
"aMJ" = (/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; pixel_y = 0},/obj/structure/cable{d1 = 1; d2 = 8; icon_state = "1-8"},/obj/structure/cable{d1 = 1; d2 = 4; icon_state = "1-4"},/obj/machinery/atmospherics/unary/vent_pump{dir = 1; external_pressure_bound = 101.325; on = 1; pressure_checks = 1},/turf/simulated/floor{icon_state = "dark"},/area/ai_monitored/storage/eva)
"aMK" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/turf/simulated/wall,/area/crew_quarters/sleep/bedrooms)
"aML" = (/obj/structure/disposalpipe/segment,/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 6},/turf/simulated/floor/plating,/area/maintenance/fsmaint)
"aMM" = (/obj/effect/decal/cleanable/blood/gibs/robot,/obj/machinery/space_heater,/turf/simulated/floor/plating,/area/maintenance/fsmaint)
@@ -2025,7 +2025,7 @@
"aMW" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced{dir = 1},/turf/simulated/floor/plating,/area/hallway/secondary/entry)
"aMX" = (/obj/machinery/hologram/holopad,/turf/simulated/floor,/area/hallway/secondary/entry)
"aMY" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced{dir = 8},/obj/machinery/door/firedoor/border_only{dir = 2},/turf/simulated/floor/plating,/area/hallway/secondary/entry)
"aMZ" = (/obj/machinery/light/small{dir = 4},/obj/machinery/computer/security/telescreen/entertainment{pixel_x = 32},/obj/structure/table/woodentable,/obj/item/ashtray/bronze{pixel_x = -1; pixel_y = 1},/obj/item/weapon/deck,/turf/simulated/floor/carpet,/area/crew_quarters/bar)
"aMZ" = (/obj/machinery/requests_console{department = "EVA"; pixel_x = -32; pixel_y = 0},/obj/machinery/light{icon_state = "tube1"; dir = 8},/obj/structure/table/reinforced,/obj/item/weapon/storage/toolbox/mechanical{pixel_x = -2; pixel_y = -1},/obj/item/device/multitool,/obj/machinery/camera/motion{c_tag = "EVA Motion Sensor"; dir = 4},/turf/simulated/floor{dir = 8; icon_state = "warning"},/area/ai_monitored/storage/eva)
"aNa" = (/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_x = 0},/obj/structure/disposalpipe/segment{dir = 4},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 10},/turf/simulated/floor/plating,/area/maintenance/fsmaint)
"aNb" = (/turf/simulated/floor/carpet,/area/hallway/secondary/entry)
"aNc" = (/obj/structure/stool/bed/chair/comfy/beige{dir = 8},/turf/simulated/floor{icon_state = "grimy"},/area/hallway/secondary/entry)
@@ -2059,10 +2059,10 @@
"aNE" = (/obj/effect/landmark/start{name = "Bartender"},/turf/simulated/floor{icon_state = "grimy"},/area/crew_quarters/bar)
"aNF" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/turf/simulated/wall,/area/crew_quarters/sleep/bedrooms)
"aNG" = (/turf/simulated/floor/carpet,/area/crew_quarters/bar)
"aNH" = (/obj/structure/table/woodentable,/obj/item/weapon/deck,/turf/simulated/floor{icon_state = "grimy"},/area/hallway/secondary/entry)
"aNH" = (/obj/machinery/light{icon_state = "tube1"; dir = 4},/obj/structure/table/reinforced,/obj/item/stack/sheet/rglass{amount = 50},/obj/item/stack/rods{amount = 50},/obj/structure/extinguisher_cabinet{pixel_x = 27; pixel_y = 0},/obj/machinery/camera{c_tag = "EVA East"; dir = 8},/turf/simulated/floor{dir = 4; icon_state = "warning"},/area/ai_monitored/storage/eva)
"aNI" = (/obj/machinery/light/small{dir = 8},/obj/structure/stool/bed,/obj/machinery/alarm{pixel_y = 23},/obj/item/weapon/bedsheet/mime,/turf/simulated/floor/carpet{icon_state = "carpetnoconnect"},/area/crew_quarters/sleep/bedrooms)
"aNJ" = (/obj/structure/cable{icon_state = "0-2"; d2 = 2},/obj/machinery/power/apc{dir = 1; name = "north bump"; pixel_x = 0; pixel_y = 24},/turf/simulated/floor/plating,/area/maintenance/fpmaint)
"aNK" = (/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_x = 0},/obj/structure/table/reinforced,/obj/item/stack/sheet/metal{amount = 50},/obj/item/stack/sheet/metal{amount = 50},/obj/item/stack/sheet/metal{amount = 50},/turf/simulated/floor{dir = 4; icon_state = "warning"},/area/ai_monitored/storage/eva)
"aNK" = (/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_x = 0},/obj/structure/table/reinforced,/obj/item/device/assembly/signaler,/obj/item/device/assembly/signaler,/turf/simulated/floor{dir = 8; icon_state = "warning"},/area/ai_monitored/storage/eva)
"aNL" = (/obj/machinery/atmospherics/unary/vent_pump{dir = 8; layer = 2.4; level = 2; on = 1},/obj/structure/closet/crate/freezer,/turf/simulated/floor{icon_state = "showroomfloor"},/area/crew_quarters/kitchen)
"aNM" = (/obj/structure/disposalpipe/segment,/turf/simulated/floor{icon_state = "showroomfloor"},/area/crew_quarters/kitchen)
"aNN" = (/obj/structure/closet/crate/freezer,/turf/simulated/floor{icon_state = "hydrofloor"},/area/hydroponics)
@@ -2076,7 +2076,7 @@
"aNV" = (/obj/machinery/bookbinder{pixel_y = 0},/turf/simulated/floor/wood,/area/library)
"aNW" = (/obj/structure/disposalpipe/segment,/turf/simulated/floor/wood,/area/library)
"aNX" = (/obj/machinery/photocopier,/turf/simulated/floor/wood,/area/library)
"aNY" = (/obj/machinery/alarm{dir = 4; icon_state = "alarm0"; pixel_x = -22},/obj/machinery/light{icon_state = "tube1"; dir = 8},/obj/machinery/atmospherics/pipe/simple{icon_state = "intact"; level = 2},/turf/simulated/floor,/area/medical/sleeper)
"aNY" = (/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_x = 0},/obj/structure/table/reinforced,/obj/item/stack/sheet/metal{amount = 50},/obj/item/stack/sheet/metal{amount = 50},/obj/item/stack/sheet/metal{amount = 50},/turf/simulated/floor{dir = 4; icon_state = "warning"},/area/ai_monitored/storage/eva)
"aNZ" = (/obj/machinery/door/morgue{dir = 2; name = "Confession Booth (Chaplain)"; req_access_txt = "22"},/turf/simulated/floor{icon_state = "dark"},/area/chapel/main)
"aOa" = (/obj/machinery/light/small{dir = 1},/obj/item/device/radio/intercom{broadcasting = 1; frequency = 1480; name = "Confessional Intercom"; pixel_x = 25},/obj/structure/stool/bed/chair,/turf/simulated/floor{icon_state = "dark"},/area/chapel/main)
"aOb" = (/obj/machinery/vending/snack,/turf/simulated/floor{dir = 9; icon_state = "warning"},/area/hallway/secondary/entry)
@@ -2098,7 +2098,7 @@
"aOr" = (/obj/item/device/radio/intercom{name = "Station Intercom (General)"; pixel_y = -29},/obj/structure/disposalpipe/segment{dir = 4},/turf/simulated/floor,/area/hallway/primary/port)
"aOs" = (/obj/structure/disposalpipe/junction{icon_state = "pipe-j2"; dir = 4},/turf/simulated/floor,/area/hallway/primary/port)
"aOt" = (/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/atmospherics/unary/vent_pump{dir = 1; on = 1},/turf/simulated/floor{dir = 1; icon_state = "arrival"},/area/hallway/secondary/entry)
"aOu" = (/obj/machinery/atmospherics/unary/vent_pump/high_volume{dir = 4; frequency = 1379; id_tag = "arrivals_pump"},/obj/machinery/airlock_sensor{frequency = 1379; id_tag = "arrivals_sensor"; pixel_x = 25; pixel_y = 12},/obj/machinery/embedded_controller/radio/airlock_controller{tag_airpump = "arrivals_pump"; tag_exterior_door = "arrivals_outer"; frequency = 1379; id_tag = "arrivals_airlock"; tag_interior_door = "arrivals_inner"; pixel_x = 25; req_access_txt = "13"; tag_chamber_sensor = "arrivals_sensor"},/turf/simulated/floor/plating,/area/maintenance/fpmaint2)
"aOu" = (/obj/machinery/atmospherics/unary/vent_pump/high_volume{dir = 4; frequency = 1379; id_tag = "arrivals_pump"},/obj/machinery/airlock_sensor{frequency = 1379; id_tag = "arrivals_sensor"; pixel_x = 25; pixel_y = 12},/obj/machinery/embedded_controller/radio/airlock/airlock_controller{tag_airpump = "arrivals_pump"; tag_exterior_door = "arrivals_outer"; frequency = 1379; id_tag = "arrivals_airlock"; tag_interior_door = "arrivals_inner"; pixel_x = 25; req_access_txt = "13"; tag_chamber_sensor = "arrivals_sensor"},/turf/simulated/floor/plating,/area/maintenance/fpmaint2)
"aOv" = (/obj/structure/disposalpipe/segment{dir = 4},/obj/structure/cable{d1 = 2; d2 = 4; icon_state = "2-4"},/turf/simulated/floor,/area/hallway/primary/port)
"aOw" = (/obj/structure/disposalpipe/segment{dir = 4},/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_x = 0},/turf/simulated/floor,/area/hallway/primary/port)
"aOx" = (/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_x = 0},/obj/structure/disposalpipe/segment{dir = 4},/obj/machinery/camera{c_tag = "Port Hallway"; dir = 1},/turf/simulated/floor,/area/hallway/primary/port)
@@ -2126,14 +2126,14 @@
"aOT" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 9; pixel_y = 0},/turf/simulated/floor/plating{icon_state = "warnplate"; dir = 6},/area/maintenance/port)
"aOU" = (/obj/machinery/door/airlock{name = "Kitchen cold room"; req_access_txt = "28"},/obj/structure/disposalpipe/segment,/turf/simulated/floor{icon_state = "showroomfloor"},/area/crew_quarters/kitchen)
"aOV" = (/obj/machinery/atmospherics/unary/vent_pump{dir = 4; on = 1},/obj/structure/table,/obj/item/weapon/reagent_containers/glass/bucket,/obj/item/weapon/reagent_containers/glass/bucket,/turf/simulated/floor{icon_state = "hydrofloor"},/area/hydroponics)
"aOW" = (/obj/machinery/bodyscanner,/turf/simulated/floor{icon_state = "red"},/area/medical/sleeper)
"aOX" = (/obj/structure/disposalpipe/segment{dir = 4},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 10},/turf/simulated/floor,/area/medical/sleeper)
"aOY" = (/obj/structure/disposalpipe/segment{dir = 4; icon_state = "pipe-c"},/obj/machinery/atmospherics/pipe/simple/hidden/supply{color = "#4444FF"; dir = 4},/turf/simulated/floor,/area/medical/sleeper)
"aOW" = (/obj/machinery/alarm{dir = 4; icon_state = "alarm0"; pixel_x = -22},/obj/machinery/light{icon_state = "tube1"; dir = 8},/obj/machinery/atmospherics/pipe/simple{icon_state = "intact"; level = 2},/turf/simulated/floor,/area/medical/sleeper)
"aOX" = (/obj/machinery/bodyscanner,/turf/simulated/floor{icon_state = "red"},/area/medical/sleeper)
"aOY" = (/obj/structure/disposalpipe/segment{dir = 4},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 10},/turf/simulated/floor,/area/medical/sleeper)
"aOZ" = (/obj/structure/sink{icon_state = "sink"; dir = 8; pixel_x = -12; pixel_y = 2},/obj/machinery/light_switch{pixel_x = -23; pixel_y = 0},/turf/simulated/floor{icon_state = "dark"},/area/hydroponics)
"aPa" = (/obj/machinery/atmospherics/pipe/simple{icon_state = "intact"; level = 2},/obj/machinery/atmospherics/pipe/simple/hidden/supply{color = "#4444FF"; dir = 4},/turf/simulated/floor,/area/medical/sleeper)
"aPa" = (/obj/structure/disposalpipe/segment{dir = 4; icon_state = "pipe-c"},/obj/machinery/atmospherics/pipe/simple/hidden/supply{color = "#4444FF"; dir = 4},/turf/simulated/floor,/area/medical/sleeper)
"aPb" = (/obj/machinery/hydroponics,/turf/simulated/floor{icon_state = "dark"},/area/hydroponics)
"aPc" = (/obj/machinery/hydroponics,/obj/machinery/camera{c_tag = "Hydroponics North"; dir = 2},/turf/simulated/floor{icon_state = "dark"},/area/hydroponics)
"aPd" = (/obj/machinery/door/firedoor,/obj/machinery/door/airlock/maintenance{name = "Medbay Diagnostics Maintenance Access"; req_access_txt = "5"},/obj/machinery/atmospherics/pipe/simple/hidden/supply{color = "#4444FF"; dir = 4},/turf/simulated/floor/plating,/area/medical/sleeper)
"aPd" = (/obj/machinery/atmospherics/pipe/simple{icon_state = "intact"; level = 2},/obj/machinery/atmospherics/pipe/simple/hidden/supply{color = "#4444FF"; dir = 4},/turf/simulated/floor,/area/medical/sleeper)
"aPe" = (/obj/machinery/disposal,/obj/structure/disposalpipe/trunk{dir = 8},/turf/simulated/floor{icon_state = "dark"},/area/hydroponics)
"aPf" = (/obj/structure/bookcase{name = "bookcase (Religious)"},/turf/simulated/floor/wood,/area/library)
"aPg" = (/turf/simulated/floor/carpet,/area/library)
@@ -2143,9 +2143,9 @@
"aPk" = (/obj/structure/bookcase{name = "Forbidden Knowledge"},/turf/simulated/floor{icon_state = "cult"; dir = 2},/area/library)
"aPl" = (/obj/structure/table/woodentable,/obj/item/device/taperecorder{pixel_y = 0},/obj/item/device/camera,/obj/item/device/eftpos{eftpos_name = "Library EFTPOS scanner"},/turf/simulated/floor{icon_state = "cult"; dir = 2},/area/library)
"aPm" = (/obj/structure/table/woodentable,/obj/item/weapon/paper_bin{pixel_x = -3; pixel_y = 7},/obj/item/weapon/pen/invisible,/turf/simulated/floor{icon_state = "cult"; dir = 2},/area/library)
"aPn" = (/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/atmospherics/pipe/manifold/hidden/supply{dir = 8},/turf/simulated/floor/plating,/area/maintenance/asmaint)
"aPn" = (/obj/machinery/door/firedoor,/obj/machinery/door/airlock/maintenance{name = "Medbay Diagnostics Maintenance Access"; req_access_txt = "5"},/obj/machinery/atmospherics/pipe/simple/hidden/supply{color = "#4444FF"; dir = 4},/turf/simulated/floor/plating,/area/medical/sleeper)
"aPo" = (/turf/simulated/floor{dir = 1; icon_state = "chapel"},/area/chapel/main)
"aPp" = (/obj/machinery/light{dir = 1},/obj/machinery/alarm{pixel_y = 25},/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_x = 0},/obj/structure/table,/obj/structure/cable{d1 = 2; d2 = 8; icon_state = "2-8"},/obj/machinery/atmospherics/pipe/manifold/hidden/supply{dir = 1},/turf/simulated/floor{icon_state = "white"},/area/medical/patient_wing)
"aPp" = (/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/atmospherics/pipe/manifold/hidden/supply{dir = 8},/turf/simulated/floor/plating,/area/maintenance/asmaint)
"aPq" = (/obj/effect/landmark{name = "xeno_spawn"; pixel_x = -1},/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/simulated/floor/carpet{icon_state = "carpetnoconnect"},/area/crew_quarters/sleep/bedrooms)
"aPr" = (/turf/simulated/floor{dir = 4; icon_state = "chapel"},/area/chapel/main)
"aPs" = (/obj/structure/grille,/obj/structure/window/reinforced/tinted{dir = 1},/obj/structure/window/reinforced/tinted,/obj/structure/window/reinforced/tinted{dir = 4; icon_state = "twindow"},/obj/structure/window/reinforced/tinted{dir = 8; icon_state = "twindow"},/turf/simulated/floor{icon_state = "dark"},/area/chapel/main)
@@ -2513,7 +2513,7 @@
"aWq" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/simulated/floor,/area/gateway)
"aWr" = (/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_x = 0},/turf/simulated/floor{icon_state = "neutral"; dir = 4},/area/crew_quarters/sleep)
"aWs" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/turf/simulated/floor,/area/gateway)
"aWt" = (/obj/machinery/atmospherics/pipe/manifold{dir = 8; icon_state = "manifold"; level = 2},/turf/simulated/floor{dir = 8; icon_state = "warning"},/area/medical/sleeper)
"aWt" = (/obj/machinery/light{dir = 1},/obj/machinery/alarm{pixel_y = 25},/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_x = 0},/obj/structure/table,/obj/structure/cable{d1 = 2; d2 = 8; icon_state = "2-8"},/obj/machinery/atmospherics/pipe/manifold/hidden/supply{dir = 1},/turf/simulated/floor{icon_state = "white"},/area/medical/patient_wing)
"aWu" = (/obj/item/device/radio/intercom{freerange = 0; frequency = 1459; name = "Station Intercom (General)"; pixel_x = -30},/obj/machinery/atmospherics/pipe/manifold/hidden/supply,/turf/simulated/floor,/area/gateway)
"aWv" = (/obj/structure/table/reinforced,/obj/machinery/light{dir = 1},/obj/machinery/faxmachine{anchored = 0; department = "Internal Affairs"},/turf/simulated/floor{icon_state = "cult"; dir = 2},/area/lawoffice)
"aWw" = (/obj/structure/table/reinforced,/obj/item/weapon/paper_bin{pixel_x = -3; pixel_y = 7},/obj/item/weapon/hand_labeler,/obj/item/weapon/pen,/turf/simulated/floor{icon_state = "cult"; dir = 2},/area/lawoffice)
@@ -2714,7 +2714,7 @@
"baj" = (/obj/structure/table,/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/obj/random/tech_supply,/obj/random/tech_supply,/obj/random/tech_supply,/obj/random/tech_supply,/turf/simulated/floor,/area/storage/primary)
"bak" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/turf/simulated/wall,/area/storage/primary)
"bal" = (/turf/simulated/wall,/area/quartermaster/storage)
"bam" = (/obj/structure/stool/bed/chair,/obj/machinery/atmospherics/pipe/simple/hidden/supply,/turf/simulated/floor,/area/medical/surgeryobs)
"bam" = (/obj/machinery/atmospherics/pipe/manifold{dir = 8; icon_state = "manifold"; level = 2},/turf/simulated/floor{dir = 8; icon_state = "warning"},/area/medical/sleeper)
"ban" = (/obj/machinery/conveyor{dir = 4; id = "packageSort2"},/obj/machinery/light{dir = 8},/turf/simulated/floor/plating,/area/quartermaster/office)
"bao" = (/obj/machinery/conveyor{dir = 4; id = "packageSort2"},/turf/simulated/floor/plating,/area/quartermaster/office)
"bap" = (/obj/machinery/conveyor{dir = 4; id = "packageSort2"},/obj/structure/plasticflaps{opacity = 0},/turf/simulated/floor/plating,/area/quartermaster/office)
@@ -2887,13 +2887,13 @@
"bdA" = (/obj/machinery/atmospherics/pipe/manifold/hidden/supply{dir = 1},/turf/simulated/wall,/area/crew_quarters/kitchen)
"bdB" = (/obj/structure/grille,/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 8},/obj/machinery/atmospherics/pipe/simple/visible,/turf/simulated/floor/plating,/area/maintenance/auxsolarport)
"bdC" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/obj/machinery/firealarm{dir = 2; pixel_y = 24},/turf/simulated/floor{dir = 1; icon_state = "warning"},/area/ai_monitored/storage/eva)
"bdD" = (/obj/structure/stool/bed/chair,/turf/simulated/floor,/area/medical/surgeryobs)
"bdD" = (/obj/structure/stool/bed/chair,/obj/machinery/atmospherics/pipe/simple/hidden/supply,/turf/simulated/floor,/area/medical/surgeryobs)
"bdE" = (/turf/simulated/floor/carpet{icon_state = "carpetnoconnect"},/area/crew_quarters/sleep/bedrooms)
"bdF" = (/obj/structure/cable{d1 = 2; d2 = 4; icon_state = "2-4"},/obj/structure/cable{d1 = 1; d2 = 4; icon_state = "1-4"},/turf/simulated/floor,/area/crew_quarters/sleep)
"bdG" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced{dir = 8},/obj/structure/window/reinforced{dir = 1},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/turf/simulated/floor/plating,/area/crew_quarters/fitness)
"bdH" = (/obj/structure/closet/lasertag/red,/turf/simulated/floor{icon_state = "neutral"; dir = 6},/area/crew_quarters/fitness)
"bdI" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 8},/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced{dir = 4},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/obj/machinery/door/firedoor/border_only{dir = 2},/turf/simulated/floor/plating,/area/crew_quarters/fitness)
"bdJ" = (/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/embedded_controller/radio/airlock_controller{tag_airpump = "solar_chapel_pump"; tag_exterior_door = "solar_chapel_outer"; frequency = 1379; id_tag = "solar_chapel_airlock"; tag_interior_door = "solar_chapel_inner"; pixel_x = 25; req_access_txt = "13"; tag_chamber_sensor = "solar_chapel_sensor"},/obj/machinery/airlock_sensor{frequency = 1379; id_tag = "solar_chapel_sensor"; pixel_x = 25; pixel_y = 12},/obj/machinery/atmospherics/unary/vent_pump/high_volume{dir = 2; frequency = 1379; id_tag = "solar_chapel_pump"},/turf/simulated/floor/plating,/area/maintenance/auxsolarstarboard)
"bdJ" = (/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/embedded_controller/radio/airlock/airlock_controller{tag_airpump = "solar_chapel_pump"; tag_exterior_door = "solar_chapel_outer"; frequency = 1379; id_tag = "solar_chapel_airlock"; tag_interior_door = "solar_chapel_inner"; pixel_x = 25; req_access_txt = "13"; tag_chamber_sensor = "solar_chapel_sensor"},/obj/machinery/airlock_sensor{frequency = 1379; id_tag = "solar_chapel_sensor"; pixel_x = 25; pixel_y = 12},/obj/machinery/atmospherics/unary/vent_pump/high_volume{dir = 2; frequency = 1379; id_tag = "solar_chapel_pump"},/turf/simulated/floor/plating,/area/maintenance/auxsolarstarboard)
"bdK" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced{dir = 8},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/obj/machinery/door/firedoor/border_only{dir = 2},/turf/simulated/floor/plating,/area/crew_quarters/fitness)
"bdL" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced{dir = 8},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/turf/simulated/floor/plating,/area/crew_quarters/fitness)
"bdM" = (/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/door/airlock/external{frequency = 1379; icon_state = "door_locked"; id_tag = "solar_chapel_inner"; locked = 1; name = "Engineering External Access"; req_access = null; req_access_txt = "13"},/obj/machinery/atmospherics/pipe/simple/visible,/turf/simulated/floor/plating,/area/maintenance/auxsolarstarboard)
@@ -2930,7 +2930,7 @@
"ber" = (/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced{dir = 1},/turf/simulated/floor/bluegrid,/area/turret_protected/ai)
"bes" = (/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; pixel_y = 0},/turf/simulated/floor{icon_state = "dark"},/area/turret_protected/ai)
"bet" = (/turf/simulated/wall,/area/turret_protected/ai)
"beu" = (/obj/machinery/alarm{dir = 4; icon_state = "alarm0"; pixel_x = -22},/turf/simulated/floor{icon_state = "dark"},/area/turret_protected/ai)
"beu" = (/obj/structure/stool/bed/chair,/turf/simulated/floor,/area/medical/surgeryobs)
"bev" = (/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced{dir = 8},/turf/simulated/floor/bluegrid,/area/turret_protected/ai)
"bew" = (/obj/machinery/gateway,/obj/structure/cable{d2 = 2; icon_state = "0-2"; pixel_y = 0},/turf/simulated/floor{icon_state = "vault"; dir = 8},/area/gateway)
"bex" = (/obj/machinery/vending/coffee,/turf/simulated/floor/wood,/area/crew_quarters/captain)
@@ -3221,7 +3221,7 @@
"bjW" = (/obj/structure/cable{d1 = 2; d2 = 8; icon_state = "2-8"},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/turf/simulated/floor,/area/hallway/primary/central)
"bjX" = (/obj/structure/window/shuttle,/obj/structure/grille,/turf/simulated/shuttle/plating,/area/shuttle/escape_pod5/station)
"bjY" = (/obj/structure/closet/wardrobe/chemistry_white,/turf/simulated/floor{dir = 2; icon_state = "whiteyellowcorner"},/area/medical/chemistry)
"bjZ" = (/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_x = 0},/obj/structure/cable{d1 = 1; d2 = 4; icon_state = "1-4"},/obj/machinery/atmospherics/pipe/manifold/hidden/supply{dir = 8},/turf/simulated/floor,/area/teleporter)
"bjZ" = (/obj/machinery/access_button{command = "cycle_exterior"; frequency = 1380; master_tag = "research_dock_airlock"; name = "exterior access button"; pixel_x = -25; pixel_y = 8; req_access_txt = "13;65"},/turf/space,/area)
"bka" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply,/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/simulated/floor/plating,/area/maintenance/asmaint)
"bkb" = (/obj/machinery/door/firedoor,/obj/machinery/door/airlock/glass_medical{id_tag = null; name = "Patient Ward"; req_access_txt = "0"},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/simulated/floor{icon_state = "white"},/area/medical/medbay2)
"bkc" = (/obj/structure/sign/greencross,/turf/simulated/wall,/area/medical/ward)
@@ -3304,7 +3304,7 @@
"blB" = (/obj/machinery/atmospherics/pipe/simple{dir = 6; icon_state = "intact"; level = 2},/turf/simulated/floor{icon_state = "redcorner"; dir = 1},/area/medical/sleeper)
"blC" = (/obj/machinery/atmospherics/unary/cryo_cell,/turf/simulated/floor{icon_state = "red"; dir = 9},/area/medical/sleeper)
"blD" = (/obj/machinery/atmospherics/pipe/simple{dir = 4; icon_state = "intact"; level = 2},/turf/simulated/floor,/area/medical/sleeper)
"blE" = (/obj/machinery/door/firedoor/border_only{dir = 4; name = "Firelock East"},/obj/machinery/door/airlock/command{name = "Teleport Access"; req_access_txt = "17"},/obj/machinery/atmospherics/pipe/simple/hidden/supply,/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_x = 0},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/turf/simulated/floor,/area/teleporter)
"blE" = (/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_x = 0},/obj/structure/cable{d1 = 1; d2 = 4; icon_state = "1-4"},/obj/machinery/atmospherics/pipe/manifold/hidden/supply{dir = 8},/turf/simulated/floor,/area/teleporter)
"blF" = (/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/door/firedoor/border_only{dir = 1; name = "Firelock North"},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/turf/simulated/floor{dir = 4; icon_state = "arrival"},/area/hallway/secondary/entry)
"blG" = (/obj/machinery/door_control{id = "scanhide"; name = "Diagnostics Room Separation Shutters"; pixel_x = -6; pixel_y = 25; req_access_txt = "5"},/obj/machinery/camera{c_tag = "Medbay Scanning"; network = list("SS13")},/obj/machinery/atmospherics/unary/cold_sink/freezer{dir = 8; icon_state = "freezer_0"; tag = ""},/obj/machinery/door_control{id = "scanhideside"; name = "Diagnostics Room Privacy Shutters"; pixel_x = 6; pixel_y = 25; req_access_txt = "5"},/turf/simulated/floor{icon_state = "delivery"},/area/medical/sleeper)
"blH" = (/obj/structure/disposalpipe/segment,/obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers,/turf/simulated/floor{dir = 4; icon_state = "whitebluecorner"; tag = "icon-whitebluecorner"},/area/medical/medbay2)
@@ -3322,7 +3322,7 @@
"blT" = (/obj/machinery/light_switch{pixel_x = 27},/obj/machinery/camera{c_tag = "Telescience Control Room"; dir = 8; network = list("SS13","Research"); pixel_y = -22},/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/simulated/floor{icon_state = "white"},/area/rnd/misc_lab)
"blU" = (/obj/machinery/sparker{dir = 2; id = "mixingsparker"; pixel_x = 25},/obj/machinery/atmospherics/unary/vent_pump{dir = 4; external_pressure_bound = 0; icon_state = "in"; initialize_directions = 1; internal_pressure_bound = 4000; on = 1; pressure_checks = 2; pump_direction = 0},/turf/simulated/floor/engine/vacuum,/area/rnd/mixing)
"blV" = (/obj/structure/sign/securearea{desc = "A warning sign which reads 'EXTERNAL AIRLOCK'"; icon_state = "space"; layer = 4; name = "EXTERNAL AIRLOCK"; pixel_x = 0; pixel_y = 32},/turf/simulated/floor/engine/vacuum,/area/rnd/mixing)
"blW" = (/obj/machinery/atmospherics/pipe/simple/insulated{icon_state = "intact"; dir = 4},/obj/machinery/meter,/obj/machinery/embedded_controller/radio/airlock_controller{tag_airpump = "tox_airlock_pump"; tag_exterior_door = "tox_airlock_exterior"; id_tag = "tox_airlock_control"; tag_interior_door = "tox_airlock_interior"; pixel_x = -24; pixel_y = 0; tag_chamber_sensor = "tox_airlock_sensor"},/turf/simulated/floor{dir = 1; icon_state = "warnwhitecorner"},/area/rnd/mixing)
"blW" = (/obj/machinery/atmospherics/pipe/simple/insulated{icon_state = "intact"; dir = 4},/obj/machinery/meter,/obj/machinery/embedded_controller/radio/airlock/airlock_controller{tag_airpump = "tox_airlock_pump"; tag_exterior_door = "tox_airlock_exterior"; id_tag = "tox_airlock_control"; tag_interior_door = "tox_airlock_interior"; pixel_x = -24; pixel_y = 0; tag_chamber_sensor = "tox_airlock_sensor"},/turf/simulated/floor{dir = 1; icon_state = "warnwhitecorner"},/area/rnd/mixing)
"blX" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 10},/turf/simulated/floor{icon_state = "white"},/area/medical/medbay2)
"blY" = (/obj/item/device/radio/intercom{broadcasting = 0; name = "Station Intercom (General)"; pixel_y = 26},/obj/structure/stool/bed/chair/comfy/teal{tag = "icon-comfychair_teal (WEST)"; icon_state = "comfychair_teal"; dir = 8},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/turf/simulated/floor{tag = "icon-whiteblue (NORTH)"; icon_state = "whiteblue"; dir = 1},/area/medical/medbay2)
"blZ" = (/obj/machinery/atmospherics/valve{dir = 4},/turf/simulated/floor{dir = 4; icon_state = "warnwhite"},/area/rnd/mixing)
@@ -3383,7 +3383,7 @@
"bnc" = (/turf/simulated/floor{dir = 8; icon_state = "browncorner"},/area/quartermaster/office)
"bnd" = (/obj/structure/disposalpipe/segment{dir = 1; icon_state = "pipe-c"},/turf/simulated/floor,/area/quartermaster/office)
"bne" = (/obj/structure/disposalpipe/sortjunction{dir = 1; icon_state = "pipe-j2s"; sortType = 2},/turf/simulated/floor,/area/quartermaster/office)
"bnf" = (/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_y = 0},/obj/machinery/embedded_controller/radio/airlock_controller{tag_airpump = "toxin_test_pump"; tag_exterior_door = "toxin_test_outer"; frequency = 1379; id_tag = "toxin_test_airlock"; tag_interior_door = "toxin_test_inner"; pixel_x = 0; pixel_y = 25; req_access_txt = "13"; tag_chamber_sensor = "toxin_test_sensor"},/turf/simulated/floor/plating,/area/maintenance/asmaint2)
"bnf" = (/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_y = 0},/obj/machinery/embedded_controller/radio/airlock/airlock_controller{tag_airpump = "toxin_test_pump"; tag_exterior_door = "toxin_test_outer"; frequency = 1379; id_tag = "toxin_test_airlock"; tag_interior_door = "toxin_test_inner"; pixel_x = 0; pixel_y = 25; req_access_txt = "13"; tag_chamber_sensor = "toxin_test_sensor"},/turf/simulated/floor/plating,/area/maintenance/asmaint2)
"bng" = (/turf/simulated/floor/plating/airless,/area/rnd/mixing)
"bnh" = (/obj/machinery/mass_driver{dir = 4; id = "toxinsdriver"},/turf/simulated/floor/plating/airless,/area/rnd/mixing)
"bni" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 9; pixel_y = 0},/turf/simulated/wall,/area/maintenance/asmaint2)
@@ -3391,7 +3391,7 @@
"bnk" = (/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/structure/cable{d1 = 1; d2 = 4; icon_state = "1-4"},/obj/machinery/atmospherics/pipe/simple/visible{icon_state = "intact"; dir = 6},/turf/simulated/floor/plating,/area/maintenance/asmaint2)
"bnl" = (/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_y = 0},/obj/machinery/door/airlock/external{frequency = 1379; icon_state = "door_locked"; id_tag = "toxin_test_inner"; locked = 1; name = "Engineering External Access"; req_access = null; req_access_txt = "13"},/obj/machinery/atmospherics/pipe/simple/visible{dir = 4},/turf/simulated/floor/plating,/area/maintenance/asmaint2)
"bnm" = (/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_y = 0},/obj/machinery/access_button{command = "cycle_interior"; frequency = 1379; master_tag = "toxin_test_airlock"; name = "interior access button"; pixel_x = 20; pixel_y = 20; req_access_txt = "13"},/obj/machinery/atmospherics/pipe/simple/visible{dir = 4},/turf/simulated/floor/plating,/area/maintenance/asmaint2)
"bnn" = (/obj/machinery/airlock_sensor{frequency = 1379; id_tag = "virology_sensor"; pixel_x = 25; pixel_y = 12},/obj/machinery/embedded_controller/radio/airlock_controller{tag_airpump = "virology_pump"; tag_exterior_door = "virology_outer"; frequency = 1379; id_tag = "virology_airlock"; tag_interior_door = "virology_inner"; pixel_x = 25; req_access_txt = "13"; tag_chamber_sensor = "virology_sensor"},/turf/simulated/floor/plating,/area/maintenance/asmaint)
"bnn" = (/obj/machinery/airlock_sensor{frequency = 1379; id_tag = "virology_sensor"; pixel_x = 25; pixel_y = 12},/obj/machinery/embedded_controller/radio/airlock/airlock_controller{tag_airpump = "virology_pump"; tag_exterior_door = "virology_outer"; frequency = 1379; id_tag = "virology_airlock"; tag_interior_door = "virology_inner"; pixel_x = 25; req_access_txt = "13"; tag_chamber_sensor = "virology_sensor"},/turf/simulated/floor/plating,/area/maintenance/asmaint)
"bno" = (/obj/machinery/atmospherics/pipe/simple/visible{tag = "icon-intact (SOUTHWEST)"; icon_state = "intact"; dir = 10},/obj/structure/disposalpipe/segment,/turf/simulated/floor/plating,/area/maintenance/incinerator)
"bnp" = (/obj/machinery/atmospherics/pipe/simple/visible{dir = 4},/obj/machinery/meter,/turf/simulated/floor/plating,/area/maintenance/incinerator)
"bnq" = (/obj/machinery/atmospherics/unary/vent_pump/high_volume{dir = 1; frequency = 1379; id_tag = "virology_pump"},/turf/simulated/floor/plating,/area/maintenance/asmaint)
@@ -3423,7 +3423,7 @@
"bnQ" = (/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_x = 0},/obj/machinery/atmospherics/pipe/manifold/hidden/supply,/obj/structure/cable{d1 = 2; d2 = 8; icon_state = "2-8"},/turf/simulated/floor{dir = 4; icon_state = "whiteredcorner"},/area/medical/patient_wing)
"bnR" = (/obj/item/device/flashlight,/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/turf/simulated/floor/plating,/area/maintenance/asmaint)
"bnS" = (/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_x = 0},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/turf/simulated/floor{icon_state = "white"},/area/medical/patient_wing)
"bnT" = (/obj/structure/table,/obj/item/weapon/storage/firstaid/toxin{pixel_x = 5; pixel_y = 5},/obj/item/weapon/storage/firstaid/toxin,/obj/machinery/alarm{dir = 4; icon_state = "alarm0"; pixel_x = -22},/turf/simulated/floor{dir = 8; icon_state = "whiteyellowcorner"},/area/medical/chemistry)
"bnT" = (/obj/machinery/door/firedoor/border_only{dir = 4; name = "Firelock East"},/obj/machinery/door/airlock/command{name = "Teleport Access"; req_access_txt = "17"},/obj/machinery/atmospherics/pipe/simple/hidden/supply,/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_x = 0},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/turf/simulated/floor,/area/teleporter)
"bnU" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 9; pixel_y = 0},/obj/structure/stool/bed/chair/comfy/teal,/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_x = 0},/obj/structure/cable{d1 = 2; d2 = 8; icon_state = "2-8"},/turf/simulated/floor{dir = 4; icon_state = "whiteredcorner"},/area/medical/patient_wing)
"bnV" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_x = 0},/obj/structure/cable{d1 = 2; d2 = 8; icon_state = "2-8"},/turf/simulated/floor{dir = 1; icon_state = "whitered_a"; tag = "icon-whitered_a (WEST)"},/area/medical/patient_wing)
"bnW" = (/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_x = 0},/obj/structure/cable{d1 = 1; d2 = 8; icon_state = "1-8"},/obj/structure/stool/bed/chair/comfy/teal,/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/turf/simulated/floor{dir = 1; icon_state = "whiteredcorner"},/area/medical/patient_wing)
@@ -3476,7 +3476,7 @@
"boR" = (/obj/machinery/turret{dir = 4},/turf/simulated/floor/bluegrid,/area/turret_protected/ai_upload)
"boS" = (/turf/simulated/floor{icon_state = "vault"; dir = 8},/area/turret_protected/ai_upload)
"boT" = (/obj/machinery/turret{dir = 8},/turf/simulated/floor/bluegrid,/area/turret_protected/ai_upload)
"boU" = (/obj/machinery/door/firedoor/border_only{dir = 1; name = "Firelock North"},/obj/structure/disposalpipe/segment,/turf/simulated/floor,/area/hallway/primary/central)
"boU" = (/obj/structure/table,/obj/item/weapon/storage/firstaid/toxin{pixel_x = 5; pixel_y = 5},/obj/item/weapon/storage/firstaid/toxin,/obj/machinery/alarm{dir = 4; icon_state = "alarm0"; pixel_x = -22},/turf/simulated/floor{dir = 8; icon_state = "whiteyellowcorner"},/area/medical/chemistry)
"boV" = (/obj/structure/displaycase,/obj/machinery/light/small{dir = 1},/turf/simulated/floor/carpet,/area/crew_quarters/captain)
"boW" = (/obj/machinery/light_switch{pixel_y = 28},/obj/machinery/atmospherics/unary/vent_pump{dir = 4; on = 1},/turf/simulated/floor/carpet,/area/crew_quarters/captain)
"boX" = (/obj/machinery/atmospherics/pipe/simple{dir = 9; icon_state = "intact"; level = 2},/turf/simulated/floor,/area/medical/sleeper)
@@ -3485,7 +3485,7 @@
"bpa" = (/obj/effect/landmark{name = "xeno_spawn"; pixel_x = -1},/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_x = 0},/obj/structure/disposalpipe/segment{dir = 2; icon_state = "pipe-c"},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 10},/turf/simulated/floor{icon_state = "white"},/area/rnd/misc_lab)
"bpb" = (/obj/machinery/door_control{id = "misclab"; name = "Test Chamber Blast Doors"; pixel_x = 6; pixel_y = 30; req_access_txt = "47"},/obj/structure/stool,/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_x = 0},/obj/structure/disposalpipe/segment{dir = 4},/obj/machinery/atmospherics/pipe/simple/visible,/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/turf/simulated/floor{icon_state = "white"},/area/rnd/misc_lab)
"bpc" = (/obj/structure/disposalpipe/segment,/turf/simulated/floor,/area/hallway/primary/central)
"bpd" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/turf/simulated/floor{icon_state = "white"},/area/medical/chemistry)
"bpd" = (/obj/machinery/door/airlock/external{frequency = 1380; icon_state = "door_locked"; id_tag = "research_shuttle_hatch"; locked = 1; name = "External Hatch"; req_access_txt = "13"},/turf/simulated/shuttle/floor,/area/shuttle/research/station)
"bpe" = (/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_x = 0},/turf/simulated/floor{icon_state = "white"},/area/rnd/misc_lab)
"bpf" = (/obj/machinery/hologram/holopad,/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_x = 0},/turf/simulated/floor{icon_state = "white"},/area/rnd/misc_lab)
"bpg" = (/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_x = 0},/obj/structure/stool/bed/chair/office/light{dir = 1},/obj/effect/landmark/start{name = "Scientist"},/turf/simulated/floor{icon_state = "white"},/area/rnd/misc_lab)
@@ -3666,7 +3666,7 @@
"bsz" = (/obj/item/device/radio/intercom{dir = 0; name = "Station Intercom (General)"; pixel_x = -27},/obj/machinery/atmospherics/unary/vent_pump{dir = 1; on = 1},/turf/simulated/floor{icon_state = "dark"},/area/medical/biostorage)
"bsA" = (/obj/machinery/atmospherics/unary/vent_scrubber{dir = 1; on = 1; scrub_N2O = 0; scrub_Toxins = 0},/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/structure/closet/l3closet,/obj/item/clothing/mask/gas,/obj/item/clothing/mask/gas,/obj/item/clothing/mask/gas,/obj/item/clothing/suit/bio_suit/general,/obj/item/clothing/suit/bio_suit/general,/obj/item/clothing/suit/bio_suit/general,/obj/item/clothing/mask/gas,/obj/item/clothing/head/bio_hood/general,/obj/item/clothing/head/bio_hood/general,/obj/item/clothing/head/bio_hood/general,/turf/simulated/floor{icon_state = "dark"},/area/medical/biostorage)
"bsB" = (/obj/machinery/atmospherics/unary/vent_pump/high_volume{dir = 1; frequency = 1379; id_tag = "eng_eva_pump"},/obj/machinery/camera{c_tag = "Engineering EVA Airlock"; dir = 1},/turf/simulated/floor{icon_state = "floorgrime"},/area/engine/engine_eva_maintenance)
"bsC" = (/obj/machinery/embedded_controller/radio/access_controller{tag_exterior_door = "incinerator_airlock_exterior"; id_tag = "incinerator_access_control"; tag_interior_door = "incinerator_airlock_interior"; name = "Incinerator Access Console"; pixel_x = -6; pixel_y = -26; req_access_txt = "12"},/obj/machinery/ignition_switch{id = "Incinerator"; pixel_x = 6; pixel_y = -24},/obj/machinery/meter,/obj/machinery/atmospherics/pipe/simple/visible,/turf/simulated/floor{icon_state = "floorgrime"},/area/maintenance/incinerator)
"bsC" = (/obj/machinery/embedded_controller/radio/airlock/access_controller{tag_exterior_door = "incinerator_airlock_exterior"; id_tag = "incinerator_access_control"; tag_interior_door = "incinerator_airlock_interior"; name = "Incinerator Access Console"; pixel_x = -6; pixel_y = -26; req_access_txt = "12"},/obj/machinery/ignition_switch{id = "Incinerator"; pixel_x = 6; pixel_y = -24},/obj/machinery/meter,/obj/machinery/atmospherics/pipe/simple/visible,/turf/simulated/floor{icon_state = "floorgrime"},/area/maintenance/incinerator)
"bsD" = (/obj/structure/sign/nosmoking_2{pixel_x = 0; pixel_y = -30},/turf/simulated/floor/plating,/area/maintenance/incinerator)
"bsE" = (/obj/machinery/alarm{dir = 8; icon_state = "alarm0"; pixel_x = 24},/obj/machinery/atmospherics/unary/vent_pump{dir = 8; on = 1},/turf/simulated/floor,/area/assembly/chargebay)
"bsF" = (/obj/structure/table,/obj/item/device/mmi,/obj/item/device/mmi,/obj/item/device/mmi,/turf/simulated/floor,/area/assembly/robotics)
@@ -3725,14 +3725,14 @@
"btG" = (/obj/structure/noticeboard{pixel_x = 32; pixel_y = 0},/turf/simulated/floor{icon_state = "cafeteria"; dir = 5},/area/engine/break_room)
"btH" = (/obj/machinery/atmospherics/pipe/manifold/hidden/supply{dir = 8},/turf/simulated/floor{dir = 4; icon_state = "whiteyellowfull"},/area/crew_quarters/sleep/engi)
"btI" = (/obj/structure/stool/bed,/obj/item/weapon/bedsheet/medical,/obj/machinery/vending/wallmed1{pixel_x = -26},/obj/machinery/atmospherics/pipe/manifold/hidden/supply{dir = 8},/turf/simulated/floor{dir = 8; icon_state = "whitered"},/area/medical/ward)
"btJ" = (/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/structure/disposalpipe/segment,/obj/machinery/atmospherics/pipe/simple/hidden/supply,/turf/simulated/floor{icon_state = "white"},/area/medical/chemistry)
"btJ" = (/obj/machinery/door/firedoor/border_only{dir = 1; name = "Firelock North"},/obj/structure/disposalpipe/segment,/turf/simulated/floor,/area/hallway/primary/central)
"btK" = (/obj/structure/cable{d1 = 1; d2 = 8; icon_state = "1-8"},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/obj/machinery/newscaster{layer = 3.3; pixel_x = 0; pixel_y = -27},/obj/machinery/camera{c_tag = "Chief Engineer's Office"; dir = 1; network = list("SS13")},/turf/simulated/floor,/area/engine/chiefs_office)
"btL" = (/obj/structure/cable{icon_state = "0-4"; d2 = 4},/obj/machinery/power/apc{dir = 2; name = "south bump"; pixel_y = -24},/turf/simulated/floor,/area/medical/sleeper)
"btM" = (/turf/simulated/floor{icon_state = "bluecorner"},/area/medical/surgeryobs)
"btN" = (/obj/structure/table,/obj/item/device/radio/intercom{dir = 0; name = "Station Intercom (General)"; pixel_x = -27},/obj/item/weapon/reagent_containers/glass/bottle/stoxin{pixel_x = -6; pixel_y = 10},/obj/item/weapon/reagent_containers/glass/bottle/antitoxin{pixel_x = 5; pixel_y = 5},/obj/item/weapon/reagent_containers/glass/bottle/inaprovaline{pixel_x = 1},/turf/simulated/floor{dir = 8; icon_state = "whiteyellow"},/area/medical/chemistry)
"btO" = (/turf/simulated/floor{icon_state = "white"},/area/medical/chemistry)
"btP" = (/obj/machinery/door/airlock/maintenance{name = "Teleporter Maintenance"; req_access_txt = "17"},/obj/structure/sign/securearea{pixel_x = -32; pixel_y = 0},/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/atmospherics/pipe/simple/hidden/supply,/turf/simulated/floor/plating,/area/teleporter)
"btQ" = (/obj/machinery/door/poddoor/shutters{density = 0; dir = 8; icon_state = "shutter0"; id = "medbayquar"; name = "Medbay Emergency Quarantine Shutters"; opacity = 0},/obj/machinery/door/firedoor,/obj/machinery/atmospherics/pipe/simple/hidden/supply{color = "#4444FF"; dir = 4},/turf/simulated/floor{dir = 4; icon_state = "loadingarea"; tag = "loading"},/area/medical/sleeper)
"btN" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/turf/simulated/floor{icon_state = "white"},/area/medical/chemistry)
"btO" = (/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/structure/disposalpipe/segment,/obj/machinery/atmospherics/pipe/simple/hidden/supply,/turf/simulated/floor{icon_state = "white"},/area/medical/chemistry)
"btP" = (/obj/structure/table,/obj/item/device/radio/intercom{dir = 0; name = "Station Intercom (General)"; pixel_x = -27},/obj/item/weapon/reagent_containers/glass/bottle/stoxin{pixel_x = -6; pixel_y = 10},/obj/item/weapon/reagent_containers/glass/bottle/antitoxin{pixel_x = 5; pixel_y = 5},/obj/item/weapon/reagent_containers/glass/bottle/inaprovaline{pixel_x = 1},/turf/simulated/floor{dir = 8; icon_state = "whiteyellow"},/area/medical/chemistry)
"btQ" = (/turf/simulated/floor{icon_state = "white"},/area/medical/chemistry)
"btR" = (/obj/structure/sign/securearea,/obj/machinery/atmospherics/pipe/simple/hidden/supply,/turf/simulated/wall,/area/rnd/xenobiology)
"btS" = (/turf/simulated/wall/r_wall,/area/rnd/xenobiology)
"btT" = (/obj/machinery/door/firedoor/border_only{dir = 8; name = "Firelock West"},/obj/machinery/door/airlock/research{name = "Toxins Storage"; req_access_txt = "8"},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/simulated/floor,/area/medical/research{name = "Research Division"})
@@ -3809,7 +3809,7 @@
"bvm" = (/obj/machinery/atmospherics/binary/pump{dir = 1},/turf/simulated/floor{icon_state = "floorgrime"},/area/maintenance/incinerator)
"bvn" = (/obj/machinery/atmospherics/portables_connector{dir = 1; name = "Connector Port (Air Supply)"},/obj/machinery/portable_atmospherics/canister/oxygen,/turf/simulated/floor{icon_state = "delivery"},/area/medical/sleeper)
"bvo" = (/obj/machinery/firealarm{dir = 1; pixel_y = -24},/obj/machinery/atmospherics/unary/vent_pump{dir = 8; on = 1},/turf/simulated/floor,/area/medical/sleeper)
"bvp" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/obj/machinery/atmospherics/pipe/simple/hidden/supply{color = "#4444FF"; dir = 4},/turf/simulated/floor{icon_state = "white"},/area/medical/sleeper)
"bvp" = (/obj/machinery/door/airlock/maintenance{name = "Teleporter Maintenance"; req_access_txt = "17"},/obj/structure/sign/securearea{pixel_x = -32; pixel_y = 0},/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/atmospherics/pipe/simple/hidden/supply,/turf/simulated/floor/plating,/area/teleporter)
"bvq" = (/obj/structure/rack{dir = 1},/obj/item/weapon/extinguisher,/obj/item/clothing/head/hardhat/red,/obj/item/device/flashlight,/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/turf/simulated/floor/plating,/area/maintenance/asmaint)
"bvr" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply,/turf/simulated/floor{icon_state = "dark"},/area/medical/biostorage)
"bvs" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/structure/table,/obj/item/weapon/storage/box/lights/mixed,/obj/item/device/flashlight,/obj/item/device/flashlight,/obj/machinery/light_switch{dir = 2; name = "light switch "; pixel_x = 0; pixel_y = 22},/turf/simulated/floor{icon_state = "dark"},/area/medical/biostorage)
@@ -3844,7 +3844,7 @@
"bvV" = (/turf/simulated/floor{dir = 4; icon_state = "whitebluecorner"},/area/medical/research{name = "Research Division"})
"bvW" = (/obj/structure/grille,/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced{dir = 8},/obj/machinery/door/firedoor/border_only{dir = 2},/turf/simulated/shuttle/plating,/area/medical/research{name = "Research Division"})
"bvX" = (/turf/simulated/shuttle/wall{icon_state = "swall_s5"; dir = 2},/area/shuttle/research/station)
"bvY" = (/obj/machinery/door/unpowered/shuttle,/turf/simulated/shuttle/floor,/area/shuttle/research/station)
"bvY" = (/obj/machinery/computer/shuttle_control/research,/turf/simulated/shuttle/floor,/area/shuttle/research/station)
"bvZ" = (/turf/simulated/shuttle/wall{icon_state = "swall_s9"; dir = 2},/area/shuttle/research/station)
"bwa" = (/obj/structure/window/reinforced{dir = 8},/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced,/obj/structure/grille,/obj/structure/sign/securearea{desc = "A warning sign which reads 'EXTERNAL AIRLOCK'"; icon_state = "space"; layer = 4; name = "EXTERNAL AIRLOCK"; pixel_x = 0},/obj/machinery/door/firedoor/border_only{dir = 2},/turf/simulated/floor/plating,/area/quartermaster/storage)
"bwb" = (/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced,/obj/structure/grille,/obj/machinery/door/firedoor/border_only{dir = 2},/turf/simulated/floor/plating,/area/quartermaster/storage)
@@ -3917,7 +3917,7 @@
"bxq" = (/obj/machinery/door/poddoor{density = 0; icon_state = "pdoor0"; id = "Biohazard"; name = "Biohazard Shutter"; opacity = 0},/turf/simulated/floor{icon_state = "white"},/area/medical/research{name = "Research Division"})
"bxr" = (/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/structure/disposalpipe/segment,/obj/machinery/door/airlock/research{name = "Xenobiology Research"; req_access_txt = "47"},/turf/simulated/floor{icon_state = "white"},/area/rnd/xenobiology)
"bxs" = (/obj/effect/decal/cleanable/blood/oil/streak{amount = 0},/turf/simulated/floor/plating,/area/maintenance/asmaint)
"bxt" = (/obj/machinery/door/airlock/external{name = "Shuttle Airlock"; req_access_txt = "65"},/turf/simulated/floor/plating,/area/medical/research{name = "Research Division"})
"bxt" = (/obj/structure/closet/emcloset,/turf/simulated/floor{dir = 4; icon_state = "whitebluecorner"},/area/medical/research{name = "Research Division"})
"bxu" = (/turf/simulated/floor{dir = 8; icon_state = "warning"},/area/quartermaster/storage)
"bxv" = (/obj/machinery/conveyor_switch/oneway{convdir = -1; id = "QMLoad"},/turf/simulated/floor,/area/quartermaster/storage)
"bxw" = (/obj/machinery/atmospherics/unary/vent_pump{dir = 4; on = 1},/turf/simulated/floor,/area/quartermaster/storage)
@@ -3999,11 +3999,11 @@
"byU" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/obj/structure/disposalpipe/segment{dir = 4},/turf/simulated/wall,/area/maintenance/asmaint)
"byV" = (/turf/simulated/wall,/area/maintenance/asmaint2)
"byW" = (/obj/machinery/camera{c_tag = "Research Dock"; dir = 2; network = list("SS13","Research")},/turf/simulated/floor{dir = 2; icon_state = "cmo"},/area/medical/research{name = "Research Division"})
"byX" = (/turf/simulated/floor{dir = 2; icon_state = "cmo"},/area/medical/research{name = "Research Division"})
"byY" = (/obj/machinery/door/airlock/external{name = "Shuttle Airlock"; req_access_txt = "65"},/turf/simulated/floor{icon_state = "white"},/area/medical/research{name = "Research Division"})
"byZ" = (/turf/simulated/floor{dir = 9; icon_state = "warning"},/area/medical/research{name = "Research Division"})
"byX" = (/obj/structure/table,/obj/machinery/embedded_controller/radio/simple_docking_controller{frequency = 1380; id_tag = "research_shuttle"; pixel_x = -8; pixel_y = -25; req_access_txt = "13;65"; tag_door = "research_shuttle_hatch"},/turf/simulated/shuttle/floor,/area/shuttle/research/station)
"byY" = (/obj/machinery/door/airlock/external{frequency = 1380; icon_state = "door_locked"; id_tag = "research_dock_outer"; locked = 1; name = "Shuttle Airlock"; req_access_txt = "13"},/turf/simulated/floor/plating,/area/medical/research{name = "Research Division"})
"byZ" = (/obj/machinery/access_button{command = "cycle_interior"; frequency = 1380; master_tag = "research_dock_airlock"; name = "interior access button"; pixel_x = 25; pixel_y = -25; req_access_txt = "13;65"},/turf/simulated/floor{dir = 2; icon_state = "cmo"},/area/medical/research{name = "Research Division"})
"bza" = (/turf/simulated/floor{dir = 5; icon_state = "warning"},/area/medical/research{name = "Research Division"})
"bzb" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced{dir = 8},/obj/machinery/door/firedoor/border_only{dir = 2},/turf/simulated/floor/plating,/area/medical/research{name = "Research Division"})
"bzb" = (/obj/machinery/atmospherics/unary/vent_pump/high_volume{dir = 2; frequency = 1380; id_tag = "research_dock_pump"},/turf/simulated/floor{dir = 9; icon_state = "warning"},/area/medical/research{name = "Research Division"})
"bzc" = (/obj/machinery/door/poddoor{density = 1; icon_state = "pdoor1"; id = "QMLoaddoor"; name = "Supply Dock Loading Door"; opacity = 1},/obj/machinery/conveyor{dir = 4; id = "QMLoad"},/obj/structure/plasticflaps/mining,/turf/simulated/floor/plating,/area/quartermaster/storage)
"bzd" = (/obj/machinery/conveyor{dir = 4; id = "QMLoad"},/turf/simulated/floor/plating,/area/quartermaster/storage)
"bze" = (/obj/machinery/conveyor{dir = 4; id = "QMLoad"},/obj/machinery/status_display{density = 0; pixel_y = -30; supply_display = 1},/turf/simulated/floor/plating{icon_state = "warnplate"; dir = 1},/area/quartermaster/storage)
@@ -4035,7 +4035,7 @@
"bzE" = (/obj/structure/cable{d1 = 1; d2 = 4; icon_state = "1-4"},/turf/simulated/floor{icon_state = "dark"},/area/turret_protected/ai_upload_foyer)
"bzF" = (/obj/structure/disposalpipe/segment{dir = 2; icon_state = "pipe-c"},/obj/machinery/light/small{dir = 4},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 10},/turf/simulated/floor/plating,/area/engine/engine_eva_maintenance)
"bzG" = (/turf/simulated/wall,/area/medical/cmo)
"bzH" = (/obj/machinery/embedded_controller/radio/airlock_controller{tag_airpump = "eng_eva_pump"; tag_exterior_door = "eng_eva_outer"; frequency = 1379; id_tag = "eng_eva_airlock"; tag_interior_door = "eng_eva_inner"; name = "Engineering Airlock Console"; pixel_y = 25; req_access_txt = "13"; tag_chamber_sensor = "eng_eva_sensor"},/obj/machinery/atmospherics/pipe/manifold/hidden{tag = "icon-manifold-f (EAST)"; icon_state = "manifold-f"; dir = 4},/turf/simulated/floor{icon_state = "floorgrime"},/area/engine/engine_eva_maintenance)
"bzH" = (/obj/machinery/embedded_controller/radio/airlock/airlock_controller{tag_airpump = "eng_eva_pump"; tag_exterior_door = "eng_eva_outer"; frequency = 1379; id_tag = "eng_eva_airlock"; tag_interior_door = "eng_eva_inner"; name = "Engineering Airlock Console"; pixel_y = 25; req_access_txt = "13"; tag_chamber_sensor = "eng_eva_sensor"},/obj/machinery/atmospherics/pipe/manifold/hidden{tag = "icon-manifold-f (EAST)"; icon_state = "manifold-f"; dir = 4},/turf/simulated/floor{icon_state = "floorgrime"},/area/engine/engine_eva_maintenance)
"bzI" = (/obj/machinery/alarm{dir = 1; icon_state = "alarm0"; pixel_y = -22},/obj/machinery/recharge_station,/turf/simulated/floor/bluegrid,/area/comms{name = "\improper Cyborg Station"})
"bzJ" = (/obj/machinery/recharge_station,/turf/simulated/floor/bluegrid,/area/comms{name = "\improper Cyborg Station"})
"bzK" = (/obj/machinery/computer/teleporter,/turf/simulated/floor/plating,/area/teleporter)
@@ -4086,10 +4086,10 @@
"bAD" = (/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced{dir = 4},/obj/machinery/portable_atmospherics/scrubber/huge,/turf/simulated/floor/plating,/area/rnd/mixing)
"bAE" = (/turf/simulated/floor/plating,/area/maintenance/asmaint2)
"bAF" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced{dir = 8},/turf/simulated/floor/plating,/area/maintenance/asmaint2)
"bAG" = (/obj/machinery/light/small{dir = 8},/turf/simulated/floor{icon_state = "white"},/area/medical/research{name = "Research Division"})
"bAH" = (/obj/machinery/alarm{dir = 1; pixel_y = -25},/turf/simulated/floor{dir = 10; icon_state = "warning"},/area/medical/research{name = "Research Division"})
"bAI" = (/obj/machinery/light/small{dir = 4},/turf/simulated/floor{dir = 6; icon_state = "warning"},/area/medical/research{name = "Research Division"})
"bAJ" = (/obj/structure/grille,/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced{dir = 8},/obj/machinery/door/firedoor/border_only{dir = 2},/turf/simulated/floor/plating,/area/medical/research{name = "Research Division"})
"bAG" = (/obj/machinery/door/airlock/external{frequency = 1380; icon_state = "door_locked"; id_tag = "research_dock_inner"; locked = 1; name = "Shuttle Airlock"; req_access_txt = "13"},/turf/simulated/floor{icon_state = "white"},/area/medical/research{name = "Research Division"})
"bAH" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced{dir = 8},/obj/machinery/door/firedoor/border_only{dir = 2},/obj/structure/window/reinforced,/turf/simulated/floor/plating,/area/medical/research{name = "Research Division"})
"bAI" = (/obj/machinery/atmospherics/pipe/simple/hidden{tag = "icon-intact-f (EAST)"; icon_state = "intact-f"; dir = 4},/turf/simulated/floor{dir = 4; icon_state = "whitebluecorner"},/area/medical/research{name = "Research Division"})
"bAJ" = (/obj/machinery/light/small{dir = 8},/obj/machinery/atmospherics/pipe/simple/hidden{dir = 6},/turf/simulated/floor{icon_state = "white"},/area/medical/research{name = "Research Division"})
"bAK" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 8},/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 1},/obj/structure/sign/securearea{desc = "A warning sign which reads 'EXTERNAL AIRLOCK'"; icon_state = "space"; layer = 4; name = "EXTERNAL AIRLOCK"; pixel_x = 0},/obj/machinery/door/firedoor/border_only{dir = 2},/turf/simulated/floor/plating,/area/quartermaster/storage)
"bAL" = (/obj/structure/window/reinforced{dir = 1},/obj/structure/grille,/obj/structure/window/reinforced,/obj/machinery/door/firedoor/border_only{dir = 2},/turf/simulated/floor/plating,/area/quartermaster/storage)
"bAM" = (/obj/structure/window/reinforced{dir = 1},/obj/structure/grille,/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 4},/obj/machinery/door/firedoor/border_only{dir = 2},/turf/simulated/floor/plating,/area/quartermaster/storage)
@@ -4162,7 +4162,7 @@
"bCb" = (/turf/simulated/floor{dir = 2; icon_state = "warnwhite"},/area/crew_quarters/hor)
"bCc" = (/turf/simulated/floor{dir = 6; icon_state = "warnwhite"},/area/crew_quarters/hor)
"bCd" = (/obj/structure/grille,/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced{dir = 8},/turf/simulated/floor/plating,/area/maintenance/asmaint2)
"bCe" = (/obj/structure/closet/emcloset,/turf/simulated/floor{icon_state = "white"},/area/medical/research{name = "Research Division"})
"bCe" = (/obj/machinery/atmospherics/pipe/simple/hidden{tag = "icon-intact-f (EAST)"; icon_state = "intact-f"; dir = 4},/turf/simulated/floor{dir = 2; icon_state = "cmo"},/area/medical/research{name = "Research Division"})
"bCf" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/obj/machinery/alarm{dir = 1; icon_state = "alarm0"; pixel_y = -22},/turf/simulated/floor,/area/hallway/primary/central)
"bCg" = (/obj/structure/lattice,/obj/structure/sign/securearea{desc = "A warning sign which reads 'KEEP CLEAR OF DOCKING AREA'."; name = "KEEP CLEAR: DOCKING AREA"; pixel_y = 32},/turf/space,/area)
"bCh" = (/obj/structure/table,/obj/item/weapon/paper_bin{pixel_x = 1; pixel_y = 9},/turf/simulated/floor,/area/quartermaster/miningdock)
@@ -4383,7 +4383,7 @@
"bGo" = (/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/atmospherics/pipe/simple/hidden/supply{color = "#4444FF"; dir = 4},/turf/simulated/floor{icon_state = "white"},/area/rnd/mixing)
"bGp" = (/turf/simulated/shuttle/wall{icon_state = "swall3"; dir = 2},/area/shuttle/mining/station)
"bGq" = (/obj/structure/table,/turf/simulated/shuttle/floor,/area/shuttle/mining/station)
"bGr" = (/obj/machinery/computer/shuttle_control/research,/turf/simulated/shuttle/floor,/area/shuttle/research/station)
"bGr" = (/obj/machinery/door/poddoor/shutters{density = 0; dir = 8; icon_state = "shutter0"; id = "medbayquar"; name = "Medbay Emergency Quarantine Shutters"; opacity = 0},/obj/machinery/door/firedoor,/obj/machinery/atmospherics/pipe/simple/hidden/supply{color = "#4444FF"; dir = 4},/turf/simulated/floor{dir = 4; icon_state = "loadingarea"; tag = "loading"},/area/medical/sleeper)
"bGs" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced{dir = 8},/obj/machinery/door/firedoor/border_only{dir = 2},/turf/simulated/floor/plating,/area/quartermaster/miningdock)
"bGt" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced,/obj/machinery/door/firedoor/border_only{dir = 2},/turf/simulated/floor/plating,/area/quartermaster/miningdock)
"bGu" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 4},/obj/machinery/door/firedoor/border_only{dir = 2},/turf/simulated/floor/plating,/area/quartermaster/miningdock)
@@ -4509,7 +4509,7 @@
"bIK" = (/obj/machinery/shieldwallgen{req_access = list(55)},/obj/structure/cable{d2 = 2; icon_state = "0-2"; pixel_y = 0},/turf/simulated/floor{icon_state = "white"},/area/rnd/misc_lab)
"bIL" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/obj/structure/cable{d1 = 2; d2 = 8; icon_state = "2-8"},/turf/simulated/floor{icon_state = "warningcorner"; dir = 8},/area/rnd/storage)
"bIM" = (/obj/machinery/light_switch{pixel_y = -23},/obj/structure/cable{icon_state = "0-4"; d2 = 4},/obj/machinery/power/apc{dir = 8; name = "west bump"; pixel_x = -24},/turf/simulated/floor{icon_state = "floorgrime"},/area/rnd/storage)
"bIN" = (/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/structure/disposalpipe/segment,/obj/machinery/atmospherics/pipe/manifold/hidden/supply,/turf/simulated/floor{icon_state = "white"},/area/medical/sleeper)
"bIN" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/obj/machinery/atmospherics/pipe/simple/hidden/supply{color = "#4444FF"; dir = 4},/turf/simulated/floor{icon_state = "white"},/area/medical/sleeper)
"bIO" = (/obj/machinery/door/window/southright{dir = 1; name = "Test Chamber"; req_access_txt = "47"},/obj/machinery/door/window/southright{name = "Test Chamber"; req_access_txt = "47"},/obj/machinery/door/poddoor{density = 0; icon_state = "pdoor0"; id = "misclab"; name = "Test Chamber Blast Doors"; opacity = 0},/turf/simulated/floor{icon_state = "white"},/area/rnd/misc_lab)
"bIP" = (/obj/machinery/door/window/southleft{dir = 1; name = "Test Chamber"; req_access_txt = "47"},/obj/machinery/door/window/southleft{name = "Test Chamber"; req_access_txt = "47"},/obj/machinery/door/poddoor{density = 0; icon_state = "pdoor0"; id = "misclab"; name = "Test Chamber Blast Doors"; opacity = 0},/turf/simulated/floor{icon_state = "white"},/area/rnd/misc_lab)
"bIQ" = (/obj/machinery/door/poddoor{density = 0; icon_state = "pdoor0"; id = "misclab"; name = "Test Chamber Blast Doors"; opacity = 0},/obj/structure/grille,/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced,/turf/simulated/floor{icon_state = "white"},/area/rnd/misc_lab)
@@ -4670,17 +4670,17 @@
"bLP" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply,/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/structure/disposalpipe/segment,/turf/simulated/floor{icon_state = "white"},/area/medical/chemistry)
"bLQ" = (/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 8},/obj/structure/grille,/obj/machinery/door/poddoor/shutters{density = 0; dir = 2; icon_state = "shutter0"; id = "cmooffice"; name = "CMO Office Privacy Shutters"; opacity = 0},/turf/simulated/floor/plating,/area/medical/medbay2)
"bLR" = (/turf/simulated/floor{dir = 2; icon_state = "whiteyellow"},/area/medical/chemistry)
"bLS" = (/obj/machinery/door_control{desc = "A remote control switch for the medbay foyer."; id = "emerg"; name = "Medbay Doors Control"; normaldoorcontrol = 1; pixel_x = 0; pixel_y = 26; range = 6; req_access_txt = "5"},/obj/machinery/atmospherics/pipe/simple/hidden/supply{color = "#4444FF"; dir = 4},/turf/simulated/floor{dir = 5; icon_state = "warning"},/area/medical/sleeper)
"bLT" = (/obj/machinery/door/firedoor,/obj/machinery/atmospherics/pipe/simple/hidden/supply{color = "#4444FF"; dir = 4},/turf/simulated/floor{icon_state = "white"},/area/medical/sleeper)
"bLU" = (/obj/machinery/light{icon_state = "tube1"; dir = 4},/obj/structure/sign/redcross{desc = "The Star of Life, a symbol of Medical Aid."; icon_state = "lifestar"; name = "Medbay"; pixel_x = 32},/obj/machinery/atmospherics/pipe/simple/hidden/supply,/turf/simulated/floor,/area/hallway/primary/central)
"bLS" = (/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/structure/disposalpipe/segment,/obj/machinery/atmospherics/pipe/manifold/hidden/supply,/turf/simulated/floor{icon_state = "white"},/area/medical/sleeper)
"bLT" = (/obj/machinery/door_control{desc = "A remote control switch for the medbay foyer."; id = "emerg"; name = "Medbay Doors Control"; normaldoorcontrol = 1; pixel_x = 0; pixel_y = 26; range = 6; req_access_txt = "5"},/obj/machinery/atmospherics/pipe/simple/hidden/supply{color = "#4444FF"; dir = 4},/turf/simulated/floor{dir = 5; icon_state = "warning"},/area/medical/sleeper)
"bLU" = (/obj/machinery/door/firedoor,/obj/machinery/atmospherics/pipe/simple/hidden/supply{color = "#4444FF"; dir = 4},/turf/simulated/floor{icon_state = "white"},/area/medical/sleeper)
"bLV" = (/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 4},/obj/structure/grille,/obj/machinery/door/poddoor/shutters{density = 0; dir = 2; icon_state = "shutter0"; id = "cmooffice"; name = "CMO Office Privacy Shutters"; opacity = 0},/turf/simulated/floor/plating,/area/medical/medbay2)
"bLW" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply,/turf/simulated/floor{icon_state = "white"},/area/medical/medbay3)
"bLX" = (/obj/item/device/radio/intercom{dir = 0; name = "Station Intercom (General)"; pixel_x = -27},/obj/machinery/disposal,/obj/structure/disposalpipe/trunk{dir = 1},/turf/simulated/floor{tag = "icon-whiteblue (WEST)"; icon_state = "whiteblue"; dir = 8},/area/medical/medbay3)
"bLY" = (/obj/machinery/firealarm{dir = 8; pixel_x = -24},/obj/machinery/atmospherics/pipe/simple/hidden/supply,/turf/simulated/floor{icon_state = "white"},/area/medical/medbay2)
"bLZ" = (/obj/machinery/light{dir = 4; icon_state = "tube1"},/obj/machinery/atmospherics/pipe/simple/hidden/supply,/obj/structure/disposalpipe/segment,/turf/simulated/floor{tag = "icon-whiteblue (EAST)"; icon_state = "whiteblue"; dir = 4},/area/medical/medbay2)
"bMa" = (/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/hologram/holopad,/obj/structure/disposalpipe/segment{dir = 8; icon_state = "pipe-c"},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/turf/simulated/floor{icon_state = "white"},/area/medical/research{name = "Research Division"})
"bMa" = (/obj/machinery/light{icon_state = "tube1"; dir = 4},/obj/structure/sign/redcross{desc = "The Star of Life, a symbol of Medical Aid."; icon_state = "lifestar"; name = "Medbay"; pixel_x = 32},/obj/machinery/atmospherics/pipe/simple/hidden/supply,/turf/simulated/floor,/area/hallway/primary/central)
"bMb" = (/obj/machinery/status_display{density = 0; layer = 4; pixel_x = 32; pixel_y = 0},/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/structure/disposalpipe/segment,/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/turf/simulated/floor,/area/crew_quarters/heads)
"bMc" = (/obj/machinery/door/window/eastleft{name = "Mail"; req_access_txt = "50"},/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 1},/turf/simulated/floor{icon_state = "delivery"},/area/quartermaster/office)
"bMc" = (/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/hologram/holopad,/obj/structure/disposalpipe/segment{dir = 8; icon_state = "pipe-c"},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/turf/simulated/floor{icon_state = "white"},/area/medical/research{name = "Research Division"})
"bMd" = (/obj/structure/window/shuttle,/obj/structure/grille,/turf/simulated/shuttle/plating,/area/shuttle/research/station)
"bMe" = (/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/structure/disposalpipe/segment,/obj/structure/cable{d1 = 2; d2 = 8; icon_state = "2-8"},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/turf/simulated/floor,/area/crew_quarters/heads)
"bMf" = (/obj/machinery/light_switch{pixel_x = 27},/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/atmospherics/pipe/manifold/hidden/supply{dir = 4},/turf/simulated/floor,/area/teleporter)
@@ -4688,9 +4688,9 @@
"bMh" = (/obj/structure/reagent_dispensers/watertank,/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/turf/simulated/floor/plating,/area/storage/emergency3)
"bMi" = (/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/structure/disposalpipe/segment,/obj/machinery/atmospherics/pipe/manifold/hidden/supply{dir = 4},/turf/simulated/floor/plating,/area/storage/emergency3)
"bMj" = (/obj/machinery/portable_atmospherics/canister/air,/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/turf/simulated/floor/plating,/area/storage/emergency3)
"bMk" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/turf/simulated/wall,/area/quartermaster/office)
"bMk" = (/obj/machinery/door/window/eastleft{name = "Mail"; req_access_txt = "50"},/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 1},/turf/simulated/floor{icon_state = "delivery"},/area/quartermaster/office)
"bMl" = (/obj/machinery/space_heater,/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/turf/simulated/floor/plating,/area/storage/emergency3)
"bMm" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 9; pixel_y = 0},/turf/simulated/floor/plating,/area/maintenance/port)
"bMm" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/turf/simulated/wall,/area/quartermaster/office)
"bMn" = (/obj/machinery/atmospherics/unary/vent_scrubber{dir = 4; on = 1},/obj/structure/table,/obj/item/weapon/storage/firstaid/fire{pixel_x = 5; pixel_y = 5},/obj/item/weapon/storage/firstaid/fire,/turf/simulated/floor{icon_state = "white"},/area/medical/chemistry)
"bMo" = (/obj/machinery/atmospherics/pipe/manifold/hidden/supply{dir = 8},/turf/simulated/floor{dir = 9; icon_state = "whitehall"},/area/medical/research{name = "Research Division"})
"bMp" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/turf/simulated/floor{icon_state = "white"},/area/medical/research{name = "Research Division"})
@@ -4750,7 +4750,7 @@
"bNr" = (/obj/item/weapon/table_parts,/turf/simulated/floor{icon_state = "floorgrime"},/area/medical/genetics)
"bNs" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/turf/simulated/wall/r_wall,/area/crew_quarters/heads)
"bNt" = (/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_x = 0},/obj/structure/cable{d1 = 1; d2 = 4; icon_state = "1-4"},/obj/item/weapon/cigbutt,/turf/simulated/floor/plating,/area/storage/emergency3)
"bNu" = (/obj/structure/disposaloutlet{dir = 1},/obj/structure/disposalpipe/trunk,/turf/simulated/floor/plating,/area/quartermaster/office)
"bNu" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 9; pixel_y = 0},/turf/simulated/floor/plating,/area/maintenance/port)
"bNv" = (/obj/structure/table,/obj/item/weapon/storage/box/bodybags{pixel_x = -1; pixel_y = -2},/obj/structure/cable{icon_state = "0-2"; pixel_y = 1; d2 = 2},/obj/machinery/power/apc{dir = 8; name = "west bump"; pixel_x = -24},/turf/simulated/floor{icon_state = "white"},/area/medical/genetics_cloning)
"bNw" = (/obj/machinery/alarm{dir = 8; icon_state = "alarm0"; pixel_x = 24},/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/structure/disposalpipe/segment,/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/turf/simulated/floor,/area/crew_quarters/heads)
"bNx" = (/obj/machinery/atmospherics/unary/vent_scrubber{dir = 4; on = 1},/turf/simulated/floor,/area/hallway/primary/central)
@@ -4815,13 +4815,13 @@
"bOE" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 10},/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_x = 0},/obj/structure/disposalpipe/segment{dir = 2; icon_state = "pipe-c"},/turf/simulated/floor{icon_state = "white"},/area/medical/medbay2)
"bOF" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply,/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_x = 0},/obj/structure/disposalpipe/junction{icon_state = "pipe-j2"; dir = 4},/turf/simulated/floor{icon_state = "white"},/area/medical/medbay2)
"bOG" = (/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_x = 0},/obj/structure/cable{d1 = 1; d2 = 4; icon_state = "1-4"},/obj/structure/cable{d1 = 1; d2 = 8; icon_state = "1-8"},/obj/structure/disposalpipe/junction{icon_state = "pipe-j2"; dir = 4},/obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers,/turf/simulated/floor{icon_state = "white"},/area/medical/medbay2)
"bOH" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/turf/simulated/floor{icon_state = "floorgrime"},/area/quartermaster/storage)
"bOH" = (/obj/structure/disposaloutlet{dir = 1},/obj/structure/disposalpipe/trunk,/turf/simulated/floor/plating,/area/quartermaster/office)
"bOI" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/turf/simulated/wall/r_wall,/area/medical/chemistry)
"bOJ" = (/obj/structure/closet/crate/internals,/turf/simulated/floor{icon_state = "floorgrime"},/area/quartermaster/storage)
"bOK" = (/obj/structure/closet/crate/medical,/turf/simulated/floor{icon_state = "floorgrime"},/area/quartermaster/storage)
"bOL" = (/obj/machinery/alarm{dir = 4; icon_state = "alarm0"; pixel_x = -22},/turf/simulated/floor{icon_state = "floorgrime"},/area/quartermaster/storage)
"bOM" = (/obj/structure/table/reinforced,/obj/item/weapon/reagent_containers/dropper,/obj/machinery/light{dir = 8},/obj/machinery/alarm{dir = 4; icon_state = "alarm0"; pixel_x = -22},/turf/simulated/floor{icon_state = "white"},/area/medical/chemistry)
"bON" = (/obj/machinery/door/airlock/maintenance{name = "Captain's Office Maintenance"; req_access_txt = "20"},/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/atmospherics/pipe/simple/hidden/supply,/turf/simulated/floor/plating,/area/crew_quarters/captain)
"bOJ" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/turf/simulated/floor{icon_state = "floorgrime"},/area/quartermaster/storage)
"bOK" = (/obj/structure/closet/crate/internals,/turf/simulated/floor{icon_state = "floorgrime"},/area/quartermaster/storage)
"bOL" = (/obj/structure/closet/crate/medical,/turf/simulated/floor{icon_state = "floorgrime"},/area/quartermaster/storage)
"bOM" = (/obj/machinery/alarm{dir = 4; icon_state = "alarm0"; pixel_x = -22},/turf/simulated/floor{icon_state = "floorgrime"},/area/quartermaster/storage)
"bON" = (/obj/machinery/alarm{dir = 4; icon_state = "alarm0"; pixel_x = -22},/turf/simulated/floor{dir = 8; icon_state = "browncorner"},/area/hallway/primary/central)
"bOO" = (/obj/machinery/computer/area_atmos,/obj/machinery/light_switch{pixel_y = 28},/obj/machinery/atmospherics/pipe/simple/hidden/supply,/turf/simulated/floor{icon_state = "bot"},/area/rnd/storage)
"bOP" = (/turf/simulated/floor{icon_state = "warningcorner"; dir = 2},/area/rnd/storage)
"bOQ" = (/obj/structure/cable{d1 = 1; d2 = 8; icon_state = "1-8"},/turf/simulated/floor/plating,/area/medical/genetics)
@@ -4967,7 +4967,7 @@
"bRA" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/turf/simulated/wall/r_wall,/area/server)
"bRB" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/obj/structure/disposalpipe/segment{dir = 4},/turf/simulated/floor{dir = 1; icon_state = "whiteredcorner"},/area/medical/research{name = "Research Division"})
"bRC" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/obj/structure/disposalpipe/segment{dir = 4},/turf/simulated/floor{dir = 1; icon_state = "whitered"},/area/medical/research{name = "Research Division"})
"bRD" = (/obj/structure/table/reinforced,/obj/item/weapon/storage/box/syringes,/turf/simulated/floor{icon_state = "white"},/area/medical/chemistry)
"bRD" = (/obj/structure/table/reinforced,/obj/item/weapon/reagent_containers/dropper,/obj/machinery/light{dir = 8},/obj/machinery/alarm{dir = 4; icon_state = "alarm0"; pixel_x = -22},/turf/simulated/floor{icon_state = "white"},/area/medical/chemistry)
"bRE" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 6},/obj/machinery/door/airlock/highsecurity{name = "Messaging Server"; req_access_txt = "30"},/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_x = 0},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/turf/simulated/floor{icon_state = "dark"},/area/server)
"bRF" = (/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_x = 0},/obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers{dir = 1},/turf/simulated/floor{icon_state = "dark"},/area/server)
"bRG" = (/obj/structure/cable{d1 = 1; d2 = 4; icon_state = "1-4"},/obj/machinery/atmospherics/pipe/simple/hidden/supply{req_access_txt = "0"},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/turf/simulated/floor{icon_state = "dark"},/area/server)
@@ -5071,14 +5071,14 @@
"bTA" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 8},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/turf/simulated/floor/plating,/area/maintenance/port)
"bTB" = (/turf/simulated/wall,/area/maintenance/incinerator)
"bTC" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/obj/structure/disposaloutlet{dir = 4},/obj/structure/disposalpipe/trunk{dir = 8},/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced{dir = 8},/turf/simulated/floor/plating,/area/quartermaster/office)
"bTD" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 6},/turf/simulated/floor,/area/quartermaster/office)
"bTD" = (/obj/machinery/door/airlock/maintenance{name = "Captain's Office Maintenance"; req_access_txt = "20"},/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/atmospherics/pipe/simple/hidden/supply,/turf/simulated/floor/plating,/area/crew_quarters/captain)
"bTE" = (/obj/structure/cable{d2 = 8; icon_state = "0-8"},/obj/machinery/power/apc{dir = 1; name = "north bump"; pixel_x = 0; pixel_y = 24},/turf/simulated/floor/plating,/area/storage/emergency)
"bTF" = (/obj/machinery/light{dir = 1},/obj/machinery/door/firedoor,/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_x = 0},/obj/item/device/radio/intercom{broadcasting = 0; name = "Station Intercom (General)"; pixel_y = 20},/turf/simulated/floor{tag = "icon-whiteblue (NORTH)"; icon_state = "whiteblue"; dir = 1},/area/medical/medbay2)
"bTG" = (/obj/machinery/door/poddoor{density = 0; icon_state = "pdoor0"; id = "Biohazard"; name = "Biohazard Shutter"; opacity = 0},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/turf/simulated/floor{icon_state = "white"},/area/medical/research{name = "Research Division"})
"bTH" = (/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; pixel_y = 0},/obj/structure/disposalpipe/segment,/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/turf/simulated/floor/plating,/area/maintenance/port)
"bTI" = (/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/alarm{dir = 4; icon_state = "alarm0"; pixel_x = -22},/turf/simulated/floor/plating,/area/storage/emergency)
"bTJ" = (/obj/structure/disposalpipe/segment{dir = 8; icon_state = "pipe-c"},/obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers{dir = 1},/turf/simulated/wall,/area/quartermaster/office)
"bTK" = (/obj/machinery/camera/xray{c_tag = "Virology Access"; network = list("SS13","Medical")},/obj/structure/closet/wardrobe/virology_white,/obj/structure/cable{d2 = 8; icon_state = "0-8"},/obj/machinery/alarm{dir = 8; icon_state = "alarm0"; pixel_x = 24},/obj/machinery/power/apc{dir = 1; name = "north bump"; pixel_x = 0; pixel_y = 24},/turf/simulated/floor{icon_state = "warnwhite"; dir = 5},/area/medical/virologyaccess)
"bTK" = (/obj/structure/table/reinforced,/obj/item/weapon/storage/box/syringes,/turf/simulated/floor{icon_state = "white"},/area/medical/chemistry)
"bTL" = (/obj/structure/stool/bed/chair{dir = 4},/obj/effect/landmark/start{name = "Cargo Technician"},/obj/machinery/atmospherics/pipe/simple/hidden/supply,/turf/simulated/floor,/area/quartermaster/office)
"bTM" = (/obj/structure/disposalpipe/segment{dir = 8; icon_state = "pipe-c"},/obj/structure/cable{d1 = 1; d2 = 8; icon_state = "1-8"},/obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers,/turf/simulated/floor/plating,/area/maintenance/port)
"bTN" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/turf/simulated/wall,/area/quartermaster/storage)
@@ -5104,7 +5104,7 @@
"bUh" = (/turf/simulated/floor/engine{name = "vacuum floor"; nitrogen = 0.01; oxygen = 0.01},/area/atmos)
"bUi" = (/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; pixel_y = 0},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/obj/structure/disposalpipe/sortjunction{dir = 1; icon_state = "pipe-j2s"; sortType = 1},/obj/structure/cable{d1 = 2; d2 = 8; icon_state = "2-8"},/turf/simulated/floor/plating,/area/maintenance/port)
"bUj" = (/obj/machinery/door/airlock/external{frequency = 1379; icon_state = "door_locked"; id_tag = "virology_inner"; locked = 1; name = "Engineering External Access"; req_access = null; req_access_txt = "13"},/turf/simulated/floor/plating,/area/maintenance/asmaint)
"bUk" = (/obj/machinery/alarm{dir = 4; icon_state = "alarm0"; pixel_x = -22},/turf/simulated/floor{dir = 8; icon_state = "browncorner"},/area/hallway/primary/central)
"bUk" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 6},/turf/simulated/floor,/area/quartermaster/office)
"bUl" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/turf/simulated/floor/plating,/area/maintenance/port)
"bUm" = (/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; pixel_y = 0},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/turf/simulated/floor/plating,/area/maintenance/port)
"bUn" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/mob/living/simple_animal/mouse,/turf/simulated/floor/plating,/area/maintenance/port)
@@ -5118,12 +5118,16 @@
"bUv" = (/turf/simulated/floor{icon_state = "warnwhite"; dir = 1},/area/rnd/lab)
"bUw" = (/obj/machinery/atmospherics/unary/vent_pump{on = 1},/turf/simulated/floor{icon_state = "warnwhite"; dir = 1},/area/rnd/lab)
"bUx" = (/obj/structure/rack{dir = 1},/obj/item/weapon/extinguisher,/obj/item/clothing/head/hardhat/red,/obj/item/device/flashlight,/turf/simulated/floor/plating,/area/maintenance/asmaint)
"bUy" = (/obj/structure/table,/obj/item/weapon/storage/box/matches,/obj/item/weapon/storage/fancy/cigarettes,/obj/machinery/light/small{dir = 8},/obj/item/weapon/deck,/turf/simulated/floor/plating,/area/engine/drone_fabrication)
"bUz" = (/obj/structure/disposalpipe/segment,/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/simulated/floor{dir = 4; icon_state = "warnwhitecorner"},/area/rnd/lab)
"bUA" = (/obj/machinery/newscaster{pixel_x = -27; pixel_y = 1},/turf/simulated/floor{icon_state = "warnwhite"; dir = 1},/area/rnd/lab)
"bUB" = (/obj/machinery/camera/xray{c_tag = "Virology Access"; network = list("SS13","Medical")},/obj/structure/closet/wardrobe/virology_white,/obj/structure/cable{d2 = 8; icon_state = "0-8"},/obj/machinery/alarm{dir = 8; icon_state = "alarm0"; pixel_x = 24},/obj/machinery/power/apc{dir = 1; name = "north bump"; pixel_x = 0; pixel_y = 24},/turf/simulated/floor{icon_state = "warnwhite"; dir = 5},/area/medical/virologyaccess)
"bUC" = (/obj/machinery/door/airlock/external{frequency = 1380; icon_state = "door_locked"; id_tag = "research_outpost_hatch"; locked = 1; name = "Research Outpost Dock Airlock"; req_access_txt = "13"},/obj/machinery/door/firedoor/border_only{dir = 2},/turf/simulated/floor/plating,/area/research_outpost/entry)
"bUD" = (/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/atmospherics/pipe/manifold/hidden/supply{dir = 4},/turf/simulated/floor/plating,/area/crew_quarters/captain)
"bUE" = (/obj/machinery/door/airlock/command{name = "Head of Personnel"; req_access = null; req_access_txt = "57"},/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/structure/disposalpipe/segment,/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/turf/simulated/floor,/area/crew_quarters/heads)
"bUF" = (/obj/structure/table,/obj/item/weapon/stock_parts/manipulator,/obj/item/weapon/stock_parts/capacitor,/obj/item/weapon/stock_parts/capacitor,/obj/item/weapon/stock_parts/manipulator,/obj/item/weapon/stock_parts/micro_laser,/obj/item/weapon/stock_parts/micro_laser,/obj/machinery/alarm{dir = 8; icon_state = "alarm0"; pixel_x = 24},/turf/simulated/floor{icon_state = "white"},/area/rnd/lab)
"bUG" = (/obj/structure/disposalpipe/segment,/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/simulated/floor{dir = 8; icon_state = "warnwhite"},/area/rnd/lab)
"bUH" = (/obj/machinery/embedded_controller/radio/simple_docking_controller{frequency = 1380; id_tag = "research_outpost_dock"; pixel_x = 0; pixel_y = 30; req_access_txt = "13;65"; tag_door = "research_outpost_hatch"},/turf/simulated/floor,/area/research_outpost/entry)
"bUI" = (/obj/machinery/r_n_d/circuit_imprinter,/obj/item/weapon/reagent_containers/glass/beaker/sulphuric,/turf/simulated/floor,/area/rnd/lab)
"bUJ" = (/obj/effect/landmark/start{name = "Scientist"},/turf/simulated/floor,/area/rnd/lab)
"bUK" = (/obj/machinery/atmospherics/valve,/turf/simulated/floor/plating,/area/maintenance/asmaint2)
@@ -5300,7 +5304,6 @@
"bYj" = (/obj/machinery/door/airlock/maintenance_hatch{name = "SMES Access"; req_access_txt = "11"},/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_x = 0},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/turf/simulated/floor,/area/engine/engine_monitoring)
"bYk" = (/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_x = 0},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/turf/simulated/floor,/area/engine/engine_monitoring)
"bYl" = (/obj/structure/cable,/obj/structure/cable{d2 = 2; icon_state = "0-2"; pixel_y = 0},/obj/machinery/power/smes,/obj/structure/sign/securearea{desc = "A warning sign which reads 'HIGH VOLTAGE'"; icon_state = "shock"; name = "HIGH VOLTAGE"; pixel_x = -32; pixel_y = 0},/turf/simulated/floor{icon_state = "vault"; dir = 8},/area/engine/engine_smes)
"bYm" = (/obj/structure/table,/obj/item/weapon/storage/box/matches,/obj/item/weapon/storage/fancy/cigarettes,/obj/machinery/light/small{dir = 8},/obj/item/weapon/deck,/turf/simulated/floor/plating,/area/engine/drone_fabrication)
"bYn" = (/obj/item/stack/rods{amount = 10},/turf/space,/area)
"bYo" = (/turf/simulated/wall/r_wall,/area/engine/engine_airlock)
"bYp" = (/turf/simulated/floor,/area/hallway/primary/aft)
@@ -5315,7 +5318,7 @@
"bYy" = (/obj/structure/grille,/obj/structure/grille,/turf/simulated/wall/r_wall,/area/atmos)
"bYz" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 9; pixel_y = 0},/obj/structure/closet/emcloset,/turf/simulated/floor/plating,/area/engine/engine_airlock)
"bYA" = (/obj/machinery/atmospherics/binary/dp_vent_pump/high_volume{dir = 8; frequency = 1379; id = "engine_airlock_pump"},/turf/simulated/floor/plating,/area/engine/engine_airlock)
"bYB" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 5},/obj/machinery/embedded_controller/radio/advanced_airlock_controller{id_tag = "engine_room_airlock"; name = "Engine Room Airlock"; pixel_x = -24; tag_airpump = "engine_airlock_pump"; tag_chamber_sensor = "eng_al_c_snsr"; tag_exterior_door = "engine_airlock_exterior"; tag_exterior_sensor = "eng_al_ext_snsr"; tag_interior_door = "engine_airlock_interior"; tag_interior_sensor = "eng_al_int_snsr"},/turf/simulated/floor/plating,/area/engine/engine_airlock)
"bYB" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 5},/obj/machinery/embedded_controller/radio/airlock/advanced_airlock_controller{id_tag = "engine_room_airlock"; name = "Engine Room Airlock"; pixel_x = -24; tag_airpump = "engine_airlock_pump"; tag_chamber_sensor = "eng_al_c_snsr"; tag_exterior_door = "engine_airlock_exterior"; tag_exterior_sensor = "eng_al_ext_snsr"; tag_interior_door = "engine_airlock_interior"; tag_interior_sensor = "eng_al_int_snsr"},/turf/simulated/floor/plating,/area/engine/engine_airlock)
"bYC" = (/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/structure/stool/bed/chair/office/dark,/obj/effect/landmark/start{name = "Station Engineer"},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/turf/simulated/floor,/area/engine/engine_monitoring)
"bYD" = (/obj/structure/stool/bed/chair/office/dark,/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/effect/landmark/start{name = "Station Engineer"},/obj/machinery/atmospherics/pipe/simple/hidden/supply,/turf/simulated/floor,/area/engine/engine_monitoring)
"bYE" = (/obj/structure/table/reinforced,/obj/machinery/door_control{desc = "A remote control-switch for the engine control room blast doors."; id = "EngineBlast"; name = "Engine Room Blast Doors"; pixel_x = 0; pixel_y = 0; req_access_txt = "10"},/turf/simulated/floor,/area/engine/engine_monitoring)
@@ -5976,7 +5979,7 @@
"clj" = (/obj/machinery/atmospherics/pipe/manifold4w/visible,/turf/simulated/floor,/area/atmos)
"clk" = (/obj/structure/disposalpipe/segment,/turf/simulated/floor/plating/airless,/area)
"cll" = (/obj/machinery/power/port_gen/pacman{anchored = 1},/turf/simulated/floor/plating,/area/engine/storage_hard)
"clm" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/turf/simulated/floor{dir = 4; icon_state = "whitebluecorner"},/area/medical/research{name = "Research Division"})
"clm" = (/obj/machinery/atmospherics/pipe/manifold/hidden,/obj/machinery/airlock_sensor{frequency = 1380; id_tag = "research_dock_sensor"; pixel_x = 0; pixel_y = -25},/turf/simulated/floor{dir = 10; icon_state = "warning"},/area/medical/research{name = "Research Division"})
"cln" = (/obj/machinery/atmospherics/pipe/manifold/visible{tag = "icon-manifold (NORTH)"; icon_state = "manifold"; dir = 1},/turf/simulated/floor,/area/atmos)
"clo" = (/obj/machinery/atmospherics/pipe/simple/visible/yellow{dir = 4},/obj/machinery/door/airlock/atmos{name = "Atmospherics Storage"; req_access_txt = "24"},/obj/machinery/door/firedoor/border_only{dir = 1; layer = 2.4; name = "Engineering Firelock"},/turf/simulated/floor,/area/atmos)
"clp" = (/obj/machinery/atmospherics/pipe/simple/visible/yellow{dir = 4},/obj/machinery/atmospherics/pipe/simple/visible/scrubbers,/turf/simulated/floor,/area/atmos)
@@ -6006,7 +6009,7 @@
"clN" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 8},/obj/machinery/door/poddoor{density = 0; icon_state = "pdoor0"; id = "xenobio3"; name = "Containment Blast Doors"; opacity = 0},/obj/structure/cable{icon_state = "0-4"; d2 = 4},/turf/simulated/floor/plating,/area/rnd/xenobiology)
"clO" = (/obj/structure/table/reinforced,/obj/machinery/door_control{id = "xenobio3"; name = "Containment Blast Doors"; pixel_x = 0; pixel_y = 4; req_access_txt = "55"},/obj/structure/window/reinforced{dir = 1},/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_x = 0},/turf/simulated/floor{dir = 6; icon_state = "warning"},/area/rnd/xenobiology)
"clP" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/obj/structure/cable{d1 = 2; d2 = 8; icon_state = "2-8"},/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/simulated/floor{icon_state = "white"},/area/rnd/xenobiology)
"clQ" = (/obj/machinery/embedded_controller/radio/access_controller{tag_exterior_door = "xeno_airlock_exterior"; id_tag = "xeno_airlock_control"; tag_interior_door = "xeno_airlock_interior"; name = "Xenobiology Access Console"; pixel_x = 8; pixel_y = 22},/obj/machinery/atmospherics/pipe/simple/hidden/supply,/obj/machinery/light_switch{pixel_x = -6; pixel_y = 26},/turf/simulated/floor{dir = 4; icon_state = "whitegreencorner"},/area/rnd/xenobiology)
"clQ" = (/obj/machinery/embedded_controller/radio/airlock/access_controller{tag_exterior_door = "xeno_airlock_exterior"; id_tag = "xeno_airlock_control"; tag_interior_door = "xeno_airlock_interior"; name = "Xenobiology Access Console"; pixel_x = 8; pixel_y = 22},/obj/machinery/atmospherics/pipe/simple/hidden/supply,/obj/machinery/light_switch{pixel_x = -6; pixel_y = 26},/turf/simulated/floor{dir = 4; icon_state = "whitegreencorner"},/area/rnd/xenobiology)
"clR" = (/obj/machinery/requests_console{department = "Science"; departmentType = 2; name = "Science Requests Console"; pixel_x = 0; pixel_y = 30},/obj/machinery/camera{c_tag = "Xenobiology Module North"; dir = 2; network = list("SS13","Research"); pixel_x = 0},/turf/simulated/floor{icon_state = "white"},/area/rnd/xenobiology)
"clS" = (/obj/structure/morgue{tag = "icon-morgue1 (WEST)"; icon_state = "morgue1"; dir = 8},/turf/simulated/floor{dir = 5; icon_state = "blue"},/area/medical/morgue)
"clT" = (/obj/machinery/atmospherics/pipe/manifold/visible{dir = 4},/turf/simulated/floor,/area/atmos)
@@ -6274,7 +6277,7 @@
"cqV" = (/obj/machinery/light{dir = 1},/obj/structure/stool,/turf/simulated/floor{tag = "icon-whiteblue (NORTH)"; icon_state = "whiteblue"; dir = 1},/area/medical/reception)
"cqW" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/obj/structure/sign/pods,/turf/simulated/wall/r_wall,/area/engine/engine_eva)
"cqX" = (/obj/structure/rack{dir = 8; layer = 2.6},/obj/item/clothing/shoes/magboots,/obj/item/clothing/suit/space/rig,/obj/item/clothing/mask/breath,/obj/item/clothing/head/helmet/space/rig,/obj/machinery/light{dir = 1},/obj/structure/window/reinforced{dir = 8},/obj/machinery/door/window/southleft{name = "Engineering Hardsuits"; req_access_txt = "11"},/turf/simulated/floor,/area/engine/engine_eva)
"cqY" = (/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; pixel_y = 0},/obj/machinery/embedded_controller/radio/airlock_controller{tag_airpump = "solar_xeno_pump"; tag_exterior_door = "solar_xeno_outer"; frequency = 1379; id_tag = "solar_xeno_airlock"; tag_interior_door = "solar_xeno_inner"; pixel_x = 25; req_access_txt = "13"; tag_chamber_sensor = "solar_xeno_sensor"},/obj/machinery/airlock_sensor{frequency = 1379; id_tag = "solar_xeno_sensor"; pixel_x = 25; pixel_y = 12},/obj/machinery/atmospherics/unary/vent_pump/high_volume{dir = 1; frequency = 1379; id_tag = "solar_xeno_pump"},/turf/simulated/floor/plating,/area/maintenance/starboardsolar)
"cqY" = (/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; pixel_y = 0},/obj/machinery/embedded_controller/radio/airlock/airlock_controller{tag_airpump = "solar_xeno_pump"; tag_exterior_door = "solar_xeno_outer"; frequency = 1379; id_tag = "solar_xeno_airlock"; tag_interior_door = "solar_xeno_inner"; pixel_x = 25; req_access_txt = "13"; tag_chamber_sensor = "solar_xeno_sensor"},/obj/machinery/airlock_sensor{frequency = 1379; id_tag = "solar_xeno_sensor"; pixel_x = 25; pixel_y = 12},/obj/machinery/atmospherics/unary/vent_pump/high_volume{dir = 1; frequency = 1379; id_tag = "solar_xeno_pump"},/turf/simulated/floor/plating,/area/maintenance/starboardsolar)
"cqZ" = (/obj/machinery/atmospherics/unary/outlet_injector{dir = 2; frequency = 1441; icon_state = "on"; id = "n2_in"; on = 1},/turf/simulated/floor/engine{name = "n2 floor"; nitrogen = 100000; oxygen = 0},/area/atmos)
"cra" = (/obj/machinery/atmospherics/unary/vent_pump{dir = 2; external_pressure_bound = 0; frequency = 1441; icon_state = "in"; id_tag = "n2_out"; initialize_directions = 1; internal_pressure_bound = 4000; on = 1; pressure_checks = 2; pump_direction = 0},/turf/simulated/floor/engine{name = "n2 floor"; nitrogen = 100000; oxygen = 0},/area/atmos)
"crb" = (/obj/machinery/atmospherics/unary/outlet_injector{dir = 2; frequency = 1441; icon_state = "on"; id = "o2_in"; on = 1},/turf/simulated/floor/engine{name = "o2 floor"; nitrogen = 0; oxygen = 100000},/area/atmos)
@@ -6820,7 +6823,7 @@
"cBv" = (/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/structure/cable{d1 = 2; d2 = 8; icon_state = "2-8"},/obj/machinery/access_button{command = "cycle_interior"; frequency = 1379; layer = 3.3; master_tag = "robotics_solar_airlock"; name = "interior access button"; pixel_x = -25; pixel_y = -25; req_access_txt = "13"},/obj/machinery/atmospherics/pipe/simple/visible{tag = "icon-intact (NORTHWEST)"; icon_state = "intact"; dir = 9},/turf/simulated/floor/plating,/area/maintenance/portsolar)
"cBw" = (/obj/structure/closet/emcloset,/turf/unsimulated/floor{icon = 'icons/turf/shuttle.dmi'; icon_state = "floor"},/area/centcom/evac)
"cBx" = (/obj/machinery/portable_atmospherics/canister/oxygen,/turf/simulated/shuttle/plating,/area/centcom/evac)
"cBy" = (/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/machinery/atmospherics/unary/vent_pump/high_volume{dir = 4; frequency = 1379; id_tag = "robotics_solar_pump"},/obj/machinery/embedded_controller/radio/airlock_controller{tag_airpump = "robotics_solar_pump"; tag_exterior_door = "robotics_solar_outer"; frequency = 1379; id_tag = "robotics_solar_airlock"; tag_interior_door = "robotics_solar_inner"; layer = 3.3; pixel_x = 0; pixel_y = -25; req_access_txt = "13"; tag_chamber_sensor = "robotics_solar_sensor"},/obj/machinery/airlock_sensor{frequency = 1379; id_tag = "robotics_solar_sensor"; layer = 3.3; pixel_x = 12; pixel_y = -25},/turf/simulated/floor/plating,/area/maintenance/portsolar)
"cBy" = (/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/machinery/atmospherics/unary/vent_pump/high_volume{dir = 4; frequency = 1379; id_tag = "robotics_solar_pump"},/obj/machinery/embedded_controller/radio/airlock/airlock_controller{tag_airpump = "robotics_solar_pump"; tag_exterior_door = "robotics_solar_outer"; frequency = 1379; id_tag = "robotics_solar_airlock"; tag_interior_door = "robotics_solar_inner"; layer = 3.3; pixel_x = 0; pixel_y = -25; req_access_txt = "13"; tag_chamber_sensor = "robotics_solar_sensor"},/obj/machinery/airlock_sensor{frequency = 1379; id_tag = "robotics_solar_sensor"; layer = 3.3; pixel_x = 12; pixel_y = -25},/turf/simulated/floor/plating,/area/maintenance/portsolar)
"cBz" = (/obj/effect/step_trigger/thrower{affect_ghosts = 1; direction = 2; name = "thrower_throwdownside"; nostop = 1; tiles = 0},/turf/space/transit/north/shuttlespace_ns8,/area)
"cBA" = (/turf/space/transit/north/shuttlespace_ns12,/area/shuttle/escape_pod1/transit)
"cBB" = (/turf/space/transit/north/shuttlespace_ns7,/area/shuttle/escape_pod1/transit)
@@ -7835,7 +7838,7 @@
"cUW" = (/obj/structure/table/woodentable,/obj/item/weapon/spacecash/c1,/turf/unsimulated/floor{dir = 8; icon_state = "wood"},/area/wizard_station)
"cUX" = (/obj/structure/closet{icon_closed = "cabinet_closed"; icon_opened = "cabinet_open"; icon_state = "cabinet_closed"; name = "Clothing Storage"},/obj/item/clothing/head/bandana{pixel_y = -10},/obj/item/clothing/glasses/sunglasses,/turf/unsimulated/beach/sand{tag = "icon-desert"; icon_state = "desert"},/area/centcom/ferry)
"cUY" = (/obj/structure/closet{icon_closed = "cabinet_closed"; icon_opened = "cabinet_open"; icon_state = "cabinet_closed"; name = "Clothing Storage"},/obj/item/clothing/glasses/sunglasses,/turf/unsimulated/beach/sand{tag = "icon-desert"; icon_state = "desert"},/area/centcom/ferry)
"cUZ" = (/obj/machinery/embedded_controller/radio/airlock_controller{tag_airpump = "synd_pump"; tag_exterior_door = "synd_outer"; frequency = 1331; id_tag = "synd_airlock"; tag_interior_door = "synd_inner"; pixel_x = 25; req_access_txt = "0"; tag_chamber_sensor = "synd_sensor"},/obj/machinery/airlock_sensor{frequency = 1331; id_tag = "synd_sensor"; pixel_x = 25; pixel_y = 12},/turf/simulated/shuttle/floor{icon_state = "floor4"},/area/syndicate_station/start)
"cUZ" = (/obj/machinery/embedded_controller/radio/airlock/airlock_controller{tag_airpump = "synd_pump"; tag_exterior_door = "synd_outer"; frequency = 1331; id_tag = "synd_airlock"; tag_interior_door = "synd_inner"; pixel_x = 25; req_access_txt = "0"; tag_chamber_sensor = "synd_sensor"},/obj/machinery/airlock_sensor{frequency = 1331; id_tag = "synd_sensor"; pixel_x = 25; pixel_y = 12},/turf/simulated/shuttle/floor{icon_state = "floor4"},/area/syndicate_station/start)
"cVa" = (/turf/simulated/shuttle/wall{icon_state = "swall3"; dir = 2},/area)
"cVb" = (/turf/space,/turf/simulated/shuttle/wall{dir = 8; icon_state = "diagonalWall3"},/area/shuttle/vox/station)
"cVc" = (/turf/simulated/shuttle/wall{icon_state = "pwall"; dir = 1},/area)
@@ -7936,10 +7939,10 @@
"cWT" = (/obj/item/clothing/head/collectable/petehat{desc = "It smells faintly of reptile."; name = "fancy leader hat"},/turf/simulated/shuttle/floor4/vox,/area/shuttle/vox/station)
"cWU" = (/obj/machinery/airlock_sensor{frequency = 1331; id_tag = "vox_east_sensor"; pixel_x = -25},/turf/simulated/shuttle/plating/vox,/area/shuttle/vox/station)
"cWV" = (/obj/machinery/atmospherics/unary/vent_pump/high_volume{frequency = 1331; id_tag = "vox_east_vent"},/turf/simulated/shuttle/plating/vox,/area/shuttle/vox/station)
"cWW" = (/obj/machinery/embedded_controller/radio/airlock_controller{tag_airpump = "vox_west_vent"; tag_exterior_door = "vox_northwest_lock"; frequency = 1331; id_tag = "vox_west_control"; tag_interior_door = "vox_southwest_lock"; pixel_x = 24; req_access_txt = "150"; tag_chamber_sensor = "vox_west_sensor"},/obj/machinery/atmospherics/unary/vent_pump/high_volume{dir = 8; frequency = 1331; id_tag = "vox_west_vent"},/turf/simulated/shuttle/plating/vox,/area/shuttle/vox/station)
"cWW" = (/obj/machinery/embedded_controller/radio/airlock/airlock_controller{tag_airpump = "vox_west_vent"; tag_exterior_door = "vox_northwest_lock"; frequency = 1331; id_tag = "vox_west_control"; tag_interior_door = "vox_southwest_lock"; pixel_x = 24; req_access_txt = "150"; tag_chamber_sensor = "vox_west_sensor"},/obj/machinery/atmospherics/unary/vent_pump/high_volume{dir = 8; frequency = 1331; id_tag = "vox_west_vent"},/turf/simulated/shuttle/plating/vox,/area/shuttle/vox/station)
"cWX" = (/obj/machinery/atmospherics/pipe/manifold/visible{tag = "icon-manifold (WEST)"; icon_state = "manifold"; dir = 8},/turf/simulated/shuttle/plating/vox,/area/shuttle/vox/station)
"cWY" = (/obj/structure/grille,/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced{dir = 8},/obj/machinery/door/poddoor{id = "skipjack"; name = "Skipjack Blast Shielding"},/turf/simulated/shuttle/plating/vox,/area/shuttle/vox/station)
"cWZ" = (/obj/machinery/embedded_controller/radio/airlock_controller{tag_airpump = "vox_east_vent"; tag_exterior_door = "vox_northeast_lock"; frequency = 1331; id_tag = "vox_east_control"; tag_interior_door = "vox_southeast_lock"; pixel_x = -24; req_access_txt = "150"; tag_chamber_sensor = "vox_east_sensor"},/obj/machinery/atmospherics/unary/vent_pump/high_volume{dir = 4; frequency = 1331; id_tag = "vox_east_vent"},/turf/simulated/shuttle/plating/vox,/area/shuttle/vox/station)
"cWZ" = (/obj/machinery/embedded_controller/radio/airlock/airlock_controller{tag_airpump = "vox_east_vent"; tag_exterior_door = "vox_northeast_lock"; frequency = 1331; id_tag = "vox_east_control"; tag_interior_door = "vox_southeast_lock"; pixel_x = -24; req_access_txt = "150"; tag_chamber_sensor = "vox_east_sensor"},/obj/machinery/atmospherics/unary/vent_pump/high_volume{dir = 4; frequency = 1331; id_tag = "vox_east_vent"},/turf/simulated/shuttle/plating/vox,/area/shuttle/vox/station)
"cXa" = (/obj/machinery/atmospherics/pipe/manifold/visible{dir = 4},/turf/simulated/shuttle/plating/vox,/area/shuttle/vox/station)
"cXb" = (/obj/machinery/body_scanconsole{known_implants = list(/obj/item/weapon/implant/cortical)},/turf/simulated/shuttle/floor4/vox,/area/shuttle/vox/station)
"cXc" = (/obj/machinery/atmospherics/pipe/tank/nitrogen,/turf/simulated/shuttle/floor4/vox,/area/shuttle/vox/station)
@@ -8612,11 +8615,11 @@
"djT" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 8},/obj/structure/window/reinforced{dir = 1},/turf/simulated/floor/plating,/area/maintenance/engi_shuttle)
"djU" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 8},/obj/structure/window/reinforced{dir = 4},/turf/simulated/floor/plating,/area/maintenance/engi_shuttle)
"djV" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 8},/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced,/turf/simulated/floor/plating,/area/maintenance/engi_shuttle)
"djW" = (/obj/machinery/embedded_controller/radio/access_controller{id_tag = "virologyq_airlock_control"; name = "Virology Quarantine Access Console"; pixel_x = -8; pixel_y = -22; tag_exterior_door = "virologyq_airlock_exterior"; tag_interior_door = "virologyq_airlock_interior"},/obj/machinery/atmospherics/unary/vent_pump{dir = 1; on = 1},/turf/simulated/floor{icon_state = "green"; dir = 4},/area/medical/virology)
"djW" = (/obj/machinery/embedded_controller/radio/airlock/access_controller{id_tag = "virologyq_airlock_control"; name = "Virology Quarantine Access Console"; pixel_x = -8; pixel_y = -22; tag_exterior_door = "virologyq_airlock_exterior"; tag_interior_door = "virologyq_airlock_interior"},/obj/machinery/atmospherics/unary/vent_pump{dir = 1; on = 1},/turf/simulated/floor{icon_state = "green"; dir = 4},/area/medical/virology)
"djX" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply,/obj/machinery/atmospherics/unary/vent_scrubber{dir = 8; on = 1; scrub_Toxins = 0},/turf/simulated/floor{dir = 2; icon_state = "green"},/area/medical/virology)
"djY" = (/obj/machinery/light{icon_state = "tube1"; dir = 8},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/obj/structure/closet/secure_closet/personal/patient,/obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers{dir = 8},/turf/simulated/floor{dir = 8; icon_state = "greencorner"},/area/medical/virology)
"djZ" = (/obj/machinery/light_switch{pixel_y = 28},/obj/machinery/atmospherics/pipe/manifold/hidden/supply{dir = 4},/turf/simulated/floor{icon_state = "green"; dir = 4},/area/medical/virology)
"dka" = (/obj/structure/closet/l3closet/virology,/obj/item/clothing/mask/gas,/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/obj/machinery/embedded_controller/radio/access_controller{tag_exterior_door = "virology_airlock_exterior"; id_tag = "virology_airlock_control"; tag_interior_door = "virology_airlock_interior"; name = "Virology Access Console"; pixel_x = 8; pixel_y = 22},/obj/machinery/alarm{dir = 4; icon_state = "alarm0"; pixel_x = -22; pixel_y = 0},/turf/simulated/floor{dir = 1; icon_state = "greencorner"},/area/medical/virology)
"dka" = (/obj/structure/closet/l3closet/virology,/obj/item/clothing/mask/gas,/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/obj/machinery/embedded_controller/radio/airlock/access_controller{tag_exterior_door = "virology_airlock_exterior"; id_tag = "virology_airlock_control"; tag_interior_door = "virology_airlock_interior"; name = "Virology Access Console"; pixel_x = 8; pixel_y = 22},/obj/machinery/alarm{dir = 4; icon_state = "alarm0"; pixel_x = -22; pixel_y = 0},/turf/simulated/floor{dir = 1; icon_state = "greencorner"},/area/medical/virology)
"dkb" = (/obj/structure/cable{d2 = 8; icon_state = "0-8"},/obj/machinery/power/apc{dir = 4; name = "east bump"; pixel_x = 24},/obj/machinery/camera{c_tag = "Engineering Foyer"; dir = 8; network = list("SS13")},/turf/simulated/floor{dir = 2; icon_state = "yellowcorner"},/area/hallway/primary/aft)
"dkc" = (/obj/machinery/door/poddoor{density = 0; icon_state = "pdoor0"; id = "Biohazard"; name = "Biohazard Shutter"; opacity = 0},/turf/simulated/floor{icon_state = "white"},/area/rnd/xenobiology)
"dkd" = (/obj/structure/disposalpipe/segment{dir = 4},/obj/machinery/atmospherics/pipe/simple/hidden/supply,/obj/machinery/door/poddoor{density = 0; icon_state = "pdoor0"; id = "Biohazard"; name = "Biohazard Shutter"; opacity = 0},/turf/simulated/floor{icon_state = "white"},/area/rnd/xenobiology)
@@ -8633,6 +8636,9 @@
"dko" = (/obj/machinery/door/airlock/mining{name = "Mining Station Storage"; req_access_txt = "48"},/obj/machinery/atmospherics/pipe/simple/hidden/supply,/turf/space,/area/mine/living_quarters)
"dkp" = (/obj/machinery/atmospherics/unary/vent_pump{on = 1},/obj/machinery/camera{c_tag = "Crew Area Hallway"; network = list("MINE")},/turf/simulated/floor,/area/mine/living_quarters)
"dkq" = (/obj/structure/extinguisher_cabinet{pixel_x = -5; pixel_y = 30},/turf/simulated/floor,/area/mine/living_quarters)
"dkr" = (/obj/structure/grille,/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced{dir = 8},/obj/machinery/door/firedoor/border_only{dir = 2},/obj/machinery/atmospherics/pipe/simple/hidden{tag = "icon-intact-f (EAST)"; icon_state = "intact-f"; dir = 4},/turf/simulated/shuttle/plating,/area/medical/research{name = "Research Division"})
"dks" = (/obj/machinery/light/small{dir = 4},/obj/machinery/atmospherics/unary/vent_pump/high_volume{dir = 8; frequency = 1380; id_tag = "research_dock_pump"},/obj/machinery/embedded_controller/radio/airlock/docking_port{frequency = 1380; id_tag = "research_dock_airlock"; pixel_x = 25; pixel_y = 0; req_access_txt = "13;65"; tag_airpump = "research_dock_pump"; tag_chamber_sensor = "research_dock_sensor"; tag_exterior_door = "research_dock_outer"; tag_interior_door = "research_dock_inner"},/turf/simulated/floor{dir = 6; icon_state = "warning"},/area/medical/research{name = "Research Division"})
"dkt" = (/obj/machinery/atmospherics/portables_connector{dir = 1},/obj/machinery/portable_atmospherics/canister/air,/turf/simulated/floor{icon_state = "white"},/area/medical/research{name = "Research Division"})
"dqx" = (/turf/simulated/floor/plating/airless/asteroid,/area)
"dqT" = (/turf/simulated/mineral,/area/mine/unexplored)
"dqU" = (/turf/space,/area/syndicate_station/mining)
@@ -8739,7 +8745,7 @@
"dsS" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced{dir = 8},/obj/structure/window/reinforced,/obj/machinery/atmospherics/pipe/simple/hidden/supply,/turf/simulated/floor/plating,/area/turret_protected/tcomsat)
"dsT" = (/obj/machinery/atmospherics/trinary/filter{dir = 4; filter_type = 2; icon_state = "intact_on"; name = "Gas filter (N2 tank)"; on = 1},/turf/simulated/floor/plating,/area/research_outpost/atmos)
"dsU" = (/obj/machinery/atmospherics/trinary/filter{dir = 4; filter_type = 1; icon_state = "intact_on"; name = "Gas filter (O2 tank)"; on = 1},/obj/machinery/light/small{dir = 1},/turf/simulated/floor/plating,/area/research_outpost/atmos)
"dsV" = (/obj/machinery/camera/xray{c_tag = "External Airlock"; network = list("Tcomsat")},/obj/machinery/atmospherics/unary/vent_pump/high_volume{dir = 4; frequency = 1381; id_tag = "telecoms_pump"},/obj/machinery/embedded_controller/radio/airlock_controller{tag_airpump = "telecoms_pump"; tag_exterior_door = "telecoms_outer"; frequency = 1381; id_tag = "telecoms_airlock"; tag_interior_door = "telecoms_inner"; pixel_x = 0; pixel_y = -25; req_access_txt = "13"; tag_chamber_sensor = "telecoms_sensor"},/obj/machinery/airlock_sensor{frequency = 1381; id_tag = "telecoms_sensor"; pixel_x = 12; pixel_y = -25},/turf/simulated/floor/plating,/area/tcommsat/entrance)
"dsV" = (/obj/machinery/camera/xray{c_tag = "External Airlock"; network = list("Tcomsat")},/obj/machinery/atmospherics/unary/vent_pump/high_volume{dir = 4; frequency = 1381; id_tag = "telecoms_pump"},/obj/machinery/embedded_controller/radio/airlock/airlock_controller{tag_airpump = "telecoms_pump"; tag_exterior_door = "telecoms_outer"; frequency = 1381; id_tag = "telecoms_airlock"; tag_interior_door = "telecoms_inner"; pixel_x = 0; pixel_y = -25; req_access_txt = "13"; tag_chamber_sensor = "telecoms_sensor"},/obj/machinery/airlock_sensor{frequency = 1381; id_tag = "telecoms_sensor"; pixel_x = 12; pixel_y = -25},/turf/simulated/floor/plating,/area/tcommsat/entrance)
"dsW" = (/obj/machinery/atmospherics/portables_connector{dir = 8},/obj/machinery/portable_atmospherics/canister,/turf/simulated/floor/plating,/area/research_outpost/atmos)
"dsX" = (/obj/structure/window/reinforced{dir = 8},/obj/machinery/light/small{dir = 1},/turf/simulated/floor,/area/research_outpost/atmos)
"dsY" = (/obj/structure/transit_tube{icon_state = "N-S"},/turf/simulated/floor{icon_state = "delivery"; name = "floor"},/area/research_outpost/atmos)
@@ -8840,7 +8846,7 @@
"duR" = (/obj/machinery/atmospherics/unary/vent_pump/high_volume{dir = 8; frequency = 1379; id_tag = "research_pump"},/turf/simulated/floor{icon_state = "warning"},/area/research_outpost/gearstore)
"duS" = (/obj/machinery/atmospherics/pipe/simple/hidden,/turf/simulated/wall,/area/research_outpost/gearstore)
"duT" = (/obj/machinery/door/airlock/external{frequency = 1379; icon_state = "door_locked"; id_tag = "research_inner"; locked = 1; name = "Research Outpost External Access"; req_access = null; req_access_txt = null},/obj/machinery/door/firedoor/border_only{dir = 2},/turf/simulated/floor,/area/research_outpost/gearstore)
"duU" = (/obj/machinery/light/small{dir = 8},/obj/machinery/embedded_controller/radio/airlock_controller{tag_airpump = "research_pump"; tag_exterior_door = "research_outer"; frequency = 1379; id_tag = "research_airlock"; tag_interior_door = "research_inner"; pixel_x = -25; pixel_y = 0; req_access_txt = null; tag_chamber_sensor = "research_sensor"},/obj/machinery/atmospherics/pipe/manifold/hidden{tag = "icon-manifold-f (NORTH)"; icon_state = "manifold-f"; dir = 1},/turf/simulated/floor,/area/research_outpost/gearstore)
"duU" = (/obj/machinery/light/small{dir = 8},/obj/machinery/embedded_controller/radio/airlock/airlock_controller{tag_airpump = "research_pump"; tag_exterior_door = "research_outer"; frequency = 1379; id_tag = "research_airlock"; tag_interior_door = "research_inner"; pixel_x = -25; pixel_y = 0; req_access_txt = null; tag_chamber_sensor = "research_sensor"},/obj/machinery/atmospherics/pipe/manifold/hidden{tag = "icon-manifold-f (NORTH)"; icon_state = "manifold-f"; dir = 1},/turf/simulated/floor,/area/research_outpost/gearstore)
"duV" = (/obj/machinery/atmospherics/pipe/simple/hidden{tag = "icon-intact-f (NORTHEAST)"; icon_state = "intact-f"; dir = 5},/turf/simulated/wall,/area/research_outpost/gearstore)
"duW" = (/obj/machinery/atmospherics/pipe/simple/hidden/cyan{tag = "icon-intact-f (NORTHWEST)"; icon_state = "intact-f"; dir = 9},/turf/simulated/wall/r_wall,/area/research_outpost/iso1)
"duX" = (/obj/structure/transit_tube{icon_state = "N-S"},/turf/simulated/floor/plating/airless/asteroid,/area/research_outpost/atmos)
@@ -9006,7 +9012,6 @@
"dyc" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 8},/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced,/obj/machinery/door/firedoor/border_only{dir = 2},/turf/simulated/floor/plating,/area/research_outpost/entry)
"dyd" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced,/obj/machinery/door/firedoor/border_only{dir = 2},/turf/simulated/floor/plating,/area/research_outpost/entry)
"dye" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced,/obj/machinery/door/firedoor/border_only{dir = 2},/turf/simulated/floor/plating,/area/research_outpost/entry)
"dyf" = (/obj/machinery/door/airlock/external{name = "Research Outpost Dock Airlock"; req_access_txt = "65"},/obj/machinery/door/firedoor/border_only{dir = 2},/turf/simulated/floor/plating,/area/research_outpost/entry)
"dyg" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced{dir = 1},/obj/machinery/door/firedoor/border_only{dir = 2},/turf/simulated/floor/plating,/area/research_outpost/entry)
"dyh" = (/obj/structure/sign/science,/turf/simulated/wall,/area/research_outpost/entry)
"dyi" = (/obj/machinery/door/airlock/glass_research{name = "Outpost Primary Access"; req_access_txt = "65"},/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/door/firedoor/border_only{dir = 4; layer = 2.6; name = "Firelock"},/turf/simulated/floor,/area/research_outpost/entry)
@@ -9750,7 +9755,7 @@
"dMD" = (/obj/machinery/conveyor_switch{id = "mining_west"},/obj/machinery/light/small{dir = 1},/turf/simulated/floor/airless{icon_state = "asteroidwarning"; dir = 1},/area/mine/explored)
"dME" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 5},/turf/simulated/floor,/area/mine/west_outpost)
"dMF" = (/obj/structure/grille,/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced{dir = 8},/obj/machinery/door/firedoor/border_only{dir = 2},/obj/machinery/atmospherics/pipe/simple/hidden/supply{color = "#4444FF"; dir = 4},/turf/simulated/floor/plating,/area/mine/west_outpost)
"dMG" = (/obj/machinery/embedded_controller/radio/airlock_controller{tag_airpump = "mining_west_outpost_pump"; tag_exterior_door = "mining_west_outpost_outer"; frequency = 1379; id_tag = "mining_west_outpost_airlock"; tag_interior_door = "mining_west_outpost_inner"; pixel_x = 0; pixel_y = -25; req_access_txt = null; tag_chamber_sensor = "mining_west_outpost_sensor"},/obj/machinery/atmospherics/unary/vent_pump/high_volume{dir = 8; frequency = 1379; id_tag = "mining_west_outpost_pump"},/turf/simulated/floor,/area/mine/west_outpost)
"dMG" = (/obj/machinery/embedded_controller/radio/airlock/airlock_controller{tag_airpump = "mining_west_outpost_pump"; tag_exterior_door = "mining_west_outpost_outer"; frequency = 1379; id_tag = "mining_west_outpost_airlock"; tag_interior_door = "mining_west_outpost_inner"; pixel_x = 0; pixel_y = -25; req_access_txt = null; tag_chamber_sensor = "mining_west_outpost_sensor"},/obj/machinery/atmospherics/unary/vent_pump/high_volume{dir = 8; frequency = 1379; id_tag = "mining_west_outpost_pump"},/turf/simulated/floor,/area/mine/west_outpost)
"dMH" = (/obj/structure/cable{d1 = 1; d2 = 8; icon_state = "1-8"},/obj/machinery/atmospherics/pipe/simple/hidden/supply,/turf/simulated/floor,/area/mine/living_quarters)
"dMI" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply,/turf/simulated/floor,/area/mine/living_quarters)
"dMJ" = (/obj/machinery/camera{c_tag = "EVA"; dir = 4; network = list("MINE")},/obj/machinery/alarm{dir = 4; pixel_x = -23; pixel_y = 0},/obj/machinery/light{icon_state = "tube1"; dir = 8},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 6},/turf/simulated/floor,/area/mine/eva)
@@ -9803,7 +9808,7 @@
"dNF" = (/obj/structure/cable{d1 = 1; d2 = 8; icon_state = "1-8"},/turf/simulated/floor/plating,/area/mine/living_quarters)
"dNG" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply,/turf/simulated/floor,/area/mine/production)
"dNH" = (/obj/machinery/atmospherics/pipe/tank/air{dir = 8},/turf/simulated/floor/plating,/area/mine/living_quarters)
"dNI" = (/obj/machinery/embedded_controller/radio/airlock_controller{tag_airpump = "mining_east_pump"; tag_exterior_door = "mining_east_outer"; frequency = 1379; id_tag = "mining_east_airlock"; tag_interior_door = "mining_east_inner"; pixel_x = 0; pixel_y = -25; req_access_txt = null; tag_chamber_sensor = "mining_east_sensor"},/obj/machinery/atmospherics/unary/vent_pump/high_volume{dir = 8; frequency = 1379; id_tag = "mining_east_pump"},/turf/simulated/floor,/area/mine/eva)
"dNI" = (/obj/machinery/embedded_controller/radio/airlock/airlock_controller{tag_airpump = "mining_east_pump"; tag_exterior_door = "mining_east_outer"; frequency = 1379; id_tag = "mining_east_airlock"; tag_interior_door = "mining_east_inner"; pixel_x = 0; pixel_y = -25; req_access_txt = null; tag_chamber_sensor = "mining_east_sensor"},/obj/machinery/atmospherics/unary/vent_pump/high_volume{dir = 8; frequency = 1379; id_tag = "mining_east_pump"},/turf/simulated/floor,/area/mine/eva)
"dNJ" = (/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/simulated/floor{icon_state = "floorgrime"},/area/mine/living_quarters)
"dNK" = (/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_y = 0},/obj/machinery/atmospherics/pipe/simple/hidden/supply,/turf/simulated/floor,/area/mine/living_quarters)
"dNL" = (/obj/machinery/status_display{layer = 4; pixel_x = -32; pixel_y = 0},/turf/simulated/floor,/area/mine/production)
@@ -9942,7 +9947,7 @@
"dQr" = (/obj/machinery/door/airlock/glass_medical{id_tag = null; name = "Infirmary"; req_access_txt = "0"},/obj/machinery/atmospherics/pipe/simple/hidden/supply,/turf/simulated/floor{icon_state = "white"},/area/mine/living_quarters)
"dQs" = (/obj/structure/disposalpipe/segment{dir = 4},/obj/machinery/atmospherics/pipe/simple/hidden/supply,/turf/simulated/floor,/area/mine/production)
"dQt" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply,/turf/simulated/floor{icon_state = "white"},/area/mine/living_quarters)
"dQu" = (/obj/machinery/light/small{dir = 4},/obj/machinery/airlock_sensor{frequency = 1379; id_tag = "mining_west_sensor"; pixel_x = 25; pixel_y = -5},/obj/machinery/embedded_controller/radio/airlock_controller{tag_airpump = "mining_west_pump"; tag_exterior_door = "mining_west_outer"; frequency = 1379; id_tag = "mining_west_airlock"; tag_interior_door = "mining_west_inner"; pixel_x = 25; pixel_y = 5; req_access_txt = null; tag_chamber_sensor = "mining_west_sensor"},/obj/machinery/atmospherics/unary/vent_pump/high_volume{dir = 1; frequency = 1379; id_tag = "mining_west_pump"},/turf/simulated/floor,/area/mine/living_quarters)
"dQu" = (/obj/machinery/light/small{dir = 4},/obj/machinery/airlock_sensor{frequency = 1379; id_tag = "mining_west_sensor"; pixel_x = 25; pixel_y = -5},/obj/machinery/embedded_controller/radio/airlock/airlock_controller{tag_airpump = "mining_west_pump"; tag_exterior_door = "mining_west_outer"; frequency = 1379; id_tag = "mining_west_airlock"; tag_interior_door = "mining_west_inner"; pixel_x = 25; pixel_y = 5; req_access_txt = null; tag_chamber_sensor = "mining_west_sensor"},/obj/machinery/atmospherics/unary/vent_pump/high_volume{dir = 1; frequency = 1379; id_tag = "mining_west_pump"},/turf/simulated/floor,/area/mine/living_quarters)
"dQv" = (/obj/structure/closet/emcloset,/obj/machinery/atmospherics/unary/vent_pump/high_volume{dir = 1; frequency = 1379; id_tag = "mining_west_pump"},/turf/simulated/floor{icon_state = "floorgrime"},/area/mine/living_quarters)
"dQw" = (/obj/structure/holostool,/turf/simulated/floor/holofloor{icon_state = "carpet11-12"; dir = 4},/area/holodeck/source_theatre)
"dQx" = (/obj/machinery/atmospherics/pipe/manifold/hidden/supply{dir = 8},/turf/simulated/floor/plating,/area/mine/living_quarters)
@@ -10614,28 +10619,28 @@ aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaeaaaaaaaaaaaaalPaafaoTaoUaoUaoUaoUaoVaoWaoXaoYaoYaoYaoYaoZaafalPaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaafaaaapxapaapbapxaeFagXagXagXagXagXagXagXagXagXagXamRapdapdamVapfapgaphagXagXagXagXagXagXapialRallahxahxajCamNanjahKahJalNaprapsapsapsaptalNalNalNalNapualOalOalOalOalOaaaaaaaaaaaaaaaaaaalPaafapvapvapvapvapvaafaoPaafapvapvapvapvapvaafalPaaaaaaajiajiajiajiaaaaaaajiajiajiajiajiajiajiaaaaaaajiajiajiajiaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaalPaafapwapwapwapwapwaafaoWaafapwapwapwapwapwaafalPaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaapxapxapyapxapzapxapAapAapBapCapDapAapAapAapAapAapAapAapAapAapEapFapGapHapIapJapKapLaleapMapNapOapPaidamxapiahnahoajhajhajhacpajhahuahpapYahvaqaaqbalOalOalOalOalOaaaaaaaaaaaaaaaaaaalQaaaaaaaaaaafaaaaaaaafaoPaaaaaaaaaaafaaaaaaaaaalQaaaaaaaaaaaaaaaaaaaaaaaaajiajiajiajiajiajiajiaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaalQaaaaaaaaaaafaaaaaaaafaoWaaaaaaaaaaafaaaaaaaaaampaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaafapxaqcaqdapxapxaqeapEaqfapEapEapEapEapEapEapEapEapEapEapEaqgapEaqhapEaqiapEapEapEaleaqjaqkaqlaqmahVamoapiahkahjahiahhaheahcamwahmahlalNalNalNajhalOalOalOalOalOaaaaaaaaaaaaaaaaaaalPaafaojaojaojaojaojaafaoPaafaojaojaojaojaojaafalPaaaaaaaaaaaaaaaaaaaaaaaaajiajiajiajiajiajiajiaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaalPaafaolaolaolaolaolaafaoWaafaolaolaolaolaolaafalPaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaapxaqxaqAaqCaqyaqzagNagRaqBaqBaqBaqBaqBaqBaqBagGagzagCagzaraaqLaqKaqLagKaqNaqLaqOaleapiapiapiapiapiapSamfaqQagWaqSaqTaqUaqVajhalNamhagYalNaaaaaaaaaalOalOalOaaaaaaaaaaaaaaaaaaaaaalPaafaoMaoNaoNaoNaoNaoOaoPaoQaoRaoRaoRaoRaoSaafalPaaaaaaaaaaaaaaaaaaaaaaaaajiajiajiajiajiajiajiaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaalPaafaolaolaolaolaolaafaoWaafaolaolaolaolaolaafalPaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaapxaqxaqAaqCaqyaqzagNagRaqBaqBaqBaqBaqBaqBaqBagGagzagCagzaqTaqLaqKaqLagKaqNaqLaqOaleapiapiapiapiapiapSamfaqQagWaqSaraaqUaqVajhalNamhagYalNaaaaaaaaaalOalOalOaaaaaaaaaaaaaaaaaaaaaalPaafaoMaoNaoNaoNaoNaoOaoPaoQaoRaoRaoRaoRaoSaafalPaaaaaaaaaaaaaaaaaaaaaaaaajiajiajiajiajiajiajiaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaqYaqZaqYaaaaaaaaaaaaaaaaaaaaaalPaafaoTaoUaoUaoUaoUaoVaoWaoXaoYaoYaoYaoYaoZaafalPaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaapxapaagxapxarbarbarcaguarbarbarbareareareakKargareaWTarhariaghahEalNaggalNarmalNalNakJagjagjbbNagjakpalpakOakMakLakLakLamaagjagtamcagqalNaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaalPaafapvapvapvapvapvaafaoPaafapvapvapvapvapvaafalPaaaaaaaaaaaaaaaaaaaaaaaaajiajiajiajiajiajiajiaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaafarwarxarwaaaaaaaaaaaaaaaaaaaaaalPaafapwapwapwapwapwaafaoWaafapwapwapwapwapwaafalPaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaafaagapxaryaHDapxarEatVatXaHMaIgatYarbaWvarGarHarIarJarKaUlaDmaFsaHLaTiarPaLEaLGaLGaLGaLGaNnaLJaLGaNnaLGaNoaNeaLvaKWaNaaMNaMTajhaMMalNasdasealNaaaaafaKEaKzaKzaKDaKzaKzaKjaafaaaaaaaaaalQaaaaaaaaaaafaaaaaaaaaaoPaaaaaaaaaaafaaaaaaaaaalQaaaaaaaaaaaaaaaaaaaaaaaaajiajiajiajiajiajiajiaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaasjaOCaslaaaasmaPXasoaaaaafaspaqYaspaaaaaaaaaaaaaaaaaaaaaalQaaaaaaaaaaafaaaaaaaaaaoWaaaaaaaaaaafaaaaaaaaaalQaaaaaaaaaaaeaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaafapxapxapxapxaHDapxarEarAatXatWaJbasrarbaWwarIarIarIarJasuaVtaswasxaJmaWTaMLaIkaMKaMKaMKaMUaOzaOAaGVaOBaGVaGVaGVaGVaGVaNCarTaMzasPasPasPasPasPasPasPasPaLMasRasRasRasRasRaLMasPaaaaaaaaaalPaafaojaojaojaojaojaafaoPaafaojaojaojaojaojaafalPaaaaaaaaaaaaaaaaaaaaaaaaaaaajiajiajiajiajiaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaasSasTasUasTasSasVasWasVasSaafaspaOuaOkaaaaaaaaaaaaaaaaaaaaaalPaafaolaolaolaolaolaafaoWaafaolaolaolaolaolaafalPaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaafaafapxasZataapxaHDapxauParAatXatWasqauNarbatearIatfatfarJatgaVtapAapEaJnaWTaNDaNFaNIaSLaHqaHratoatpaGVaNObkqaNUaNpaRiaRxaRQarTatzatAaJqavYaQBaKiaPYaRgasPaNgasRasRasRasRasRaLMasPaafaaaaaaalQaafaoMaoNaoNaoNaoNaoOaoPaoQaoRaoRaoRaoRaoSaafalPaaaaaaaaaaaeaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaafarwarxarwaaaaaaaaaaaaaaaaaaaaaalPaafapwapwapwapwapwaafaoWaafapwapwapwapwapwaafalPaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaafaagapxaryaHDapxarEatVatXaJnaJoatYarbaWvarGarHarIarJarKaUlaDmaFsaJmaTiarPaLEaLGaLGaLGaLGaNnaLJaLGaNnaLGaNoaNeaLvaKWaNaaMNaMTajhaMMalNasdasealNaaaaafaKEaKzaKzaKDaKzaKzaKjaafaaaaaaaaaalQaaaaaaaaaaafaaaaaaaaaaoPaaaaaaaaaaafaaaaaaaaaalQaaaaaaaaaaaaaaaaaaaaaaaaajiajiajiajiajiajiajiaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaasjaOCaslaaaasmaPXasoaaaaafaspaqYaspaaaaaaaaaaaaaaaaaaaaaalQaaaaaaaaaaafaaaaaaaaaaoWaaaaaaaaaaafaaaaaaaaaalQaaaaaaaaaaaeaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaafapxapxapxapxaHDapxarEarAatXatWaJpasrarbaWwarIarIarIarJasuaVtaswasxaJtaWTaMLaIkaMKaMKaMKaMUaOzaOAaGVaOBaGVaGVaGVaGVaGVaNCarTaMzasPasPasPasPasPasPasPasPaLMasRasRasRasRasRaLMasPaaaaaaaaaalPaafaojaojaojaojaojaafaoPaafaojaojaojaojaojaafalPaaaaaaaaaaaaaaaaaaaaaaaaaaaajiajiajiajiajiaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaasSasTasUasTasSasVasWasVasSaafaspaOuaOkaaaaaaaaaaaaaaaaaaaaaalPaafaolaolaolaolaolaafaoWaafaolaolaolaolaolaafalPaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaafaafapxasZataapxaHDapxauParAatXatWasqauNarbatearIatfatfarJatgaVtapAapEaJzaWTaNDaNFaNIaSLaHqaHratoatpaGVaNObkqaNUaNpaRiaRxaRQarTatzatAaJqavYaQBaKiaPYaRgasPaNgasRasRasRasRasRaLMasPaafaaaaaaalQaafaoMaoNaoNaoNaoNaoOaoPaoQaoRaoRaoRaoRaoSaafalPaaaaaaaaaaaeaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaatHasTatIasTatHasVatJasVatHatKatLatMaPLatOatOatPatKatKaafaaaalPaafaoTaoUaoUaoUaoUaoVaoWaoXaoYaoYaoYaoYaoZaafalPaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaafaafaafapxaTaatRatSaHDapxarEarAatXatWasqarEarbauaaubaucaucaudaueaOyapAapEapFalNaNDaNFaHyaPqaHqaHrauhauiaGVaPHaPCaOEaOEaOFaOGaOParTaSOauqaJqavYavYaKiaSfaMdaSFaODasRasRasRasRasRaOSasPasPasPaaaalQaaaapvapvapvapvapvaafaoPaafapvapvapvapvapvaaaampaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaatHauzauAauBatHauCauDauEatHaqYaqYauFauGauHauIauJaKoatKaaaaaaampaaaapwapwapwapwapwaafaoWaafapwapwapwapwapwaaaalPaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaafaafaagapxauLapaapxaHDapxarEarAaExarCasqarBarbaHAauSauTauTaLxaHCaKFaHsaHtaxuaHvaHwaHxaHyaHzaHqaHravdauiaGVaGVaGVaGWaGWaGXaGVaGVarTaJsaIWaJqavYavYaKiaKkaJvaJCaGZasRasRasRasRasRaGUaGSavqavraaaalQaaaaafaaaaafaafaaaaaaaoPaaaaaaaafaaaaaaaafaaaalPaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaatHavsavtavuatHavsavtavuatHavvaGQaEOaEOaEOaEOaJYaIQarwaaaaaaalPaaaaafaaaaafaafaaaaaaavAaaaaaaaafaaaaaaaafaaaalPaafaaaaaaaafaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaafaafaafaagapxapxapxapxaHDapxarbarbarbarbarbayuaHIaHHaHGaHGaHGaHGaHKaHJaNqapEazqalNaIjaIkaIhaIiaHYaIfaHNaHVaNQaLcavPavRavRaTIavRaKPavVavWavhaKLaviaviaKLaLaaKSaKXawbasRasRasRasRasRawbawcawdaweaaaalQalQalPaaaaaaaafaaaaaaaoPaaaaafaafaafaafalPalPalPaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaeaaaaaaaaaaaaaaaasSatHawfawgasSatHawfawgasSatKaNratKatKatKatKatKaMQaspaaaaaaalPalPalPaaaaaaaafaaaawjawkawjaafaafaafaafalPalPalPaafapxapxapxapxawlawmawmawmawmawmawmawmawnapxapxawoawpawqapxawrawsaNJaDpaBeaJfaJfaJfaJfaJfaBcaJfaAtaJfaJfaJfaJeaJeaJlaIYaJaaAqahmaIxaIAaIDaITaIvaHravdaIwawLawLbcxawMawNaVcawLauiawPawQaLlayMayMayMayMaLQaMdaMmawUasRasRasRasRasRawUawVawdaweaaaaaaaaaaafaafaaaaafaaaaaaawWaaaaaaaafaaaaaaaafaaaaaaaafaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaawXawYawYawYawZaxaawYawYaxbaxcaOtaxbaxbaxbaPDatKaQIaspaaaaafaafaaaaaaaaaaaaaafaaaaxgaKhaKgaafaaaaafaaaaaaaaaaaaaaaapxapaapaaxjapaapaapaapaapaapaapaapaaxkaxlaxmaxnaxnaxnaxnaxnaxnaxoaJBaMHaxraxraxraxraxsaJAaxraHuaxraxsaxraxraxraxraxwaxxaxyaKdaKaaHxaJRaJRaJRaHrauhaJQawLawOawMaxCawMaVeaxEaWraxGaxHaMqaMdaMdaMdaMuaMBaMEaMGaJwasRasRasRasRasRaJxaJyaxNaxOaaaaaaaaaaaaaafaaaaafaaaaxPaxQaxPaaaaafaaaaaaaafaaaaaaaaaaafaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaxRaxSaxTaxUaxVaxTaxTaxWaxUaxTaxXaxYaxZaxZblwatKaQIatLaafaafaaaaaaaaaaaaaaaaafaybaycaydbdBayfaaaaafaaaaaaaaaaaaaaaapxapaapxaygayhayiayiayiayiayiayiayiayjaygaykaylaylaylaylaylaylaylaQnaynaxrayoaypayqayrbdCbbraJoaJpaywayxaypayyaxrayzapEayAalNaQvaNFaNIbdEaHqaHravdbdFayDaxFaxFayEayFayGbdcayIavVbbUbaTbaNbaNbaNaZjbavbdwaYUbdGasRasRasRasRasRbdIasPasPasPaaaaaaaaaaafaafaafaafaaaaySbdJaySaaaaafaaaaaaaafaaaaaaaaaaaaaafaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaafaafatHayUayVayUayWaxTaxTayXayUayVayUayYaxSaxVblyatHaQIatKatKazaatOatOatOatOatPatKazbazcazdazeazbapxapxawoawpawqapxapxapxapaaryaygaaaaafaaaaafaaaaafaaaaafaaaaygaykaylazfazgazhaziazjaylaQnapaaxrazkazkazlazmaznazoaJzaBdazrazsaztaztaxrayzapEazualNaQvaNFaHybdEaHqaHrauhazvbbOazxazyazzazAazBazBazCazBasPbeHbeObeDbeEbeFbeGbdHasPbdLasRasRasRasRasRbdKasPaafaaaaaaaaaaaaaafaafaaaaafazLazMbdMazOazPaafaaaaaaaafaaaaaaaaaaaaaaaaafaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaafazQasSazRavtazSazTazUazVazWazSavtazXazYasSazZblFatHblNbnubnubnubnubnubnuaIQbezaAeazbaAfaAgaAhazbbeXapaapaapaapaapaapaapaapaaAjaygaafaAkaAkaAkaAkaAkaAkaAkaafaygaykaylaAlaAmaAnaAoaAlaylaQnaApaxraxraxraxraLDaAraypaAsaAraMIaxraxraxraxrayzapEaAualNaQvaNFaHybdEaHqaHravdaAvazBazBazBazBazBazBaAwaAxaAyazBasPasPasPasPbfGbghasPasPbdKasRasRasRasRasRbdKasPaaaaaaaaaaaeaaaaaaaaaaaaaafaAAaABbdTaADaAAaafaaaaaaaafaaaaaaaaaaaaaaaaaaaafaafaaaaaaaaaaaaaafaafaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaeaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaxRayVaAEaAFaAFaAFaAFaAGayVaxRaAHasSaAIbplatHaAKaAKaAKaAKaAKaAKaAKaMQbfxbfzazbbckaANaAOazbaAPaAQaAPaAPaAPaAPaAPaAPaAPaAPaARaaaaAkaASaATaAUbbTaAWaAkaaaaygaykaylaAlaAXbewaAZaAlaylaQnapxaxraBaaBbazlaMJaBdazoazpaBdaNKazsaBfaBfaxrayzapEayAalNbdZaIkaIhbdEbejbelavdaAvaHraBiaAxaBjaBjazBaAwaBkaAyazBaBlaBmaBnaBobhCaUKaBqaafbfBbfdbfdbfdbfdbfdbfgaafaaaaaaaaaaaaaaaaaaaaaaaaaafaAAaBuaBvaBwaAAaafaaaaaaaBqaBqaBqaBqaBqbgrbhqaBqaBqaBqaBqaBqaBqaBqbgoaBFaBFaBFaBGaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaatHauzauAauBatHauCauDauEatHaqYaqYauFauGauHauIauJaKoatKaaaaaaampaaaapwapwapwapwapwaafaoWaafapwapwapwapwapwaaaalPaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaafaafaagapxauLapaapxaHDapxarEarAaExarCasqarBarbaHAauSauTauTaLxaHCaKFaHsaHtaAtaHvaHwaHxaHyaHzaHqaHravdauiaGVaGVaGVaGWaGWaGXaGVaGVarTaJsaIWaJqavYavYaKiaKkaJvaJCaGZasRasRasRasRasRaGUaGSavqavraaaalQaaaaafaaaaafaafaaaaaaaoPaaaaaaaafaaaaaaaafaaaalPaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaatHavsavtavuatHavsavtavuatHavvaGQaEOaEOaEOaEOaJYaIQarwaaaaaaalPaaaaafaaaaafaafaaaaaaavAaaaaaaaafaaaaaaaafaaaalPaafaaaaaaaafaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaafaafaafaagapxapxapxapxaHDapxarbarbarbarbarbaBcaHIaHHaHGaHGaHGaHGaHKaHJaNqapEaBealNaIjaIkaIhaIiaHYaIfaHNaHVaNQaLcavPavRavRaTIavRaKPavVavWavhaKLaviaviaKLaLaaKSaKXawbasRasRasRasRasRawbawcawdaweaaaalQalQalPaaaaaaaafaaaaaaaoPaaaaafaafaafaafalPalPalPaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaeaaaaaaaaaaaaaaaasSatHawfawgasSatHawfawgasSatKaNratKatKatKatKatKaMQaspaaaaaaalPalPalPaaaaaaaafaaaawjawkawjaafaafaafaafalPalPalPaafapxapxapxapxawlawmawmawmawmawmawmawmawnapxapxawoawpawqapxawrawsaNJaIgaHMaJfaJfaJfaJfaJfaHLaJfaHuaJfaJfaJfaJeaJeaJlaIYaJaaDpahmaIxaIAaIDaITaIvaHravdaIwawLawLbcxawMawNaVcawLauiawPawQaLlayMayMayMayMaLQaMdaMmawUasRasRasRasRasRawUawVawdaweaaaaaaaaaaafaafaaaaafaaaaaaawWaaaaaaaafaaaaaaaafaaaaaaaafaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaawXawYawYawYawZaxaawYawYaxbaxcaOtaxbaxbaxbaPDatKaQIaspaaaaafaafaaaaaaaaaaaaaafaaaaxgaKhaKgaafaaaaafaaaaaaaaaaaaaaaapxapaapaaxjapaapaapaapaapaapaapaapaaxkaxlaxmaxnaxnaxnaxnaxnaxnaxoaJBaMHaxraxraxraxraxsaJAaxraJbaxraxsaxraxraxraxraxwaxxaxyaKdaKaaHxaJRaJRaJRaHrauhaJQawLawOawMaxCawMaVeaxEaWraxGaxHaMqaMdaMdaMdaMuaMBaMEaMGaJwasRasRasRasRasRaJxaJyaxNaxOaaaaaaaaaaaaaafaaaaafaaaaxPaxQaxPaaaaafaaaaaaaafaaaaaaaaaaafaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaxRaxSaxTaxUaxVaxTaxTaxWaxUaxTaxXaxYaxZaxZblwatKaQIatLaafaafaaaaaaaaaaaaaaaaafaybaycaydbdBayfaaaaafaaaaaaaaaaaaaaaapxapaapxaygayhayiayiayiayiayiayiayiayjaygaykaylaylaylaylaylaylaylaQnaynaxrayoaypayqayrbdCbbraLDaMIaywayxaypayyaxrayzapEayAalNaQvaNFaNIbdEaHqaHravdbdFayDaxFaxFayEayFayGbdcayIavVbbUbaTbaNbaNbaNaZjbavbdwaYUbdGasRasRasRasRasRbdIasPasPasPaaaaaaaaaaafaafaafaafaaaaySbdJaySaaaaafaaaaaaaafaaaaaaaaaaaaaafaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaafaafatHayUayVayUayWaxTaxTayXayUayVayUayYaxSaxVblyatHaQIatKatKazaatOatOatOatOatPatKazbazcazdazeazbapxapxawoawpawqapxapxapxapaaryaygaaaaafaaaaafaaaaafaaaaafaaaaygaykaylazfazgazhaziazjaylaQnapaaxrazkazkazlazmaznazoaMJaBdazrazsaztaztaxrayzapEazualNaQvaNFaHybdEaHqaHrauhazvbbOazxazyazzazAazBazBazCazBasPbeHbeObeDbeEbeFbeGbdHasPbdLasRasRasRasRasRbdKasPaafaaaaaaaaaaaaaafaafaaaaafazLazMbdMazOazPaafaaaaaaaafaaaaaaaaaaaaaaaaafaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaafazQasSazRavtazSazTazUazVazWazSavtazXazYasSazZblFatHblNbnubnubnubnubnubnuaIQbezaAeazbaAfaAgaAhazbbeXapaapaapaapaapaapaapaapaaAjaygaafaAkaAkaAkaAkaAkaAkaAkaafaygaykaylaAlaAmaAnaAoaAlaylaQnaApaxraxraxraxraMZaAraypaAsaAraNHaxraxraxraxrayzapEaAualNaQvaNFaHybdEaHqaHravdaAvazBazBazBazBazBazBaAwaAxaAyazBasPasPasPasPbfGbghasPasPbdKasRasRasRasRasRbdKasPaaaaaaaaaaaeaaaaaaaaaaaaaafaAAaABbdTaADaAAaafaaaaaaaafaaaaaaaaaaaaaaaaaaaafaafaaaaaaaaaaaaaafaafaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaeaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaxRayVaAEaAFaAFaAFaAFaAGayVaxRaAHasSaAIbplatHaAKaAKaAKaAKaAKaAKaAKaMQbfxbfzazbbckaANaAOazbaAPaAQaAPaAPaAPaAPaAPaAPaAPaAPaARaaaaAkaASaATaAUbbTaAWaAkaaaaygaykaylaAlaAXbewaAZaAlaylaQnapxaxraBaaBbazlaNKaBdazoazpaBdaNYazsaBfaBfaxrayzapEayAalNbdZaIkaIhbdEbejbelavdaAvaHraBiaAxaBjaBjazBaAwaBkaAyazBaBlaBmaBnaBobhCaUKaBqaafbfBbfdbfdbfdbfdbfdbfgaafaaaaaaaaaaaaaaaaaaaaaaaaaafaAAaBuaBvaBwaAAaafaaaaaaaBqaBqaBqaBqaBqbgrbhqaBqaBqaBqaBqaBqaBqaBqbgoaBFaBFaBFaBGaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaeaaaaaaaaaaaaaaaaBHaBIaBJaBIaBIbhQboPaBIaBIaBJaBMaBNasSaYQaZOaQlaDraDKaBSaBTaBUaDqaAKaMQaPOatKazbazbaBXaBYaARaBZaCaaCbaCcaCdaCeaCfaCgaXEaCiaARaafaAkaQmaCkaClaCmaCnaAkaafaygaykaylaCoaCpaCqaCpaCraylaQnaCsaxrayoaypaCtaCuaAraCvaAsaAraCwaCxaypaCyaxrayzapEayAalNaQvaIAaIDaQxaIvaHraCAaCBaHraCCaAxaAxaAxazCaCDaCEaCFazBaCGaCHaCIaCJaTsaUKaBqaaaaafaaaaafaaaaafaaaaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaafaAAaZbaCMaCNaAAaBqaCOaCPaBqaQSaQDaQDaQDaQDaQDaQDaQFaRdaRdaRdaRdaRfaRdaRdaRdaRhaDaaafaaaaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaBHaBMaBIaDbaDcaDcaDdaDeaDfaDgaDhaDcaDcaDiaDjayUayWaZuaAKaRqaSQaDnaDoaDnaQjaEJaLRaDsaqYaZnaDuaDvaAcaDwaDxaDyaDzaDzaDzaDAaDzaDzaDBaCaaARaaaaAkaRAaRTaRVaCmaSaaAkaaaaygaykaylaRuaDHaDIaDJaRyaylaQnaDLaxraxraxraxraDMaAraypaDNaBdaDOaTuaypaDQaVGaVwaVzaVdaVpaKJaVAaShaShaShaSEaScaULbeAaTnbabaSPaSPaSPaUgaSPaTFaTTaTUaTVaUkaUGaVHaUKaBqaBqaBqaBqaBqaBqaBqaBqaBqaCOaCPaBqaBqaBqaCOaEjaEkaBqaBqaAAaAAaElaEmaAAaEnaVqaVoaVoaVsaEsaEsaEsaEsaEsaVQaVraEuaEuaEuaEuaUNaEuaEyaEyaVnaEyaEyaEyaEyaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaDiaEBaECaEDaDcaEEaDcaEEaDcaEEaDcaEEaDcaEFaEGazSayWaEHaAKaVuaYIaEKaELaEMaENaAKbirbizaAcaEQaAcaERaqYaAPaESaDBaDzaDzaDzaDzaDzaDzaETaWjaWgaVJaVIaWMaWNaWKaWLaWJaAkaafaygaWIaWpaWuaWxaWqaWsaWkaWpaZdaZcaxraFmaypazlaFnaBdazoaFoaAraCwaVvaypaFqaVGaWSaFsaFtaWTbdZagjagjagjagjaVEaVFaWyaVxaVybazaVxaXfaVxaXeaVxaXgaXhaFGaFHaFIaBoaXjaXlaXXaXVaXVaXCaYcaXYaXYaXYaXYaXYaYdaXYaXYaYwaYgaYeaXmaYHaYGaYxaWOaWPaWQaWQaWQaWRaEsaEsaGeaEsaGfaGgaGhaEsaEuaWUaEuaGjaXkaXcaGmaGnaGoaIbasHaGraGsaGtaGuaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaJGaJGaJGaJGaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaGvaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaDRaDcaDcaBJaDcaEEaDcaEEaGxaEEaDcaEEaDcaEFaEGazSayWaGyatHatHaYRaYKaYPaYKaQlaQlaYJaYNaYOaYLaYMaYLaYLbakbajaGKaGLaGLaGLaGMaGLaGLaGNaGOaARaaaaZXaAkayJbkiayJaAkaAkaaaaygavOaylbaiaZIaZiaZqaZDaZEaZhbglaxraHbaypaCxaCuaAraypaAsaAraCwaZgaypaHdawGaYbaHfaHgaUnaXoalNalNalNalNalNaHjaXnazBaHlaAxazBaHmazBaHnazBaHobcvbcwbcNbczbdNbcXaYibdlbdmbbvbdAbbwbbvbbvbbxbbzbbybbAbbybbFbbybbybbibcubcbbawbawbaCbaSbawbaxbawbaWaYhaHOaHPaHQaHRaHSaHTaEsaHUbaXaEuaHWaHXaYfaHZaGnaIaaIbasHaIcaEyaEyaEyaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaJGaJGaJGaJGaJGaJGaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaDiaIdaECaEDaDcaEEaDcaEEaDcaEEaDcaEEaDcaEFaEGazSaIeawzawyawxawuawuawuawzawCawDawzawAaImaInawBauKauKaAPaGOaIpaCaaIqaGOaGOaIraIsaItaIuaARaaaawaaaaavMavNavMaaaaafaaaaygavOaylaIyaIzavZaIBaICaylavKavLaxraIEaypazlaIFaIGazoaIHaIIaIJaIKaILaIMawGaBsaIOaIPavzaBKaISaaaaaaaUnaIUaIVaBLazBaIXaAxaAxaAxaCEaAxaAxaAxauOaBoaKyaBoaBoavJaBoaJcaBoaJdavHavGaJgaJhaJiaJjaJkavFaJjavEaJjaJjaJjaJjavDaJjaJjavCaJjaJjaJjaJjasIayRayvaAzaAiaBraBpazHaEsazIavpavlavmavnazFayNayPazDazEasHaIbaJDaJEaJFaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaJGaJGaJGaJGaJGaJGaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaJHaJIaBIaDbaDcaDcaDcaJJaDcaDcaJKaDcaDcaDiaJLaJMayWaxTaJNaJOaJOaJOaJOaJOaJOaJOaJPasDatHaPRasCaPRatKaAPaJSaJTaJUaJVaJVaJVaJVaJWaJXavxayLaJZavaaKbaKcavbaKeaKbaKbaKfaygavcaylaylaylavyayJayLawGaUnarMaxraxraxraxraKlaKmaCxaCxaKnayHawGawGaxraxraIOaIOaIOaIOaKpaKqaKraKsaUnaKtaIVaKuazBazBazBazBazBazBazBazBazBauOaKwaKvaKxaIZauMavIaKBaKCaJdauyauWauXaKGaKHaJjaKIauVaKKawtaKKaKMaKNaKOauQaKQaKRauxaKTauUaKVaJjauwauvaKYaJraKZaJtaJuaysaEsaLbauuaLdavfauoaveaunaEuaEyaLhasHaIbaLiaLjaLkaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaJGaJGaJGaJGaJGaJGaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaJHaJIaBIaDbaDcaDcaDcaJJaDcaDcaJKaDcaDcaDiaJLaJMayWaxTaJNaJOaJOaJOaJOaJOaJOaJOaJPasDatHaPRasCaPRatKaAPaJSaJTaJUaJVaJVaJVaJVaJWaJXavxayLaJZavaaKbaKcavbaKeaKbaKbaKfaygavcaylaylaylavyayJayLawGaUnarMaxraxraxraxraKlaKmaCxaCxaKnayHawGawGaxraxraIOaIOaIOaIOaKpaKqaKraKsaUnaKtaIVaKuazBazBazBazBazBazBazBazBazBauOaKwaKvaKxaIZauMavIaKBaKCaJdauyauWauXaKGaKHaJjaKIauVaKKawtaKKaKMaKNaKOauQaKQaKRauxaKTauUaKVaJjauwauvaKYaJraKZardaJuaysaEsaLbauuaLdavfauoaveaunaEuaEyaLhasHaIbaLiaLjaLkaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaJGaJGaJGaJGaJGaJGaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaJHaBIaBJaBIaBIbhQboPaBIaBIaBJaJIaLmasSaLnaxTawXaLoaLoaLpaLoaLqatHaLraLsasDaLtaLuaACaLwazwaLyaLzaLAaLzaLzaLzaLzaLzaLzaLzaLBaLCazNaAdaLFaLFayTaLHaLFaLFaLFaLIazKaLKaLLaLFazJaLNaLOaLPayBazGaMkaLSawiaIPaLTaLTaLTaLTaLTaLTaLUaLVaLWaLXaLYaLZaMaaMbaMcaIOaIOaIOaDGaMeaMfaMeaMgaMhaMiaMjaIOaMkaxiaBoaMlaxMaOOaMoaMnaMpaxKaMraMsaMtaJdaxLaMvaMwaMwaMxaJjaMyaxJaMAaxBaMAaMAaMCaMDaxDaMDaMFayOayCayQaMDaJjasIarZaHPaHPaCXaDFaHPaHPaEsaMOaMPaEuaytaMRaHZavTaEuaMSaymayeaIbaEyaEyaEyaaaaafaaaaaaaaaaaaaaaaaaaaaaaaaJGaJGaJGaJGaJGaJGaJGaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaawXayVaMVaAFaAFaAFaAFaMWayVawXaAHasSaAIaMXaMYaNHavSaNbaNbaNcatHaNdaLsaxAaNfaLuaxzaNhaNiaNjaNkaNlaLzaLzaLzaLzaLzaLzaLzaxdaxeaxfaLzaLzaLzaxpaxhaLzaLzaLzaLzaxvaLzaLzaLzaxtaNmaLuaLPaIOaIOaIOaIOaIOaIOaIOaIOaIOaIOaIOaIOaNsaNtaNuaNvaNwaNxaNyaNzaNAaIOaIOaIOaLPaIOaIOaIOaIOaIOaIOaIOaIOaNBawhaCjaCWaCQaMpaNEaMpaMpawEaNGaMsaMZaJdawFawJawSaNLaNMaJjaNNawTaNPawHaNRaNSaJjaNTawIaNTaJjaJjaJjavCaJjaJjasIarZaNVaHPaHPaNWaHPaNXaEsaEuaEuaEuaEuaEuaEuavQaEuaIbaIbasHaIbaNZaOaaEyaaaaafaaaaaaaaaaaaaaaaaaaaaaJGaJGaJGaJGaJGaJGaJGaJGaJGaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaawXayVaMVaAFaAFaAFaAFaMWayVawXaAHasSaAIaMXaMYawwavSaNbaNbaNcatHaNdaLsaxAaNfaLuaxzaNhaNiaNjaNkaNlaLzaLzaLzaLzaLzaLzaLzaxdaxeaxfaLzaLzaLzaxpaxhaLzaLzaLzaLzaxvaLzaLzaLzaxtaNmaLuaLPaIOaIOaIOaIOaIOaIOaIOaIOaIOaIOaIOaIOaNsaNtaNuaNvaNwaNxaNyaNzaNAaIOaIOaIOaLPaIOaIOaIOaIOaIOaIOaIOaIOaNBawhaCjaCWaCQaMpaNEaMpaMpawEaNGaMsawvaJdawFawJawSaNLaNMaJjaNNawTaNPawHaNRaNSaJjaNTawIaNTaJjaJjaJjavCaJjaJjasIarZaNVaHPaHPaNWaHPaNXaEsaEuaEuaEuaEuaEuaEuavQaEuaIbaIbasHaIbaNZaOaaEyaaaaafaaaaaaaaaaaaaaaaaaaaaaJGaJGaJGaJGaJGaJGaJGaJGaJGaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaafaafazQasSaMYavtazSaObaOcaOdaOeazSavtaOfaOgasSayWaxTaMYaOhaOiaNbaNbaNcatHaOjaLsasDaNfaLuasXaOlaOmaOmaOmaOnaOoaOpaOmaOqauYaOmaOraOsavkavjaOmaOvaOwaOxathatlatkatjatiatcatbatbasYatdaNmaLuaLPaIOaOHaIOaOIaOIaOIaOIaOIaOIaOIaOIaOJaOKaOIaOIaOIaOIaOLaOIaOIaOIaOIaOIaOMaONaOIaOIaOIaOIaOIaOIaOIaIOaIOaIOaBoaAYasOaOQaOQaOQaORasQaNGaMsaBQaJdaJdaJdaJdaJdaOUaJjaOVasKasLasNaNPaNPaJjaOZasMaPbaPcaPbaPbasJaPeaJjasIarZaPfaPfaPgaPhaPiaPiaPjaEsaPkaPlaPmaEyaskaVbasbaIbaIbasHaIbaEyaPsaEyaPtaPtaPtaPuaPvaPwaaaaaaaaaaJGaJGaJGaJGaJGaJGaJGaJGaJGaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaafaafatHaxRayVaJMayWaxTaxTayXaJMayVaJMaPxawYaPyaxTaxRaPzaPzaLpaPzaLqatHaPAaLsasDatHaPRasCatEaPBaPEaPEaPEaPEaPEaPFaPGaPEaPEaPEaPRaPRatmaPIaPJaPIaPKasGaPMaLzaLAaPNasFaPPaPQaLAaLzaPRaPRaUnaIOaIOaIPaPTaKraKraPUaPUaPUaPUaPVawGawRaxqaPZaQaaQaaQbaQcaQaaQdaQeaQfawGaQgaPUaPUaPUaPUaKraKraQhaINaIOaIOaBoaQiashaQkaQkaQkaQkasyassasiaQoavXarFdZFaQsaQtaQuaJdaJdaszaQwasBaQyaQzaJjaQAasAaQCaQCaQCaQCascaQEaJjasaarZaQGaHPaPgaPhaHPaHPaQHaEsarOaQJaQKaEyaQLarpaPraSoaPoasgaIbaQQaQRaEyasfaQTaPtaQUaQVaQWaafaaaaaaaJGaJGaJGaJGaJGaJGaJGaJGaJGaaaaaaaaaaaaaaeaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaGvaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaawXaQXaxTaQYaPyaxTaxTaQZaQYaxTaQXaPyaxTaxTaxTaRaaRbaRbaRbaRbaRbaRbaRbaRcatUaPBaReaufausautaumaRjaRkaRlaRmaRnaRoaRpaukaRraRsaRtaujaRvaRwaxIaPKatwaPMaPMaRzaPMaugaPSaPSaRBaRCaPSaPSaPSaRDaIOaIPaREaaaaaaaaaaaaaaaaaaaaaaPWaRFaRGaRHaRIaRJaRKaRJaRLaRMaRNaROaPWaaaaaaaaaaaaaaaaaaaaaaRPaINaIOauZaRRaRSatDaQoaQoaQoaQoaQoaRUatGaQoaQoaQoaQraMpaRWaRXaRYaRZatxaSbatyaSdaSeaJdaPbatCaSgaSgaSgaSgatTaSiaJjasIarZaSjaSjaPgaPhaSkaSkaSlaEsaEsaSmaEsaEyaLhatZaulaulaulatNaTJaEyaEyaEyaSpaSqaSraSsaStaSuaafaafaaaaJGaJGaJGaJGaJGaJGaJGaJGaJGaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
@@ -10643,26 +10648,26 @@ aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaasSasSaTOaTPaTPaTPaTPaTPaTPaTPazYasSatHaTQaTRatHatHaTSaFuaTSaTSaTSaBgaTSaBgaPBaReaFvaTWaPEaTXaRnaRnaTYaTZaUaaUbaTYaRnaRnaRnaUcasEaUdaUeaUfaPKaFkaPMaUhaUiaUjaFpaPSaDlaSUaSUaSSaSUaUmaIOaIOaIPaKqaPVaUnaUoaPWaPWaUpaUqaUraUsaUtaUtaUuaUvaUtaUuaUvaUtaUwaUxaUyaUzaUAaPWaPWaUoaUnaUBaUCaINaIOaIOaBoaUDatnaToaTkaQoaUEaUFaQoaFjaUHaTkaQoaQraMpaUIaRXaUJaFzaFyaUMaFxaUOaRXaUPaUQaURaSgaUSaUTaSgaUUaUVaJjasIarZaUWaUWaPgaPhaUXaHPaHPaUYaHPaUZaVaaEyaIbaTGaTHaSoaTGaFwaQqaVfaEyaVgaSsaSsaSsaSsaSsaVhaViaVjaVkaJGaJGaJGaJGaJGaJGaJGaJGaJGaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaVlaVlaVlaVlaVlaVlaVlaVlaVlaVlaVlaVlaafaVmazTaxVaxTaBOaEwaEvaEtaEraEXaEWaEVaEUaEPaEIaEAaEzaEqaPEaVBaRnaRnaTYaUaaVCaVDaTYaRnaRnaRnaRtasEaPKaPKaEfaPKaEgaEhaEhaEhaEhaEoaEiaEpaSSaSSaSSaHaaUmaIOaIOaIPaLTaLTaVKaVLaVMaPWaVNaTbaUtaVOaUtaUtaUtaUtaVPaUtaUtaUtaVRaVSaVSaVTaVUaPWaVVaVLaVWaVXaLTaINaIOaIOaThaQoatDaQoaQoaQoaVYaVZaQoaFjaWaaTkaQoaQraMpaWbaRXaWcaWdaWeaWfaFiaUOaWhaJdaPbaURaWiaSgaSgaSgaUUaPbaJjaFharZaEsaEsaFgaPhaWlaWmaHPaWnaWoaKZaFfaFaaymaFdaFeaFcaFdaFbaymaEZaFaaEYaWzaSsaSsaSsaWAaWBaWCaTMaWDaJGaJGaJGaJGaJGaJGaJGaJGaJGaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaVlaVlaVlaVlaVlaVlaVlaVlaVlaVlaVlaVlaVlaWEaWFaWGayWaWHaGlaGzaGqaGBaGAaGDaGCaGEaGqaGGaGFaGIaGHaFXaPEaWVaRnaWWaWXaWYaWYaWZaWYaWYaWYaXaaXbaFYaXdaGcaGbaGaaFZaReaReaXiaPBaGdaPSaIlaHFaHEaHBaHpaHkaIoaIOaIOaIOaIOaXpaXqaXraXsaXtaXuaUtaXvaXwaXxaXyaXzaXAaXBaIRaXDaKUaXFaXtaXGaXHaXIaXJaXKaXLaXMaXNaXOaIOaXPaBoaRSatnaXQaTkaQoaXRaXSaQoaFjaToaTkaQoaQraXTaRWaRXaWcaRXaXUaRXaGJaUOaXWaJdaQAaURaSgaSgaSgaSgaUUaQEaJjaGPaGRaXZaYaaQOaQPaPgaPgaPgaPgaPgaPgaFVaEyaIbaTGaTHaSoaTGaTHaIbasHaEyaSnaSsaSsaSsaSsaYkaYlaYmaafaafaJGaJGaJGaJGaJGaJGaJGaJGaJGaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaVlaVlaVlaVlaVlaVlaVlaVlaVlaVlaVlaVlaVlaYnavtaYnaxTaYoaBgaYpaYqaYraYraYraYraYsaYtaTSaYuaYvaBPaCSaYyaYyaYyaYzaYyaYAaYBaYCaYDaYEaYEaYFaRtaFOaFPaFEaFDaFJaFFaFAawwaFCaFBaFLaFKaFMaYSaYSaYSaYTaUnaHeaIOaYVaYWaYXaYYaYZaZaaPWaHiaHhaZeaZfaPWaPWaPWaPWaPWaPWaPWaPWaPWaHcaXwaZkaZlaPWaZaaYZaZmaGTaYWaZoaIOaIOaThaQoaZpaQoaQoaQoaFHaQoaQoaFUaQoaZraZraZraZraZsaZtaKAaRXaRXaRXaZvaZwaZxaJdaZyaZzaSgaZAaZAaZBaZzaZCaJjaFWaBDaZFaZGaPgaPgaPgaPgaZHaPgaPgaPgaFVawKaIbaPoaPraSoaPoaPraIbasHawKaYjaSsaSsaZJaSsaSsaZKaYmaafaaaaJGaJGaJGaJGaJGaJGaJGaJGaJGaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaVlaVlaVlaVlaVlaVlaVlaVlaVlaVlaVlaVlaVlaZLaZMaWGayWaZNaBWaZPaZQaZRaZSaZTaYraZUaZVaTSaZWbaEaBPaCSaZYaZZbaaaCLaYybacbadbaeaPEbafbagbahaChaPEaCRaBtbalbalbalbalawvbalbalbanbaobaobaobapbaobaqaUnbasbatbauawGawGawGbaAaFTbaAbayaFrbaybaAbaBbaBbaBbaBbaBbaBbaBbaBbaBaCVbaDbbubaDaPWaPWaPWawGawGawGaZoaIOaIOaUnbaFbaGaBlbaHaQobaIaQobaJbaKbaLaZrbaMaFQbaOaJdaJdaJdbaPbaQbaQbaQaJdaJdaJdbaRaSgaSgaLeaFNbaUbaVaGwaJjaBEaBDbaYaEsbaZbbabbbaWmbbcbbabbdaWmbbeaEybbfaQMaQNbbgaQMaQNaIbbbhaEyaDkbbjbbkaSsaSsbblbbmaYmaafaafaJGaJGaJGaJGaJGaJGaJGaJGaJGaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaVlaVlaVlaVlaVlaVlaVlaVlaVlaVlaVlaVlaafaxRbbnaPybboaBgbbpbbpbbqaAMbbsbbqbbtbbpaTSaQpaOTaALaByaBzaBzaBAaBBaBzbbBbadbbCaPEbafbagbbDbbEaPEaBxaBtbalbbGbbHbbHardbbIbalbbJbbKbbLbbMbarbarbaraUnaIOaIOaYVawGbbPbbQbbRbbSaBRaFlaDSbbWbaAbaBbbXbbYbbZbcaaBhbccbcdbaBaCVbcebcfbcgbchbcibcjaAVbdsawGbcmbcnbcnaUnbcqbcqaBoaBobcoaThbcobcpaBoaBoaRRaBoaBoaBobcqbcrbcrbcrbcrbcrbcrbcsbcrbcqayZbctbctaCKaZFaZFaZFayKbcqaBEaBDbaYaEsaEsaEsaEsaEsarZaEsaEsaEsaEsaEyaBCbcAawKavUawKbcyayabcqaPtbcBaSsbcCaSsaSsaWAbcDbcEaTMaWDaJGaJGaJGaJGaJGaJGaJGaJGaJGaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaVlaVlaVlaVlaVlaVlaVlaVlaVlaVlaVlaVlaVlaYnavtaYnaxTaYoaBgaYpaYqaYraYraYraYraYsaYtaTSaYuaYvaBPaCSaYyaYyaYyaYzaYyaYAaYBaYCaYDaYEaYEaYFaRtaFOaFPaFEaFDaFJaFFaFAaAqaFCaFBaFLaFKaFMaYSaYSaYSaYTaUnaHeaIOaYVaYWaYXaYYaYZaZaaPWaHiaHhaZeaZfaPWaPWaPWaPWaPWaPWaPWaPWaPWaHcaXwaZkaZlaPWaZaaYZaZmaGTaYWaZoaIOaIOaThaQoaZpaQoaQoaQoaFHaQoaQoaFUaQoaZraZraZraZraZsaZtaKAaRXaRXaRXaZvaZwaZxaJdaZyaZzaSgaZAaZAaZBaZzaZCaJjaFWaBDaZFaZGaPgaPgaPgaPgaZHaPgaPgaPgaFVawKaIbaPoaPraSoaPoaPraIbasHawKaYjaSsaSsaZJaSsaSsaZKaYmaafaaaaJGaJGaJGaJGaJGaJGaJGaJGaJGaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaVlaVlaVlaVlaVlaVlaVlaVlaVlaVlaVlaVlaVlaZLaZMaWGayWaZNaBWaZPaZQaZRaZSaZTaYraZUaZVaTSaZWbaEaBPaCSaZYaZZbaaaCLaYybacbadbaeaPEbafbagbahaChaPEaCRaBtbalbalbalbalayubalbalbanbaobaobaobapbaobaqaUnbasbatbauawGawGawGbaAaFTbaAbayaFrbaybaAbaBbaBbaBbaBbaBbaBbaBbaBbaBaCVbaDbbubaDaPWaPWaPWawGawGawGaZoaIOaIOaUnbaFbaGaBlbaHaQobaIaQobaJbaKbaLaZrbaMaFQbaOaJdaJdaJdbaPbaQbaQbaQaJdaJdaJdbaRaSgaSgaLeaFNbaUbaVaGwaJjaBEaBDbaYaEsbaZbbabbbaWmbbcbbabbdaWmbbeaEybbfaQMaQNbbgaQMaQNaIbbbhaEyaDkbbjbbkaSsaSsbblbbmaYmaafaafaJGaJGaJGaJGaJGaJGaJGaJGaJGaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaVlaVlaVlaVlaVlaVlaVlaVlaVlaVlaVlaVlaafaxRbbnaPybboaBgbbpbbpbbqaAMbbsbbqbbtbbpaTSaQpaOTaALaByaBzaBzaBAaBBaBzbbBbadbbCaPEbafbagbbDbbEaPEaBxaBtbalbbGbbHbbHaxubbIbalbbJbbKbbLbbMbarbarbaraUnaIOaIOaYVawGbbPbbQbbRbbSaBRaFlaDSbbWbaAbaBbbXbbYbbZbcaaBhbccbcdbaBaCVbcebcfbcgbchbcibcjaAVbdsawGbcmbcnbcnaUnbcqbcqaBoaBobcoaThbcobcpaBoaBoaRRaBoaBoaBobcqbcrbcrbcrbcrbcrbcrbcsbcrbcqayZbctbctaCKaZFaZFaZFayKbcqaBEaBDbaYaEsaEsaEsaEsaEsarZaEsaEsaEsaEsaEyaBCbcAawKavUawKbcyayabcqaPtbcBaSsbcCaSsaSsaWAbcDbcEaTMaWDaJGaJGaJGaJGaJGaJGaJGaJGaJGaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaazQasSbcFaAFaWGatHatHatHatHatHatHbcGaAbaBgaTSaTSaTSaTSaTSaTSaTSaTSaTSbcHaReaBPaCSaZYbcIbcJbcKaYybcLbcMaDEaPEbafbagbcObcPaPEaBxaBtbalbbHbcQbcQbbHbcQbalbbJbcRbcSbcSbcTbcUbcVbarbcWaIOaYVaGkbcYbgCbdabdbbdbbdaaFSbddbaAbaBbdebdfbdgbdhbdibdjbdkaGpaGYbdnbdobclbdpbdqbdrbclaLgawGaAJbdtaIOaNsbdubdvaZFaZFaZFaZFaZFaZFaZFaZFaZFaZFaZFaZFbdxaZFaZFaZFaZFaZFaZFaZFaZFbdyaZFaZFaZFaZFaZFaZFaZFaBDbdzaDPaDTaCYaDUaCYaDVaCYaDXaDWaDYaCYaDZaCYaEaaEbaCYaCYaCYaCYaCYaCYaEcaEdaEebdObcCaSsaSsaSsaVkbdPaVjaVkaJGaJGaJGaJGaJGaJGaJGaJGaJGaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabdQbdQbdQbdQbdQbdQbdQbdQbdQbdQaaaaafbdRazTaxVbdSaCTbdUbdUbdUbdUbdUbdUbdVbdWaPBaXiaReaBPaCSaYyaYybdXbdYaYyaPEaPEaCUaPEbafbeabcObebaPEaFRaBtbalbecbedbbHbcQbeebalbbJbefbcSbcSbcSbegbehbarbeiaIOaYVaGibekbgCbembenbeobepaFSbeqbaAbaBberbesbetbetbetbeubevbaBaCVbexbclbclbdpbeybdrbclaLfawGaBVaIOaIOaNsbdubdvaZFaZFaZFaZFaZFaZFaZFbeBaZFaZFaZFaZFaZFaZFbeCaCYaCYaCYaCYaCYaCYaCZaCYaCYaCYaCYaCYaCYaCYaAaaDDaDCaDtaZFaZFaZFaZFaZFaBDaZFaZFaZFaZFaZFaZFaZFaZFaZFaZFaZFaZFbeIbdzbeJaSsaSsbcCaSsaSsbeKbeLaTMaTMaTNaJGaJGaJGaJGaJGaJGaJGaJGaJGaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabdQbdQbdQbdQbdQbdQbdQbdQbdQbdQbdQaWEaWFbeMayWbeNbUVbePbePbeQbePbePbePbeRaPBaPBaPBaPBaBPaCSaZYbeSbeTbeUaYybeVbeWbUWaPEaPEaPEaPEbeYaPEaBxaBtbalbOLbbHbcQbfabfbbalbbJbarbfcbcSbcSbPhbfebarbUkaIOaYVbTpbfhbgCbembfibfjbepaFSbfkbaAbflbfmbfnbetbfobetbdfbfpbfqaCVbfrbfsbftbfubfubfvbclbfwawGcqMcuSdzKcvvcxRdPwdPxdTPdPxbXudPxcEzdTQbTqdTSctbctbctaaZFaZFaZFaZFbfDaZFbfybfOaZFctcdyRctdbfIbWUdzVbfIbfKdTUdTVdTWaZFaZFaZFaZFaZFbfObfPbfDaZFaZFaZFaZFaZFaZFaZFaZFaZFaZFaZFaZFbdzbfQbfRbfSbfTbfUbfVbbmbfWaafaaaaafaJGaJGaJGaJGaJGaJGaJGaJGaJGaaaaaaaaaaaaaaeaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabdQbdQbdQbdQbdQbdQbdQbdQbdQbdQbdQaYnavtaYnaxTbfXbePbfYbfZbgabgabgbbgcbgdbgebgebgebgebUibUubUrbUrbUtbUsbUrbUobUobUpbUobUnbUlbUlbUmbUlbMmaBtbalbOKbbHbbHbOJbOHbalbNubarbgybcSbcSbPhbgzbgAbffaIOaYVbaAbgCbTnbdabdabdabdaaFSbgEbaAbaBbgFbgGbWJbgIbgJbgGbgKbaBaCVbURbUQbgNbgObgPbgQbgRbgSawGdwgaHfdvgawGbTobTobgUbgUbgUbgUcmTcmTcsUcsVcsrcsscsVcsUcmTcmTcmTckbckbckbckbckbbcqbcqdwybhbbhbbhbbhbbhbbktdxDbcqcsYdyodytbhkbhkbhlbhlbhlbhlbhlbhmbhnbhnbhobhnaZFbhnbhobhnbhnbhpbTodyudyubNdbhrbhgaPtaPtaPtaaaaaaaaaaJGaJGaJGaJGaJGaJGaJGaJGaJGaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabdQbdQbdQbdQbdQbdQbdQbdQbdQbdQbdQaZLaZMbeMayWbhsbePbhtbePbhubhvbePbePbePaRebhwbhxbhxbTHaYyaZYbhzbcJbhAaYybUabTZbTTbTSbTVbTUbTXbTWbTYbTXbTMbTNbTObTPbTObTObTQbTRbTJbMkbhSbcSbcSbTLbhUbhVbffaIObhWbaAbhXbaAbhZbVnbibbSMaFSbaAbaAbaBbiebifbigbihbiibijbikbaBaCVbTybimckrbiobipbgQbclbiqawGcRSdaWducawGcqlcqncqSbThcrDcrGcrMcsncqUcqVcrAcrBcogcofcpscoYcmTcmIbVecmUcpMckbcqkcpNcQKcptbVUcktcktclSbktcggbiSbiScksbiSbiUbiUbhlbiVbiWbiXbhlbiYbiZbiYbhlbhmbhnbhpbNdbSNbTgbSNbNdbSQbSObNdbjebTEbjgbhgaaaaaaaaaaaaaJGaJGaJGaJGaJGaJGaJGaJGaJGaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabdQbdQbdQbdQbdQbdQbdQbdQbdQbdQaaaaaaaMYbbnaPybjhbePbjibePbjjbjkbjlbQYbePbjnaRebjoaRebTjaYyaYyaYyaYyaYyaYybTAbjrbjsaRebjtbalbalbalbTzbalbalbalbjvbalbalbalbalbjwbTCbMcbjzbcSbcSbPhbjAbgAbSuaIObSvbaAbjCbaAbaAbaAbaAbaAbTkbaAbTmbTlbjGbjHbbXbjIbbXbjJbjKbTvbTxbTybjNbclbjObjPbgQbjQbjRbaDbSEaIObDbcgQcglcgPcgjcgkchOciichMchNchochocgRcgScjtcjpciHciEciDciCciBciAckcckbcjDcgecylcgecjvcjucgecgfbktcggbiSbkwcfKcgdbkzbkAbkBbkCbkDbkCbSjbkFbkGbkHbhlbkIbkJbkKbNdbSwbSAbSzbSDbNEbSybNdbkRbkSbkTbhgaaaaaaaaaaaeaJGaJGaJGaJGaJGaJGaJGaJGaJGaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaazQasSbcFaAFaZMaTPaTPaTPbkUaTPbkVayWaxTaxTbePbkWbkXbkYbkZblablbblcbldbldbldbldbXnbWDbWDbWDbTXbTXbTXbWCblhblhblhblibalbljblkbWEblmblnbloblpblqblrblsbltblubVHbgAbjzbcSbTDbWwbWxbWxbWMbEvbWLbXmbWXbWIbZTbWFbXmbWRbXkbXjbXibTvbTvbTvbTvbWHbTvbTvbTvbTvbVZbWGbWQbWSbWObWPbWKbWNbWjbWsbWTaIObDbbgUdVHdVIdVJdVKdVEbOIdVFdVGcjtcjtcjtcjtcjtcjpdVzdVydVBdVAdVDdVCdVuckbdVwdVvdAJcgecjvcjucgedVLbktcggdVNbYedVMbYbbXHbXMbXFbXGbXGbXGbXUbXWbXAbXzbXybXxbXEbXDbXgbXfbXcbNEbXbbWVbXebNdbmPbkSbmsbhgaaaaaaaaaaaaaaaaJGaJGaJGaJGaJGaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaGvaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabmQbmRavtaYnawYawYawYaPyaxTaxTbePbmSbmTbkZbmUbePbePbePaPBbmVbmWbmXbmYbmXbmXbmXbmYbmXaPBaPBbalbalbalbmZbalblpblpbnablpblpblpblpblpbnbbncbndbnebWebWdbWdbWdbWabWcbVYbUYbVcbWibWnbVgbWfbWfbWhbWgbWqbWpbVobWrbWobnxbnybnzbnAbnBbnCbnzbnDbnxbPVbTybnFbnGbnFbaDbaDbaDbONbaDdUZaIObDbcgQcglcgPdVadVbbRDbgUdUSdUTdUXdUYdUVdUWdVndVmdVldVkcmTdVpdUEdVodVfdVedVddVcdAIdVidVhdVgdVidVqbUedVrdVsdTXbnYdTYboabobbocbodboebofbofbogbkCbohbhlbWvbojbokbNdbVXbVzbVsbUGbVAbVVbNdbmPbkSborbhgaaaaaaaaaaaaaafaafaafaafaafaafaafaafaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaeaaaaaaaaaaaaaaaaaaaaabmQavtavtaYnaxSaxSaxSbosaxSaxSbePbotboubovbkZbePaaaaaaaaaaafaafbowbowbowbowbowbowbowaaaaaaboxboybozboAboBblpblpblpblpblpblpblpblpboCbjzbcSboDboEboFbarbarbVGbVHbaraUnboHboIbVEaUnboLboMboMbNsboMbVFbUEboMabLboQboRbnzboSbnBboSbnzboTboQbPVbVkboVbfuboWbVybVBbVDbUDbnFbpcaIObDbbgUbOMcqndUQdURdUNbixdUOdUPdUJdUKdULbVWdUGdUFdUIdUHcmTckbdUEdUDdUAckbdUCdUBdUydUxdUzdUzdUvdUwbktcggbiSdUubkxbkxboabpybpzbpAbpBbpCbpCbpDbpEbpFbhlbpGbojbpHbNdbUPbUJbUIbUGbNEbUFbNdbkRbkSbpMbhgaaaaaaaaaaaaaafbpNbpObMdbpObMdbpObpQaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabdQbdQbdQbdQbdQbdQbdQbdQbdQbdQaaaaafbdRazTaxVbdSaCTbdUbdUbdUbdUbdUbdUbdVbdWaPBaXiaReaBPaCSaYyaYybdXbdYaYyaPEaPEaCUaPEbafbeabcObebaPEaFRaBtbalbecbedbbHbcQbeebalbbJbefbcSbcSbcSbegbehbarbeiaIOaYVaGibekbgCbembenbeobepaFSbeqbaAbaBberbesbetbetbetazqbevbaBaCVbexbclbclbdpbeybdrbclaLfawGaBVaIOaIOaNsbdubdvaZFaZFaZFaZFaZFaZFaZFbeBaZFaZFaZFaZFaZFaZFbeCaCYaCYaCYaCYaCYaCYaCZaCYaCYaCYaCYaCYaCYaCYaAaaDDaDCaDtaZFaZFaZFaZFaZFaBDaZFaZFaZFaZFaZFaZFaZFaZFaZFaZFaZFaZFbeIbdzbeJaSsaSsbcCaSsaSsbeKbeLaTMaTMaTNaJGaJGaJGaJGaJGaJGaJGaJGaJGaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabdQbdQbdQbdQbdQbdQbdQbdQbdQbdQbdQaWEaWFbeMayWbeNbUVbePbePbeQbePbePbePbeRaPBaPBaPBaPBaBPaCSaZYbeSbeTbeUaYybeVbeWbUWaPEaPEaPEaPEbeYaPEaBxaBtbalbOMbbHbcQbfabfbbalbbJbarbfcbcSbcSbPhbfebarbONaIOaYVbTpbfhbgCbembfibfjbepaFSbfkbaAbflbfmbfnbetbfobetbdfbfpbfqaCVbfrbfsbftbfubfubfvbclbfwawGcqMcuSdzKcvvcxRdPwdPxdTPdPxbXudPxcEzdTQbTqdTSctbctbctaaZFaZFaZFaZFbfDaZFbfybfOaZFctcdyRctdbfIbWUdzVbfIbfKdTUdTVdTWaZFaZFaZFaZFaZFbfObfPbfDaZFaZFaZFaZFaZFaZFaZFaZFaZFaZFaZFaZFbdzbfQbfRbfSbfTbfUbfVbbmbfWaafaaaaafaJGaJGaJGaJGaJGaJGaJGaJGaJGaaaaaaaaaaaaaaeaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabdQbdQbdQbdQbdQbdQbdQbdQbdQbdQbdQaYnavtaYnaxTbfXbePbfYbfZbgabgabgbbgcbgdbgebgebgebgebUibUubUrbUrbUtbUsbUrbUobUobUpbUobUnbUlbUlbUmbUlbNuaBtbalbOLbbHbbHbOKbOJbalbOHbarbgybcSbcSbPhbgzbgAbffaIOaYVbaAbgCbTnbdabdabdabdaaFSbgEbaAbaBbgFbgGbWJbgIbgJbgGbgKbaBaCVbURbUQbgNbgObgPbgQbgRbgSawGdwgaHfdvgawGbTobTobgUbgUbgUbgUcmTcmTcsUcsVcsrcsscsVcsUcmTcmTcmTckbckbckbckbckbbcqbcqdwybhbbhbbhbbhbbhbbktdxDbcqcsYdyodytbhkbhkbhlbhlbhlbhlbhlbhmbhnbhnbhobhnaZFbhnbhobhnbhnbhpbTodyudyubNdbhrbhgaPtaPtaPtaaaaaaaaaaJGaJGaJGaJGaJGaJGaJGaJGaJGaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabdQbdQbdQbdQbdQbdQbdQbdQbdQbdQbdQaZLaZMbeMayWbhsbePbhtbePbhubhvbePbePbePaRebhwbhxbhxbTHaYyaZYbhzbcJbhAaYybUabTZbTTbTSbTVbTUbTXbTWbTYbTXbTMbTNbTObTPbTObTObTQbTRbTJbMmbhSbcSbcSbTLbhUbhVbffaIObhWbaAbhXbaAbhZbVnbibbSMaFSbaAbaAbaBbiebifbigbihbiibijbikbaBaCVbTybimckrbiobipbgQbclbiqawGcRSdaWducawGcqlcqncqSbThcrDcrGcrMcsncqUcqVcrAcrBcogcofcpscoYcmTcmIbVecmUcpMckbcqkcpNcQKcptbVUcktcktclSbktcggbiSbiScksbiSbiUbiUbhlbiVbiWbiXbhlbiYbiZbiYbhlbhmbhnbhpbNdbSNbTgbSNbNdbSQbSObNdbjebTEbjgbhgaaaaaaaaaaaaaJGaJGaJGaJGaJGaJGaJGaJGaJGaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabdQbdQbdQbdQbdQbdQbdQbdQbdQbdQaaaaaaaMYbbnaPybjhbePbjibePbjjbjkbjlbQYbePbjnaRebjoaRebTjaYyaYyaYyaYyaYyaYybTAbjrbjsaRebjtbalbalbalbTzbalbalbalbjvbalbalbalbalbjwbTCbMkbjzbcSbcSbPhbjAbgAbSuaIObSvbaAbjCbaAbaAbaAbaAbaAbTkbaAbTmbTlbjGbjHbbXbjIbbXbjJbjKbTvbTxbTybjNbclbjObjPbgQbjQbjRbaDbSEaIObDbcgQcglcgPcgjcgkchOciichMchNchochocgRcgScjtcjpciHciEciDciCciBciAckcckbcjDcgecylcgecjvcjucgecgfbktcggbiSbkwcfKcgdbkzbkAbkBbkCbkDbkCbSjbkFbkGbkHbhlbkIbkJbkKbNdbSwbSAbSzbSDbNEbSybNdbkRbkSbkTbhgaaaaaaaaaaaeaJGaJGaJGaJGaJGaJGaJGaJGaJGaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaazQasSbcFaAFaZMaTPaTPaTPbkUaTPbkVayWaxTaxTbePbkWbkXbkYbkZblablbblcbldbldbldbldbXnbWDbWDbWDbTXbTXbTXbWCblhblhblhblibalbljblkbWEblmblnbloblpblqblrblsbltblubVHbgAbjzbcSbUkbWwbWxbWxbWMbEvbWLbXmbWXbWIbZTbWFbXmbWRbXkbXjbXibTvbTvbTvbTvbWHbTvbTvbTvbTvbVZbWGbWQbWSbWObWPbWKbWNbWjbWsbWTaIObDbbgUdVHdVIdVJdVKdVEbOIdVFdVGcjtcjtcjtcjtcjtcjpdVzdVydVBdVAdVDdVCdVuckbdVwdVvdAJcgecjvcjucgedVLbktcggdVNbYedVMbYbbXHbXMbXFbXGbXGbXGbXUbXWbXAbXzbXybXxbXEbXDbXgbXfbXcbNEbXbbWVbXebNdbmPbkSbmsbhgaaaaaaaaaaaaaaaaJGaJGaJGaJGaJGaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaGvaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabmQbmRavtaYnawYawYawYaPyaxTaxTbePbmSbmTbkZbmUbePbePbePaPBbmVbmWbmXbmYbmXbmXbmXbmYbmXaPBaPBbalbalbalbmZbalblpblpbnablpblpblpblpblpbnbbncbndbnebWebWdbWdbWdbWabWcbVYbUYbVcbWibWnbVgbWfbWfbWhbWgbWqbWpbVobWrbWobnxbnybnzbnAbnBbnCbnzbnDbnxbPVbTybnFbnGbnFbaDbaDbaDbTDbaDdUZaIObDbcgQcglcgPdVadVbbTKbgUdUSdUTdUXdUYdUVdUWdVndVmdVldVkcmTdVpdUEdVodVfdVedVddVcdAIdVidVhdVgdVidVqbUedVrdVsdTXbnYdTYboabobbocbodboebofbofbogbkCbohbhlbWvbojbokbNdbVXbVzbVsbUGbVAbVVbNdbmPbkSborbhgaaaaaaaaaaaaaafaafaafaafaafaafaafaafaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaeaaaaaaaaaaaaaaaaaaaaabmQavtavtaYnaxSaxSaxSbosaxSaxSbePbotboubovbkZbePaaaaaaaaaaafaafbowbowbowbowbowbowbowaaaaaaboxboybozboAboBblpblpblpblpblpblpblpblpboCbjzbcSboDboEboFbarbarbVGbVHbaraUnboHboIbVEaUnboLboMboMbNsboMbVFbUEboMabLboQboRbnzboSbnBboSbnzboTboQbPVbVkboVbfuboWbVybVBbVDbUDbnFbpcaIObDbbgUbRDcqndUQdURdUNbixdUOdUPdUJdUKdULbVWdUGdUFdUIdUHcmTckbdUEdUDdUAckbdUCdUBdUydUxdUzdUzdUvdUwbktcggbiSdUubkxbkxboabpybpzbpAbpBbpCbpCbpDbpEbpFbhlbpGbojbpHbNdbUPbUJbUIbUGbNEbUFbNdbkRbkSbpMbhgaaaaaaaaaaaaaafbpNbpObMdbpObMdbpObpQaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaxRaYnaYnbpRaTPbpSazQasSbpTbpSbePbpUbpVbpWbpXbePaaaaaaaaaaaaaaabowbowbowbowbowbowbowaaaaaabpYbpZblpbqabqbbqbbqbbqbbqbbqcbqbbqbbqbbqdbqebqfbqgbqhbqibarbqjbPhbqkbqlbtfbffbqnbqoaUnaUnboMbqpbVdbqrbXdbTrboMbTtbVfbVhbqxbqybqzbqybqAbVibVjbTxbVkbqEbfubqFbaDbqGbnFbTubnFbpcaIOcVhbgUdUjdUkdUhdUidUgbixdUedUfdUcdUddUadUbbZzdUsdUrdUqdUpbPZdUodUnbPZbPZbPZbPZdUmdUlbPZbPZbktdTZbktcggbiSdTXbnYdTYbrabrbbrcbrdbrebrebrebpDbkCbrfbrgbrhbkJbVlbNdbUAbUwbUvbUzbNEbTwbNdbTIbmrbhgbhgaaaaaaaaaaaaaafbrobrpbrqbrrbrrbrsbroaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabrtbrtbrtbrtbrtbrtbrtbrtbrtbrtbrtbrtaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabowbowbowbowbowbowbowbrubrvbrwbrxblpblpblpbrybrybrybryboAblpblpblpbnbbrzbcSbrAbrBbrCbrDbrEbPhbcSbrFbRgbffbqnbrHbrIbrJbNMbrLbPPbrNbPObNLboMaafbrQbrRbnzbqybrSbqybnzbrTbrUbPVbPWbrWbrXbrYbaDbrZbnFbNNaUnbpcbNxcoNbNybNzbNAbNCbPKbIibixbPMbPQbLDbPRbPubPSbLDbLDbPYbPUbPZbPZbQxbQpbQFbIrbQIbQHbQSbQJbQVbPZbJqbRabQWbQXbRfbRhbRbbRbbPGbsEbkBbsFbrebrebrebsGbkCbsHbrhbsIbsIbPHbrhbNDbNJbNIbNHbNEbNKbNdbmPbsPbhgaaaaaaaaaaaaaaaaafbsQbsRbrqbrrbrqbGrbMdaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabrtbrtbrtbrtbrtbrtbrtbrtbrtbrtbrtbrtbrtbrtbrtaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabowbowbowbowbowbowbowbsTbsUbsTbsVbsWblpblpblpblpblpblpboAblpbsXbalbalbsYbcSbcSbsZbtabtbbtcbPhbcSbcSbtdaIObqnbtebtfbtgbPrbtibtjbtkbPqbNwboMaafbrUbrUbIgbtobtpbnzbtqbOvbNgbPpbNqbtvbtvbtvbtvbtvbtvbtPawGboUaHfaHfawGbtNbtObpdbtJbPfbixbOUbOYbPubPvbPsbPtbOibOhbOgbNUbOybOubOkbOjbOCbOBbOAbOzbOGbOFbOEbODbNtbPAbPAbPBbPCbPDbPDbPDbtZbHWbkBbubbkCbkCbucbPgbkCbuebkIbufbugbORbkIbMsbMvbMucnUbCYbrhbNdbuobhgbhgbupbuqbuqbuqburbkIbrobrrbrqbrrbrrbrsbroaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabrtbrtbrtbrtbrtbrtbrtbrtbrtbrtbrtbrtbrtbrtbrtbrtbrtaaaaaaaaaaaaaaaaaaaaeaaaaaaaaabowbowbowbowbowbowbowbusbutbusbuublpblpblpbrybrybrybryboAblpbuvbuwbalbuxbcSbcSbsZbuybuzbtcbOxbuBbqfbuCbuDbuEbpcbuFbtgbuGbuHbuIbuJbOmbMeboMbzCbOpbOobOnbuRbrSbuRbOvbOwbuTbuTbNqbuUbuVbuWbuXbuYbuZbMfawGbvcaIOaIOawGbnTbMnbMrbMBbMSbMTbMUbMVbMLbMPcawbMRbNabMZbNcbNbbApbHvbMYbMWbNlbNkbNGbNobNfbNebNibNhbMjbMlbMhbMibiSbvybvzbMgbvBbvBbkBbvCbvDbvEbkBbNVbkCbvGbWzbvIbvJbOebvLbvMbOfbvObvPbvQbsIbkJcarbEQcfDcjwclmclmclmcnsbvWbvXbpObMdbvYbMdbpObvZaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabrtbrtbrtbrtbrtbrtbrtbrtbrtbrtbrtbrtbrtbrtbrtbrtbrtbrtaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabowbowbowbowbowbowbowbwabrvbwbbwcblpblpblpblpblpblpblpboAblpbuvbwdbalbwebegbcSbwfbqfbwgbqfbNFbcSbrFbRdbffaIObpcbuFbtgboMbwibwjbwkbwlbMbboMbwnbHhbwpbNBbNgbNjbNmbNnbwubGIbwwbNqbGCbwybwzbwAbwBbwBbjZblEbjVbjWaIobgUbRqbLRbLNbLPbjYbixbLYbLZbLDbLXcbObLWbFNbLDbLAbLzbPZbPZbPZbDcbDcbHfbIIbHfbAqbLJbLGbAqbAqbAqbAqbLybiSbiSbkIbkIbkIbxbbkBbkBbkBbkBbkBbMMbxebxfbxgbxhbxibMobMpbMpbMqbxmbojbxnbxobxpbMQbMNbTibTGbMpbSibMpbUcbkIbupbuqburbxtbkIaaaaaaaafaaaaaaaaaaaaaaaaaaaaeaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabrtbrtbrtbrtbrtbrtbrtbrtbrtbrtbrtbrtbrtbrtbrtbrtbrtbrtaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabowbowbowbowbowbowbowbusbutbusbxubxvblpblpbxwbSRbSSbSRbSXbSRbSYbTabSTbSUbSVbSWbTbbSWbTcbTdbSVbxFbxGbRgbffaIObxHbxIbxJboMbxKbxLbxMbxNbRJbRzbRHbRGbRFbREbSsbStbSkbSrbSebShbRUbSdbybbycbycbydbyebyfbQwbtvcbPbDNbLUbgUbixcbQcciccjcsXcsZcaWcbabPucbccbebLWcdabPucdkbWubRSceEceJceFbDccckccFccEbAqbSCbTsbQObRtbAybAqbRsbRwbRxbRubRvbRibRibQTbRebRibRrbRmbRpbRCbRBbRibRybMabSPbyPbyQbSLbySbrhbrhbrhbyScuRctebyVbupburbkIbojbvVbyWbyXbyYbyZbzabzbaaaaaaaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabrtbrtbrtbrtbrtbrtbrtbrtbrtbrtbrtbrtbrtbrtbrtbrtbrtbrtaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabowbowbowbowbowbowbowbzcbzdbzcbzebzfbzgbzgbzgbzgbzgbzhbPLblpbuvbzjbalbzkbOXbzmbSbbzoboEbRZbzqbzrbarbarbffaIObztbzubtgboMbzvbzwbzxbwjbQEboMbzzbSfbQDbzCbQubzEbQvbuTbQtbzIbzJbNqbzKbzLbzMbzNbyebyfbQwbtvbpcbDNawhbtQbLSbLTbvpbINbEpbXtbXrbXsbLDbLDbLDcsocrobPZbWybWubXqbXpbXobOSbDcbNvbVRbVQbWtbRcbQUbQKbRjbQabYcbSKbYObZMbZNbZObvMbvMbArbvMbAsbvMbOfbQnbQnbQnbQqbQobQrbAvbAwbAxbRTbAzbAAbABbACbySbDTcpvbAFaafaafbkIbAGbvVbyXbyXbvWbAHbAIbAJaaaaaaaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabrtbrtbrtbrtbrtbrtbrtbrtbrtbrtbrtbrtbrtaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabowbowbowbowbowbowbowbAKbALbAMbalbalbANbrvbrvbrvbAObalbalbAPbAQbARbalbASbASbASbRKbASbAUbRLbAWbAXbAYbAUbffaIOclFbBaaUnboMawGawGawGawGbQjboMbzCbQkbzCbRAbQlbQmbQlbuTbuTbuTbuTbNqawGawGawGawGawGbtvbPobtvbpcbVabuDbVbbUSbUTbUUbUZbUdbUfbUgbUqbTFcpzbUbcqPbVKbVJbVMbVLbVxbVwbVIbVCbQcbVpbVvbVtbVmbPTbQbbQabOQbPEbAqbQsbSJbzCbrhbrhbrhbzCbQibzCbzCbEzbQfbQhblzblzbBUbKjbOlbBWbAwbBXbQZbBZbCabCbbCcbySbDTcpvbCdaaaaaabkIbCebGvbkIbvWbkIbkIbvWbkIaaaaaaaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabrtbrtbrtbrtbrtbrtbrtbrtbrtbrtbrtbrtaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabowbowbowbowbowbowbowbrubrvbrwbrxblpblpblpbrybrybrybryboAblpblpblpbnbbrzbcSbrAbrBbrCbrDbrEbPhbcSbrFbRgbffbqnbrHbrIbrJbNMbrLbPPbrNbPObNLboMaafbrQbrRbnzbqybrSbqybnzbrTbrUbPVbPWbrWbrXbrYbaDbrZbnFbNNaUnbpcbNxcoNbNybNzbNAbNCbPKbIibixbPMbPQbLDbPRbPubPSbLDbLDbPYbPUbPZbPZbQxbQpbQFbIrbQIbQHbQSbQJbQVbPZbJqbRabQWbQXbRfbRhbRbbRbbPGbsEbkBbsFbrebrebrebsGbkCbsHbrhbsIbsIbPHbrhbNDbNJbNIbNHbNEbNKbNdbmPbsPbhgaaaaaaaaaaaaaaaaafbsQbsRbrqbrrbrqbvYbMdaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabrtbrtbrtbrtbrtbrtbrtbrtbrtbrtbrtbrtbrtbrtbrtaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabowbowbowbowbowbowbowbsTbsUbsTbsVbsWblpblpblpblpblpblpboAblpbsXbalbalbsYbcSbcSbsZbtabtbbtcbPhbcSbcSbtdaIObqnbtebtfbtgbPrbtibtjbtkbPqbNwboMaafbrUbrUbIgbtobtpbnzbtqbOvbNgbPpbNqbtvbtvbtvbtvbtvbtvbvpawGbtJaHfaHfawGbtPbtQbtNbtObPfbixbOUbOYbPubPvbPsbPtbOibOhbOgbNUbOybOubOkbOjbOCbOBbOAbOzbOGbOFbOEbODbNtbPAbPAbPBbPCbPDbPDbPDbtZbHWbkBbubbkCbkCbucbPgbkCbuebkIbufbugbORbkIbMsbMvbMucnUbCYbrhbNdbuobhgbhgbupbuqbuqbuqburbkIbrobrrbrqbrrbrrbyXbroaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabrtbrtbrtbrtbrtbrtbrtbrtbrtbrtbrtbrtbrtbrtbrtbrtbrtaaaaaaaaaaaaaaaaaaaaeaaaaaaaaabowbowbowbowbowbowbowbusbutbusbuublpblpblpbrybrybrybryboAblpbuvbuwbalbuxbcSbcSbsZbuybuzbtcbOxbuBbqfbuCbuDbuEbpcbuFbtgbuGbuHbuIbuJbOmbMeboMbzCbOpbOobOnbuRbrSbuRbOvbOwbuTbuTbNqbuUbuVbuWbuXbuYbuZbMfawGbvcaIOaIOawGboUbMnbMrbMBbMSbMTbMUbMVbMLbMPcawbMRbNabMZbNcbNbbApbHvbMYbMWbNlbNkbNGbNobNfbNebNibNhbMjbMlbMhbMibiSbvybvzbMgbvBbvBbkBbvCbvDbvEbkBbNVbkCbvGbWzbvIbvJbOebvLbvMbOfbvObvPbvQbsIbkJcarbEQcfDcjwcnsbvVbvVbxtbvWbvXbpObMdbpdbMdbpObvZaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabrtbrtbrtbrtbrtbrtbrtbrtbrtbrtbrtbrtbrtbrtbrtbrtbrtbrtaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabowbowbowbowbowbowbowbwabrvbwbbwcblpblpblpblpblpblpblpboAblpbuvbwdbalbwebegbcSbwfbqfbwgbqfbNFbcSbrFbRdbffaIObpcbuFbtgboMbwibwjbwkbwlbMbboMbwnbHhbwpbNBbNgbNjbNmbNnbwubGIbwwbNqbGCbwybwzbwAbwBbwBblEbnTbjVbjWaIobgUbRqbLRbLNbLPbjYbixbLYbLZbLDbLXcbObLWbFNbLDbLAbLzbPZbPZbPZbDcbDcbHfbIIbHfbAqbLJbLGbAqbAqbAqbAqbLybiSbiSbkIbkIbkIbxbbkBbkBbkBbkBbkBbMMbxebxfbxgbxhbxibMobMpbMpbMqbxmbojbxnbxobxpbMQbMNbTibTGbMpbSibMpbUcbkIbupbuqburbyYbkIbjZaaaaafaaaaaaaaaaaaaaaaaaaaeaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabrtbrtbrtbrtbrtbrtbrtbrtbrtbrtbrtbrtbrtbrtbrtbrtbrtbrtaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabowbowbowbowbowbowbowbusbutbusbxubxvblpblpbxwbSRbSSbSRbSXbSRbSYbTabSTbSUbSVbSWbTbbSWbTcbTdbSVbxFbxGbRgbffaIObxHbxIbxJboMbxKbxLbxMbxNbRJbRzbRHbRGbRFbREbSsbStbSkbSrbSebShbRUbSdbybbycbycbydbyebyfbQwbtvcbPbDNbMabgUbixcbQcciccjcsXcsZcaWcbabPucbccbebLWcdabPucdkbWubRSceEceJceFbDccckccFccEbAqbSCbTsbQObRtbAybAqbRsbRwbRxbRubRvbRibRibQTbRebRibRrbRmbRpbRCbRBbRibRybMcbSPbyPbyQbSLbySbrhbrhbrhbyScuRctebyVbupburbkIbojbvVbyWbyZbAGbzbbzabAHaaaaaaaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabrtbrtbrtbrtbrtbrtbrtbrtbrtbrtbrtbrtbrtbrtbrtbrtbrtbrtaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabowbowbowbowbowbowbowbzcbzdbzcbzebzfbzgbzgbzgbzgbzgbzhbPLblpbuvbzjbalbzkbOXbzmbSbbzoboEbRZbzqbzrbarbarbffaIObztbzubtgboMbzvbzwbzxbwjbQEboMbzzbSfbQDbzCbQubzEbQvbuTbQtbzIbzJbNqbzKbzLbzMbzNbyebyfbQwbtvbpcbDNawhbGrbLTbLUbINbLSbEpbXtbXrbXsbLDbLDbLDcsocrobPZbWybWubXqbXpbXobOSbDcbNvbVRbVQbWtbRcbQUbQKbRjbQabYcbSKbYObZMbZNbZObvMbvMbArbvMbAsbvMbOfbQnbQnbQnbQqbQobQrbAvbAwbAxbRTbAzbAAbABbACbySbDTcpvbAFaafaafbkIbAJbAIbCebCedkrclmdksbkIaaaaaaaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabrtbrtbrtbrtbrtbrtbrtbrtbrtbrtbrtbrtbrtaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabowbowbowbowbowbowbowbAKbALbAMbalbalbANbrvbrvbrvbAObalbalbAPbAQbARbalbASbASbASbRKbASbAUbRLbAWbAXbAYbAUbffaIOclFbBaaUnboMawGawGawGawGbQjboMbzCbQkbzCbRAbQlbQmbQlbuTbuTbuTbuTbNqawGawGawGawGawGbtvbPobtvbpcbVabuDbVbbUSbUTbUUbUZbUdbUfbUgbUqbTFcpzbUbcqPbVKbVJbVMbVLbVxbVwbVIbVCbQcbVpbVvbVtbVmbPTbQbbQabOQbPEbAqbQsbSJbzCbrhbrhbrhbzCbQibzCbzCbEzbQfbQhblzblzbBUbKjbOlbBWbAwbBXbQZbBZbCabCbbCcbySbDTcpvbCdaaaaaabkIdktbGvbkIbvWbkIbkIbvWbkIaaaaaaaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabrtbrtbrtbrtbrtbrtbrtbrtbrtbrtbrtbrtaaaaaeaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabowbowbowbowbowbowbowaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabCgaafaaaaaaaaaaaabASbChbNpbQRbCkbAUbQQbCmbCnbCobAUbffaIObQMbQLbQNbQLbPebPdbPFbPzbPJbPIbPNbQPaXNbCzcdKbCBbCCbCDaIOaIOaMibDbaMjaNsbCubCGbCHaCzbPccexbpcbDNbSHbymbymbSBbSBbSBbymbymbSmbSxbRXbRYbScbSgbRYbRXbRWbRVbRSbRRbRQbRPbDcbRObRNbRMbRIbOtbOrbAybAgbNrbAqbRkbCTbzCbPabPbbFRbOTbOWbOZbOqbEzbOObOPbIXblzblzbQdbOlbBWbDubDvbPXbDxbDybDzbDAbySbDTcoObyVbyVbyVbyVbyVbkIbkIaaaaaaaafaaaaaaaaaaaaaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaafaafaafaafaafaaaaaaaaaaaaaafaafaafaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaGvaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabrtbrtbrtbrtbrtbrtbrtbrtbrtbrtbrtbrtbrtaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabowbowbowbowbowbowbowaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabASbDCbDDbDmbDFbDGbDnbDIbDlbDKbAUbffbDLbDiaIOaIOaIObDbaNsbCubCGbDNaIOaIObDdaIOaIObDPbDQbDRaIOaIOaIOaIObDbaIOaNsbCubCGbDSaXNbDVaXNbFrbELbKsbymbEbbBxbBxbBxbEebEdbEgbEfbEibEhbzGbEjbEJbEKbCZbDabDcbDebDfbDgbDcbDhbDkbDwbDEbAgbCQbCRbAgbAgbAqbksbCTbzCbEnbEmbEsbErbEqbEobEBbEzbEybEtbDXbDXblzbDqbDYbECbEDbEEbEFbDzbDtbDBbEIbySbDTbEHbFMbxBbFZbFSbyVaafaafaafaafaafaafaafaaaaaaaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaafaafbENbEObEObEPbtrbtrbjmbjmbjmbjmbEMaafaafaaaaaaaaaaaeaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabrtbrtbrtbrtbrtbrtbrtbrtbrtbrtbrtbrtbrtbrtbrtbrtbrtbrtaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabowbowbowbowbowaaaaaaaaaaaaaaaaaaaaaaaabERbESbBRbESbEUaaaaaaaaabASbASbEVbEWbDmbEWbEXbEYbEZbFdbFbbAUbFcbffbEwbFebuDbFfbFgbFsbFhbFibuEaIObFjbEubCfbEvbFaaIObDSaXNaXNaXNaXNbDWbFnbFobFpbFqbFrbFybFCbFAbuDbuEaIObymbFmbBxbFlbETbBxbEdbFubFtbFzbFxbFwbFvbFEbFFbFBbFDbFKbFQbFGbDcbDcbHfbHfbHfbAqbEGbExbEAbElbEkbAqbksbCTbzCbFJbFHbFRbFPbFUbFTbFVbEzbFWbEtbDXbDXbkIbFIbFXbFLbGebyHbFObFYbGfbGRbGWbySbHabxAbxAbxAbHFbHjbAFaaaaaaaaaaaaaafaaaaaaaaaaaaaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaafaafaafbGbbmLbGabmLbtrbjmbjmbjubmybjubjmbjmaafaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
@@ -10673,13 +10678,13 @@ aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabrtbrtbrtbrtbrtbrtbrtbrtbrtbrtbrtbrtaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaeaaaaaaaaaaaaaaaaaabGpbMwbMxbMybGpbMzbGtbGubASbASbMAbMAbMAbASbASbGDbJkbJkbGibJkbJkbJkblPbKYaaabGLbMDbMEbMFbMGbMHbMIbMJbMGbMGbMKbGBbGjbGhbGHbGHbGHbGHbGHbGHbMObGHbGHbyKbGGbGkbGKbPycpqasZbymbEbbBxbBxbBxbHdbLjbApbFtbJYbGZbHbbBtbGVbInbGXbGYbHMbGSbGTbGUbGNbGObEcbGPbGcbGdbmobGgbHgbHebkybksbhJbhJbHYbCvbCvbCvbCvbhJbhJbhJbHPbHAbHzbHzblzbHQbojbBWbCPbHybHtbHubHrbHsbHnbHpbHlbHmbGobGnbGEbGxbGJbmNbGQbGMbGmbGlaafaafaafaafaafaafaafaafaafaafaafaafaafaafaafaafaafaafbjmbjubjubjubjubjubjubjBbjubHkbjubjubjubjubjubjmbjmaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabNObESbNPbESbNQaaaaafaaaaaabASbNRbNSbNTbASaaabGDccpcbybzibJkbJkbJkblPbKYaaabGLbNWbNXbNYbNZbHVbOabObbOcbOdbGFbIabIobIcbIbbIdbIdbIdbIdbIdbIdbIpbIdbIebIebIqbGKbGKbGKbGKbymbymbHwbHwbHwbymbPZbHvbHobLQbHibzGbBubCUbLVbIlbImbPZbIkbEcbEcbEcbEcbEcbIjbIfbBAbmobHSbIsbCibkybksbhJbIKbITbISbIPbIObIRbIQbIKblAbIMbILbIXblzblzbJmbojbOVbmNbmNbjcbjcbjcbjcbIUbjcbIVbIWbIEbjcbIhbCWbyVbmNbIHbIGbItbmNaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaafaaaaaabjmbuibuibuibuibuibuibIJbjubunbuibHkbjubjubjubjubjmaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaafaafaafaafaafaafaafaafaafcbxbGDbGDbGDbGDbJkblQblPbPiaaabPjbJpbPkbPlbPmbHVbHVbPnblOblMbvRbmwblSblRbBSbgXbgXbgXbgXbgXbgXbgXbgXbPwbPxbombolbmvbmtbGKbymblCblBblDblDblGbvHblIblHblKblJblYblXbmabmbbmcbmdbmebmfbmgbmibmjbmkbidbmlbmmbmnbmobmpblfblebkybksbhJbrPblvbllbhYbhYbhYblxblTblAbkIbtTblzblzbQebgnbojbojbQgaafbjablVblUbiybmqbiyblWblZbnjbjcblLbnwbmObmNbnhbngbngbnEaagaagaaaaaaaaaaaaaaeaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabnHbmLbmLbmLbmLbmLbmLbmLbmAbmybjubjubjubjubmMbmybjmaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacaBcaCcaCcaDcaEbGDccfbJkbmKbGDaaaaaaaaaaaabGFbQybQzbQAbQBbGFbQCbBSbmIbmHbmJbBSbgXbmEbmGbmFbmCbmBbmDbfNbfNbfNbfNbfNbfNbkabnZbnXaWtboXbBzboObpkbpjbpibphbpobpnbnIbpmbnIbnJbvTbnvbnNbnObnLbnMbnObnSbnPbnQbnVbnWaPpbnUbmubmxbmzbvSdYmboYbpbbpabpfbpebpgbpebpqdYzbRlbmhbqBbRnbojbgnbojbojbRoaafbjabjbbjbbonboobopboqboKbpubjcbgqbgpbUKbmNbmNbmNbmNbmNaafaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaafaaaaaabjmbpsbpsbpsbpsbpsbpsbptbjubprbpsbjSbjubjubjubjubjmaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabjXcbncbocbpbJkbgsbJkbJkbgtbGDbguaaaaaaaaabGFbGFbGFbGFbGFbGFbGFbBSbhybhibhhbBSbgXbhBbgwbgxbgxbgwbgvbfNbgMbgLbgDbgBbfNbhDbymbymaNYbfAaOWbfEbBzbggbgibhGbfJbfHbgfbfLbgTbgVbgWbgYbgjbgkbbVbcZbgkbhfbhjbhEbgHbhabhcbhdbinbilbGKbhNbCTbhIbhIbhHbhYbicbiabhYbhYboZbSlbgmbSnbojbSobgnbojbSpbSqaafbjabjbbiAbiybivbiybisbiubjdbjcbgqbgpbjfbitbyVaafaafaafaafaafaafaafaafaafaafaafaafaafaafaafaafaafaafaafaafaafbjmbjubjubjubjubjubjubjBbjubjSbjubjubjubjubjubjmbjmaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaccecaCcaCcaDcbtbiLbkebGDbkubGDccgbkvbkEccgccgbjFbjLbjMbgZbjTbjUblgbYpbjqbjxbkQbjybgwbjEbjDbiNbiMbiObfNbiQbiPbjpbiRbfNaPnbsaaPdaPaaOYaOXbiTbiTbkhbkgbkfbiDbkdbkcbkbbiDbiDbiBbrmbqMbidbiCbhFbhebiKbiIbiJbiGbiHbiEbiFbiGbklbGKbksbCTbkkbknbkmbkrbkobkMbkLbhJbhJbrhbiwbrhbrhbrhbhTbxqbhRbrhbjcbjcbjcbjcbjcbkjbjcbjcbjcbjcbjcbgqbgpbkPbkpbyVaaaaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaafaaaaaabjmbjmbkNbjubjubjubjubjubjubjubjubjubjubjubjmbjmaafaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacaBcaCcaCcaDcaEbGDccfbJkbmKbGDaaaaaaaaaaaabGFbQybQzbQAbQBbGFbQCbBSbmIbmHbmJbBSbgXbmEbmGbmFbmCbmBbmDbfNbfNbfNbfNbfNbfNbkabnZbnXbamboXbBzboObpkbpjbpibphbpobpnbnIbpmbnIbnJbvTbnvbnNbnObnLbnMbnObnSbnPbnQbnVbnWaWtbnUbmubmxbmzbvSdYmboYbpbbpabpfbpebpgbpebpqdYzbRlbmhbqBbRnbojbgnbojbojbRoaafbjabjbbjbbonboobopboqboKbpubjcbgqbgpbUKbmNbmNbmNbmNbmNaafaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaafaaaaaabjmbpsbpsbpsbpsbpsbpsbptbjubprbpsbjSbjubjubjubjubjmaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabjXcbncbocbpbJkbgsbJkbJkbgtbGDbguaaaaaaaaabGFbGFbGFbGFbGFbGFbGFbBSbhybhibhhbBSbgXbhBbgwbgxbgxbgwbgvbfNbgMbgLbgDbgBbfNbhDbymbymaOWbfAaOXbfEbBzbggbgibhGbfJbfHbgfbfLbgTbgVbgWbgYbgjbgkbbVbcZbgkbhfbhjbhEbgHbhabhcbhdbinbilbGKbhNbCTbhIbhIbhHbhYbicbiabhYbhYboZbSlbgmbSnbojbSobgnbojbSpbSqaafbjabjbbiAbiybivbiybisbiubjdbjcbgqbgpbjfbitbyVaafaafaafaafaafaafaafaafaafaafaafaafaafaafaafaafaafaafaafaafaafbjmbjubjubjubjubjubjubjBbjubjSbjubjubjubjubjubjmbjmaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaccecaCcaCcaDcbtbiLbkebGDbkubGDccgbkvbkEccgccgbjFbjLbjMbgZbjTbjUblgbYpbjqbjxbkQbjybgwbjEbjDbiNbiMbiObfNbiQbiPbjpbiRbfNaPpbsaaPnaPdaPaaOYbiTbiTbkhbkgbkfbiDbkdbkcbkbbiDbiDbiBbrmbqMbidbiCbhFbhebiKbiIbiJbiGbiHbiEbiFbiGbklbGKbksbCTbkkbknbkmbkrbkobkMbkLbhJbhJbrhbiwbrhbrhbrhbhTbxqbhRbrhbjcbjcbjcbjcbjcbkjbjcbjcbjcbjcbjcbgqbgpbkPbkpbyVaaaaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaafaaaaaabjmbjmbkNbjubjubjubjubjubjubjubjubjubjubjubjmbjmaafaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaalQalQchdalQalQalQalQalQaaaaaaaaaaaaaaaaaaaafaafaaabyBbxRbxRbxRbxTbxRbxRbxPbxQccgbwobwhccgbwJbwKbwHbwIbwDbwGbwtbwvbwSbwObwNbxSbwMbgwbjEbwLbxjbiMbxdbfNbiQbiPbxcbxabfNbxybPybymbvnbvlbfFbvobtLbtXbvebvdbiDbvfbvkbvjbuObiDbuQbvFbvNbwUbqmbxObxEbiKbvrbvsbiGbvtbvubuabiGbykbGKbyabCTbhJbhJbhJbhJbhJbuLbhJbhJbvvbvqbuPbwYbxkbrhbiwbxxbvabrhbxlbwrbwsbwmbwqbwTbwVbujbwCbujbujbumbulbAEbyVbyVbyVaafaafaafaafaafaafaafaafaafaafaafaafaafaafaafaafaafaafaafaafbtrbjmbunbuibuibjubjubjubjubjubjubjubjubjmbjmaafaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaalQaaaaaaaaaaaaaafaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaafaafbLEbzRbsrbzQbzHbsNbzybzBbzFccgbzSbzVccgccgbAlbAmbAnbAhbAibAjbAkbYpbyNbyRbyObyxbyJbyMbyLbzDbyJbyJbyybzpbznbzAcjcbfNbkabqZbqZbqZbqZbywbqZbqZbqZbysbyrbiDbyvbqJbytbtDbiDbylbynbyubwUbqmbxObqmbiKbwWbwXbiGbyibwZbyhbwFbwEbyUbwPbwRbwRbwRbwRbwRbwRbxZbwRbwRbxZbwRbyqbwRbxZbyTbygbyjbyobyTbypbxAbxAbxAbxCbxDbxAbxAbxAbxAbxAbxzbxYbxXbVNbVObyVbyVbyVbyVaaaaafaaaaaaaaaanmanmanmaafaaaaaaaafaaaaaaaafaaaaaabxWbjmbxVbjmbjmbjubjubjubjubjubjubjubjmbjmaafaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaalQaaaaaaaaaaaaaaaaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaafbsqbsqbsrbsKbsBbsNbsObsLbsMccgbqvbqsbqubqCbqDbqwbqObtKbqQbqIbqKbqVbqUbqTbqSbstbrMbrGbribsdbsebsdbsvbsubsjbjpbshbfNbkabqZbqYbqWbqRbqXbqWbvUbqLbqPbqNbpxbppbqJbqJbsmbiDbsnbsobsibwUbqmbqqbpPbiKbsfbsgbiGbrObrVbsbbiGbssbidbvKboNbqHbqHbsaboJboGboibnRbnKbqtbGKbXOcdjbslbwQbskbrlbrnbwQbnibrkbpwbpwbpvbyVbyVbrjbpwbpwbpvbyVbyVbAEbnkbnmbnlbWWbnfbWYbWZbXabXabXabXabXabXabXabXabXabXabXabXabXabXabXabXabpIbpJbpJbpKbjmbjmbjubjubpLbjubjubjmbjmaafaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaalQaafaaaaaaaaaaaaaafaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabSFbSFbSFbSFbSFbSFbSFbudbuhccgccgccgccgccgbukbuAbuKbuKbuKbuMbuNbYpbjqbjxbtsbjybttbtxbtubtEbtCbtGbfNbtVbtHbtYbtWbfNbfCbqZbeZbdDbdDbambtMbkObqZbspbscbiDbtIbtFbqJbtDbiDbtAbtBbtzbwUbqmbtybtwbiKbszbsAbiGbiGbiGbiGbiGbssbidbidbidbfMcmHbxsbGKbXObXPbXQbGKbGKaaaaaaaaaaaabtSbtUbxrbtRbtSaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabyVbXVbswbXXbyVbyVbyVbyVaaaaafaaaaaaaaaanmanmanmaafaaaaaaaafaaaaaaaafaafaafbtmbtnbthbtlbtrbjmbjmbjubmybjubjmbjmaafaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaalQaafaaaaaaaaaaaaaafaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabSFbSFbSFbSFbSFbSFbSFbudbuhccgccgccgccgccgbukbuAbuKbuKbuKbuMbuNbYpbjqbjxbtsbjybttbtxbtubtEbtCbtGbfNbtVbtHbtYbtWbfNbfCbqZbeZbeubeubdDbtMbkObqZbspbscbiDbtIbtFbqJbtDbiDbtAbtBbtzbwUbqmbtybtwbiKbszbsAbiGbiGbiGbiGbiGbssbidbidbidbfMcmHbxsbGKbXObXPbXQbGKbGKaaaaaaaaaaaabtSbtUbxrbtRbtSaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabyVbXVbswbXXbyVbyVbyVbyVaaaaafaaaaaaaaaanmanmanmaafaaaaaaaafaaaaaaaafaafaafbtmbtnbthbtlbtrbjmbjmbjubmybjubjmbjmaafaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaalQaafaafaaaaaaaaaaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaafaafbSFbSGcnjcngcnhcnQbSFcsEcsmcqWcqTcrfcqXcqxcqxcqDcnEcnEcnDcnFbAkbYpbjqbjxcnCbwMcnzctfcnBcnwcnxcnybfNbtVcnpcnqdTTbfNbkabqZdZLdZOdZOdZMdZNbqZdYtdZPdZQbiDdZTdZRdZSdZHbiDdZGbtBcrCbwUcrwcrvcrEbiKdZKdZJbiKcrFbPwbiddZUbssdZVdZWbidbfMdWwdXGbGKaaaaafaaaaaaaafaaaaaaaaaaaacbXdkcdkedkdcbXaaeaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabYUbYUcoebYWbYUaaaaaaaaaaafaafaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaafaafcrubEObEObEPbtrbtrbjmbjmbjmbjmbEMaafaafaaaaaaaaeaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaalQaaaaafaafaafbTebTebTebTebTebTebTebTebTebTebTebTebTeaaaaaacmobSGbSGbSGbSGcmAbSFcrWcrVcpTcpScpQcpLcpOcpLcpKcpJcpIcpHcpGcpFcqccqdcmCdkbbgXbgXbgXbgXbgXbgXbgXbfNbfNcmBbfNbfNbfNbkabqZbqZdZrdZsdZtdZubqZcrXcqecqfbiDbkdbiDbiDbiDbiDbwUdZydZzbwUcqicqgcqibiKcsJdZBbiKbPybPybiddZDbssbidbidbidbfMcpWcmNbGKaaaaafaaaaaaaafaaaaaeaaaaaacqjcrLcCTcrRcqjaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabYUcqQcmGbZVbYUaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaafaafaafaafaafaaaaaaaaaaaaaafaafaafaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaalQaaaaaaaaaaaabTecnScqacnSbTecnOcpYcnObTecnMcpZcnMbTeaaaaaacphbSGcpXbSGbSGcpRbSFdPvcFTcFVcFUcRpcFXcFJcFIcFKbqVbqVcFMbqVbqKcFGcFHbjxcpCcpDcpucpucpEdEMdEOcoMdEXcpwcpxcpyeaqcoMbkabEaeaxbMXbMXeaveaweaDeaEdLbdPueazeaAeayeaeeaeeaudXBbwUbGKdFUdhOcZLcVvdFUbGKbiKbiKbPybPybidbssbsseareasbidbfMbGKbGKbGKaaaaafaaaaaaaafaaaaaaaaaaaacWzdkfcRYcRqcWzaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabYUcaycqbcaAbYUaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
@@ -10690,7 +10695,7 @@ aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaalQaaaaaaaafcsgclgcshclgcshclgccWclgccUclgccWclgccUclgccVbQGbQGbQGbQGbQGbQGbQGbQGcrPcrOcrUcrTcrSdTAdTNdTMdTLchBcsadZEcrYchBcaTchwchtcaOcsdcsecsbcscchhcaPcaOdQTdQTcsfclLclLcjXbkabEabEaebxebybEabEabEaebvclsebwdXBdXBdXBebuebCdXBdXBbfMcpqdXFdYWdYcdYddXFaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaafaaaaaaaafaafbtSccBcowccBdQUcmJcbUdRMcfhdQVdQWdQVbtSbtSaaaaaaaaaaafaafaaaaaaaaaaaaaaaaaaaafaaaceWaaaaafaafaafaafaafaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaafcbMbSZcgtcgrcgqcgAcgGchrcgFbSZcgDcgBcgCcgAbSZcgycgzcgwcgxcgucgvceVchachgchfcgYcgXcgZchDcijchJcikcgUcgIcgHcgKcgJchjchkchlcaOcaPcaPcaPcaPchhchicaOcoVcoVcoVclLclLcjXbkadBEbEadXWdXKdXLdXVbEadXZclsdXYdXBdYadXRdXSdYbdXBbPybfMcpqdXFcmucmtcmvdXFaaaaaaaaaaaaaaaaaabVuclMbYQcfebVuaafaaaaaaaaaaaabtSccBccBccBclNclOcdTclPclRclQcmaclWcmcbtSaaaaaaaaaaaaaafaafaaaaaaaaaaaaaaaaafaaacfVaaaaafaafaaaaaaaaaaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaalQaaaaaaaaaaafcfqcfpcfmcbDcfmcbDcfmcbDcfocbDcfmcbDcfncbkcbkcbkcflbSZbSZcfkbSZcgccbkcgbcgacfZcfTcfSchDchCchbcgWcfJcfGcfFcfAcfzcducfycfxcaOcgocfvcfvcfvcftcfucaOcllcfgcfgcfgcfrcjXbkacmDbEadXJdXKdXLdXLdXMdXNckfdXPdXQdXRdXRdXSdXCdXBckdcjWbGKeaQdXFckedXFeaQaaaaaaaafaaaaaaaaabVuceuccOccYbVuaafaafaaaaaaaaabtScfhcfhcfhcfhckZcbUckuckqckgckYckyckxbtSaaaaaaaaaaaaaaachcchcchcchdaafaafaafaafcfVaafaafaafaafaafampchcchcaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaalQaaaaafaafaafcbMciccibbSZcibciYchYciXciabSZcibbSZbSZbSZbSZbSZciUcbkciWciVcbkciqcipciscirciucitciwcrQcrpcpVcrrchBcincnrciochBcnKciMciQciRciSciSciTciTchqcixcaOcnAcfgcizcfgcntcjXbkadBXbEaciydYpdXLdYnbEadYtcnmdYtdXBdYrdXRdYqciLdXBbfMbGKbGKdXFcnocnnbTKdXFbVubVucnJbVubVubVubVucsjbXKcbdbVubVubVubZJaaaaaabtScmZcmVcmWcmXcmYcdTcnecnlcnkcnacbUcnbbtSaaaaaaaaaaaaaaachcaaaaafaaaaafaaaaaaaaachWaaaaafaafaaaaaaaaaaaachcaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaalQaaaaafaafaafcbMciccibbSZcibciYchYciXciabSZcibbSZbSZbSZbSZbSZciUcbkciWciVcbkciqcipciscirciucitciwcrQcrpcpVcrrchBcincnrciochBcnKciMciQciRciSciSciTciTchqcixcaOcnAcfgcizcfgcntcjXbkadBXbEaciydYpdXLdYnbEadYtcnmdYtdXBdYrdXRdYqciLdXBbfMbGKbGKdXFcnocnnbUBdXFbVubVucnJbVubVubVubVucsjbXKcbdbVubVubVubZJaaaaaabtScmZcmVcmWcmXcmYcdTcnecnlcnkcnacbUcnbbtSaaaaaaaaaaaaaaachcaaaaafaaaaafaaaaaaaaachWaaaaafaafaaaaaaaaaaaachcaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaalQaafaafaaaaaacbMciccibbSZcidchUchXchHchGchHchYchZciachLchHchHchRchHchSchTchHchIchIchHchGcfTchKbWlcrKcqwcpUbQGchBchFchBchBchBchvchwchtchuchzchAchxchychqdypcaOchpcfgchscfgcfgcjXbkabPybEabEadYibEabEabEadYkbPycmKdXBdXBdXBdYjdXBdXBbfMbGKaaabVucnGdYFdBNcaZcndcmzcmwcilcmycmxbVudWFbXKdWLbVudBIcfCbVuaafaafbtSccBccBccBcmFcmJcbUcmEcmscmrcmqcbUcmibtSbtSbtSbtSaaaaaachcaaaciOciOciOciOciOaafciPaafciOciOciOciOciOaaachcaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaalQaaaaaaaaaaaacbMciccidchHchHchHchHchHchGchHchHchHchGchYckockmcknckkcklckhckickwckwckickGbSZckpckvclqckMdTzckNckHckIckHckKckJckHckQckRckSckOckPckPckPckVckPckWckXckTckUclHclHcjXbomdCzcnVbolcnYcnWcnXboNboNboNboNboNboNboNboNboNcnZcjWbGKaaacaZdZqbsxdZpcaZdZodZnbXKbXKdZmcbbdZkdWqdZldWsdZjbXKbXKbVuaaaaaabtSccBccBccBcmXcoacdTcokcomcolcopconconcoqcodcocbtSaafaafchcaafcjGcjHcjHcjHcjHcjIciPcjJcjKcjKcjKcjKcjLaafchcaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaactvctvctvctvctvctvctvctvctvaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaalQaaaaaaaaaaaacbMcjlbSZbSZcjjcjbcjbcjbcjdcjbcjbcjbcjdcjbcjbcjhcjicjecjdcjfcjgcjScjRcjbcjQcjPcjOcjCcjBcnTcjZcjYcjqcjVcjUcjTcjqcjqcjrcjncjocjmcjkcjkckacjkcjkcjAcjscjscjzclHclHcjXbPybfMbTBbTBbTBbTBdYHbTBbTBbTBbTBbPybPybGKbGKbGKbGKbGKbGKaaacaZdXmdZicaZcaZdZhdZgdZddZcdZfdZedZadZbcspcsqdYZbXKdYYbVuaaaaaabtScfhcfhcfhcfhcnLcbUcmEcnHcnvcmqcbUcbUcnIcbUcnubtSaaaaaachcaafckzckzckzckzckzaaaciPaaackzckzckzckzckzaafchcaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
@@ -10704,7 +10709,7 @@ aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaactvctvctvctvctvctvctvctvctvctvaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaalQaaaaaaaaaaaabTeceicgMcejbTechVcifciebTecekcemcelbTeaaabTecerbVqceqbTeaaaaaaaaachPbZbchmchncgscgVchQbYJcrjcrjcdZcrjcgEcdYcehcegcdYcefcgEceecedceabYocgOcgOdeBcVwcVudjTdjSdeBbGKbvKdXgdXhbVPcoicqmcoibVPcmQaafaaaaafaaaaaaaaaaaaaaaaaaaaabVudXtbYLdXzdXAdXAdVRdWydXybVuaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabtScigccBccBcfhcigccBccBcfhcigccBccBbtSaaaaaachcaafckzckzckzckzckzaaacfVaaackzckzckzckzckzaaachcaaacmdcmdcmdcmdcmdcmdcmdcmdcmdcmdcmdcmdcmdcmdcmdcmdcmdcmdcmdaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaactvctvctvctvctvctvctvctvctvctvctvctvctvctvaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaalQaaaaaaaaaaaabTecfBcgNcfBbTecihcimcihbTebUhcesbUhbTeaaabTebUhbUhbVrbTeaaaaaaaaabYaciIbXSbYMbXYciJchQbYJcrjceAceBceObYrceDcakcetcewcevbYrceCcezceybYoaaaaafdeBdfNdfNdjUaafaaabGKbPybPycpqbVPcpncpocppbVPcmQaafaafaaaaaaaaaaaaaaaaaaaaaaaabVudVPcsSdVRciGciGdVQbXKdVSbVuaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabtSciKccBccBcfhciKccBccBcfhciKccBccBbtSaaeaaachcaaaaaaaafaafaafaaaaaacfVaafaaaaaaaafaafaaaaaachcaaacmdcmdcmdcmdcmdcmdcmdcmdcmdcmdcmdcmdcmdcmdcmdcmdcmdcmdcmdaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaactvctvctvctvctvctvctvctvctvctvctvctvctvctvaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaampaaaaaaaaaaafbTecfBceGcfBbTecihciNcihbTebUhceIbUhbTeaaabTebUhbUhbUhbTeaaaaaaaaabYabXYciZbXYbXYciJcjacjxcrjbYIceMceNbYrcjycjEceUcaxcfwbYrcfaceZceYbYoaaaaaadeBdfNdfNdjVaaaaaabGKbPybPybGKbVPcrJcrJcrJbVPcrIcrHaaaaaaaaaaaaaaaaaaaaaaaaaaabVudVTdAVbXKbXKbXKbXKbXKdVUbVuaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaccPbtSbtSbtSbtSbtSbtSbtSbtScjFcjFcjFccPaaaaaachcchcchcchcchcaaaaaaaaacfVaaaaaaaaachcchcchcchdchcaaacmdcmdcmdcmdcmdcmdcmdcmdcmdcmdcmdcmdcmdcmdcmdcmdcmdcmdcmdaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaactvctvctvctvctvctvctvctvctvctvctvctvctvctvaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaalQaaaaaaaaaaafbTebTebTebTebTebTebTebTebTebTebTebTebTeaaabYybTebTebTebYyaaaaaaaaabYabYmbXSbXTbXYbXZbXCcVicrjbYlbYfbYibYjbYkbYubWkbYwbXNbYrbYqbYtbYsbYoaafaaadeBcVwcVudeBaaaaaabGKbXlbPydVOcqRaafaafaafaaaclkaafaafaaaaaaaaaaaaaaaaaaaaaaaabZJbVubVubXBdVZdVQdVQdVQdVYbXBaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabXhbXhbXhaaaaaaaaaaaaaaaaaaaaaaaaaaachcaafcqEaafchcaaaaaaaaaaaaaaaaaaaaacmdcmdcmdcmdcmdcmdcmdcmdcmdcmdcmdcmdcmdcmdcmdcmdcmdcmdcmdaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaactvctvctvctvctvctvctvctvctvctvctvctvctvctvaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaalQaaaaaaaaaaafbTebTebTebTebTebTebTebTebTebTebTebTebTeaaabYybTebTebTebYyaaaaaaaaabYabUybXSbXTbXYbXZbXCcVicrjbYlbYfbYibYjbYkbYubWkbYwbXNbYrbYqbYtbYsbYoaafaaadeBcVwcVudeBaaaaaabGKbXlbPydVOcqRaafaafaafaaaclkaafaafaaaaaaaaaaaaaaaaaaaaaaaabZJbVubVubXBdVZdVQdVQdVQdVYbXBaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabXhbXhbXhaaaaaaaaaaaaaaaaaaaaaaaaaaachcaafcqEaafchcaaaaaaaaaaaaaaaaaaaaacmdcmdcmdcmdcmdcmdcmdcmdcmdcmdcmdcmdcmdcmdcmdcmdcmdcmdcmdaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaactvctvctvctvctvctvctvctvctvctvctvctvctvctvaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaalQaaaaaaaafaafaaaaaaaaaaaaaaaaaaaaaaafaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabYabYNbXSbYMbXYbYKbYFbYJcrjbYIbYfbYHbYrbYGbYDbYEbYCbYvbYrbYBbYAbYzbYoaagcfPcfPcfPcfPcfPcfPcfPbGKbUxctgdVVaafaaaaaaaafaaaclZaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabYxciGciGciGciGciGbYxaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaeaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaachcaaaaafaaachcaaaaaaaaaaaaaaaaaacmdcmdcmdcmdcmdcmdcmdcmdcmdcmdcmdcmdcmdcmdcmdcmdcmdcmdcmdcmdcmdaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaactvctvctvctvctvctvctvctvctvctvctvctvctvctvctvctvctvaaaaaaaaaaaaaaaaaaaaaaaaaaeaaaaaaaaaaaaaaaaaaalQaaaaafaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaafaaaaaaaaaaaabYSaaaaaaaaaaaaaaaaaaaaaaaabYXbZbbZdbZfbZmbZpbXCbYJcrjbYVbYYbYZbYrbZabZqbZcbZsbZebYrbZgbZibZhbYoaaacfPcfPcfPcfPcfPcfPcfPbGKdVWcdjbGKaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabVubYTbYQbYQbYQbYRbVuaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaachcchcchcchcchcaaaaaaaaaaaaaaaaaacmdcmdcmdcmdcmdcmdcmdcmdcmdcmdcmdcmdcmdcmdcmdcmdcmdcmdcmdcmdcmdaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaactvctvctvctvctvctvctvctvctvctvctvctvctvctvctvctvctvaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaalQaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaafaaaaaaaaaaaaaaaaaaaafaaaaaaaaaaaaaaaaaaaaabZGbZGbZGbZGbZGbZvbZjbZjbZjbZjbZjbZjbZobZubZlbZtbZkbZjbZjbZnbZjbZjbZjcfPcfPcfPcfPcfPcfPcfPaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacmdcmdcmdcmdaaaaaacmdcmdcmdcmdcmdcmdcmdaaaaaacmdcmdcmdcmdaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
@@ -11611,8 +11616,8 @@ aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaafaafdwldwmdwndwodvcdsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsaaaaaaaaaaaaadrIdvddvddvddvddvddvddvddwpdwqdwrdwsdymdwudwudwvdwwdwxdrDdYUdYTdrDdwAdwBdwCdwDdwEdDzdtJdysdyndwIdwJdwJdwKdyvdwMdwNdwOdwPdwPaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaafaafdwQdwRdwSdvcdwTdwUdvcdvcdvcdvcdsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsaaaaaaaaaaaaaaaaaaadrIdvddvddvddvddvddvddvddwVdwqdwrdwsdymdwWdwXdwvdwYdwZdrDdyldxNdrDdxcdtJdtJdtJdtJdxddtJdxMdxLdvzdDwdxhdxidxjdxkdxldxmdxndxnaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaafdxodxpdxqdxrdxsdxtdszduBdxudvcdxvdxwdvcdsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsaaaaaaaaaaaaaaaaaaadrIdvddvddvddvddvddvddvddrTdwqdwrdwsdymdxxdxydwvdxzdxAdrDdzkdZxdZAdxEdxFdxGdxHdrDdxIdxJdyZdDCdzgdzadxOdxPdxQdxRdxldwPdwPdwPaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaafdxSdxTdxpdxUdxVdxWdxXdxYdxudxZdxwdyadxvdvcdsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsaaaaaaaaaaaaaaaaaaadybdycdyddyedyfdycdyddygdyhdyidyjdykdyMdykdrDdrDdrDdrDdrDdySdYXdZwdxEdrEdxGdzQdrDdyqdyrdyQdyPdYVdYxdywdyxdyydyzdyAdyBdrDdyCdtYdrsdrsdrsdrsdrsdrsdrtdyDaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadyEdxSdyFdxSdxqdxqdwTdyGdxVdvcdwodyHdvcdxwdyIdvcdsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsaaaaaaaaaaaaaaaaaaadyJdjMdyLdyLdAUdATdATdARdASdAXdATeakdAWdyTdyUdyVdyWdyXdAGeaidZYdzbdzcdzddzedzfdrDdzhdzidAQdAMdrDdvzdzldvzdrDdrDdzmdzndzodzpdzqdzrdzrdzsdzrdzrdzrdztdrZaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaafdxSdxTdxpdxUdxVdxWdxXdxYdxudxZdxwdyadxvdvcdsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsaaaaaaaaaaaaaaaaaaadybdycdyddyebUCdycdyddygdyhdyidyjdykdyMdykdrDdrDdrDdrDdrDdySdYXdZwdxEdrEdxGdzQdrDdyqdyrdyQdyPdYVdYxdywdyxdyydyzdyAdyBdrDdyCdtYdrsdrsdrsdrsdrsdrsdrtdyDaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadyEdxSdyFdxSdxqdxqdwTdyGdxVdvcdwodyHdvcdxwdyIdvcdsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsaaaaaaaaaaaaaaaaaaadyJdjMdyLbUHdAUdATdATdARdASdAXdATeakdAWdyTdyUdyVdyWdyXdAGeaidZYdzbdzcdzddzedzfdrDdzhdzidAQdAMdrDdvzdzldvzdrDdrDdzmdzndzodzpdzqdzrdzrdzsdzrdzrdzrdztdrZaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaafaafdzudzvdxqdzwdzxdxqdvIdzydxWdzzdzAdzBdvcdvcdvcdvcdvcdvcdsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadqTdqTdqTdqTdqTdqTdqTdqTdqTdqTdqTdqTdqTaaaaaaaaaaaaaaadzCdzDdyLdyLdzEdyLdzFdzGdAjdzIdzJdZXdzLdzMdyUdAkdAldAcdAbdAadzZdzYdzXdzWdzPdAidAhdAgdzPdAfdAedZIdAddzRdzSdzOdZCdzWdzPdzHdzNdzUdDHdzTdAmdAndAodApdzrdslaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaafaafdAqdArdAsdxqdzxdAtdxUdAudxVdAvdvcdAwdAxdvcdAydxudAzdAAdvcdsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadqTdqTdqTdqTdqTdqTdqTdqTdqTdqTdqTdqTdqTdqTdqTaaaaaaaaaaaadABdACdyLdyLdADdyLdAEdAFdBDdAHdBFeaBdAKdDXdyUdBfdANdAOdAPdBHdBGdBQdBPdBTdBSdBWdBVdBZdBYdBWdCpdBVdCrdBWdBVdCseaCeaGdCBdCCdCEdCFdCIdDfdBldBmdBmdBndzrdslaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaafaafaafdsadsadvcdxtdBodBpdBqdAsdBrdBsdxWdBtdszduBdBudvcdAydwodxudAAdvcdsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadqTdqTdqTdqTdBvdBvdBvdBvdBvdBvdqTdqTdqTdqTdqTdqTdBwdBxaaaaaaaaadBydBzdyLdBAdAYdAZdDTdBbdBcdBddBeealdBJdBKdyUeamdyVdBLdBMdBMdrDdrDeatdBOdBidBkdBOdBRdBjdBCdBRdBUdBBdBgdBUdrDeaoeapdvZdCadzrdCbdCcdzrdCddBmdBmdCedzrdslaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+6
View File
@@ -177,6 +177,12 @@ h4 {
color: #ee0000;
font-weight: bold;
}
.idle {
color: #272727;
font-weight: bold;
}
.redBackground {
background: #ea0000;
}
@@ -0,0 +1,87 @@
<div class="item" style="padding-top: 10px">
<div class="item">
<div class="itemLabel">
Docking Port Status:
</div>
{{if docking_status == "docked"}}
<div class="itemContent" style="float:left">
{{if airlock_disabled}}
<span class="good" style="float:left">DOCKED</span>
{{else}}
<span class="bad" style="float:left">DOCKED-OVERRIDE ENABLED</span>
{{/if}}
<span style="float:right">
{{:~link('Override', 'alert', {'command' : 'toggle_override'}, null, airlock_disabled ? null : 'redBackground')}}
</span>
</div>
{{else docking_status == "docking"}}
<div class="itemContent" style="float:left">
{{if airlock_disabled}}
<span class="average" style="float:left">DOCKING</span>
{{else}}
<span class="bad" style="float:left">DOCKING-OVERRIDE ENABLED</span>
{{/if}}
<span style="float:right">
{{:~link('Override', 'alert', {'command' : 'toggle_override'}, null, airlock_disabled ? null : 'redBackground')}}
</span>
</div>
{{else docking_status == "undocking"}}
<div class="itemContent" style="float:left">
{{if airlock_disabled}}
<span class="average" style="float:left">UNDOCKING</span>
{{else}}
<span class="bad" style="float:left">UNDOCKING-OVERRIDE ENABLED</span>
{{/if}}
<span style="float:right">
{{:~link('Override', 'alert', {'command' : 'toggle_override'}, null, airlock_disabled ? null : 'redBackground')}}
</span>
</div>
{{else docking_status == "undocked"}}
<span class="idle">NOT IN USE</span>
{{else}}
<span class="bad">ERROR</span>
{{:~link('Override', 'alert', {'command' : 'toggle_override'}, null, airlock_disabled ? null : 'redBackground')}}
{{/if}}
</div>
</div>
<div class="item" style="padding-top: 10px">
<div class="item">
<div class="itemLabel">
Chamber Pressure:
</div>
<div class="itemContent">
{{:~displayBar(chamber_pressure, 0, 200, chamber_pressure < 80 || chamber_pressure > 120 ? 'bad' : chamber_pressure < 95 || chamber_pressure > 110 ? 'average' : 'good')}}
<div class="statusValue">
{{:chamber_pressure}} kPa
</div>
</div>
</div>
</div>
<div class="item" style="padding-top: 10px">
<div class="item">
<div class="itemContent" style="width: 100%">
{{:~link('Cycle to Exterior', 'arrowthickstop-1-w', {'command' : 'cycle_ext'}, (processing || airlock_disabled) ? 'disabled' : null)}}
{{:~link('Cycle to Interior', 'arrowthickstop-1-e', {'command' : 'cycle_int'}, (processing || airlock_disabled) ? 'disabled' : null)}}
</div>
<div class="itemContent" style="padding-top: 2px; width: 100%">
{{if airlock_disabled}}
{{:~link('Force exterior door', 'alert', {'command' : 'force_ext'}, 'disabled', null)}}
{{:~link('Force interior door', 'alert', {'command' : 'force_int'}, 'disabled', null)}}
{{else}}
{{if interior_status.state == "open"}}
{{:~link('Force exterior door', 'alert', {'command' : 'force_ext'}, null, 'redBackground')}}
{{else}}
{{:~link('Force exterior door', 'alert', {'command' : 'force_ext'}, null, processing ? 'yellowBackground' : null)}}
{{/if}}
{{if exterior_status.state == "open"}}
{{:~link('Force interior door', 'alert', {'command' : 'force_int'}, null, 'redBackground')}}
{{else}}
{{:~link('Force interior door', 'alert', {'command' : 'force_int'}, null, processing ? 'yellowBackground' : null)}}
{{/if}}
{{/if}}
</div>
</div>
<div class="item" style="padding-top: 10px; width: 100%">
{{:~link('Abort', 'cancel', {'command' : 'abort'}, (processing && !airlock_disabled) ? null : 'disabled', (processing && !airlock_disabled) ? 'redBackground' : null)}}
</div>
</div>
@@ -0,0 +1,73 @@
<h3>Shuttle Status</h3>
<div class="item" style="padding-top: 10px">
<div class="item">
{{:shuttle_status}}
</div>
</div>
<div class="item" style="padding-top: 10px">
<div class="item">
<div class="itemLabel">
Bluespace Drive:
</div>
<div class="itemContent">
{{if shuttle_state == "idle"}}
<span class="idle">IDLE</span>
{{else shuttle_state == "warmup"}}
<span style="font-weight: bold;color: #336699">SPINNING UP</span>
{{else shuttle_state == "in_transit"}}
<span style="font-weight: bold;color: #336699">ENGAGED</span>
{{else}}
<span class="bad">ERROR</span>
{{/if}}
</div>
</div>
</div>
{{if has_docking}}
<div class="item" style="padding-top: 10px">
<div class="item">
<div class="itemLabel">
Docking Status:
</div>
<div class="itemContent">
{{if docking_status == "docked"}}
<span class="good">DOCKED</span>
{{else docking_status == "docking"}}
<span class="average">DOCKING</span>
{{else docking_status == "undocking"}}
<span class="average">UNDOCKING</span>
{{else docking_status == "undocked"}}
<span class="idle">UNDOCKED</span>
{{else}}
<span class="bad">ERROR</span>
{{/if}}
</div>
</div>
</div>
<div class="item" style="padding-top: 10px">
<div class="item">
<div class="itemLabel">
Docking Override:
</div>
<div class="itemContent">
{{if override_enabled}}
<span class="bad">ENABLED</span>
{{else}}
<span class="good">SAFE</span>
{{/if}}
</div>
</div>
</div>
{{/if}}
<h3>Shuttle Control</h3>
<div class="item" style="padding-top: 10px">
<div class="item">
<div class="itemContent" style="padding-top: 2px; width: 100%">
{{:~link('Launch Shuttle', 'arrowthickstop-1-e', {'move' : '1'}, can_launch? null : 'disabled' , null)}}
{{:~link('Cancel Launch', 'cancel', {'cancel' : '1'}, can_cancel? null : 'disabled' , null)}}
{{if has_docking}}
{{:~link('Override', 'alert', {'override' : '1'}, can_override? null : 'disabled' , (can_override && override_enabled)? 'redBackground' : null)}}
{{/if}}
</div>
</div>
</div>
@@ -0,0 +1,49 @@
<div class="item" style="padding-top: 10px">
<div class="item">
<div class="itemLabel">
Docking Port Status:
</div>
<div class="itemContent">
{{if docking_status == "docked"}}
{{if !override_enabled}}
<span class="good">DOCKED</span>
{{else}}
<span class="bad">DOCKED-OVERRIDE ENABLED</span>
{{/if}}
{{else docking_status == "docking"}}
{{if !override_enabled}}
<span class="average">DOCKING</span>
{{else}}
<span class="bad">DOCKING-OVERRIDE ENABLED</span>
{{/if}}
{{else docking_status == "undocking"}}
{{if !override_enabled}}
<span class="average">UNDOCKING</span>
{{else}}
<span class="bad">UNDOCKING-OVERRIDE ENABLED</span>
{{/if}}
{{else docking_status == "undocked"}}
{{if !override_enabled}}
<span class="idle">UNDOCKED</span>
{{else}}
<span class="bad">UNDOCKED-OVERRIDE ENABLED</span>
{{/if}}
{{else}}
<span class="bad">ERROR</span>
{{/if}}
</div>
</div>
</div>
<div class="item" style="padding-top: 10px">
<div class="item">
<div class="itemContent" style="padding-top: 2px; width: 100%">
{{if docking_status == "docked"}}
{{:~link('Force exterior door', 'alert', {'command' : 'force_door'}, override_enabled ? null : 'disabled', null)}}
{{:~link('Override', 'alert', {'command' : 'toggle_override'}, null, override_enabled ? 'redBackground' : null)}}
{{else}}
{{:~link('Force exterior door', 'alert', {'command' : 'force_door'}, override_enabled ? null : 'disabled', override_enabled? 'redBackground' : null)}}
{{:~link('Override', 'alert', {'command' : 'toggle_override'}, null, override_enabled ? 'redBackground' : 'yellowBackground')}}
{{/if}}
</div>
</div>
</div>