Merge branch 'dev' of https://github.com/Baystation12/Baystation12 into powernet-sensors-mk2

This commit is contained in:
Atlantiscze
2014-11-20 10:55:33 +01:00
99 changed files with 783 additions and 569 deletions

View File

@@ -27,6 +27,8 @@
active_power_usage = 7500 //This also doubles as a measure of how powerful the pump is, in Watts. 7500 W ~ 10 HP active_power_usage = 7500 //This also doubles as a measure of how powerful the pump is, in Watts. 7500 W ~ 10 HP
var/last_power_draw = 0 var/last_power_draw = 0
connect_types = list(1,2,3) //connects to regular, supply and scrubbers pipes
var/on = 0 var/on = 0
var/pump_direction = 1 //0 = siphoning, 1 = releasing var/pump_direction = 1 //0 = siphoning, 1 = releasing
@@ -62,7 +64,7 @@
return return
overlays.Cut() overlays.Cut()
var/vent_icon = "vent" var/vent_icon = "vent"
var/turf/T = get_turf(src) var/turf/T = get_turf(src)
@@ -71,7 +73,7 @@
if(T.intact && node1 && node2 && node1.level == 1 && node2.level == 1 && istype(node1, /obj/machinery/atmospherics/pipe) && istype(node2, /obj/machinery/atmospherics/pipe)) if(T.intact && node1 && node2 && node1.level == 1 && node2.level == 1 && istype(node1, /obj/machinery/atmospherics/pipe) && istype(node2, /obj/machinery/atmospherics/pipe))
vent_icon += "h" vent_icon += "h"
if(!powered()) if(!powered())
vent_icon += "off" vent_icon += "off"
else else
@@ -88,8 +90,14 @@
if(T.intact && node1 && node2 && node1.level == 1 && node2.level == 1 && istype(node1, /obj/machinery/atmospherics/pipe) && istype(node2, /obj/machinery/atmospherics/pipe)) if(T.intact && node1 && node2 && node1.level == 1 && node2.level == 1 && istype(node1, /obj/machinery/atmospherics/pipe) && istype(node2, /obj/machinery/atmospherics/pipe))
return return
else else
add_underlay(T, node1, turn(dir, -180)) if (node1)
add_underlay(T, node2, dir) add_underlay(T, node1, turn(dir, -180), node1.icon_connect_type)
else
add_underlay(T, node1, turn(dir, -180))
if (node2)
add_underlay(T, node2, dir, node2.icon_connect_type)
else
add_underlay(T, node2, dir)
/obj/machinery/atmospherics/binary/dp_vent_pump/hide(var/i) /obj/machinery/atmospherics/binary/dp_vent_pump/hide(var/i)
update_icon() update_icon()
@@ -97,7 +105,7 @@
/obj/machinery/atmospherics/binary/dp_vent_pump/process() /obj/machinery/atmospherics/binary/dp_vent_pump/process()
..() ..()
if(stat & (NOPOWER|BROKEN) || !on) if(stat & (NOPOWER|BROKEN) || !on)
update_use_power(0) //usually we get here because a player turned a pump off - definitely want to update. update_use_power(0) //usually we get here because a player turned a pump off - definitely want to update.
last_power_draw = 0 last_power_draw = 0
@@ -107,19 +115,19 @@
var/datum/gas_mixture/environment = loc.return_air() var/datum/gas_mixture/environment = loc.return_air()
var/power_draw = -1 var/power_draw = -1
//Figure out the target pressure difference //Figure out the target pressure difference
var/pressure_delta = get_pressure_delta(environment) var/pressure_delta = get_pressure_delta(environment)
if(pressure_delta > 0.5) if(pressure_delta > 0.5)
if(pump_direction) //internal -> external if(pump_direction) //internal -> external
if (node1 && (environment.temperature || air1.temperature)) if (node1 && (environment.temperature || air1.temperature))
var/output_volume = environment.volume * environment.group_multiplier var/output_volume = environment.volume * environment.group_multiplier
var/air_temperature = environment.temperature? environment.temperature : air1.temperature var/air_temperature = environment.temperature? environment.temperature : air1.temperature
var/transfer_moles = pressure_delta*output_volume/(air_temperature * R_IDEAL_GAS_EQUATION) var/transfer_moles = pressure_delta*output_volume/(air_temperature * R_IDEAL_GAS_EQUATION)
power_draw = pump_gas(src, air1, environment, transfer_moles, active_power_usage) power_draw = pump_gas(src, air1, environment, transfer_moles, active_power_usage)
if(power_draw >= 0 && network1) if(power_draw >= 0 && network1)
network1.update = 1 network1.update = 1
else //external -> internal else //external -> internal
@@ -127,15 +135,15 @@
var/output_volume = air2.volume + (network2? network2.volume : 0) var/output_volume = air2.volume + (network2? network2.volume : 0)
var/air_temperature = air2.temperature? air2.temperature : environment.temperature var/air_temperature = air2.temperature? air2.temperature : environment.temperature
var/transfer_moles = pressure_delta*output_volume/(air_temperature * R_IDEAL_GAS_EQUATION) var/transfer_moles = pressure_delta*output_volume/(air_temperature * R_IDEAL_GAS_EQUATION)
//limit flow rate from turfs //limit flow rate from turfs
transfer_moles = min(transfer_moles, environment.total_moles*air2.volume/environment.volume) //group_multiplier gets divided out here transfer_moles = min(transfer_moles, environment.total_moles*air2.volume/environment.volume) //group_multiplier gets divided out here
power_draw = pump_gas(src, environment, air2, transfer_moles, active_power_usage) power_draw = pump_gas(src, environment, air2, transfer_moles, active_power_usage)
if(power_draw >= 0 && network2) if(power_draw >= 0 && network2)
network2.update = 1 network2.update = 1
if (power_draw < 0) if (power_draw < 0)
last_power_draw = 0 last_power_draw = 0
last_flow_rate = 0 last_flow_rate = 0
@@ -149,7 +157,7 @@
/obj/machinery/atmospherics/binary/dp_vent_pump/proc/get_pressure_delta(datum/gas_mixture/environment) /obj/machinery/atmospherics/binary/dp_vent_pump/proc/get_pressure_delta(datum/gas_mixture/environment)
var/pressure_delta = DEFAULT_PRESSURE_DELTA var/pressure_delta = DEFAULT_PRESSURE_DELTA
var/environment_pressure = environment.return_pressure() var/environment_pressure = environment.return_pressure()
if(pump_direction) //internal -> external if(pump_direction) //internal -> external
if(pressure_checks & PRESSURE_CHECK_EXTERNAL) if(pressure_checks & PRESSURE_CHECK_EXTERNAL)
pressure_delta = min(pressure_delta, external_pressure_bound - environment_pressure) //increasing the pressure here pressure_delta = min(pressure_delta, external_pressure_bound - environment_pressure) //increasing the pressure here
@@ -160,9 +168,9 @@
pressure_delta = min(pressure_delta, environment_pressure - external_pressure_bound) //decreasing the pressure here pressure_delta = min(pressure_delta, environment_pressure - external_pressure_bound) //decreasing the pressure here
if(pressure_checks & PRESSURE_CHECK_OUTPUT) if(pressure_checks & PRESSURE_CHECK_OUTPUT)
pressure_delta = min(pressure_delta, output_pressure_max - air2.return_pressure()) //increasing the pressure here pressure_delta = min(pressure_delta, output_pressure_max - air2.return_pressure()) //increasing the pressure here
return pressure_delta return pressure_delta
//Radio remote control //Radio remote control
@@ -204,6 +212,7 @@
if(..(user, 1)) if(..(user, 1))
user << "A small gauge in the corner reads [round(last_flow_rate, 0.1)] L/s; [round(last_power_draw)] W" user << "A small gauge in the corner reads [round(last_flow_rate, 0.1)] L/s; [round(last_power_draw)] W"
/obj/machinery/atmospherics/unary/vent_pump/power_change() /obj/machinery/atmospherics/unary/vent_pump/power_change()
var/old_stat = stat var/old_stat = stat
..() ..()

View File

@@ -292,8 +292,12 @@ mob/living/parasite/meme/verb/Agony()
spawn spawn
// backup the host incase we switch hosts after using the verb // backup the host incase we switch hosts after using the verb
var/mob/host = src.host var/mob/living/carbon/host = src.host
if (host.species && (host.species.flags & NO_PAIN))
usr << "Nothing seems to happen."
return
host.paralysis = max(host.paralysis, 2) host.paralysis = max(host.paralysis, 2)
host.flash_weak_pain() host.flash_weak_pain()

View File

@@ -183,12 +183,16 @@ var/list/alldepartments = list("Central Command")
var/msg = "\blue <b><font color='#006100'>CENTCOMM FAX: </font>[key_name(Sender, 1)] (<A HREF='?_src_=holder;adminplayeropts=\ref[Sender]'>PP</A>) (<A HREF='?_src_=vars;Vars=\ref[Sender]'>VV</A>) (<A HREF='?_src_=holder;subtlemessage=\ref[Sender]'>SM</A>) (<A HREF='?_src_=holder;adminplayerobservejump=\ref[Sender]'>JMP</A>) (<A HREF='?_src_=holder;secretsadmin=check_antagonist'>CA</A>) (<a href='?_src_=holder;CentcommFaxReply=\ref[Sender];originfax=\ref[originfax]'>RPLY</a>)</b>: Receiving '[sentname]' via secure connection ... <a href='?_src_=holder;CentcommFaxView=\ref[sent]'>view message</a>" var/msg = "\blue <b><font color='#006100'>CENTCOMM FAX: </font>[key_name(Sender, 1)] (<A HREF='?_src_=holder;adminplayeropts=\ref[Sender]'>PP</A>) (<A HREF='?_src_=vars;Vars=\ref[Sender]'>VV</A>) (<A HREF='?_src_=holder;subtlemessage=\ref[Sender]'>SM</A>) (<A HREF='?_src_=holder;adminplayerobservejump=\ref[Sender]'>JMP</A>) (<A HREF='?_src_=holder;secretsadmin=check_antagonist'>CA</A>) (<a href='?_src_=holder;CentcommFaxReply=\ref[Sender];originfax=\ref[originfax]'>RPLY</a>)</b>: Receiving '[sentname]' via secure connection ... <a href='?_src_=holder;CentcommFaxView=\ref[sent]'>view message</a>"
admins << msg for(var/client/C in admins)
if(R_ADMIN & C.holder.rights)
C << msg
/proc/Solgov_fax(var/originfax, var/sent, var/sentname, var/mob/Sender) /proc/Solgov_fax(var/originfax, var/sent, var/sentname, var/mob/Sender)
var/msg = "\blue <b><font color='#1F66A0'>SOL GOVERNMENT FAX: </font>[key_name(Sender, 1)] (<A HREF='?_src_=holder;adminplayeropts=\ref[Sender]'>PP</A>) (<A HREF='?_src_=vars;Vars=\ref[Sender]'>VV</A>) (<A HREF='?_src_=holder;subtlemessage=\ref[Sender]'>SM</A>) (<A HREF='?_src_=holder;adminplayerobservejump=\ref[Sender]'>JMP</A>) (<A HREF='?_src_=holder;secretsadmin=check_antagonist'>CA</A>) (<a href='?_src_=holder;SolGovFaxReply=\ref[Sender];originfax=\ref[originfax]'>RPLY</a>)</b>: Receiving '[sentname]' via secure connection ... <a href='?_src_=holder;CentcommFaxView=\ref[sent]'>view message</a>" var/msg = "\blue <b><font color='#1F66A0'>SOL GOVERNMENT FAX: </font>[key_name(Sender, 1)] (<A HREF='?_src_=holder;adminplayeropts=\ref[Sender]'>PP</A>) (<A HREF='?_src_=vars;Vars=\ref[Sender]'>VV</A>) (<A HREF='?_src_=holder;subtlemessage=\ref[Sender]'>SM</A>) (<A HREF='?_src_=holder;adminplayerobservejump=\ref[Sender]'>JMP</A>) (<A HREF='?_src_=holder;secretsadmin=check_antagonist'>CA</A>) (<a href='?_src_=holder;SolGovFaxReply=\ref[Sender];originfax=\ref[originfax]'>RPLY</a>)</b>: Receiving '[sentname]' via secure connection ... <a href='?_src_=holder;CentcommFaxView=\ref[sent]'>view message</a>"
admins << msg for(var/client/C in admins)
if(R_ADMIN & C.holder.rights)
C << msg
proc/SendFax(var/sent, var/sentname, var/mob/Sender, var/dpt) proc/SendFax(var/sent, var/sentname, var/mob/Sender, var/dpt)

View File

@@ -290,9 +290,9 @@ datum/controller/vote
var/admin = 0 var/admin = 0
var/trialmin = 0 var/trialmin = 0
if(C.holder) if(C.holder)
admin = 1
if(C.holder.rights & R_ADMIN) if(C.holder.rights & R_ADMIN)
trialmin = 1 admin = 1
trialmin = 1 // don't know why we use both of these it's really weird, but I'm 2 lasy to refactor this all to use just admin.
voting |= C voting |= C
. = "<html><head><title>Voting Panel</title></head><body>" . = "<html><head><title>Voting Panel</title></head><body>"

View File

@@ -39,6 +39,9 @@
data_core.security += R data_core.security += R
return R return R
/proc/find_security_record(field, value)
return find_record(field, value, data_core.security)
/proc/find_record(field, value, list/L) /proc/find_record(field, value, list/L)
for(var/datum/data/record/R in L) for(var/datum/data/record/R in L)
if(R.fields[field] == value) if(R.fields[field] == value)

View File

@@ -187,7 +187,7 @@ its easier to just keep the beam vertical.
//All atoms //All atoms
/atom/proc/examine(mob/user, var/distance = -1) /atom/proc/examine(mob/user, var/distance = -1, var/sufix = "")
//This reformat names to get a/an properly working on item descriptions when they are bloody //This reformat names to get a/an properly working on item descriptions when they are bloody
var/f_name = "\a [src]." var/f_name = "\a [src]."
if(src.blood_DNA && !istype(src, /obj/effect/decal)) if(src.blood_DNA && !istype(src, /obj/effect/decal))
@@ -197,7 +197,7 @@ its easier to just keep the beam vertical.
f_name = "a " f_name = "a "
f_name += "<span class='danger'>blood-stained</span> [name]!" f_name += "<span class='danger'>blood-stained</span> [name]!"
user << "\icon[src] That's [f_name]" user << "\icon[src] That's [f_name] [sufix]"
if(desc) if(desc)
user << desc user << desc

View File

@@ -104,9 +104,13 @@ var/list/sacrificed = list()
if(M.stat==2) if(M.stat==2)
continue continue
usr.say("Mah[pick("'","`")]weyh pleggh at e'ntrath!") usr.say("Mah[pick("'","`")]weyh pleggh at e'ntrath!")
M.visible_message("\red [M] writhes in pain as the markings below \him glow a bloody red.", \
"\red AAAAAAHHHH!", \ if (M.species && (M.species.flags & NO_PAIN))
"\red You hear an anguished scream.") M.visible_message("\red The markings below [M] glow a bloody red.")
else
M.visible_message("\red [M] writhes in pain as the markings below \him glow a bloody red.", \
"\red AAAAAAHHHH!", \
"\red You hear an anguished scream.")
if(is_convertable_to_cult(M.mind) && !jobban_isbanned(M, "cultist"))//putting jobban check here because is_convertable uses mind as argument if(is_convertable_to_cult(M.mind) && !jobban_isbanned(M, "cultist"))//putting jobban check here because is_convertable uses mind as argument
// Mostly for the benefit of those who resist, but it makes sense for even those who join to have some.. effect. // Mostly for the benefit of those who resist, but it makes sense for even those who join to have some.. effect.

View File

@@ -89,7 +89,7 @@
/datum/autolathe/recipe/rglass /datum/autolathe/recipe/rglass
name = "reinforced glass sheets" name = "reinforced glass sheets"
path = /obj/item/stack/sheet/rglass path = /obj/item/stack/sheet/glass/reinforced
category = "General" category = "General"
is_stack = 1 is_stack = 1

View File

@@ -87,8 +87,8 @@
var/obj/item/stack/cable_coil/A = new /obj/item/stack/cable_coil( loc ) var/obj/item/stack/cable_coil/A = new /obj/item/stack/cable_coil( loc )
A.amount = 5 A.amount = 5
if(istype(P, /obj/item/stack/sheet/rglass)) if(istype(P, /obj/item/stack/sheet/glass/reinforced))
var/obj/item/stack/sheet/rglass/RG = P var/obj/item/stack/sheet/glass/reinforced/RG = P
if (RG.get_amount() < 2) if (RG.get_amount() < 2)
user << "<span class='warning'>You need two sheets of glass to put in the glass panel.</span>" user << "<span class='warning'>You need two sheets of glass to put in the glass panel.</span>"
return return
@@ -161,7 +161,7 @@
icon_state = "3b" icon_state = "3b"
else else
icon_state = "3" icon_state = "3"
new /obj/item/stack/sheet/rglass( loc, 2 ) new /obj/item/stack/sheet/glass/reinforced( loc, 2 )
return return
if(istype(P, /obj/item/weapon/screwdriver)) if(istype(P, /obj/item/weapon/screwdriver))
@@ -388,4 +388,4 @@ That prevents a few funky behaviors.
U << "\red <b>ERROR</b>: \black [A_T.name] data core is corrupted. Unable to install." U << "\red <b>ERROR</b>: \black [A_T.name] data core is corrupted. Unable to install."
else else
U << "\red <b>ERROR</b>: \black AI flush is in progress, cannot execute transfer protocol." U << "\red <b>ERROR</b>: \black AI flush is in progress, cannot execute transfer protocol."
return return

View File

@@ -1026,7 +1026,10 @@ About the new airlock wires panel:
S.loc = M.loc S.loc = M.loc
spawn(20) spawn(20)
del(S) del(S)
M.emote("scream") if (iscarbon(M))
var/mob/living/carbon/C = M
if (!(C.species && (C.species.flags & NO_PAIN)))
M.emote("scream")
var/turf/location = src.loc var/turf/location = src.loc
if(istype(location, /turf/simulated)) if(istype(location, /turf/simulated))
location.add_blood(M) location.add_blood(M)

View File

@@ -16,7 +16,7 @@
var/locked = 1 var/locked = 1
attack_self(mob/user as mob) attack_self(mob/user as mob)
if (!ishuman(user) && !istype(user,/mob/living/silicon/robot/drone)) if (!ishuman(user) && !istype(user,/mob/living/silicon/robot))
return ..(user) return ..(user)
var/mob/living/carbon/human/H = user var/mob/living/carbon/human/H = user

View File

@@ -351,8 +351,8 @@ Class Procs:
if(id) if(id)
perpname = id.registered_name perpname = id.registered_name
var/datum/data/record/R = find_record("name", perpname, data_core.security) var/datum/data/record/R = find_security_record("name", perpname)
if(!R || (R.fields["criminal"] == "*Arrest*")) if(R && (R.fields["criminal"] == "*Arrest*"))
threatcount += 4 threatcount += 4
return threatcount return threatcount

View File

@@ -330,14 +330,18 @@
for(i=0,i<4,i++) for(i=0,i<4,i++)
sleep(50) sleep(50)
if(src.OCCUPANT) if(src.OCCUPANT)
if(src.issuperUV) var/datum/organ/internal/diona/nutrients/rad_organ = locate() in OCCUPANT.internal_organs
var/burndamage = rand(28,35) if (!rad_organ)
OCCUPANT.take_organ_damage(0,burndamage) if(src.issuperUV)
OCCUPANT.emote("scream") var/burndamage = rand(28,35)
else OCCUPANT.take_organ_damage(0,burndamage)
var/burndamage = rand(6,10) if (!(OCCUPANT.species && (OCCUPANT.species.flags & NO_PAIN)))
OCCUPANT.take_organ_damage(0,burndamage) OCCUPANT.emote("scream")
OCCUPANT.emote("scream") else
var/burndamage = rand(6,10)
OCCUPANT.take_organ_damage(0,burndamage)
if (!(OCCUPANT.species && (OCCUPANT.species.flags & NO_PAIN)))
OCCUPANT.emote("scream")
if(i==3) //End of the cycle if(i==3) //End of the cycle
if(!src.issuperUV) if(!src.issuperUV)
if(src.HELMET) if(src.HELMET)

View File

@@ -102,7 +102,7 @@
src.loc = T src.loc = T
/obj/item/examine(mob/user) /obj/item/examine(mob/user, var/distance = -1)
var/size var/size
switch(src.w_class) switch(src.w_class)
if(1.0) if(1.0)
@@ -117,10 +117,8 @@
size = "huge" size = "huge"
else else
//if ((CLUMSY in usr.mutations) && prob(50)) t = "funny-looking" //if ((CLUMSY in usr.mutations) && prob(50)) t = "funny-looking"
user << "This is a [src.blood_DNA ? "bloody " : ""]\icon[src][src.name]. It is a [size] item." var/custom_sufix = "It is a [size] item."
if(src.desc) return ..(user, distance, custom_sufix)
user << src.desc
return
/obj/item/attack_hand(mob/user as mob) /obj/item/attack_hand(mob/user as mob)
if (!user) return if (!user) return

View File

@@ -1,6 +1,7 @@
/obj/item/device/radio/headset /obj/item/device/radio/headset
name = "radio headset" name = "radio headset"
desc = "An updated, modular intercom that fits over the head. Takes encryption keys" desc = "An updated, modular intercom that fits over the head. Takes encryption keys"
var/radio_desc = ""
icon_state = "headset" icon_state = "headset"
item_state = "headset" item_state = "headset"
matter = list("metal" = 75) matter = list("metal" = 75)
@@ -17,7 +18,14 @@
/obj/item/device/radio/headset/New() /obj/item/device/radio/headset/New()
..() ..()
keyslot1 = new /obj/item/device/encryptionkey/ keyslot1 = new /obj/item/device/encryptionkey/
recalculateChannels() recalculateChannels(1)
/obj/item/device/radio/headset/examine(mob/user)
if(!(..(user, 1) && radio_desc))
return
user << "The following channels are built-in:"
user << radio_desc
/obj/item/device/radio/headset/handle_message_mode(mob/living/M as mob, message, channel) /obj/item/device/radio/headset/handle_message_mode(mob/living/M as mob, message, channel)
if (channel == "special") if (channel == "special")
@@ -47,7 +55,7 @@
del(keyslot1) del(keyslot1)
keyslot1 = new /obj/item/device/encryptionkey/syndicate keyslot1 = new /obj/item/device/encryptionkey/syndicate
syndie = 1 syndie = 1
recalculateChannels() recalculateChannels(1)
/obj/item/device/radio/headset/binary /obj/item/device/radio/headset/binary
origin_tech = "syndicate=3" origin_tech = "syndicate=3"
@@ -55,60 +63,60 @@
..() ..()
del(keyslot1) del(keyslot1)
keyslot1 = new /obj/item/device/encryptionkey/binary keyslot1 = new /obj/item/device/encryptionkey/binary
recalculateChannels() recalculateChannels(1)
/obj/item/device/radio/headset/headset_sec /obj/item/device/radio/headset/headset_sec
name = "security radio headset" name = "security radio headset"
desc = "This is used by your elite security force. To access the security channel, use :s." desc = "This is used by your elite security force."
icon_state = "sec_headset" icon_state = "sec_headset"
item_state = "headset" item_state = "headset"
keyslot2 = new /obj/item/device/encryptionkey/headset_sec keyslot2 = new /obj/item/device/encryptionkey/headset_sec
/obj/item/device/radio/headset/headset_eng /obj/item/device/radio/headset/headset_eng
name = "engineering radio headset" name = "engineering radio headset"
desc = "When the engineers wish to chat like girls. To access the engineering channel, use :e. " desc = "When the engineers wish to chat like girls."
icon_state = "eng_headset" icon_state = "eng_headset"
item_state = "headset" item_state = "headset"
keyslot2 = new /obj/item/device/encryptionkey/headset_eng keyslot2 = new /obj/item/device/encryptionkey/headset_eng
/obj/item/device/radio/headset/headset_rob /obj/item/device/radio/headset/headset_rob
name = "robotics radio headset" name = "robotics radio headset"
desc = "Made specifically for the roboticists who cannot decide between departments. To access the engineering channel, use :e. For research, use :n." desc = "Made specifically for the roboticists who cannot decide between departments."
icon_state = "rob_headset" icon_state = "rob_headset"
item_state = "headset" item_state = "headset"
keyslot2 = new /obj/item/device/encryptionkey/headset_rob keyslot2 = new /obj/item/device/encryptionkey/headset_rob
/obj/item/device/radio/headset/headset_med /obj/item/device/radio/headset/headset_med
name = "medical radio headset" name = "medical radio headset"
desc = "A headset for the trained staff of the medbay. To access the medical channel, use :m." desc = "A headset for the trained staff of the medbay."
icon_state = "med_headset" icon_state = "med_headset"
item_state = "headset" item_state = "headset"
keyslot2 = new /obj/item/device/encryptionkey/headset_med keyslot2 = new /obj/item/device/encryptionkey/headset_med
/obj/item/device/radio/headset/headset_sci /obj/item/device/radio/headset/headset_sci
name = "science radio headset" name = "science radio headset"
desc = "A sciency headset. Like usual. To access the science channel, use :n." desc = "A sciency headset. Like usual."
icon_state = "com_headset" icon_state = "com_headset"
item_state = "headset" item_state = "headset"
keyslot2 = new /obj/item/device/encryptionkey/headset_sci keyslot2 = new /obj/item/device/encryptionkey/headset_sci
/obj/item/device/radio/headset/headset_medsci /obj/item/device/radio/headset/headset_medsci
name = "medical research radio headset" name = "medical research radio headset"
desc = "A headset that is a result of the mating between medical and science. To access the medical channel, use :m. For science, use :n." desc = "A headset that is a result of the mating between medical and science."
icon_state = "med_headset" icon_state = "med_headset"
item_state = "headset" item_state = "headset"
keyslot2 = new /obj/item/device/encryptionkey/headset_medsci keyslot2 = new /obj/item/device/encryptionkey/headset_medsci
/obj/item/device/radio/headset/headset_com /obj/item/device/radio/headset/headset_com
name = "command radio headset" name = "command radio headset"
desc = "A headset with a commanding channel. To access the command channel, use :c." desc = "A headset with a commanding channel."
icon_state = "com_headset" icon_state = "com_headset"
item_state = "headset" item_state = "headset"
keyslot2 = new /obj/item/device/encryptionkey/headset_com keyslot2 = new /obj/item/device/encryptionkey/headset_com
/obj/item/device/radio/headset/heads/captain /obj/item/device/radio/headset/heads/captain
name = "captain's headset" name = "captain's headset"
desc = "The headset of the boss. Channels are as follows: :c - command, :s - security, :e - engineering, :u - supply, :v - service, :m - medical, :n - science." desc = "The headset of the boss."
icon_state = "com_headset" icon_state = "com_headset"
item_state = "headset" item_state = "headset"
keyslot2 = new /obj/item/device/encryptionkey/heads/captain keyslot2 = new /obj/item/device/encryptionkey/heads/captain
@@ -130,35 +138,35 @@
/obj/item/device/radio/headset/heads/rd /obj/item/device/radio/headset/heads/rd
name = "Research Director's headset" name = "Research Director's headset"
desc = "Headset of the researching God. To access the science channel, use :n. For command, use :c." desc = "Headset of the researching God."
icon_state = "com_headset" icon_state = "com_headset"
item_state = "headset" item_state = "headset"
keyslot2 = new /obj/item/device/encryptionkey/heads/rd keyslot2 = new /obj/item/device/encryptionkey/heads/rd
/obj/item/device/radio/headset/heads/hos /obj/item/device/radio/headset/heads/hos
name = "head of security's headset" name = "head of security's headset"
desc = "The headset of the man who protects your worthless lifes. To access the security channel, use :s. For command, use :c." desc = "The headset of the man who protects your worthless lifes."
icon_state = "com_headset" icon_state = "com_headset"
item_state = "headset" item_state = "headset"
keyslot2 = new /obj/item/device/encryptionkey/heads/hos keyslot2 = new /obj/item/device/encryptionkey/heads/hos
/obj/item/device/radio/headset/heads/ce /obj/item/device/radio/headset/heads/ce
name = "chief engineer's headset" name = "chief engineer's headset"
desc = "The headset of the guy who is in charge of morons. To access the engineering channel, use :e. For command, use :c." desc = "The headset of the guy who is in charge of morons"
icon_state = "com_headset" icon_state = "com_headset"
item_state = "headset" item_state = "headset"
keyslot2 = new /obj/item/device/encryptionkey/heads/ce keyslot2 = new /obj/item/device/encryptionkey/heads/ce
/obj/item/device/radio/headset/heads/cmo /obj/item/device/radio/headset/heads/cmo
name = "chief medical officer's headset" name = "chief medical officer's headset"
desc = "The headset of the highly trained medical chief. To access the medical channel, use :m. For command, use :c." desc = "The headset of the highly trained medical chief."
icon_state = "com_headset" icon_state = "com_headset"
item_state = "headset" item_state = "headset"
keyslot2 = new /obj/item/device/encryptionkey/heads/cmo keyslot2 = new /obj/item/device/encryptionkey/heads/cmo
/obj/item/device/radio/headset/heads/hop /obj/item/device/radio/headset/heads/hop
name = "head of personnel's headset" name = "head of personnel's headset"
desc = "The headset of the guy who will one day be captain. Channels are as follows: :u - supply, :v - service, :c - command, :s - security" desc = "The headset of the guy who will one day be captain."
icon_state = "com_headset" icon_state = "com_headset"
item_state = "headset" item_state = "headset"
keyslot2 = new /obj/item/device/encryptionkey/heads/hop keyslot2 = new /obj/item/device/encryptionkey/heads/hop
@@ -179,21 +187,21 @@
*/ */
/obj/item/device/radio/headset/headset_cargo /obj/item/device/radio/headset/headset_cargo
name = "supply radio headset" name = "supply radio headset"
desc = "A headset used by the QM and his slaves. To access the supply channel, use :u." desc = "A headset used by the QM and his slaves."
icon_state = "cargo_headset" icon_state = "cargo_headset"
item_state = "headset" item_state = "headset"
keyslot2 = new /obj/item/device/encryptionkey/headset_cargo keyslot2 = new /obj/item/device/encryptionkey/headset_cargo
/obj/item/device/radio/headset/headset_service /obj/item/device/radio/headset/headset_service
name = "service radio headset" name = "service radio headset"
desc = "Headset used by the service staff, tasked with keeping the station full, happy and clean. To access the service channel, use :v." desc = "Headset used by the service staff, tasked with keeping the station full, happy and clean."
icon_state = "srv_headset" icon_state = "srv_headset"
item_state = "headset" item_state = "headset"
keyslot2 = new /obj/item/device/encryptionkey/headset_service keyslot2 = new /obj/item/device/encryptionkey/headset_service
/obj/item/device/radio/headset/ert /obj/item/device/radio/headset/ert
name = "CentCom Response Team headset" name = "CentCom Response Team headset"
desc = "The headset of the boss's boss. Channels are as follows: :h - Response Team :c - command, :s - security, :e - engineering, :d - mining, :u - cargo, :v - service, :m - medical, :n - science." desc = "The headset of the boss's boss."
icon_state = "com_headset" icon_state = "com_headset"
item_state = "headset" item_state = "headset"
freerange = 1 freerange = 1
@@ -255,7 +263,7 @@
return return
/obj/item/device/radio/headset/proc/recalculateChannels() /obj/item/device/radio/headset/proc/recalculateChannels(var/setDescription = 0)
src.channels = list() src.channels = list()
src.translate_binary = 0 src.translate_binary = 0
src.translate_hive = 0 src.translate_hive = 0
@@ -303,4 +311,18 @@
secure_radio_connections[ch_name] = radio_controller.add_object(src, radiochannels[ch_name], RADIO_CHAT) secure_radio_connections[ch_name] = radio_controller.add_object(src, radiochannels[ch_name], RADIO_CHAT)
return if(setDescription)
setupRadioDescription()
return
/obj/item/device/radio/headset/proc/setupRadioDescription()
var/radio_text = ""
for(var/i = 1 to channels.len)
var/channel = channels[i]
var/key = get_radio_key_from_channel(channel)
radio_text += "[key] - [channel]"
if(i != channels.len)
radio_text += ", "
radio_desc = radio_text

View File

@@ -135,23 +135,6 @@
A.ai_actual_track(target) A.ai_actual_track(target)
return return
else if (href_list["faketrack"])
var/mob/target = locate(href_list["track"])
var/mob/living/silicon/ai/A = locate(href_list["track2"])
if(A && target)
A:cameraFollow = target
A << text("Now tracking [] on camera.", target.name)
if (usr.machine == null)
usr.machine = usr
while (usr:cameraFollow == target)
usr << "Target is not on or near any active cameras on the station. We'll check again in 5 seconds (unless you use the cancel-camera verb)."
sleep(40)
continue
return
else if (href_list["freq"]) else if (href_list["freq"])
var/new_frequency = (frequency + text2num(href_list["freq"])) var/new_frequency = (frequency + text2num(href_list["freq"]))
if (!freerange || (frequency < 1200 || frequency > 1600)) if (!freerange || (frequency < 1200 || frequency > 1600))
@@ -491,7 +474,7 @@
/obj/item/device/radio/examine(mob/user) /obj/item/device/radio/examine(mob/user)
..(user) . = ..()
if ((in_range(src, user) || loc == user)) if ((in_range(src, user) || loc == user))
if (b_stat) if (b_stat)
user.show_message("\blue \the [src] can be attached and modified!") user.show_message("\blue \the [src] can be attached and modified!")

View File

@@ -18,6 +18,8 @@
matter = list("glass" = 3750) matter = list("glass" = 3750)
origin_tech = "materials=1" origin_tech = "materials=1"
var/created_window = /obj/structure/window/basic var/created_window = /obj/structure/window/basic
var/is_reinforced = 0
var/list/construction_options = list("One Direction", "Full Window")
/obj/item/stack/sheet/glass/cyborg /obj/item/stack/sheet/glass/cyborg
name = "glass" name = "glass"
@@ -32,19 +34,24 @@
/obj/item/stack/sheet/glass/attackby(obj/item/W, mob/user) /obj/item/stack/sheet/glass/attackby(obj/item/W, mob/user)
..() ..()
if(istype(W,/obj/item/stack/cable_coil)) if(!is_reinforced)
var/obj/item/stack/cable_coil/CC = W if(istype(W,/obj/item/stack/cable_coil))
if (get_amount() < 1 || CC.get_amount() < 5) var/obj/item/stack/cable_coil/CC = W
user << "<span class='warning>You need five lengths of coil and one sheet of glass to make wired glass.</span>" if (get_amount() < 1 || CC.get_amount() < 5)
return user << "<span class='warning>You need five lengths of coil and one sheet of glass to make wired glass.</span>"
CC.use(5) return
use(1)
user << "<span class='notice'>You attach wire to the [name].</span>" CC.use(5)
new /obj/item/stack/light_w(user.loc) use(1)
else if(istype(W, /obj/item/stack/rods)) user << "<span class='notice'>You attach wire to the [name].</span>"
var/obj/item/stack/rods/V = W new /obj/item/stack/light_w(user.loc)
if (V.get_amount() >= 1 && get_amount() >= 1) else if(istype(W, /obj/item/stack/rods))
var/obj/item/stack/sheet/rglass/RG = new (user.loc) var/obj/item/stack/rods/V = W
if (V.get_amount() < 1 || get_amount() < 1)
user << "<span class='warning'>You need one rod and one sheet of glass to make reinforced glass.</span>"
return
var/obj/item/stack/sheet/glass/reinforced/RG = new (user.loc)
RG.add_fingerprint(user) RG.add_fingerprint(user)
RG.add_to_stacks(user) RG.add_to_stacks(user)
var/obj/item/stack/sheet/glass/G = src var/obj/item/stack/sheet/glass/G = src
@@ -54,20 +61,15 @@
G.use(1) G.use(1)
if (!G && replace) if (!G && replace)
user.put_in_hands(RG) user.put_in_hands(RG)
else
user << "<span class='warning'>You need one rod and one sheet of glass to make reinforced glass.</span>"
return
else
return ..()
/obj/item/stack/sheet/glass/proc/construct_window(mob/user as mob) /obj/item/stack/sheet/glass/proc/construct_window(mob/user as mob)
if(!user || !src) return 0 if(!user || !src) return 0
if(!istype(user.loc,/turf)) return 0 if(!istype(user.loc,/turf)) return 0
if(!user.IsAdvancedToolUser()) if(!user.IsAdvancedToolUser())
return 0 return 0
var/title = "Sheet-Glass" var/title = "Sheet-[name]"
title += " ([src.amount] sheet\s left)" title += " ([src.amount] sheet\s left)"
switch(alert(title, "Would you like full tile glass or one direction?", "One Direction", "Full Window", "Cancel", null)) switch(input(title, "What would you like to construct?") as null|anything in construction_options)
if("One Direction") if("One Direction")
if(!src) return 1 if(!src) return 1
if(src.loc != user) return 1 if(src.loc != user) return 1
@@ -80,7 +82,7 @@
user << "\red There are too many windows in this location." user << "\red There are too many windows in this location."
return 1 return 1
directions-=win.dir directions-=win.dir
if(!(win.ini_dir in cardinal)) if(!(win.dir in cardinal))
user << "\red Can't let you do that." user << "\red Can't let you do that."
return 1 return 1
@@ -94,112 +96,23 @@
if(!found) if(!found)
dir_to_set = direction dir_to_set = direction
break break
var/obj/structure/window/W new created_window( user.loc, dir_to_set, 1 )
W = new created_window( user.loc, 0 )
W.dir = dir_to_set
W.ini_dir = W.dir
W.anchored = 0
src.use(1) src.use(1)
if("Full Window") if("Full Window")
if(!src) return 1 if(!src) return 1
if(src.loc != user) return 1 if(src.loc != user) return 1
if(src.amount < 2) if(src.amount < 4)
user << "\red You need more glass to do that." user << "\red You need more glass to do that."
return 1 return 1
if(locate(/obj/structure/window) in user.loc) if(locate(/obj/structure/window) in user.loc)
user << "\red There is a window in the way." user << "\red There is a window in the way."
return 1 return 1
var/obj/structure/window/W new created_window( user.loc, SOUTHWEST, 1 )
W = new created_window( user.loc, 0 ) src.use(4)
W.dir = SOUTHWEST
W.ini_dir = SOUTHWEST
W.anchored = 0
src.use(2)
return 0
/*
* Reinforced glass sheets
*/
/obj/item/stack/sheet/rglass
name = "reinforced glass"
desc = "Glass which seems to have rods or something stuck in them."
singular_name = "reinforced glass sheet"
icon_state = "sheet-rglass"
matter = list("metal" = 1875,"glass" = 3750)
origin_tech = "materials=2"
/obj/item/stack/sheet/rglass/cyborg
name = "reinforced glass"
desc = "Glass which seems to have rods or something stuck in them."
singular_name = "reinforced glass sheet"
icon_state = "sheet-rglass"
/obj/item/stack/sheet/rglass/attack_self(mob/user as mob)
construct_window(user)
/obj/item/stack/sheet/rglass/proc/construct_window(mob/user as mob)
if(!user || !src) return 0
if(!istype(user.loc,/turf)) return 0
if(!user.IsAdvancedToolUser())
return 0
var/title = "Sheet Reinf. Glass"
title += " ([src.amount] sheet\s left)"
switch(input(title, "Would you like full tile glass a one direction glass pane or a windoor?") in list("One Direction", "Full Window", "Windoor", "Cancel"))
if("One Direction")
if(!src) return 1
if(src.loc != user) return 1
var/list/directions = new/list(cardinal)
var/i = 0
for (var/obj/structure/window/win in user.loc)
i++
if(i >= 4)
user << "\red There are too many windows in this location."
return 1
directions-=win.dir
if(!(win.ini_dir in cardinal))
user << "\red Can't let you do that."
return 1
//Determine the direction. It will first check in the direction the person making the window is facing, if it finds an already made window it will try looking at the next cardinal direction, etc.
var/dir_to_set = 2
for(var/direction in list( user.dir, turn(user.dir,90), turn(user.dir,180), turn(user.dir,270) ))
var/found = 0
for(var/obj/structure/window/WT in user.loc)
if(WT.dir == direction)
found = 1
if(!found)
dir_to_set = direction
break
var/obj/structure/window/W
W = new /obj/structure/window/reinforced( user.loc, 1 )
W.state = 0
W.dir = dir_to_set
W.ini_dir = W.dir
W.anchored = 0
src.use(1)
if("Full Window")
if(!src) return 1
if(src.loc != user) return 1
if(src.amount < 2)
user << "\red You need more glass to do that."
return 1
if(locate(/obj/structure/window) in user.loc)
user << "\red There is a window in the way."
return 1
var/obj/structure/window/W
W = new /obj/structure/window/reinforced( user.loc, 1 )
W.state = 0
W.dir = SOUTHWEST
W.ini_dir = SOUTHWEST
W.anchored = 0
src.use(2)
if("Windoor") if("Windoor")
if(!is_reinforced) return 1
if(!src || src.loc != user) return 1 if(!src || src.loc != user) return 1
if(isturf(user.loc) && locate(/obj/structure/windoor_assembly/, user.loc)) if(isturf(user.loc) && locate(/obj/structure/windoor_assembly/, user.loc))
@@ -214,31 +127,33 @@
user << "\red You need more glass to do that." user << "\red You need more glass to do that."
return 1 return 1
var/obj/structure/windoor_assembly/WD new /obj/structure/windoor_assembly(user.loc, user.dir, 1)
WD = new /obj/structure/windoor_assembly(user.loc)
WD.state = "01"
WD.anchored = 0
src.use(5) src.use(5)
switch(user.dir)
if(SOUTH)
WD.dir = SOUTH
WD.ini_dir = SOUTH
if(EAST)
WD.dir = EAST
WD.ini_dir = EAST
if(WEST)
WD.dir = WEST
WD.ini_dir = WEST
else//If the user is facing northeast. northwest, southeast, southwest or north, default to north
WD.dir = NORTH
WD.ini_dir = NORTH
else
return 1
return 0 return 0
/*
* Reinforced glass sheets
*/
/obj/item/stack/sheet/glass/reinforced
name = "reinforced glass"
desc = "Glass which has been reinforced with metal rods."
singular_name = "reinforced glass sheet"
icon_state = "sheet-rglass"
matter = list("metal" = 1875,"glass" = 3750)
origin_tech = "materials=2"
created_window = /obj/structure/window/reinforced
is_reinforced = 1
construction_options = list("One Direction", "Full Window", "Windoor")
/obj/item/stack/sheet/glass/reinforced/cyborg
name = "reinforced glass"
desc = "Glass which has been reinforced with metal rods."
singular_name = "reinforced glass sheet"
icon_state = "sheet-rglass"
/* /*
* Phoron Glass sheets * Phoron Glass sheets
@@ -252,9 +167,6 @@
origin_tech = "materials=3;phorontech=2" origin_tech = "materials=3;phorontech=2"
created_window = /obj/structure/window/phoronbasic created_window = /obj/structure/window/phoronbasic
/obj/item/stack/sheet/glass/phoronglass/attack_self(mob/user as mob)
construct_window(user)
/obj/item/stack/sheet/glass/phoronglass/attackby(obj/item/W, mob/user) /obj/item/stack/sheet/glass/phoronglass/attackby(obj/item/W, mob/user)
..() ..()
if( istype(W, /obj/item/stack/rods) ) if( istype(W, /obj/item/stack/rods) )
@@ -277,13 +189,11 @@
*/ */
/obj/item/stack/sheet/glass/phoronrglass /obj/item/stack/sheet/glass/phoronrglass
name = "reinforced phoron glass" name = "reinforced phoron glass"
desc = "Phoron glass which seems to have rods or something stuck in them." desc = "Phoron glass which has been reinforced with metal rods."
singular_name = "reinforced phoron glass sheet" singular_name = "reinforced phoron glass sheet"
icon_state = "sheet-phoronrglass" icon_state = "sheet-phoronrglass"
matter = list("glass" = 7500,"metal" = 1875) matter = list("glass" = 7500,"metal" = 1875)
origin_tech = "materials=4;phorontech=2" origin_tech = "materials=4;phorontech=2"
created_window = /obj/structure/window/phoronreinforced created_window = /obj/structure/window/phoronreinforced
is_reinforced = 1
/obj/item/stack/sheet/glass/phoronrglass/attack_self(mob/user as mob)
construct_window(user)

View File

@@ -472,3 +472,50 @@
else else
return ..() return ..()
/obj/item/weapon/combitool
name = "combi-tool"
desc = "It even has one of those nubbins for doing the thingy."
icon = 'icons/obj/items.dmi'
icon_state = "combitool"
var/list/spawn_tools = list(
/obj/item/weapon/screwdriver,
/obj/item/weapon/wrench,
/obj/item/weapon/wirecutters,
/obj/item/weapon/kitchen/utensil/knife,
/obj/item/weapon/kitchen/utensil/fork,
/obj/item/weapon/hatchet
)
var/list/tools = list()
var/current_tool = 1
/obj/item/weapon/combitool/examine()
..()
if(loc == usr && tools.len)
usr << "It has the following fittings:"
for(var/obj/item/tool in tools)
usr << "\icon[tool] - [tool.name][tools[current_tool]==tool?" (selected)":""]"
/obj/item/weapon/combitool/New()
..()
for(var/type in spawn_tools)
tools |= new type(src)
/obj/item/weapon/combitool/attack_self(mob/user as mob)
if(++current_tool > tools.len) current_tool = 1
var/obj/item/tool = tools[current_tool]
if(!tool)
user << "You can't seem to find any fittings in \the [src]."
else
user << "You switch \the [src] to the [tool.name] fitting."
return 1
/obj/item/weapon/combitool/attack(var/atom/target, var/mob/living/user)
var/obj/item/tool = tools[current_tool]
if(!tool)
return ..()
var/resolved = target.attackby(tool,user)
if(!resolved && tool && target)
tool.afterattack(target,user,1)
return 1

View File

@@ -159,7 +159,7 @@ obj/structure/door_assembly
if(do_after(user, 40)) if(do_after(user, 40))
if(!src || !WT.isOn()) return if(!src || !WT.isOn()) return
user << "\blue You welded the glass panel out!" user << "\blue You welded the glass panel out!"
new /obj/item/stack/sheet/rglass(src.loc) new /obj/item/stack/sheet/glass/reinforced(src.loc)
glass = 0 glass = 0
else if(!anchored) else if(!anchored)
user.visible_message("[user] dissassembles the airlock assembly.", "You start to dissassemble the airlock assembly.") user.visible_message("[user] dissassembles the airlock assembly.", "You start to dissassemble the airlock assembly.")
@@ -239,7 +239,7 @@ obj/structure/door_assembly
var/obj/item/stack/sheet/S = W var/obj/item/stack/sheet/S = W
if (S) if (S)
if (S.get_amount() >= 1) if (S.get_amount() >= 1)
if(istype(S, /obj/item/stack/sheet/rglass)) if(istype(S, /obj/item/stack/sheet/glass/reinforced))
playsound(src.loc, 'sound/items/Crowbar.ogg', 100, 1) playsound(src.loc, 'sound/items/Crowbar.ogg', 100, 1)
user.visible_message("[user] adds [S.name] to the airlock assembly.", "You start to install [S.name] into the airlock assembly.") user.visible_message("[user] adds [S.name] to the airlock assembly.", "You start to install [S.name] into the airlock assembly.")
if(do_after(user, 40) && !glass) if(do_after(user, 40) && !glass)
@@ -303,4 +303,4 @@ obj/structure/door_assembly
name = "Wired " name = "Wired "
if(2) if(2)
name = "Near Finished " name = "Near Finished "
name += "[glass == 1 ? "Window " : ""][istext(glass) ? "[glass] Airlock" : base_name] Assembly" name += "[glass == 1 ? "Window " : ""][istext(glass) ? "[glass] Airlock" : base_name] Assembly"

View File

@@ -85,8 +85,8 @@
return return
//window placing begin //window placing begin
else if(istype(W,/obj/item/stack/sheet/rglass) || istype(W,/obj/item/stack/sheet/glass)) else if(istype(W,/obj/item/stack/sheet/glass))
var/obj/item/stack/sheet/ST = W var/obj/item/stack/sheet/glass/ST = W
var/dir_to_set = 1 var/dir_to_set = 1
if(loc == user.loc) if(loc == user.loc)
dir_to_set = user.dir dir_to_set = user.dir
@@ -115,16 +115,10 @@
if(WINDOW.dir == dir_to_set)//checking this for a 2nd time to check if a window was made while we were waiting. if(WINDOW.dir == dir_to_set)//checking this for a 2nd time to check if a window was made while we were waiting.
user << "<span class='notice'>There is already a window facing this way there.</span>" user << "<span class='notice'>There is already a window facing this way there.</span>"
return return
var/wtype = ST.created_window
if (ST.use(1)) if (ST.use(1))
var/obj/structure/window/WD var/obj/structure/window/WD = new wtype(loc, dir_to_set, 1)
if(istype(W, /obj/item/stack/sheet/rglass))
WD = new/obj/structure/window/reinforced(loc) //reinforced window
else
WD = new/obj/structure/window/basic(loc) //normal window
WD.dir = dir_to_set
WD.ini_dir = dir_to_set
WD.anchored = 0
WD.state = 0
user << "<span class='notice'>You place the [WD] on [src].</span>" user << "<span class='notice'>You place the [WD] on [src].</span>"
WD.update_icon() WD.update_icon()
return return

View File

@@ -310,7 +310,13 @@
for(var/mob/living/M in contents) for(var/mob/living/M in contents)
if (M.stat!=2) if (M.stat!=2)
M.emote("scream") if (!iscarbon(M))
M.emote("scream")
else
var/mob/living/carbon/C = M
if (!(C.species && (C.species.flags & NO_PAIN)))
C.emote("scream")
//Logging for this causes runtimes resulting in the cremator locking up. Commenting it out until that's figured out. //Logging for this causes runtimes resulting in the cremator locking up. Commenting it out until that's figured out.
//M.attack_log += "\[[time_stamp()]\] Has been cremated by <b>[user]/[user.ckey]</b>" //No point in this when the mob's about to be deleted //M.attack_log += "\[[time_stamp()]\] Has been cremated by <b>[user]/[user.ckey]</b>" //No point in this when the mob's about to be deleted
//user.attack_log +="\[[time_stamp()]\] Cremated <b>[M]/[M.ckey]</b>" //user.attack_log +="\[[time_stamp()]\] Cremated <b>[M]/[M.ckey]</b>"

View File

@@ -18,7 +18,6 @@ obj/structure/windoor_assembly
density = 0 density = 0
dir = NORTH dir = NORTH
var/ini_dir
var/obj/item/weapon/airlock_electronics/electronics = null var/obj/item/weapon/airlock_electronics/electronics = null
//Vars to help with the icon's name //Vars to help with the icon's name
@@ -26,9 +25,17 @@ obj/structure/windoor_assembly
var/secure = "" //Whether or not this creates a secure windoor var/secure = "" //Whether or not this creates a secure windoor
var/state = "01" //How far the door assembly has progressed in terms of sprites var/state = "01" //How far the door assembly has progressed in terms of sprites
obj/structure/windoor_assembly/New(dir=NORTH) obj/structure/windoor_assembly/New(Loc, start_dir=NORTH, constructed=0)
..() ..()
src.ini_dir = src.dir if(constructed)
state = "01"
anchored = 0
switch(start_dir)
if(NORTH, SOUTH, EAST, WEST)
dir = start_dir
else //If the user is facing northeast. northwest, southeast, southwest or north, default to north
dir = NORTH
update_nearby_tiles(need_rebuild=1) update_nearby_tiles(need_rebuild=1)
obj/structure/windoor_assembly/Del() obj/structure/windoor_assembly/Del()
@@ -70,7 +77,7 @@ obj/structure/windoor_assembly/Del()
if(do_after(user, 40)) if(do_after(user, 40))
if(!src || !WT.isOn()) return if(!src || !WT.isOn()) return
user << "\blue You dissasembled the windoor assembly!" user << "\blue You dissasembled the windoor assembly!"
new /obj/item/stack/sheet/rglass(get_turf(src), 5) new /obj/item/stack/sheet/glass/reinforced(get_turf(src), 5)
if(secure) if(secure)
new /obj/item/stack/rods(get_turf(src), 4) new /obj/item/stack/rods(get_turf(src), 4)
del(src) del(src)
@@ -270,7 +277,6 @@ obj/structure/windoor_assembly/Del()
if(src.state != "01") if(src.state != "01")
update_nearby_tiles(need_rebuild=1) update_nearby_tiles(need_rebuild=1)
src.ini_dir = src.dir
update_icon() update_icon()
return return

View File

@@ -18,7 +18,6 @@
// var/silicate = 0 // number of units of silicate // var/silicate = 0 // number of units of silicate
// var/icon/silicateIcon = null // the silicated icon // var/icon/silicateIcon = null // the silicated icon
/obj/structure/window/proc/take_damage(var/damage = 0, var/sound_effect = 1) /obj/structure/window/proc/take_damage(var/damage = 0, var/sound_effect = 1)
var/initialhealth = src.health var/initialhealth = src.health
src.health = max(0, src.health - damage) src.health = max(0, src.health - damage)
@@ -85,11 +84,16 @@
/obj/structure/window/meteorhit() /obj/structure/window/meteorhit()
shatter() shatter()
//TODO: Make full windows a separate type of window.
//Once a full window, it will always be a full window, so there's no point
//having the same type for both.
/obj/structure/window/proc/is_full_window()
return (dir == SOUTHWEST || dir == SOUTHEAST || dir == NORTHWEST || dir == NORTHEAST)
/obj/structure/window/CanPass(atom/movable/mover, turf/target, height=0, air_group=0) /obj/structure/window/CanPass(atom/movable/mover, turf/target, height=0, air_group=0)
if(istype(mover) && mover.checkpass(PASSGLASS)) if(istype(mover) && mover.checkpass(PASSGLASS))
return 1 return 1
if(dir == SOUTHWEST || dir == SOUTHEAST || dir == NORTHWEST || dir == NORTHEAST) if(is_full_window())
return 0 //full tile window, you can't move into it! return 0 //full tile window, you can't move into it!
if(get_dir(loc, target) == dir) if(get_dir(loc, target) == dir)
return !density return !density
@@ -245,7 +249,6 @@
dir = turn(dir, 90) dir = turn(dir, 90)
// updateSilicate() // updateSilicate()
update_nearby_tiles(need_rebuild=1) update_nearby_tiles(need_rebuild=1)
ini_dir = dir
return return
@@ -262,7 +265,6 @@
dir = turn(dir, 270) dir = turn(dir, 270)
// updateSilicate() // updateSilicate()
update_nearby_tiles(need_rebuild=1) update_nearby_tiles(need_rebuild=1)
ini_dir = dir
return return
@@ -282,10 +284,15 @@
*/ */
/obj/structure/window/New(Loc,re=0) /obj/structure/window/New(Loc, start_dir=null, constructed=0)
..() ..()
// if(re) reinf = re //player-constructed windows
if (constructed)
anchored = 0
if (start_dir)
dir = start_dir
health = maxhealth health = maxhealth
@@ -294,8 +301,6 @@
update_nearby_tiles(need_rebuild=1) update_nearby_tiles(need_rebuild=1)
update_nearby_icons() update_nearby_icons()
return
/obj/structure/window/Del() /obj/structure/window/Del()
density = 0 density = 0
@@ -305,6 +310,7 @@
/obj/structure/window/Move() /obj/structure/window/Move()
var/ini_dir = dir
update_nearby_tiles(need_rebuild=1) update_nearby_tiles(need_rebuild=1)
..() ..()
dir = ini_dir dir = ini_dir
@@ -406,7 +412,14 @@
basestate = "rwindow" basestate = "rwindow"
maxhealth = 40 maxhealth = 40
reinf = 1 reinf = 1
glasstype = /obj/item/stack/sheet/rglass glasstype = /obj/item/stack/sheet/glass/reinforced
/obj/structure/window/New(Loc, constructed=0)
..()
//player-constructed windows
if (constructed)
state = 0
/obj/structure/window/reinforced/tinted /obj/structure/window/reinforced/tinted
name = "tinted window" name = "tinted window"

View File

@@ -281,7 +281,7 @@ var/global/floorIsLava = 0
I.rank = "N/A" I.rank = "N/A"
update_file = 1 update_file = 1
dat += "<font color=#008800>[I.content]</font> <i>by [I.author] ([I.rank])</i> on <i><font color=blue>[I.timestamp]</i></font> " dat += "<font color=#008800>[I.content]</font> <i>by [I.author] ([I.rank])</i> on <i><font color=blue>[I.timestamp]</i></font> "
if(I.author == usr.key || I.author == "Adminbot") if(I.author == usr.key || I.author == "Adminbot" || ishost(usr))
dat += "<A href='?src=\ref[src];remove_player_info=[key];remove_index=[i]'>Remove</A>" dat += "<A href='?src=\ref[src];remove_player_info=[key];remove_index=[i]'>Remove</A>"
dat += "<br><br>" dat += "<br><br>"
if(update_file) info << infos if(update_file) info << infos
@@ -1141,9 +1141,25 @@ var/global/floorIsLava = 0
if(2) if(2)
var/ref_mob = "\ref[M]" var/ref_mob = "\ref[M]"
return "<b>[key_name(C, link, name, highlight_special)](<A HREF='?_src_=holder;adminmoreinfo=[ref_mob]'>?</A>) (<A HREF='?_src_=holder;adminplayeropts=[ref_mob]'>PP</A>) (<A HREF='?_src_=vars;Vars=[ref_mob]'>VV</A>) (<A HREF='?_src_=holder;subtlemessage=[ref_mob]'>SM</A>) (<A HREF='?_src_=holder;adminplayerobservejump=[ref_mob]'>JMP</A>) (<A HREF='?_src_=holder;check_antagonist=1'>CA</A>)</b>" return "<b>[key_name(C, link, name, highlight_special)](<A HREF='?_src_=holder;adminmoreinfo=[ref_mob]'>?</A>) (<A HREF='?_src_=holder;adminplayeropts=[ref_mob]'>PP</A>) (<A HREF='?_src_=vars;Vars=[ref_mob]'>VV</A>) (<A HREF='?_src_=holder;subtlemessage=[ref_mob]'>SM</A>) (<A HREF='?_src_=holder;adminplayerobservejump=[ref_mob]'>JMP</A>) (<A HREF='?_src_=holder;check_antagonist=1'>CA</A>)</b>"
if(3)
var/ref_mob = "\ref[M]"
return "<b>[key_name(C, link, name, highlight_special)](<A HREF='?_src_=vars;Vars=[ref_mob]'>VV</A>)(<A HREF='?_src_=holder;adminplayerobservejump=[ref_mob]'>JMP</A>)</b>"
/proc/ishost(whom)
if(!whom)
return 0
var/client/C
var/mob/M
if(istype(whom, /client))
C = whom
if(istype(whom, /mob))
M = whom
C = M.client
if(R_HOST & C.holder.rights)
return 1
else
return 0
// //
// //
//ALL DONE //ALL DONE

View File

@@ -37,7 +37,7 @@ var/list/admin_ranks = list() //list of all ranks with associated rights
if("stealth") rights |= R_STEALTH if("stealth") rights |= R_STEALTH
if("rejuv","rejuvinate") rights |= R_REJUVINATE if("rejuv","rejuvinate") rights |= R_REJUVINATE
if("varedit") rights |= R_VAREDIT if("varedit") rights |= R_VAREDIT
if("everything","host","all") rights |= R_HOST if("everything","host","all") rights |= (R_HOST | R_BUILDMODE | R_ADMIN | R_BAN | R_FUN | R_SERVER | R_DEBUG | R_PERMISSIONS | R_POSSESS | R_STEALTH | R_REJUVINATE | R_VAREDIT | R_SOUNDS | R_SPAWN | R_MOD| R_MENTOR)
if("sound","sounds") rights |= R_SOUNDS if("sound","sounds") rights |= R_SOUNDS
if("spawn","create") rights |= R_SPAWN if("spawn","create") rights |= R_SPAWN
if("mod") rights |= R_MOD if("mod") rights |= R_MOD

View File

@@ -3,7 +3,7 @@
//This is a list of words which are ignored by the parser when comparing message contents for names. MUST BE IN LOWER CASE! //This is a list of words which are ignored by the parser when comparing message contents for names. MUST BE IN LOWER CASE!
var/list/adminhelp_ignored_words = list("unknown","the","a","an","of","monkey","alien","as") var/list/adminhelp_ignored_words = list("unknown","the","a","an","of","monkey","alien","as")
/client/verb/adminhelp(msg as text) /client/verb/adminhelp()
set category = "Admin" set category = "Admin"
set name = "Adminhelp" set name = "Adminhelp"
@@ -15,8 +15,7 @@ var/list/adminhelp_ignored_words = list("unknown","the","a","an","of","monkey","
if(prefs.muted & MUTE_ADMINHELP) if(prefs.muted & MUTE_ADMINHELP)
src << "<font color='red'>Error: Admin-PM: You cannot send adminhelps (Muted).</font>" src << "<font color='red'>Error: Admin-PM: You cannot send adminhelps (Muted).</font>"
return return
if(src.handle_spam_prevention(msg,MUTE_ADMINHELP))
return
adminhelped = 1 //Determines if they get the message to reply by clicking the name. adminhelped = 1 //Determines if they get the message to reply by clicking the name.
@@ -26,6 +25,17 @@ var/list/adminhelp_ignored_words = list("unknown","the","a","an","of","monkey","
src.verbs += /client/verb/adminhelp // 2 minute cool-down for adminhelps src.verbs += /client/verb/adminhelp // 2 minute cool-down for adminhelps
src.verbs += /client/verb/adminhelp // 2 minute cool-down for adminhelps//Go to hell src.verbs += /client/verb/adminhelp // 2 minute cool-down for adminhelps//Go to hell
**/ **/
var/msg
var/list/type = list ("Gameplay/Roleplay question", "Rule/Gameplay issue", "Bug report")
var/selected_type = input("Pick a category.", "Admin Help", null, null) as null|anything in type
if(selected_type)
msg = input("Please enter your message:", "Admin Help", null, null) as text
var/selected_upper = uppertext(selected_type)
if(src.handle_spam_prevention(msg,MUTE_ADMINHELP))
return
//clean the input msg //clean the input msg
if(!msg) return if(!msg) return
@@ -33,7 +43,7 @@ var/list/adminhelp_ignored_words = list("unknown","the","a","an","of","monkey","
if(!msg) return if(!msg) return
var/original_msg = msg var/original_msg = msg
//explode the input msg into a list //explode the input msg into a list
var/list/msglist = text2list(msg, " ") var/list/msglist = text2list(msg, " ")
@@ -91,11 +101,68 @@ var/list/adminhelp_ignored_words = list("unknown","the","a","an","of","monkey","
if(!mob) return //this doesn't happen if(!mob) return //this doesn't happen
var/ref_mob = "\ref[mob]" var/ref_mob = "\ref[mob]"
var/mentor_msg = "\blue <b><font color=red>HELP: </font>[get_options_bar(mob, 2, 1, 1, 0)][ai_found ? " (<A HREF='?_src_=holder;adminchecklaws=[ref_mob]'>CL</A>)" : ""]:</b> [msg]" var/mentor_msg = "\blue <b><font color=red>[selected_upper]: </font>[get_options_bar(mob, 0, 0, 1, 0)][ai_found ? " (<A HREF='?_src_=holder;adminchecklaws=[ref_mob]'>CL</A>)" : ""]:</b> [msg]"
msg = "\blue <b><font color=red>HELP: </font>[get_options_bar(mob, 2, 1, 1)][ai_found ? " (<A HREF='?_src_=holder;adminchecklaws=[ref_mob]'>CL</A>)" : ""]:</b> [msg]" var/dev_msg = "\blue <b><font color=red>[selected_upper]: </font>[get_options_bar(mob, 3, 0, 1, 0)][ai_found ? " (<A HREF='?_src_=holder;adminchecklaws=[ref_mob]'>CL</A>)" : ""]:</b> [msg]"
//send this msg to all admins msg = "\blue <b><font color=red>[selected_upper]: </font>[get_options_bar(mob, 2, 1, 1)][ai_found ? " (<A HREF='?_src_=holder;adminchecklaws=[ref_mob]'>CL</A>)" : ""]:</b> [msg]"
var/admin_number_afk = 0 var/admin_number_afk = 0
var/list/mentorholders = list()
var/list/debugholders = list()
var/list/adminholders = list()
for(var/client/X in admins) for(var/client/X in admins)
if(R_MENTOR & X.holder.rights && !(R_ADMIN & X.holder.rights)) // we don't want to count admins twice. This list should be JUST mentors
mentorholders += X
if(X.is_afk())
admin_number_afk++
if(R_DEBUG & X.holder.rights) // Looking for anyone with +Debug which will be admins, developers, and developer mentors
debugholders += X
if(!(R_ADMIN & X.holder.rights))
if(X.is_afk())
admin_number_afk++
if(R_ADMIN & X.holder.rights) // just admins here please
adminholders += X
if(X.is_afk())
admin_number_afk++
switch(selected_type)
if("Gameplay/Roleplay question")
if(mentorholders.len)
for(var/client/X in mentorholders) // Mentors get a message without buttons and no character name
if(X.prefs.toggles & SOUND_ADMINHELP)
X << 'sound/effects/adminhelp.ogg'
X << mentor_msg
if(adminholders.len)
for(var/client/X in adminholders) // Admins get the full monty
if(X.prefs.toggles & SOUND_ADMINHELP)
X << 'sound/effects/adminhelp.ogg'
X << msg
if("Rule/Gameplay issue")
if(adminholders.len)
for(var/client/X in adminholders) // Admins of course get everything in their helps
if(X.prefs.toggles & SOUND_ADMINHELP)
X << 'sound/effects/adminhelp.ogg'
X << msg
if("Bug report")
if(debugholders.len)
for(var/client/X in debugholders)
if(R_ADMIN & X.holder.rights) // Admins get every button & special highlights in theirs
if(X.prefs.toggles & SOUND_ADMINHELP)
X << 'sound/effects/adminhelp.ogg'
X << msg
else
if (R_DEBUG & X.holder.rights) // Just devs or devmentors get non-highlighted names, but they do get JMP and VV for their bug reports.
if(X.prefs.toggles & SOUND_ADMINHELP)
X << 'sound/effects/adminhelp.ogg'
X << dev_msg
/*for(var/client/X in admins)
if((R_ADMIN|R_MOD|R_MENTOR) & X.holder.rights) if((R_ADMIN|R_MOD|R_MENTOR) & X.holder.rights)
if(X.is_afk()) if(X.is_afk())
admin_number_afk++ admin_number_afk++
@@ -104,19 +171,19 @@ var/list/adminhelp_ignored_words = list("unknown","the","a","an","of","monkey","
if(X.holder.rights == R_MENTOR) if(X.holder.rights == R_MENTOR)
X << mentor_msg // Mentors won't see coloring of names on people with special_roles (Antags, etc.) X << mentor_msg // Mentors won't see coloring of names on people with special_roles (Antags, etc.)
else else
X << msg X << msg*/
//show it to the person adminhelping too //show it to the person adminhelping too
src << "<font color='blue'>PM to-<b>Admins</b>: [original_msg]</font>" src << "<font color='blue'>PM to-<b>Staff ([selected_type])</b>: [original_msg]</font>"
var/admin_number_present = admins.len - admin_number_afk var/admin_number_present = admins.len - admin_number_afk
log_admin("HELP: [key_name(src)]: [original_msg] - heard by [admin_number_present] non-AFK admins.") log_admin("HELP: [key_name(src)]: [original_msg] - heard by [admin_number_present] non-AFK admins.")
if(admin_number_present <= 0) if(admin_number_present <= 0)
if(!admin_number_afk) if(!admin_number_afk)
send2adminirc("ADMINHELP from [key_name(src)]: [html_decode(original_msg)] - !!No admins online!!") send2adminirc("[selected_upper] from [key_name(src)]: [html_decode(original_msg)] - !!No admins online!!")
else else
send2adminirc("ADMINHELP from [key_name(src)]: [html_decode(original_msg)] - !!All admins AFK ([admin_number_afk])!!") send2adminirc("[selected_upper] from [key_name(src)]: [html_decode(original_msg)] - !!All admins AFK ([admin_number_afk])!!")
else else
send2adminirc("ADMINHELP from [key_name(src)]: [html_decode(original_msg)]") send2adminirc("[selected_upper] from [key_name(src)]: [html_decode(original_msg)]")
feedback_add_details("admin_verb","AH") //If you are copy-pasting this, ensure the 2nd parameter is unique to the new proc! feedback_add_details("admin_verb","AH") //If you are copy-pasting this, ensure the 2nd parameter is unique to the new proc!
return return

View File

@@ -43,7 +43,7 @@
if(!istype(C,/client)) if(!istype(C,/client))
if(holder) src << "<font color='red'>Error: Private-Message: Client not found.</font>" if(holder) src << "<font color='red'>Error: Private-Message: Client not found.</font>"
else adminhelp(msg) //admin we are replying to left. adminhelp instead else src << "<font color='red'>Error: Private-Message: Client not found. They may have lost connection, so try using an adminhelp!</font>"
return return
//get message text, limit it's length.and clean/escape html //get message text, limit it's length.and clean/escape html
@@ -53,7 +53,7 @@
if(!msg) return if(!msg) return
if(!C) if(!C)
if(holder) src << "<font color='red'>Error: Admin-PM: Client not found.</font>" if(holder) src << "<font color='red'>Error: Admin-PM: Client not found.</font>"
else adminhelp(msg) //admin we are replying to has vanished, adminhelp instead else src << "<font color='red'>Error: Private-Message: Client not found. They may have lost connection, so try using an adminhelp!</font>"
return return
if (src.handle_spam_prevention(msg,MUTE_ADMINHELP)) if (src.handle_spam_prevention(msg,MUTE_ADMINHELP))
@@ -78,7 +78,7 @@
else else
recieve_color = "maroon" recieve_color = "maroon"
send_pm_type = holder.rank + " " send_pm_type = holder.rank + " "
if(!C.holder && holder && holder.fakekey) if(!C.holder && holder && holder.fakekey)
recieve_pm_type = "Admin" recieve_pm_type = "Admin"
else else
recieve_pm_type = holder.rank recieve_pm_type = holder.rank

View File

@@ -9,8 +9,12 @@
log_admin("[key_name(src)] : [msg]") log_admin("[key_name(src)] : [msg]")
var/color = "adminsay"
if(ishost(usr))
color = "headminsay"
if(check_rights(R_ADMIN,0)) if(check_rights(R_ADMIN,0))
msg = "<span class='adminsay'><span class='prefix'>ADMIN:</span> <EM>[key_name(usr, 1)]</EM> (<a href='?_src_=holder;adminplayerobservejump=\ref[mob]'>JMP</A>): <span class='message'>[msg]</span></span>" msg = "<span class='[color]'><span class='prefix'>ADMIN:</span> <EM>[key_name(usr, 1)]</EM> (<a href='?_src_=holder;adminplayerobservejump=\ref[mob]'>JMP</A>): <span class='message'>[msg]</span></span>"
for(var/client/C in admins) for(var/client/C in admins)
if(R_ADMIN & C.holder.rights) if(R_ADMIN & C.holder.rights)
C << msg C << msg

View File

@@ -6,7 +6,7 @@
src << "Only administrators may use this command." src << "Only administrators may use this command."
return return
feedback_add_details("admin_verb","CP") //If you are copy-pasting this, ensure the 2nd parameter is unique to the new proc! feedback_add_details("admin_verb","CP") //If you are copy-pasting this, ensure the 2nd parameter is unique to the new proc!
if(alert("WARNING: This command should not be run on a live server. Do you want to continue?", "Check Piping", "No", "Yes") == "No") if(alert("WARNING: This command should not be run on a live server. Do you want to continue?", "Check Piping", "No", "Yes") == "No")
return return
@@ -30,11 +30,12 @@
next_turf: next_turf:
for(var/turf/T in world) for(var/turf/T in world)
for(var/dir in cardinal) for(var/dir in cardinal)
var/check = 0 var/list/connect_types = list(1 = 0, 2 = 0, 3 = 0)
for(var/obj/machinery/atmospherics/pipe in T) for(var/obj/machinery/atmospherics/pipe in T)
if(dir & pipe.initialize_directions) if(dir & pipe.initialize_directions)
check++ for(var/connect_type in pipe.connect_types)
if(check > 1) connect_types[connect_type] += 1
if(connect_types[1] > 1 || connect_types[2] > 1 || connect_types[3] > 1)
usr << "Overlapping pipe ([pipe.name]) located at [T.x],[T.y],[T.z] ([get_area(T)])" usr << "Overlapping pipe ([pipe.name]) located at [T.x],[T.y],[T.z] ([get_area(T)])"
continue next_turf continue next_turf
usr << "Done" usr << "Done"

View File

@@ -20,8 +20,9 @@
msg = "\blue \icon[cross] <b><font color=purple>PRAY: </font>[key_name(src, 1)] (<A HREF='?_src_=holder;adminmoreinfo=\ref[src]'>?</A>) (<A HREF='?_src_=holder;adminplayeropts=\ref[src]'>PP</A>) (<A HREF='?_src_=vars;Vars=\ref[src]'>VV</A>) (<A HREF='?_src_=holder;subtlemessage=\ref[src]'>SM</A>) (<A HREF='?_src_=holder;adminplayerobservejump=\ref[src]'>JMP</A>) (<A HREF='?_src_=holder;secretsadmin=check_antagonist'>CA</A>) (<A HREF='?_src_=holder;adminspawncookie=\ref[src]'>SC</a>):</b> [msg]" msg = "\blue \icon[cross] <b><font color=purple>PRAY: </font>[key_name(src, 1)] (<A HREF='?_src_=holder;adminmoreinfo=\ref[src]'>?</A>) (<A HREF='?_src_=holder;adminplayeropts=\ref[src]'>PP</A>) (<A HREF='?_src_=vars;Vars=\ref[src]'>VV</A>) (<A HREF='?_src_=holder;subtlemessage=\ref[src]'>SM</A>) (<A HREF='?_src_=holder;adminplayerobservejump=\ref[src]'>JMP</A>) (<A HREF='?_src_=holder;secretsadmin=check_antagonist'>CA</A>) (<A HREF='?_src_=holder;adminspawncookie=\ref[src]'>SC</a>):</b> [msg]"
for(var/client/C in admins) for(var/client/C in admins)
if(C.prefs.toggles & CHAT_PRAYER) if(R_ADMIN & C.holder.rights)
C << msg if(C.prefs.toggles & CHAT_PRAYER)
C << msg
usr << "Your prayers have been received by the gods." usr << "Your prayers have been received by the gods."
feedback_add_details("admin_verb","PR") //If you are copy-pasting this, ensure the 2nd parameter is unique to the new proc! feedback_add_details("admin_verb","PR") //If you are copy-pasting this, ensure the 2nd parameter is unique to the new proc!
@@ -30,9 +31,13 @@
/proc/Centcomm_announce(var/text , var/mob/Sender , var/iamessage) /proc/Centcomm_announce(var/text , var/mob/Sender , var/iamessage)
var/msg = copytext(sanitize(text), 1, MAX_MESSAGE_LEN) var/msg = copytext(sanitize(text), 1, MAX_MESSAGE_LEN)
msg = "\blue <b><font color=orange>CENTCOMM[iamessage ? " IA" : ""]:</font>[key_name(Sender, 1)] (<A HREF='?_src_=holder;adminplayeropts=\ref[Sender]'>PP</A>) (<A HREF='?_src_=vars;Vars=\ref[Sender]'>VV</A>) (<A HREF='?_src_=holder;subtlemessage=\ref[Sender]'>SM</A>) (<A HREF='?_src_=holder;adminplayerobservejump=\ref[Sender]'>JMP</A>) (<A HREF='?_src_=holder;secretsadmin=check_antagonist'>CA</A>) (<A HREF='?_src_=holder;BlueSpaceArtillery=\ref[Sender]'>BSA</A>) (<A HREF='?_src_=holder;CentcommReply=\ref[Sender]'>RPLY</A>):</b> [msg]" msg = "\blue <b><font color=orange>CENTCOMM[iamessage ? " IA" : ""]:</font>[key_name(Sender, 1)] (<A HREF='?_src_=holder;adminplayeropts=\ref[Sender]'>PP</A>) (<A HREF='?_src_=vars;Vars=\ref[Sender]'>VV</A>) (<A HREF='?_src_=holder;subtlemessage=\ref[Sender]'>SM</A>) (<A HREF='?_src_=holder;adminplayerobservejump=\ref[Sender]'>JMP</A>) (<A HREF='?_src_=holder;secretsadmin=check_antagonist'>CA</A>) (<A HREF='?_src_=holder;BlueSpaceArtillery=\ref[Sender]'>BSA</A>) (<A HREF='?_src_=holder;CentcommReply=\ref[Sender]'>RPLY</A>):</b> [msg]"
admins << msg for(var/client/C in admins)
if(R_ADMIN & C.holder.rights)
C << msg
/proc/Syndicate_announce(var/text , var/mob/Sender) /proc/Syndicate_announce(var/text , var/mob/Sender)
var/msg = copytext(sanitize(text), 1, MAX_MESSAGE_LEN) var/msg = copytext(sanitize(text), 1, MAX_MESSAGE_LEN)
msg = "\blue <b><font color=crimson>ILLEGAL:</font>[key_name(Sender, 1)] (<A HREF='?_src_=holder;adminplayeropts=\ref[Sender]'>PP</A>) (<A HREF='?_src_=vars;Vars=\ref[Sender]'>VV</A>) (<A HREF='?_src_=holder;subtlemessage=\ref[Sender]'>SM</A>) (<A HREF='?_src_=holder;adminplayerobservejump=\ref[Sender]'>JMP</A>) (<A HREF='?_src_=holder;secretsadmin=check_antagonist'>CA</A>) (<A HREF='?_src_=holder;BlueSpaceArtillery=\ref[Sender]'>BSA</A>) (<A HREF='?_src_=holder;SyndicateReply=\ref[Sender]'>RPLY</A>):</b> [msg]" msg = "\blue <b><font color=crimson>ILLEGAL:</font>[key_name(Sender, 1)] (<A HREF='?_src_=holder;adminplayeropts=\ref[Sender]'>PP</A>) (<A HREF='?_src_=vars;Vars=\ref[Sender]'>VV</A>) (<A HREF='?_src_=holder;subtlemessage=\ref[Sender]'>SM</A>) (<A HREF='?_src_=holder;adminplayerobservejump=\ref[Sender]'>JMP</A>) (<A HREF='?_src_=holder;secretsadmin=check_antagonist'>CA</A>) (<A HREF='?_src_=holder;BlueSpaceArtillery=\ref[Sender]'>BSA</A>) (<A HREF='?_src_=holder;SyndicateReply=\ref[Sender]'>RPLY</A>):</b> [msg]"
admins << msg for(var/client/C in admins)
if(R_ADMIN & C.holder.rights)
C << msg

View File

@@ -1,10 +1,9 @@
//Regular syndicate space suit //Regular syndicate space suit
/obj/item/clothing/head/helmet/space/syndicate /obj/item/clothing/head/helmet/space/syndicate
name = "red space helmet" name = "red space helmet"
desc = "Top secret space helmet."
icon_state = "syndicate" icon_state = "syndicate"
item_state = "syndicate" item_state = "space_helmet_syndicate"
desc = "Has a tag: Totally not property of an enemy corporation, honest." desc = "A crimson helmet sporting clean lines and durable plating. Engineered to look menacing."
armor = list(melee = 60, bullet = 50, laser = 30,energy = 15, bomb = 30, bio = 30, rad = 30) armor = list(melee = 60, bullet = 50, laser = 30,energy = 15, bomb = 30, bio = 30, rad = 30)
siemens_coefficient = 0.6 siemens_coefficient = 0.6
@@ -12,7 +11,7 @@
name = "red space suit" name = "red space suit"
icon_state = "syndicate" icon_state = "syndicate"
item_state = "space_suit_syndicate" item_state = "space_suit_syndicate"
desc = "Has a tag on it: Totally not property of of a hostile corporation, honest!" desc = "A crimson spacesuit sporting clean lines and durable plating. Robust, reliable, and slightly suspicious."
w_class = 3 w_class = 3
allowed = list(/obj/item/weapon/gun,/obj/item/ammo_magazine,/obj/item/ammo_casing,/obj/item/weapon/melee/baton,/obj/item/weapon/melee/energy/sword,/obj/item/weapon/handcuffs,/obj/item/weapon/tank/emergency_oxygen) allowed = list(/obj/item/weapon/gun,/obj/item/ammo_magazine,/obj/item/ammo_casing,/obj/item/weapon/melee/baton,/obj/item/weapon/melee/energy/sword,/obj/item/weapon/handcuffs,/obj/item/weapon/tank/emergency_oxygen)
slowdown = 1 slowdown = 1

View File

@@ -1412,3 +1412,86 @@
desc = "This cane seems to have 'Ryals' engraved on its handle." desc = "This cane seems to have 'Ryals' engraved on its handle."
icon_state = "cane" icon_state = "cane"
item_state = "stick" item_state = "stick"
////////////////////////////// Foxler - Erstatz Vryroxes /////////////////////////////////////////////////
/obj/item/weapon/holder/cat/fluff/bones
name = "Bones"
desc = "It's Bones! Meow."
gender = MALE
icon_state = "cat3"
//Use this subtype for spawning in the custom item.
/obj/item/weapon/holder/cat/fluff/bones/custom_item
/obj/item/weapon/holder/cat/fluff/bones/custom_item/New()
if (!contents.len)
new/mob/living/simple_animal/cat/fluff/bones (src)
..()
/mob/living/simple_animal/cat/fluff/bones
name = "Bones"
desc = "That's Bones the cat. He's a laid back, black cat. Meow."
gender = MALE
icon_state = "cat3"
icon_living = "cat3"
icon_dead = "cat3_dead"
holder_type = /obj/item/weapon/holder/cat/fluff/bones
bff_name = "Erstatz Vryroxes"
/mob/living/simple_animal/cat/fluff
var/bff_name
var/mob/living/carbon/human/bff
/mob/living/simple_animal/cat/fluff/handle_movement_target()
if (!bff)
for (var/mob/living/carbon/human/M in player_list)
if (M.real_name == bff_name)
bff = M
break
if (bff)
var/follow_dist = 5
if (bff.stat >= DEAD || bff.health <= config.health_threshold_softcrit) //danger
follow_dist = 1
else if (bff.stat || bff.health <= 50) //danger or just sleeping
follow_dist = 2
var/near_dist = max(follow_dist - 3, 1)
var/current_dist = get_dist(src, bff)
if (movement_target != bff)
if (current_dist > follow_dist && !istype(movement_target, /mob/living/simple_animal/mouse) && (bff in oview(src)))
//stop existing movement
walk_to(src,0)
turns_since_scan = 0
//walk to bff
stop_automated_movement = 1
movement_target = bff
walk_to(src, movement_target, near_dist, 4)
//already following and close enough, stop
else if (current_dist <= near_dist)
walk_to(src,0)
movement_target = null
stop_automated_movement = 0
if (!(bff && movement_target == bff))
..()
/mob/living/simple_animal/cat/fluff/Life()
..()
if (stat || !bff)
return
if (get_dist(src, bff) <= 1)
if (bff.stat >= DEAD || bff.health <= config.health_threshold_softcrit)
if (prob((bff.stat < DEAD)? 50 : 15))
audible_emote(pick("meows in distress.", "meows anxiously."))
else
if (prob(5))
visible_emote(pick("nuzzles [bff].",
"brushes against [bff].",
"rubs against [bff].",
"purrs."))
else if (bff.health <= 50)
if (prob(10)) audible_emote("meows anxiously.")

View File

@@ -1,4 +1,6 @@
// All mobs should have custom emote, really.. // All mobs should have custom emote, really..
//m_type == 1 --> visual.
//m_type == 2 --> audible
/mob/proc/custom_emote(var/m_type=1,var/message = null) /mob/proc/custom_emote(var/m_type=1,var/message = null)
if(stat || !use_me && usr == src) if(stat || !use_me && usr == src)

View File

@@ -8,7 +8,19 @@
//Does the speaker have a client? It's either random stuff that observers won't care about (Experiment 97B says, 'EHEHEHEHEHEHEHE') //Does the speaker have a client? It's either random stuff that observers won't care about (Experiment 97B says, 'EHEHEHEHEHEHEHE')
//Or someone snoring. So we make it where they won't hear it. //Or someone snoring. So we make it where they won't hear it.
return return
//make sure the air can transmit speech - hearer's side
var/turf/T = get_turf(src)
if (T)
var/datum/gas_mixture/environment = T.return_air()
var/pressure = (environment)? environment.return_pressure() : 0
if(pressure < SOUND_MINIMUM_PRESSURE && get_dist(speaker, src) > 1)
return
if (pressure < ONE_ATMOSPHERE*0.4) //sound distortion pressure, to help clue people in that the air is thin, even if it isn't a vacuum yet
italics = 1
sound_vol *= 0.5 //muffle the sound a bit, so it's like we're actually talking through contact
if(sleeping || stat == 1) if(sleeping || stat == 1)
hear_sleep(message) hear_sleep(message)
return return

View File

@@ -230,7 +230,7 @@
if(drone_only && !istype(S,/mob/living/silicon/robot/drone)) if(drone_only && !istype(S,/mob/living/silicon/robot/drone))
continue continue
else if(istype(S , /mob/living/silicon/ai)) else if(istype(S , /mob/living/silicon/ai))
message_start = "<i><span class='game say'>[name], <a href='byond://?src=\ref[S];track2=\ref[S];track=\ref[src];trackname=[html_encode(speaker.name)]'><span class='name'>[speaker.name]</span></a>" message_start = "<i><span class='game say'>[name], <a href='byond://?src=\ref[S];track2=\ref[S];track=\ref[speaker];trackname=[html_encode(speaker.name)]'><span class='name'>[speaker.name]</span></a>"
else if (!S.binarycheck()) else if (!S.binarycheck())
continue continue

View File

@@ -19,6 +19,7 @@
/mob/living/carbon/alien/diona/New() /mob/living/carbon/alien/diona/New()
..() ..()
species = all_species["Diona"]
verbs += /mob/living/carbon/proc/eat_weeds verbs += /mob/living/carbon/proc/eat_weeds
verbs += /mob/living/carbon/proc/fertilize_plant verbs += /mob/living/carbon/proc/fertilize_plant
verbs += /mob/living/carbon/alien/diona/proc/steal_blood verbs += /mob/living/carbon/alien/diona/proc/steal_blood

View File

@@ -499,7 +499,8 @@
if (!( AM.anchored )) if (!( AM.anchored ))
var/t = get_dir(src, AM) var/t = get_dir(src, AM)
if (istype(AM, /obj/structure/window)) if (istype(AM, /obj/structure/window))
if(AM:ini_dir == NORTHWEST || AM:ini_dir == NORTHEAST || AM:ini_dir == SOUTHWEST || AM:ini_dir == SOUTHEAST) var/obj/structure/window/W = AM
if(W.is_full_window())
for(var/obj/structure/window/win in get_step(AM,t)) for(var/obj/structure/window/win in get_step(AM,t))
now_pushing = 0 now_pushing = 0
return return

View File

@@ -1,5 +1,6 @@
/mob/living/carbon/ /mob/living/carbon/
gender = MALE gender = MALE
var/datum/species/species //Contains icon generation and language information, set during New().
var/list/stomach_contents = list() var/list/stomach_contents = list()
var/list/datum/disease2/disease/virus2 = list() var/list/datum/disease2/disease/virus2 = list()
var/antibodies = 0 var/antibodies = 0

View File

@@ -72,7 +72,12 @@
if(B.host_brain.ckey) if(B.host_brain.ckey)
src << "\red <B>You send a punishing spike of psychic agony lancing into your host's brain.</B>" src << "\red <B>You send a punishing spike of psychic agony lancing into your host's brain.</B>"
B.host_brain << "\red <B><FONT size=3>Horrific, burning agony lances through you, ripping a soundless scream from your trapped mind!</FONT></B>"
if (species && (species.flags & NO_PAIN))
B.host_brain << "\red You feel a strange sensation as a foreign influence prods your mind."
src << "\red <B>It doesn't seem to be as effective as you hoped.</B>"
else
B.host_brain << "\red <B><FONT size=3>Horrific, burning agony lances through you, ripping a soundless scream from your trapped mind!</FONT></B>"
/mob/living/carbon/proc/spawn_larvae() /mob/living/carbon/proc/spawn_larvae()
set category = "Abilities" set category = "Abilities"

View File

@@ -6,7 +6,6 @@
icon_state = "body_m_s" icon_state = "body_m_s"
var/list/hud_list[9] var/list/hud_list[9]
var/datum/species/species //Contains icon generation and language information, set during New().
var/embedded_flag //To check if we've need to roll for damage on movement while an item is imbedded in us. var/embedded_flag //To check if we've need to roll for damage on movement while an item is imbedded in us.
/mob/living/carbon/human/New(var/new_loc, var/new_species = null) /mob/living/carbon/human/New(var/new_loc, var/new_species = null)

View File

@@ -351,7 +351,7 @@ This function restores all organs.
//Handle other types of damage //Handle other types of damage
if((damagetype != BRUTE) && (damagetype != BURN)) if((damagetype != BRUTE) && (damagetype != BURN))
if(damagetype == HALLOSS) if(damagetype == HALLOSS && !(species && (species.flags & NO_PAIN)))
if ((damage > 25 && prob(20)) || (damage > 50 && prob(60))) if ((damage > 25 && prob(20)) || (damage > 50 && prob(60)))
emote("scream") emote("scream")

View File

@@ -17,7 +17,8 @@
var/health_deficiency = (100 - health) var/health_deficiency = (100 - health)
if(health_deficiency >= 40) tally += (health_deficiency / 25) if(health_deficiency >= 40) tally += (health_deficiency / 25)
if(halloss >= 10) tally += (halloss / 10) if (!(species && (species.flags & NO_PAIN)))
if(halloss >= 10) tally += (halloss / 10) //halloss shouldn't slow you down if you can't even feel it
var/hungry = (500 - nutrition)/5 // So overeat would be 100 and default level would be 80 var/hungry = (500 - nutrition)/5 // So overeat would be 100 and default level would be 80
if (hungry >= 70) tally += hungry/50 if (hungry >= 70) tally += hungry/50
@@ -55,8 +56,7 @@
if (bodytemperature < 283.222) if (bodytemperature < 283.222)
tally += (283.222 - bodytemperature) / 10 * 1.75 tally += (283.222 - bodytemperature) / 10 * 1.75
if(can_stand <= 1) tally += 2*stance_damage //damaged/missing feet or legs is slow
tally += 5 //hopping around on one foot is slow
if(mRun in mutations) if(mRun in mutations)
tally = 0 tally = 0

View File

@@ -147,7 +147,8 @@
if (!( AM.anchored )) if (!( AM.anchored ))
var/t = get_dir(src, AM) var/t = get_dir(src, AM)
if (istype(AM, /obj/structure/window)) if (istype(AM, /obj/structure/window))
if(AM:ini_dir == NORTHWEST || AM:ini_dir == NORTHEAST || AM:ini_dir == SOUTHWEST || AM:ini_dir == SOUTHEAST) var/obj/structure/window/W = AM
if(W.is_full_window())
for(var/obj/structure/window/win in get_step(AM,t)) for(var/obj/structure/window/win in get_step(AM,t))
now_pushing = 0 now_pushing = 0
return return

View File

@@ -61,13 +61,15 @@
loc = M.loc loc = M.loc
if(prob(15) && M.client && istype(M, /mob/living/carbon)) if(prob(15) && M.client && istype(M, /mob/living/carbon))
M << "<span class='danger'>[pick("You can feel your body becoming weak!", \ var/mob/living/carbon/C = M
"You feel like you're about to die!", \ if (!(C.species && (C.species.flags & NO_PAIN)))
"You feel every part of your body screaming in agony!", \ M << "<span class='danger'>[pick("You can feel your body becoming weak!", \
"A low, rolling pain passes through your body!", \ "You feel like you're about to die!", \
"Your body feels as if it's falling apart!", \ "You feel every part of your body screaming in agony!", \
"You feel extremely weak!", \ "A low, rolling pain passes through your body!", \
"A sharp, deep pain bathes every inch of your body!")]</span>" "Your body feels as if it's falling apart!", \
"You feel extremely weak!", \
"A sharp, deep pain bathes every inch of your body!")]</span>"
if(istype(M, /mob/living/carbon)) if(istype(M, /mob/living/carbon))
Victim.adjustCloneLoss(rand(5,6)) Victim.adjustCloneLoss(rand(5,6))

View File

@@ -41,6 +41,9 @@
reagents = R reagents = R
R.my_atom = src R.my_atom = src
species = all_species[greaterform]
add_language(species.language)
if(name == initial(name)) //To stop Pun-Pun becoming generic. if(name == initial(name)) //To stop Pun-Pun becoming generic.
name = "[name] ([rand(1, 1000)])" name = "[name] ([rand(1, 1000)])"
real_name = name real_name = name
@@ -78,24 +81,22 @@
/mob/living/carbon/monkey/unathi/New() /mob/living/carbon/monkey/unathi/New()
..()
dna.mutantrace = "lizard" dna.mutantrace = "lizard"
greaterform = "Unathi" greaterform = "Unathi"
add_language("Sinta'unathi") ..()
/mob/living/carbon/monkey/skrell/New() /mob/living/carbon/monkey/skrell/New()
..()
dna.mutantrace = "skrell" dna.mutantrace = "skrell"
greaterform = "Skrell" greaterform = "Skrell"
add_language("Skrellian") ..()
/mob/living/carbon/monkey/tajara/New() /mob/living/carbon/monkey/tajara/New()
..()
dna.mutantrace = "tajaran" dna.mutantrace = "tajaran"
greaterform = "Tajara" greaterform = "Tajara"
add_language("Siik'tajr") ..()
/mob/living/carbon/monkey/movement_delay() /mob/living/carbon/monkey/movement_delay()
var/tally = 0 var/tally = 0
@@ -287,4 +288,4 @@
message = capitalize(trim_left(message)) message = capitalize(trim_left(message))
..(message, speaking, verb, alt_name, italics, message_range, used_radios) ..(message, speaking, verb, alt_name, italics, message_range, used_radios)

View File

@@ -436,7 +436,8 @@
else else
if (pulling) if (pulling)
if (istype(pulling, /obj/structure/window)) if (istype(pulling, /obj/structure/window))
if(pulling:ini_dir == NORTHWEST || pulling:ini_dir == NORTHEAST || pulling:ini_dir == SOUTHWEST || pulling:ini_dir == SOUTHEAST) var/obj/structure/window/W = pulling
if(W.is_full_window())
for(var/obj/structure/window/win in get_step(pulling,get_dir(pulling.loc, T))) for(var/obj/structure/window/win in get_step(pulling,get_dir(pulling.loc, T)))
stop_pulling() stop_pulling()
if (pulling) if (pulling)

View File

@@ -91,22 +91,21 @@ proc/get_radio_key_from_channel(var/channel)
if (speaking.flags & SIGNLANG) if (speaking.flags & SIGNLANG)
return say_signlang(message, pick(speaking.signlang_verb), speaking) return say_signlang(message, pick(speaking.signlang_verb), speaking)
//make sure the air can transmit speech
var/datum/gas_mixture/environment = T.return_air()
if(environment)
var/pressure = environment.return_pressure()
if(pressure < SOUND_MINIMUM_PRESSURE)
italics = 1
message_range = 1
if (speech_sound)
sound_vol *= 0.5 //muffle the sound a bit, so it's like we're actually talking through contact
var/list/listening = list() var/list/listening = list()
var/list/listening_obj = list() var/list/listening_obj = list()
if(T) if(T)
//make sure the air can transmit speech - speaker's side
var/datum/gas_mixture/environment = T.return_air()
var/pressure = (environment)? environment.return_pressure() : 0
if(pressure < SOUND_MINIMUM_PRESSURE)
message_range = 1
if (pressure < ONE_ATMOSPHERE*0.4) //sound distortion pressure, to help clue people in that the air is thin, even if it isn't a vacuum yet
italics = 1
sound_vol *= 0.5 //muffle the sound a bit, so it's like we're actually talking through contact
var/list/hear = hear(message_range, T) var/list/hear = hear(message_range, T)
var/list/hearturfs = list() var/list/hearturfs = list()

View File

@@ -506,24 +506,7 @@ var/list/ai_verbs_default = list(
else else
src << "\red System error. Cannot locate [html_decode(href_list["trackname"])]." src << "\red System error. Cannot locate [html_decode(href_list["trackname"])]."
return return
else if (href_list["faketrack"])
var/mob/target = locate(href_list["track"]) in mob_list
var/mob/living/silicon/ai/A = locate(href_list["track2"]) in mob_list
if(A && target)
A.cameraFollow = target
A << text("Now tracking [] on camera.", target.name)
if (usr.machine == null)
usr.machine = usr
while (src.cameraFollow == target)
usr << "Target is not on or near any active cameras on the station. We'll check again in 5 seconds (unless you use the cancel-camera verb)."
sleep(40)
continue
return
return return
/mob/living/silicon/ai/meteorhit(obj/O as obj) /mob/living/silicon/ai/meteorhit(obj/O as obj)

View File

@@ -27,18 +27,22 @@
laws.clear_supplied_laws() laws.clear_supplied_laws()
/mob/living/silicon/proc/statelaws() // -- TLE /mob/living/silicon/proc/statelaws() // -- TLE
if(stating_laws)
src << "<span class='notice'>You are currently stating laws.</span>"
return
stating_laws = 1
var/prefix = "" var/prefix = ""
switch(lawchannel) switch(lawchannel)
if(MAIN_CHANNEL) prefix = ";" // Apparently defines are not constant expressions? if(MAIN_CHANNEL) prefix = ";"
if("Binary") prefix = ":b " if("Binary") prefix = ":b "
else else
prefix = get_radio_key_from_channel(lawchannel == "Holopad" ? "department" : lawchannel) + " " prefix = get_radio_key_from_channel(lawchannel == "Holopad" ? "department" : lawchannel) + " "
dostatelaws(lawchannel, prefix)
/mob/living/silicon/proc/dostatelaws(var/method, var/prefix)
if(stating_laws[prefix])
src << "<span class='notice'>[method]: Already stating laws using this communication method.</span>"
return
stating_laws[prefix] = 1
var/can_state = statelaw("[prefix]Current Active Laws:") var/can_state = statelaw("[prefix]Current Active Laws:")
//src.laws_sanity_check() //src.laws_sanity_check()
@@ -71,9 +75,8 @@
number++ number++
if(!can_state) if(!can_state)
src << "<span class='danger'>Unable to state laws. Communication method unavailable.</span>" src << "<span class='danger'>[method]: Unable to state laws. Communication method unavailable.</span>"
stating_laws[prefix] = 0
stating_laws = 0
/mob/living/silicon/proc/statelaw(var/law) /mob/living/silicon/proc/statelaw(var/law)
if(src.say(law)) if(src.say(law))
@@ -93,10 +96,7 @@
for (var/index = 1, index <= src.laws.ion.len, index++) for (var/index = 1, index <= src.laws.ion.len, index++)
var/law = src.laws.ion[index] var/law = src.laws.ion[index]
if (length(law) > 0) if (length(law) > 0)
if (!src.ioncheck[index]) if (!src.ioncheck[index])
src.ioncheck[index] = "Yes" src.ioncheck[index] = "Yes"
list += {"<A href='byond://?src=\ref[src];lawi=[index]'>[src.ioncheck[index]] [ionnum()]:</A> [law]<BR>"} list += {"<A href='byond://?src=\ref[src];lawi=[index]'>[src.ioncheck[index]] [ionnum()]:</A> [law]<BR>"}
@@ -105,10 +105,8 @@
var/number = 1 var/number = 1
for (var/index = 1, index <= src.laws.inherent.len, index++) for (var/index = 1, index <= src.laws.inherent.len, index++)
var/law = src.laws.inherent[index] var/law = src.laws.inherent[index]
if (length(law) > 0) if (length(law) > 0)
src.lawcheck.len += 1 src.lawcheck.len += 1
if (!src.lawcheck[number+1]) if (!src.lawcheck[number+1])
src.lawcheck[number+1] = "Yes" src.lawcheck[number+1] = "Yes"
list += {"<A href='byond://?src=\ref[src];lawc=[number]'>[src.lawcheck[number+1]] [number]:</A> [law]<BR>"} list += {"<A href='byond://?src=\ref[src];lawc=[number]'>[src.lawcheck[number+1]] [number]:</A> [law]<BR>"}

View File

@@ -594,7 +594,8 @@ var/list/robot_verbs_default = list(
if (!AM.anchored) if (!AM.anchored)
var/t = get_dir(src, AM) var/t = get_dir(src, AM)
if (istype(AM, /obj/structure/window)) if (istype(AM, /obj/structure/window))
if(AM:ini_dir == NORTHWEST || AM:ini_dir == NORTHEAST || AM:ini_dir == SOUTHWEST || AM:ini_dir == SOUTHEAST) var/obj/structure/window/W = AM
if(W.is_full_window())
for(var/obj/structure/window/win in get_step(AM,t)) for(var/obj/structure/window/win in get_step(AM,t))
now_pushing = 0 now_pushing = 0
return return

View File

@@ -167,7 +167,7 @@
stacktypes = list( stacktypes = list(
/obj/item/stack/sheet/metal = 50, /obj/item/stack/sheet/metal = 50,
/obj/item/stack/sheet/plasteel = 10, /obj/item/stack/sheet/plasteel = 10,
/obj/item/stack/sheet/rglass = 50, /obj/item/stack/sheet/glass/reinforced = 50,
/obj/item/stack/rods = 50 /obj/item/stack/rods = 50
) )
@@ -188,7 +188,7 @@
stacktypes = list( stacktypes = list(
/obj/item/stack/sheet/metal = 50, /obj/item/stack/sheet/metal = 50,
/obj/item/stack/sheet/glass = 50, /obj/item/stack/sheet/glass = 50,
/obj/item/stack/sheet/rglass = 50, /obj/item/stack/sheet/glass/reinforced = 50,
/obj/item/stack/cable_coil = 50, /obj/item/stack/cable_coil = 50,
/obj/item/stack/rods = 15, /obj/item/stack/rods = 15,
/obj/item/stack/tile/plasteel = 15 /obj/item/stack/tile/plasteel = 15
@@ -217,7 +217,7 @@
M.amount = 50 M.amount = 50
src.modules += M src.modules += M
var/obj/item/stack/sheet/rglass/cyborg/R = new /obj/item/stack/sheet/rglass/cyborg(src) var/obj/item/stack/sheet/glass/reinforced/cyborg/R = new (src)
R.amount = 50 R.amount = 50
src.modules += R src.modules += R
@@ -400,7 +400,7 @@
stacktypes = list( stacktypes = list(
/obj/item/stack/sheet/wood = 1, /obj/item/stack/sheet/wood = 1,
/obj/item/stack/sheet/mineral/plastic = 1, /obj/item/stack/sheet/mineral/plastic = 1,
/obj/item/stack/sheet/rglass = 5, /obj/item/stack/sheet/glass/reinforced = 5,
/obj/item/stack/tile/wood = 5, /obj/item/stack/tile/wood = 5,
/obj/item/stack/rods = 15, /obj/item/stack/rods = 15,
/obj/item/stack/tile/plasteel = 15, /obj/item/stack/tile/plasteel = 15,

View File

@@ -6,9 +6,9 @@
var/list/additional_law_channels = list("State") var/list/additional_law_channels = list("State")
var/const/MAIN_CHANNEL = "Main Frequency" var/const/MAIN_CHANNEL = "Main Frequency"
var/lawchannel = MAIN_CHANNEL // Default channel on which to state laws var/lawchannel = MAIN_CHANNEL // Default channel on which to state laws
var/list/stating_laws = list()// Channels laws are currently being stated on
var/lawcheck[1] var/lawcheck[1]
var/ioncheck[1] var/ioncheck[1]
var/stating_laws = 0
var/obj/item/device/radio/common_radio var/obj/item/device/radio/common_radio
immune_to_ssd = 1 immune_to_ssd = 1

View File

@@ -7,8 +7,8 @@
speak_emote = list("chirrups") speak_emote = list("chirrups")
emote_hear = list("chirrups") emote_hear = list("chirrups")
response_help = "pokes" response_help = "pokes"
response_disarm = "prods the" response_disarm = "prods"
response_harm = "stomps on the" response_harm = "stomps on"
icon_state = "brainslug" icon_state = "brainslug"
icon_living = "brainslug" icon_living = "brainslug"
icon_dead = "brainslug_dead" icon_dead = "brainslug_dead"

View File

@@ -79,7 +79,8 @@
if (!( AM.anchored )) if (!( AM.anchored ))
var/t = get_dir(src, AM) var/t = get_dir(src, AM)
if (istype(AM, /obj/structure/window)) if (istype(AM, /obj/structure/window))
if(AM:ini_dir == NORTHWEST || AM:ini_dir == NORTHEAST || AM:ini_dir == SOUTHWEST || AM:ini_dir == SOUTHEAST) var/obj/structure/window/W = AM
if(W.is_full_window())
for(var/obj/structure/window/win in get_step(AM,t)) for(var/obj/structure/window/win in get_step(AM,t))
now_pushing = 0 now_pushing = 0
return return

View File

@@ -8,14 +8,14 @@
speak = list("Meow!","Esp!","Purr!","HSSSSS") speak = list("Meow!","Esp!","Purr!","HSSSSS")
speak_emote = list("purrs", "meows") speak_emote = list("purrs", "meows")
emote_hear = list("meows","mews") emote_hear = list("meows","mews")
emote_see = list("shakes its head", "shivers") emote_see = list("shakes their head", "shivers")
speak_chance = 1 speak_chance = 1
turns_per_move = 5 turns_per_move = 5
see_in_dark = 6 see_in_dark = 6
meat_type = /obj/item/weapon/reagent_containers/food/snacks/meat meat_type = /obj/item/weapon/reagent_containers/food/snacks/meat
response_help = "pets the" response_help = "pets"
response_disarm = "gently pushes aside the" response_disarm = "gently pushes aside"
response_harm = "kicks the" response_harm = "kicks"
var/turns_since_scan = 0 var/turns_since_scan = 0
var/mob/living/simple_animal/mouse/movement_target var/mob/living/simple_animal/mouse/movement_target
min_oxy = 16 //Require atleast 16kPA oxygen min_oxy = 16 //Require atleast 16kPA oxygen
@@ -27,40 +27,45 @@
//MICE! //MICE!
if((src.loc) && isturf(src.loc)) if((src.loc) && isturf(src.loc))
if(!stat && !resting && !buckled) if(!stat && !resting && !buckled)
for(var/mob/living/simple_animal/mouse/M in view(1,src)) for(var/mob/living/simple_animal/mouse/M in loc)
if(!M.stat) if(!M.stat)
M.splat() M.splat()
emote(pick("\red splats the [M]!","\red toys with the [M]","worries the [M]")) visible_emote(pick("bites \the [M]!","toys with \the [M].","chomps on \the [M]!"))
movement_target = null movement_target = null
stop_automated_movement = 0 stop_automated_movement = 0
break break
..() ..()
for(var/mob/living/simple_animal/mouse/snack in oview(src, 3)) for(var/mob/living/simple_animal/mouse/snack in oview(src,5))
if(prob(15)) if(snack.stat < DEAD && prob(15))
emote(pick("hisses and spits!","mrowls fiercely!","eyes [snack] hungrily.")) audible_emote(pick("hisses and spits!","mrowls fiercely!","eyes [snack] hungrily."))
break break
if(!stat && !resting && !buckled) if(!stat && !resting && !buckled)
turns_since_scan++ handle_movement_target()
if(turns_since_scan > 5)
walk_to(src,0)
turns_since_scan = 0
if((movement_target) && !(isturf(movement_target.loc) || ishuman(movement_target.loc) ))
movement_target = null
stop_automated_movement = 0
if( !movement_target || !(movement_target.loc in oview(src, 3)) )
movement_target = null
stop_automated_movement = 0
for(var/mob/living/simple_animal/mouse/snack in oview(src,3))
if(isturf(snack.loc) && !snack.stat)
movement_target = snack
break
if(movement_target)
stop_automated_movement = 1
walk_to(src,movement_target,0,3)
/mob/living/simple_animal/cat/proc/handle_movement_target()
turns_since_scan++
if(turns_since_scan > 5)
walk_to(src,0)
turns_since_scan = 0
if((movement_target) && !(isturf(movement_target.loc) || ishuman(movement_target.loc) ))
movement_target = null
stop_automated_movement = 0
if( !movement_target || !(movement_target.loc in oview(src, 4)) )
movement_target = null
stop_automated_movement = 0
for(var/mob/living/simple_animal/mouse/snack in oview(src))
if(isturf(snack.loc) && !snack.stat)
movement_target = snack
world << "[src]: mouse located."
break
if(movement_target)
world << "[src]: locking on [movement_target]"
stop_automated_movement = 1
walk_to(src,movement_target,0,3)
/mob/living/simple_animal/cat/MouseDrop(atom/over_object) /mob/living/simple_animal/cat/MouseDrop(atom/over_object)
@@ -73,10 +78,16 @@
else else
return ..() return ..()
/mob/living/simple_animal/cat/get_scooped(var/mob/living/carbon/grabber)
if (stat >= DEAD)
return //since the holder icon looks like a living cat
..()
//RUNTIME IS ALIVE! SQUEEEEEEEE~ //RUNTIME IS ALIVE! SQUEEEEEEEE~
/mob/living/simple_animal/cat/Runtime /mob/living/simple_animal/cat/Runtime
name = "Runtime" name = "Runtime"
desc = "Her fur has the look and feel of velvet, and her tail quivers occasionally." desc = "Her fur has the look and feel of velvet, and her tail quivers occasionally."
gender = FEMALE
icon_state = "cat" icon_state = "cat"
icon_living = "cat" icon_living = "cat"
icon_dead = "cat_dead" icon_dead = "cat_dead"

View File

@@ -14,9 +14,9 @@
turns_per_move = 10 turns_per_move = 10
meat_type = /obj/item/weapon/reagent_containers/food/snacks/meat/corgi meat_type = /obj/item/weapon/reagent_containers/food/snacks/meat/corgi
meat_amount = 3 meat_amount = 3
response_help = "pets the" response_help = "pets"
response_disarm = "bops the" response_disarm = "bops"
response_harm = "kicks the" response_harm = "kicks"
see_in_dark = 5 see_in_dark = 5
var/obj/item/inventory_head var/obj/item/inventory_head
var/obj/item/inventory_back var/obj/item/inventory_back
@@ -58,7 +58,7 @@
for (var/mob/M in viewers(src, null)) for (var/mob/M in viewers(src, null))
M.show_message("\red [user] gently taps [src] with the [O]. ") M.show_message("\red [user] gently taps [src] with the [O]. ")
if(prob(15)) if(prob(15))
emote("looks at [user] with [pick("an amused","an annoyed","a confused","a resentful", "a happy", "an excited")] expression on \his face") visible_emote("looks at [user] with [pick("an amused","an annoyed","a confused","a resentful", "a happy", "an excited")] expression on \his face")
return return
..() ..()
@@ -310,10 +310,10 @@
if(isturf(movement_target.loc) ) if(isturf(movement_target.loc) )
UnarmedAttack(movement_target) UnarmedAttack(movement_target)
else if(ishuman(movement_target.loc) && prob(20)) else if(ishuman(movement_target.loc) && prob(20))
custom_emote(1,"stares at the [movement_target] that [movement_target.loc] has with sad puppy eyes.") visible_emote("stares at the [movement_target] that [movement_target.loc] has with sad puppy eyes.")
if(prob(1)) if(prob(1))
emote(pick("dances around","chases its tail")) visible_emote(pick("dances around","chases their tail"))
spawn(0) spawn(0)
for(var/i in list(1,2,4,8,4,2,1,2,4,8,4,2,1,2,4,8,4,2)) for(var/i in list(1,2,4,8,4,2,1,2,4,8,4,2,1,2,4,8,4,2))
dir = i dir = i
@@ -350,7 +350,8 @@
if (!( AM.anchored )) if (!( AM.anchored ))
var/t = get_dir(src, AM) var/t = get_dir(src, AM)
if (istype(AM, /obj/structure/window)) if (istype(AM, /obj/structure/window))
if(AM:ini_dir == NORTHWEST || AM:ini_dir == NORTHEAST || AM:ini_dir == SOUTHWEST || AM:ini_dir == SOUTHEAST) var/obj/structure/window/W = AM
if(W.is_full_window())
for(var/obj/structure/window/win in get_step(AM,t)) for(var/obj/structure/window/win in get_step(AM,t))
now_pushing = 0 now_pushing = 0
return return
@@ -467,7 +468,7 @@
if(prob(1)) if(prob(1))
emote(pick("dances around","chases her tail")) visible_emote(pick("dances around","chases her tail"))
spawn(0) spawn(0)
for(var/i in list(1,2,4,8,4,2,1,2,4,8,4,2,1,2,4,8,4,2)) for(var/i in list(1,2,4,8,4,2,1,2,4,8,4,2,1,2,4,8,4,2))
dir = i dir = i

View File

@@ -12,9 +12,9 @@
speak_chance = 1 speak_chance = 1
turns_per_move = 5 turns_per_move = 5
meat_type = /obj/item/weapon/reagent_containers/food/snacks/meat meat_type = /obj/item/weapon/reagent_containers/food/snacks/meat
response_help = "pets the" response_help = "pets"
response_disarm = "gently pushes aside the" response_disarm = "gently pushes aside"
response_harm = "stomps the" response_harm = "stomps"
stop_automated_movement = 1 stop_automated_movement = 1
friendly = "pinches" friendly = "pinches"
var/obj/item/inventory_head var/obj/item/inventory_head

View File

@@ -14,9 +14,9 @@
see_in_dark = 6 see_in_dark = 6
meat_type = /obj/item/weapon/reagent_containers/food/snacks/meat meat_type = /obj/item/weapon/reagent_containers/food/snacks/meat
meat_amount = 4 meat_amount = 4
response_help = "pets the" response_help = "pets"
response_disarm = "gently pushes aside the" response_disarm = "gently pushes aside"
response_harm = "kicks the" response_harm = "kicks"
faction = "goat" faction = "goat"
attacktext = "kicked" attacktext = "kicked"
health = 40 health = 40
@@ -99,9 +99,9 @@
see_in_dark = 6 see_in_dark = 6
meat_type = /obj/item/weapon/reagent_containers/food/snacks/meat meat_type = /obj/item/weapon/reagent_containers/food/snacks/meat
meat_amount = 6 meat_amount = 6
response_help = "pets the" response_help = "pets"
response_disarm = "gently pushes aside the" response_disarm = "gently pushes aside"
response_harm = "kicks the" response_harm = "kicks"
attacktext = "kicked" attacktext = "kicked"
health = 50 health = 50
var/datum/reagents/udder = null var/datum/reagents/udder = null
@@ -160,9 +160,9 @@
turns_per_move = 2 turns_per_move = 2
meat_type = /obj/item/weapon/reagent_containers/food/snacks/meat meat_type = /obj/item/weapon/reagent_containers/food/snacks/meat
meat_amount = 1 meat_amount = 1
response_help = "pets the" response_help = "pets"
response_disarm = "gently pushes aside the" response_disarm = "gently pushes aside"
response_harm = "kicks the" response_harm = "kicks"
attacktext = "kicked" attacktext = "kicked"
health = 1 health = 1
var/amount_grown = 0 var/amount_grown = 0
@@ -201,9 +201,9 @@ var/global/chicken_count = 0
turns_per_move = 3 turns_per_move = 3
meat_type = /obj/item/weapon/reagent_containers/food/snacks/meat meat_type = /obj/item/weapon/reagent_containers/food/snacks/meat
meat_amount = 2 meat_amount = 2
response_help = "pets the" response_help = "pets"
response_disarm = "gently pushes aside the" response_disarm = "gently pushes aside"
response_harm = "kicks the" response_harm = "kicks"
attacktext = "kicked" attacktext = "kicked"
health = 10 health = 10
var/eggsleft = 0 var/eggsleft = 0

View File

@@ -1,7 +1,7 @@
/mob/living/simple_animal/mouse /mob/living/simple_animal/mouse
name = "mouse" name = "mouse"
real_name = "mouse" real_name = "mouse"
desc = "It's a small, disease-ridden rodent." desc = "It's a small rodent."
icon_state = "mouse_gray" icon_state = "mouse_gray"
icon_living = "mouse_gray" icon_living = "mouse_gray"
icon_dead = "mouse_gray_dead" icon_dead = "mouse_gray_dead"
@@ -17,9 +17,9 @@
maxHealth = 5 maxHealth = 5
health = 5 health = 5
meat_type = /obj/item/weapon/reagent_containers/food/snacks/meat meat_type = /obj/item/weapon/reagent_containers/food/snacks/meat
response_help = "pets the" response_help = "pets"
response_disarm = "gently pushes aside the" response_disarm = "gently pushes aside"
response_harm = "stamps on the" response_harm = "stamps on"
density = 0 density = 0
var/body_color //brown, gray and white, leave blank for random var/body_color //brown, gray and white, leave blank for random
layer = MOB_LAYER layer = MOB_LAYER
@@ -47,7 +47,7 @@
icon_state = "mouse_[body_color]" icon_state = "mouse_[body_color]"
wander = 1 wander = 1
else if(prob(5)) else if(prob(5))
emote("snuffles") audible_emote("snuffles.")
/mob/living/simple_animal/mouse/New() /mob/living/simple_animal/mouse/New()
..() ..()
@@ -110,9 +110,6 @@
/mob/living/simple_animal/mouse/brown/Tom /mob/living/simple_animal/mouse/brown/Tom
name = "Tom" name = "Tom"
desc = "Jerry the cat is not amused." desc = "Jerry the cat is not amused."
response_help = "pets"
response_disarm = "gently pushes aside"
response_harm = "splats"
/mob/living/simple_animal/mouse/can_use_vents() /mob/living/simple_animal/mouse/can_use_vents()
return return

View File

@@ -10,7 +10,7 @@
maxHealth = 5 maxHealth = 5
health = 5 health = 5
meat_type = /obj/item/weapon/reagent_containers/food/snacks/hugemushroomslice meat_type = /obj/item/weapon/reagent_containers/food/snacks/hugemushroomslice
response_help = "pets the" response_help = "pets"
response_disarm = "gently pushes aside the" response_disarm = "gently pushes aside"
response_harm = "whacks the" response_harm = "whacks"
harm_intent_damage = 5 harm_intent_damage = 5

View File

@@ -41,7 +41,8 @@
if (!( AM.anchored )) if (!( AM.anchored ))
var/t = get_dir(src, AM) var/t = get_dir(src, AM)
if (istype(AM, /obj/structure/window)) if (istype(AM, /obj/structure/window))
if(AM:ini_dir == NORTHWEST || AM:ini_dir == NORTHEAST || AM:ini_dir == SOUTHWEST || AM:ini_dir == SOUTHEAST) var/obj/structure/window/W = AM
if(W.is_full_window())
for(var/obj/structure/window/win in get_step(AM,t)) for(var/obj/structure/window/win in get_step(AM,t))
now_pushing = 0 now_pushing = 0
return return

View File

@@ -9,7 +9,7 @@
maxHealth = 15 maxHealth = 15
health = 15 health = 15
meat_type = /obj/item/weapon/reagent_containers/food/snacks/tomatomeat meat_type = /obj/item/weapon/reagent_containers/food/snacks/tomatomeat
response_help = "prods the" response_help = "prods"
response_disarm = "pushes aside the" response_disarm = "pushes aside"
response_harm = "smacks the" response_harm = "smacks"
harm_intent_damage = 5 harm_intent_damage = 5

View File

@@ -12,9 +12,9 @@
speak_chance = 1 speak_chance = 1
turns_per_move = 5 turns_per_move = 5
meat_type = /obj/item/weapon/reagent_containers/food/snacks/meat meat_type = /obj/item/weapon/reagent_containers/food/snacks/meat
response_help = "pets the" response_help = "pets"
response_disarm = "gently pushes aside the" response_disarm = "gently pushes aside"
response_harm = "punches the" response_harm = "punches"
var/list/insults = list( var/list/insults = list(
"Man you suck", "Man you suck",
"You look like the most retarded douche around", "You look like the most retarded douche around",

View File

@@ -6,9 +6,9 @@
icon_living = "alienh_running" icon_living = "alienh_running"
icon_dead = "alien_l" icon_dead = "alien_l"
icon_gib = "syndicate_gib" icon_gib = "syndicate_gib"
response_help = "pokes the" response_help = "pokes"
response_disarm = "shoves the" response_disarm = "shoves"
response_harm = "hits the" response_harm = "hits"
speed = -1 speed = -1
meat_type = /obj/item/weapon/reagent_containers/food/snacks/xenomeat meat_type = /obj/item/weapon/reagent_containers/food/snacks/xenomeat
maxHealth = 100 maxHealth = 100

View File

@@ -14,9 +14,9 @@
turns_per_move = 5 turns_per_move = 5
see_in_dark = 6 see_in_dark = 6
meat_type = /obj/item/weapon/reagent_containers/food/snacks/bearmeat meat_type = /obj/item/weapon/reagent_containers/food/snacks/bearmeat
response_help = "pets the" response_help = "pets"
response_disarm = "gently pushes aside the" response_disarm = "gently pushes aside"
response_harm = "pokes the" response_harm = "pokes"
stop_automated_movement_when_pulled = 0 stop_automated_movement_when_pulled = 0
maxHealth = 60 maxHealth = 60
health = 60 health = 60
@@ -90,7 +90,7 @@
if(HOSTILE_STANCE_ATTACKING) if(HOSTILE_STANCE_ATTACKING)
if(stance_step >= 20) //attacks for 20 ticks, then it gets tired and needs to rest if(stance_step >= 20) //attacks for 20 ticks, then it gets tired and needs to rest
custom_emote(1, "is worn out and needs to rest" ) custom_emote(1, "is worn out and needs to rest." )
stance = HOSTILE_STANCE_TIRED stance = HOSTILE_STANCE_TIRED
stance_step = 0 stance_step = 0
walk(src, 0) //This stops the bear's walking walk(src, 0) //This stops the bear's walking

View File

@@ -6,9 +6,9 @@
icon_dead = "faithless_dead" icon_dead = "faithless_dead"
speak_chance = 0 speak_chance = 0
turns_per_move = 5 turns_per_move = 5
response_help = "passes through the" response_help = "passes through"
response_disarm = "shoves" response_disarm = "shoves"
response_harm = "hits the" response_harm = "hits"
speed = -1 speed = -1
maxHealth = 80 maxHealth = 80
health = 80 health = 80
@@ -38,7 +38,7 @@
/mob/living/simple_animal/hostile/faithless/FindTarget() /mob/living/simple_animal/hostile/faithless/FindTarget()
. = ..() . = ..()
if(.) if(.)
emote("wails at [.]") audible_emote("wails at [.]")
/mob/living/simple_animal/hostile/faithless/AttackingTarget() /mob/living/simple_animal/hostile/faithless/AttackingTarget()
. =..() . =..()

View File

@@ -17,9 +17,9 @@
turns_per_move = 5 turns_per_move = 5
see_in_dark = 10 see_in_dark = 10
meat_type = /obj/item/weapon/reagent_containers/food/snacks/bearmeat meat_type = /obj/item/weapon/reagent_containers/food/snacks/bearmeat
response_help = "pets the" response_help = "pets"
response_disarm = "gently pushes aside the" response_disarm = "gently pushes aside"
response_harm = "pokes the" response_harm = "pokes"
stop_automated_movement_when_pulled = 0 stop_automated_movement_when_pulled = 0
maxHealth = 200 maxHealth = 200
health = 200 health = 200

View File

@@ -10,9 +10,9 @@
icon_living = "crate" icon_living = "crate"
meat_type = /obj/item/weapon/reagent_containers/food/snacks/carpmeat meat_type = /obj/item/weapon/reagent_containers/food/snacks/carpmeat
response_help = "touches the" response_help = "touches"
response_disarm = "pushes the" response_disarm = "pushes"
response_harm = "hits the" response_harm = "hits"
speed = 4 speed = 4
maxHealth = 250 maxHealth = 250
health = 250 health = 250
@@ -39,7 +39,7 @@
/mob/living/simple_animal/hostile/mimic/FindTarget() /mob/living/simple_animal/hostile/mimic/FindTarget()
. = ..() . = ..()
if(.) if(.)
emote("growls at [.]") audible_emote("growls at [.]")
/mob/living/simple_animal/hostile/mimic/death() /mob/living/simple_animal/hostile/mimic/death()
..() ..()

View File

@@ -6,9 +6,9 @@
icon_dead = "piratemelee_dead" icon_dead = "piratemelee_dead"
speak_chance = 0 speak_chance = 0
turns_per_move = 5 turns_per_move = 5
response_help = "pushes the" response_help = "pushes"
response_disarm = "shoves" response_disarm = "shoves"
response_harm = "hits the" response_harm = "hits"
speed = 4 speed = 4
stop_automated_movement_when_pulled = 0 stop_automated_movement_when_pulled = 0
maxHealth = 100 maxHealth = 100

View File

@@ -1,5 +1,5 @@
/mob/living/simple_animal/hostile/retaliate/clown /mob/living/simple_animal/hostile/retaliate/clown
name = "Clown" name = "clown"
desc = "A denizen of clown planet" desc = "A denizen of clown planet"
icon_state = "clown" icon_state = "clown"
icon_living = "clown" icon_living = "clown"
@@ -7,9 +7,9 @@
icon_gib = "clown_gib" icon_gib = "clown_gib"
speak_chance = 0 speak_chance = 0
turns_per_move = 5 turns_per_move = 5
response_help = "pokes the" response_help = "pokes"
response_disarm = "gently pushes aside the" response_disarm = "gently pushes aside"
response_harm = "hits the" response_harm = "hits"
speak = list("HONK", "Honk!", "Welcome to clown planet!") speak = list("HONK", "Honk!", "Welcome to clown planet!")
emote_see = list("honks") emote_see = list("honks")
speak_chance = 1 speak_chance = 1

View File

@@ -10,9 +10,9 @@
rapid = 1 rapid = 1
speak_chance = 5 speak_chance = 5
turns_per_move = 3 turns_per_move = 3
response_help = "pokes the" response_help = "pokes"
response_disarm = "gently pushes aside the" response_disarm = "gently pushes aside"
response_harm = "hits the" response_harm = "hits"
speak = list("ALERT.","Hostile-ile-ile entities dee-twhoooo-wected.","Threat parameterszzzz- szzet.","Bring sub-sub-sub-systems uuuup to combat alert alpha-a-a.") speak = list("ALERT.","Hostile-ile-ile entities dee-twhoooo-wected.","Threat parameterszzzz- szzet.","Bring sub-sub-sub-systems uuuup to combat alert alpha-a-a.")
emote_see = list("beeps menacingly","whirrs threateningly","scans its immediate vicinity") emote_see = list("beeps menacingly","whirrs threateningly","scans its immediate vicinity")
a_intent = "harm" a_intent = "harm"

View File

@@ -1,5 +1,5 @@
/mob/living/simple_animal/hostile/russian /mob/living/simple_animal/hostile/russian
name = "Russian" name = "russian"
desc = "For the Motherland!" desc = "For the Motherland!"
icon_state = "russianmelee" icon_state = "russianmelee"
icon_living = "russianmelee" icon_living = "russianmelee"
@@ -7,9 +7,9 @@
icon_gib = "syndicate_gib" icon_gib = "syndicate_gib"
speak_chance = 0 speak_chance = 0
turns_per_move = 5 turns_per_move = 5
response_help = "pokes the" response_help = "pokes"
response_disarm = "shoves the" response_disarm = "shoves"
response_harm = "hits the" response_harm = "hits"
speed = 4 speed = 4
stop_automated_movement_when_pulled = 0 stop_automated_movement_when_pulled = 0
maxHealth = 100 maxHealth = 100

View File

@@ -1,5 +1,5 @@
/mob/living/simple_animal/hostile/syndicate /mob/living/simple_animal/hostile/syndicate
name = "Syndicate Operative" name = "\improper Syndicate operative"
desc = "Death to Nanotrasen." desc = "Death to Nanotrasen."
icon_state = "syndicate" icon_state = "syndicate"
icon_living = "syndicate" icon_living = "syndicate"
@@ -7,9 +7,9 @@
icon_gib = "syndicate_gib" icon_gib = "syndicate_gib"
speak_chance = 0 speak_chance = 0
turns_per_move = 5 turns_per_move = 5
response_help = "pokes the" response_help = "pokes"
response_disarm = "shoves the" response_disarm = "shoves"
response_harm = "hits the" response_harm = "hits"
speed = 4 speed = 4
stop_automated_movement_when_pulled = 0 stop_automated_movement_when_pulled = 0
maxHealth = 100 maxHealth = 100

View File

@@ -9,9 +9,9 @@
speak_chance = 0 speak_chance = 0
turns_per_move = 5 turns_per_move = 5
meat_type = /obj/item/weapon/reagent_containers/food/snacks/carpmeat meat_type = /obj/item/weapon/reagent_containers/food/snacks/carpmeat
response_help = "brushes the" response_help = "brushes"
response_disarm = "pushes the" response_disarm = "pushes"
response_harm = "hits the" response_harm = "hits"
speed = -1 speed = -1
maxHealth = 250 maxHealth = 250
health = 250 health = 250
@@ -40,7 +40,7 @@
/mob/living/simple_animal/hostile/tree/FindTarget() /mob/living/simple_animal/hostile/tree/FindTarget()
. = ..() . = ..()
if(.) if(.)
emote("growls at [.]") audible_emote("growls at [.]")
/mob/living/simple_animal/hostile/tree/AttackingTarget() /mob/living/simple_animal/hostile/tree/AttackingTarget()
. =..() . =..()

View File

@@ -14,9 +14,9 @@
turns_per_move = 5 turns_per_move = 5
see_in_dark = 6 see_in_dark = 6
meat_type = /obj/item/weapon/reagent_containers/food/snacks/meat/monkey meat_type = /obj/item/weapon/reagent_containers/food/snacks/meat/monkey
response_help = "pets the" response_help = "pets"
response_disarm = "gently pushes aside the" response_disarm = "gently pushes aside"
response_harm = "kicks the" response_harm = "kicks"
minbodytemp = 250 minbodytemp = 250
min_oxy = 16 //Require atleast 16kPA oxygen min_oxy = 16 //Require atleast 16kPA oxygen
minbodytemp = 223 //Below -50 Degrees Celcius minbodytemp = 223 //Below -50 Degrees Celcius

View File

@@ -44,9 +44,9 @@
turns_per_move = 5 turns_per_move = 5
meat_type = /obj/item/weapon/reagent_containers/food/snacks/cracker/ meat_type = /obj/item/weapon/reagent_containers/food/snacks/cracker/
response_help = "pets the" response_help = "pets"
response_disarm = "gently moves aside the" response_disarm = "gently moves aside"
response_harm = "swats the" response_harm = "swats"
stop_automated_movement = 1 stop_automated_movement = 1
universal_speak = 1 universal_speak = 1
@@ -342,7 +342,7 @@
//Search for item to steal //Search for item to steal
parrot_interest = search_for_item() parrot_interest = search_for_item()
if(parrot_interest) if(parrot_interest)
emote("looks in [parrot_interest]'s direction and takes flight") visible_emote("looks in [parrot_interest]'s direction and takes flight")
parrot_state = PARROT_SWOOP | PARROT_STEAL parrot_state = PARROT_SWOOP | PARROT_STEAL
icon_state = "parrot_fly" icon_state = "parrot_fly"
return return
@@ -364,7 +364,7 @@
if(AM) if(AM)
if(istype(AM, /obj/item) || isliving(AM)) //If stealable item if(istype(AM, /obj/item) || isliving(AM)) //If stealable item
parrot_interest = AM parrot_interest = AM
emote("turns and flies towards [parrot_interest]") visible_emote("turns and flies towards [parrot_interest]")
parrot_state = PARROT_SWOOP | PARROT_STEAL parrot_state = PARROT_SWOOP | PARROT_STEAL
return return
else //Else it's a perch else //Else it's a perch
@@ -478,11 +478,11 @@
var/datum/organ/external/affecting = H.get_organ(ran_zone(pick(parrot_dam_zone))) var/datum/organ/external/affecting = H.get_organ(ran_zone(pick(parrot_dam_zone)))
H.apply_damage(damage, BRUTE, affecting, H.run_armor_check(affecting, "melee"), sharp=1) H.apply_damage(damage, BRUTE, affecting, H.run_armor_check(affecting, "melee"), sharp=1)
emote(pick("pecks [H]'s [affecting]", "cuts [H]'s [affecting] with its talons")) visible_emote(pick("pecks [H]'s [affecting].", "cuts [H]'s [affecting] with its talons."))
else else
L.adjustBruteLoss(damage) L.adjustBruteLoss(damage)
emote(pick("pecks at [L]", "claws [L]")) visible_emote(pick("pecks at [L].", "claws [L]."))
return return
//Otherwise, fly towards the mob! //Otherwise, fly towards the mob!

View File

@@ -13,7 +13,7 @@
emote_hear = list("wails","screeches") emote_hear = list("wails","screeches")
response_help = "puts their hand through" response_help = "puts their hand through"
response_disarm = "flails at" response_disarm = "flails at"
response_harm = "punches the" response_harm = "punches"
melee_damage_lower = 5 melee_damage_lower = 5
melee_damage_upper = 15 melee_damage_upper = 15
attacktext = "drained the life from" attacktext = "drained the life from"

View File

@@ -114,23 +114,23 @@
else else
randomValue -= speak.len randomValue -= speak.len
if(emote_see && randomValue <= emote_see.len) if(emote_see && randomValue <= emote_see.len)
emote(pick(emote_see),1) visible_emote("[pick(emote_see)].")
else else
emote(pick(emote_hear),2) audible_emote("[pick(emote_hear)].")
else else
say(pick(speak)) say(pick(speak))
else else
if(!(emote_hear && emote_hear.len) && (emote_see && emote_see.len)) if(!(emote_hear && emote_hear.len) && (emote_see && emote_see.len))
emote(pick(emote_see),1) visible_emote("[pick(emote_see)].")
if((emote_hear && emote_hear.len) && !(emote_see && emote_see.len)) if((emote_hear && emote_hear.len) && !(emote_see && emote_see.len))
emote(pick(emote_hear),2) audible_emote("[pick(emote_hear)].")
if((emote_hear && emote_hear.len) && (emote_see && emote_see.len)) if((emote_hear && emote_hear.len) && (emote_see && emote_see.len))
var/length = emote_hear.len + emote_see.len var/length = emote_hear.len + emote_see.len
var/pick = rand(1,length) var/pick = rand(1,length)
if(pick <= emote_see.len) if(pick <= emote_see.len)
emote(pick(emote_see),1) visible_emote("[pick(emote_see)].")
else else
emote(pick(emote_hear),2) audible_emote("[pick(emote_hear)].")
//Atmos //Atmos
@@ -207,9 +207,14 @@
/mob/living/simple_animal/emote(var/act, var/type, var/desc) /mob/living/simple_animal/emote(var/act, var/type, var/desc)
if(act) if(act)
if(act == "scream") act = "whimper" //ugly hack to stop animals screaming when crushed :P
..(act, type, desc) ..(act, type, desc)
/mob/living/simple_animal/proc/visible_emote(var/act_desc)
custom_emote(1, act_desc)
/mob/living/simple_animal/proc/audible_emote(var/act_desc)
custom_emote(2, act_desc)
/mob/living/simple_animal/bullet_act(var/obj/item/projectile/Proj) /mob/living/simple_animal/bullet_act(var/obj/item/projectile/Proj)
if(!Proj || Proj.nodamage) if(!Proj || Proj.nodamage)
return return
@@ -224,9 +229,11 @@
if("help") if("help")
if (health > 0) if (health > 0)
for(var/mob/O in viewers(src, null)) M.visible_message("\blue [M] [response_help] \the [src]")
if ((O.client && !( O.blinded )))
O.show_message("\blue [M] [response_help] [src]") if("disarm")
M.visible_message("\blue [M] [response_disarm] \the [src]")
//TODO: Push the mob away or something
if("grab") if("grab")
if (M == src) if (M == src)
@@ -242,15 +249,11 @@
G.affecting = src G.affecting = src
LAssailant = M LAssailant = M
for(var/mob/O in viewers(src, null)) M.visible_message("\red [M] has grabbed [src] passively!")
if ((O.client && !( O.blinded )))
O.show_message(text("\red [] has grabbed [] passively!", M, src), 1)
if("hurt", "disarm") if("hurt")
adjustBruteLoss(harm_intent_damage) adjustBruteLoss(harm_intent_damage)
for(var/mob/O in viewers(src, null)) M.visible_message("\red [M] [response_harm] \the [src]")
if ((O.client && !( O.blinded )))
O.show_message("\red [M] [response_harm] [src]")
return return

View File

@@ -213,7 +213,7 @@
var/universal_speak = 0 // Set to 1 to enable the mob to speak to everyone -- TLE var/universal_speak = 0 // Set to 1 to enable the mob to speak to everyone -- TLE
var/universal_understand = 0 // Set to 1 to enable the mob to understand everyone, not necessarily speak var/universal_understand = 0 // Set to 1 to enable the mob to understand everyone, not necessarily speak
var/can_stand = 2 //Whether this mob have ability to stand var/stance_damage = 0 //Whether this mob's ability to stand has been affected
var/immune_to_ssd = 0 var/immune_to_ssd = 0

View File

@@ -104,16 +104,20 @@
W.germ_level += 1 W.germ_level += 1
/mob/living/carbon/human/proc/handle_stance() /mob/living/carbon/human/proc/handle_stance()
can_stand = 2 if (lying || resting)
return // don't need to process any of this if they aren't standing anyways
stance_damage = 0
for (var/organ in list("l_leg","l_foot","r_leg","r_foot")) for (var/organ in list("l_leg","l_foot","r_leg","r_foot"))
var/datum/organ/external/E = organs_by_name[organ] var/datum/organ/external/E = organs_by_name[organ]
if ((E.status & ORGAN_DESTROYED) || E.is_malfunctioning() || (E.is_broken() && !(E.status & ORGAN_SPLINTED)) || !E.is_usable()) if (E.status & ORGAN_DESTROYED)
can_stand-- // let it fail even if just foot&leg stance_damage += 2 // let it fail even if just foot&leg
else if (E.is_malfunctioning() || (E.is_broken() && !(E.status & ORGAN_SPLINTED)) || !E.is_usable())
stance_damage += 1
// standing is poor // standing is poor
if(can_stand <= 0) if(stance_damage >= 4 || (stance_damage >= 2 && prob(5)))
Weaken(10) Weaken(5)
if (!(lying || resting)) if(species && !(species.flags & NO_PAIN))
if(species && !(species.flags & NO_PAIN)) emote("scream")
emote("scream") emote("collapse")
emote("collapse")

View File

@@ -98,7 +98,8 @@
brute -= brute / 2 brute -= brute / 2
if(status & ORGAN_BROKEN && prob(40) && brute) if(status & ORGAN_BROKEN && prob(40) && brute)
owner.emote("scream") //getting hit on broken hand hurts if (!(owner.species && (owner.species.flags & NO_PAIN)))
owner.emote("scream") //getting hit on broken hand hurts
if(used_weapon) if(used_weapon)
add_autopsy_data("[used_weapon]", brute + burn) add_autopsy_data("[used_weapon]", brute + burn)
@@ -648,7 +649,7 @@ Note that amputating the affected organ does in fact remove the infection from t
if(status & ORGAN_ROBOT && !no_explode && sabotaged) if(status & ORGAN_ROBOT && !no_explode && sabotaged)
owner.visible_message("\red \The [owner]'s [display_name] explodes violently!",\ owner.visible_message("\red \The [owner]'s [display_name] explodes violently!",\
"\red <b>Your [display_name] explodes!</b>",\ "\red <b>Your [display_name] explodes!</b>",\
"You hear an explosion followed by a scream!") "You hear an explosion!")
explosion(get_turf(owner),-1,-1,2,3) explosion(get_turf(owner),-1,-1,2,3)
var/datum/effect/effect/system/spark_spread/spark_system = new /datum/effect/effect/system/spark_spread() var/datum/effect/effect/system/spark_spread/spark_system = new /datum/effect/effect/system/spark_spread()
spark_system.set_up(5, 0, owner) spark_system.set_up(5, 0, owner)

View File

@@ -50,7 +50,7 @@ var/list/solars_list = list()
S.glass_type = /obj/item/stack/sheet/glass S.glass_type = /obj/item/stack/sheet/glass
S.anchored = 1 S.anchored = 1
S.loc = src S.loc = src
if(S.glass_type == /obj/item/stack/sheet/rglass) //if the panel is in reinforced glass if(S.glass_type == /obj/item/stack/sheet/glass/reinforced) //if the panel is in reinforced glass
health *= 2 //this need to be placed here, because panels already on the map don't have an assembly linked to health *= 2 //this need to be placed here, because panels already on the map don't have an assembly linked to
update_icon() update_icon()
@@ -248,7 +248,7 @@ var/list/solars_list = list()
playsound(src.loc, 'sound/items/Ratchet.ogg', 75, 1) playsound(src.loc, 'sound/items/Ratchet.ogg', 75, 1)
return 1 return 1
if(istype(W, /obj/item/stack/sheet/glass) || istype(W, /obj/item/stack/sheet/rglass)) if(istype(W, /obj/item/stack/sheet/glass))
var/obj/item/stack/sheet/S = W var/obj/item/stack/sheet/S = W
if(S.use(2)) if(S.use(2))
glass_type = W.type glass_type = W.type
@@ -557,4 +557,4 @@ var/list/solars_list = list()
var/href = "<A href='?src=\ref[S];rate control=1;[V]" var/href = "<A href='?src=\ref[S];rate control=1;[V]"
var/rate = "[href]=-[Max]'>-</A>[href]=-[Min]'>-</A> [(C?C : 0)] [href]=[Min]'>+</A>[href]=[Max]'>+</A>" var/rate = "[href]=-[Max]'>-</A>[href]=-[Min]'>-</A> [(C?C : 0)] [href]=[Min]'>+</A>[href]=[Max]'>+</A>"
if(Limit) return "[href]=-[Limit]'>-</A>"+rate+"[href]=[Limit]'>+</A>" if(Limit) return "[href]=-[Limit]'>-</A>"+rate+"[href]=[Limit]'>+</A>"
return rate return rate

View File

@@ -1984,7 +1984,8 @@ datum
if(affecting.take_damage(4*toxpwr, 2*toxpwr)) if(affecting.take_damage(4*toxpwr, 2*toxpwr))
H.UpdateDamageIcon() H.UpdateDamageIcon()
if(prob(meltprob)) //Applies disfigurement if(prob(meltprob)) //Applies disfigurement
H.emote("scream") if (!(H.species && (H.species.flags & NO_PAIN)))
H.emote("scream")
H.status_flags |= DISFIGURED H.status_flags |= DISFIGURED
else else
M.take_organ_damage(min(6*toxpwr, volume * toxpwr)) // uses min() and volume to make sure they aren't being sprayed in trace amounts (1 unit != insta rape) -- Doohl M.take_organ_damage(min(6*toxpwr, volume * toxpwr)) // uses min() and volume to make sure they aren't being sprayed in trace amounts (1 unit != insta rape) -- Doohl
@@ -2146,7 +2147,7 @@ datum
if ( eyes_covered && mouth_covered ) if ( eyes_covered && mouth_covered )
victim << "\red Your [safe_thing] protects you from the pepperspray!" victim << "\red Your [safe_thing] protects you from the pepperspray!"
return return
else if ( mouth_covered ) // Reduced effects if partially protected else if ( eyes_covered ) // Reduced effects if partially protected
victim << "\red Your [safe_thing] protect you from most of the pepperspray!" victim << "\red Your [safe_thing] protect you from most of the pepperspray!"
victim.eye_blurry = max(M.eye_blurry, 15) victim.eye_blurry = max(M.eye_blurry, 15)
victim.eye_blind = max(M.eye_blind, 5) victim.eye_blind = max(M.eye_blind, 5)
@@ -2155,13 +2156,15 @@ datum
//victim.Paralyse(10) //victim.Paralyse(10)
//victim.drop_item() //victim.drop_item()
return return
else if ( eyes_covered ) // Eye cover is better than mouth cover else if ( mouth_covered ) // Mouth cover is better than eye cover
victim << "\red Your [safe_thing] protects your eyes from the pepperspray!" victim << "\red Your [safe_thing] protects your face from the pepperspray!"
victim.emote("scream") if (!(victim.species && (victim.species.flags & NO_PAIN)))
victim.emote("scream")
victim.eye_blurry = max(M.eye_blurry, 5) victim.eye_blurry = max(M.eye_blurry, 5)
return return
else // Oh dear :D else // Oh dear :D
victim.emote("scream") if (!(victim.species && (victim.species.flags & NO_PAIN)))
victim.emote("scream")
victim << "\red You're sprayed directly in the eyes with pepperspray!" victim << "\red You're sprayed directly in the eyes with pepperspray!"
victim.eye_blurry = max(M.eye_blurry, 25) victim.eye_blurry = max(M.eye_blurry, 25)
victim.eye_blind = max(M.eye_blind, 10) victim.eye_blind = max(M.eye_blind, 10)

View File

@@ -194,8 +194,8 @@
del(src) del(src)
return return
/obj/item/weapon/reagent_containers/food/snacks/proc/is_sliceable() /obj/item/weapon/reagent_containers/food/snacks/proc/is_sliceable()
return (slices_num <= 0 || !slices_num || !slice_path) return (slices_num && slice_path && slices_num > 0)
/obj/item/weapon/reagent_containers/food/snacks/Del() /obj/item/weapon/reagent_containers/food/snacks/Del()
if(contents) if(contents)

View File

@@ -235,7 +235,7 @@
possible_spawns += /obj/item/stack/sheet/metal possible_spawns += /obj/item/stack/sheet/metal
possible_spawns += /obj/item/stack/sheet/plasteel possible_spawns += /obj/item/stack/sheet/plasteel
possible_spawns += /obj/item/stack/sheet/glass possible_spawns += /obj/item/stack/sheet/glass
possible_spawns += /obj/item/stack/sheet/rglass possible_spawns += /obj/item/stack/sheet/glass/reinforced
possible_spawns += /obj/item/stack/sheet/mineral/phoron possible_spawns += /obj/item/stack/sheet/mineral/phoron
possible_spawns += /obj/item/stack/sheet/mineral/gold possible_spawns += /obj/item/stack/sheet/mineral/gold
possible_spawns += /obj/item/stack/sheet/mineral/silver possible_spawns += /obj/item/stack/sheet/mineral/silver

View File

@@ -633,10 +633,9 @@ var/list/liftable_structures = list(\
#define R_SPAWN 4096 #define R_SPAWN 4096
#define R_MOD 8192 #define R_MOD 8192
#define R_MENTOR 16384 #define R_MENTOR 16384
#define R_HOST 32768
#define R_MAXPERMISSION 16384 //This holds the maximum value for a permission. It is used in iteration, so keep it updated. #define R_MAXPERMISSION 32768 //This holds the maximum value for a permission. It is used in iteration, so keep it updated.
#define R_HOST 65535
//Preference toggles //Preference toggles
#define SOUND_ADMINHELP 1 #define SOUND_ADMINHELP 1

View File

@@ -20,6 +20,7 @@ em {font-style: normal; font-weight: bold;}
.adminobserver {color: #996600; font-weight: bold;} .adminobserver {color: #996600; font-weight: bold;}
.admin {color: #386aff; font-weight: bold;} .admin {color: #386aff; font-weight: bold;}
.adminsay {color: #9611D4; font-weight: bold;} .adminsay {color: #9611D4; font-weight: bold;}
.headminsay {color: #5A0A7F; font-weight: bold;}
.name { font-weight: bold;} .name { font-weight: bold;}

View File

@@ -48,7 +48,7 @@
M.amount = 50 M.amount = 50
src.modules += M src.modules += M
var/obj/item/stack/sheet/rglass/G = new /obj/item/stack/sheet/rglass(src) var/obj/item/stack/sheet/glass/reinforced/G = new (src)
G.amount = 50 G.amount = 50
src.modules += G src.modules += G

View File

@@ -170,7 +170,7 @@ proc/check_craftlathe_recipe(var/list/param_recipe)
CRAFT_ITEMS += new/datum/craftlathe_item("METAL","Metal",1,1,list("","","","","","","","",""),/obj/item/stack/sheet/metal) CRAFT_ITEMS += new/datum/craftlathe_item("METAL","Metal",1,1,list("","","","","","","","",""),/obj/item/stack/sheet/metal)
CRAFT_ITEMS += new/datum/craftlathe_item("R METAL","Reinforced Metal",1,1,list("","","","","","","","",""),/obj/item/stack/sheet/r_metal) CRAFT_ITEMS += new/datum/craftlathe_item("R METAL","Reinforced Metal",1,1,list("","","","","","","","",""),/obj/item/stack/sheet/r_metal)
CRAFT_ITEMS += new/datum/craftlathe_item("GLASS","Glass",1,1,list("","","","","","","","",""),/obj/item/stack/sheet/glass) CRAFT_ITEMS += new/datum/craftlathe_item("GLASS","Glass",1,1,list("","","","","","","","",""),/obj/item/stack/sheet/glass)
CRAFT_ITEMS += new/datum/craftlathe_item("R GLASS","Reinforced Glass",1,1,list("","","","","","","","",""),/obj/item/stack/sheet/rglass) CRAFT_ITEMS += new/datum/craftlathe_item("R GLASS","Reinforced Glass",1,1,list("","","","","","","","",""),/obj/item/stack/sheet/glass/reinforced)
CRAFT_ITEMS += new/datum/craftlathe_item("GOLD","Gold",1,1,list("","","","","","","","",""),/obj/item/stack/sheet/mineral/gold) CRAFT_ITEMS += new/datum/craftlathe_item("GOLD","Gold",1,1,list("","","","","","","","",""),/obj/item/stack/sheet/mineral/gold)
CRAFT_ITEMS += new/datum/craftlathe_item("SILVER","Silver",1,1,list("","","","","","","","",""),/obj/item/stack/sheet/mineral/silver) CRAFT_ITEMS += new/datum/craftlathe_item("SILVER","Silver",1,1,list("","","","","","","","",""),/obj/item/stack/sheet/mineral/silver)
CRAFT_ITEMS += new/datum/craftlathe_item("DIAMOND","Diamond",1,1,list("","","","","","","","",""),/obj/item/stack/sheet/mineral/diamond) CRAFT_ITEMS += new/datum/craftlathe_item("DIAMOND","Diamond",1,1,list("","","","","","","","",""),/obj/item/stack/sheet/mineral/diamond)
@@ -230,4 +230,4 @@ proc/check_craftlathe_recipe(var/list/param_recipe)
return return

Binary file not shown.

Before

Width:  |  Height:  |  Size: 183 KiB

After

Width:  |  Height:  |  Size: 188 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 119 KiB

After

Width:  |  Height:  |  Size: 123 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 150 KiB

After

Width:  |  Height:  |  Size: 151 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 152 KiB

After

Width:  |  Height:  |  Size: 152 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 249 KiB

After

Width:  |  Height:  |  Size: 253 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 64 KiB

After

Width:  |  Height:  |  Size: 65 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 90 KiB

After

Width:  |  Height:  |  Size: 91 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 58 KiB

After

Width:  |  Height:  |  Size: 58 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 120 KiB

After

Width:  |  Height:  |  Size: 121 KiB

View File

@@ -2071,7 +2071,7 @@
"aNQ" = (/obj/machinery/power/apc{dir = 2; name = "south bump"; pixel_y = -24},/obj/structure/cable/green{d2 = 4; icon_state = "0-4"},/obj/structure/cable/green{d2 = 8; icon_state = "0-8"},/turf/simulated/floor{dir = 0; icon_state = "blue"},/area/bridge) "aNQ" = (/obj/machinery/power/apc{dir = 2; name = "south bump"; pixel_y = -24},/obj/structure/cable/green{d2 = 4; icon_state = "0-4"},/obj/structure/cable/green{d2 = 8; icon_state = "0-8"},/turf/simulated/floor{dir = 0; icon_state = "blue"},/area/bridge)
"aNR" = (/obj/machinery/light_switch{pixel_x = 27},/turf/simulated/floor{icon_state = "green"; dir = 4},/area/hydroponics) "aNR" = (/obj/machinery/light_switch{pixel_x = 27},/turf/simulated/floor{icon_state = "green"; dir = 4},/area/hydroponics)
"aNS" = (/obj/machinery/light_switch{pixel_y = -25},/obj/structure/cable/green{d1 = 4; d2 = 8; icon_state = "4-8"},/turf/simulated/floor{dir = 0; icon_state = "blue"},/area/bridge) "aNS" = (/obj/machinery/light_switch{pixel_y = -25},/obj/structure/cable/green{d1 = 4; d2 = 8; icon_state = "4-8"},/turf/simulated/floor{dir = 0; icon_state = "blue"},/area/bridge)
"aNT" = (/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/machinery/camera{c_tag = "EVA East"; dir = 8},/turf/simulated/floor{dir = 4; icon_state = "warning"},/area/ai_monitored/storage/eva) "aNT" = (/obj/machinery/light{icon_state = "tube1"; dir = 4},/obj/structure/table/reinforced,/obj/item/stack/sheet/glass/reinforced{amount = 50},/obj/item/stack/rods{amount = 50},/obj/machinery/camera{c_tag = "EVA East"; dir = 8},/turf/simulated/floor{dir = 4; icon_state = "warning"},/area/ai_monitored/storage/eva)
"aNU" = (/obj/structure/stool/bed,/obj/item/weapon/bedsheet/mime,/obj/machinery/light/small,/turf/simulated/floor/wood,/area/crew_quarters/sleep/bedrooms/two) "aNU" = (/obj/structure/stool/bed,/obj/item/weapon/bedsheet/mime,/obj/machinery/light/small,/turf/simulated/floor/wood,/area/crew_quarters/sleep/bedrooms/two)
"aNV" = (/obj/machinery/bookbinder{pixel_y = 0},/turf/simulated/floor/wood,/area/library) "aNV" = (/obj/machinery/bookbinder{pixel_y = 0},/turf/simulated/floor/wood,/area/library)
"aNW" = (/obj/structure/disposalpipe/segment,/turf/simulated/floor/wood,/area/library) "aNW" = (/obj/structure/disposalpipe/segment,/turf/simulated/floor/wood,/area/library)
@@ -3213,10 +3213,10 @@
"bjO" = (/obj/machinery/computer/card,/obj/item/weapon/card/id/captains_spare,/turf/simulated/floor/wood,/area/crew_quarters/captain) "bjO" = (/obj/machinery/computer/card,/obj/item/weapon/card/id/captains_spare,/turf/simulated/floor/wood,/area/crew_quarters/captain)
"bjP" = (/obj/structure/table/woodentable,/obj/item/weapon/book/manual/security_space_law,/turf/simulated/floor/wood,/area/crew_quarters/captain) "bjP" = (/obj/structure/table/woodentable,/obj/item/weapon/book/manual/security_space_law,/turf/simulated/floor/wood,/area/crew_quarters/captain)
"bjQ" = (/obj/structure/cable/green{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers,/turf/simulated/floor{icon_state = "white"},/area/rnd/research) "bjQ" = (/obj/structure/cable/green{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers,/turf/simulated/floor{icon_state = "white"},/area/rnd/research)
"bjR" = (/obj/machinery/meter,/obj/machinery/door_control{id = "mixvent"; name = "Mixing Room Vent Control"; pixel_x = -25; pixel_y = 5; req_access_txt = "7"},/obj/machinery/ignition_switch{id = "mixingsparker"; pixel_x = -25; pixel_y = -5},/obj/machinery/atmospherics/pipe/simple/visible{dir = 4},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 9},/turf/simulated/floor{dir = 4; icon_state = "warnwhitecorner"},/area/rnd/mixing) "bjR" = (/obj/item/stack/sheet/glass/reinforced,/obj/effect/decal/cleanable/cobweb,/obj/effect/decal/cleanable/dirt,/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 6},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 6},/turf/simulated/floor/plating,/area/maintenance/locker)
"bjS" = (/turf/simulated/floor/airless,/area/rnd/test_area) "bjS" = (/turf/simulated/floor/airless,/area/rnd/test_area)
"bjT" = (/obj/structure/sign/fire{pixel_y = -32},/obj/machinery/atmospherics/binary/pump/on{dir = 8},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 5},/turf/simulated/floor/engine,/area/rnd/mixing) "bjT" = (/obj/structure/cable/green{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/turf/simulated/floor{icon_state = "white"},/area/rnd/mixing)
"bjU" = (/obj/machinery/atmospherics/pipe/simple/hidden{tag = "icon-intact (EAST)"; icon_state = "intact"; dir = 4},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/turf/simulated/wall/r_wall,/area/rnd/mixing) "bjU" = (/obj/effect/landmark/start{name = "Scientist"},/obj/structure/cable/green{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/turf/simulated/floor{icon_state = "white"},/area/rnd/mixing)
"bjV" = (/obj/machinery/door/airlock{name = "Unisex Restrooms"; req_access_txt = "0"},/obj/structure/cable/green{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/obj/machinery/atmospherics/pipe/simple/hidden/supply,/obj/machinery/door/firedoor/border_only,/turf/simulated/floor{icon_state = "freezerfloor"},/area/crew_quarters/locker/locker_toilet) "bjV" = (/obj/machinery/door/airlock{name = "Unisex Restrooms"; req_access_txt = "0"},/obj/structure/cable/green{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/obj/machinery/atmospherics/pipe/simple/hidden/supply,/obj/machinery/door/firedoor/border_only,/turf/simulated/floor{icon_state = "freezerfloor"},/area/crew_quarters/locker/locker_toilet)
"bjW" = (/obj/machinery/lapvend,/turf/simulated/floor,/area/storage/primary) "bjW" = (/obj/machinery/lapvend,/turf/simulated/floor,/area/storage/primary)
"bjX" = (/turf/simulated/floor/airless{dir = 4; icon_state = "warning"},/area/rnd/test_area) "bjX" = (/turf/simulated/floor/airless{dir = 4; icon_state = "warning"},/area/rnd/test_area)
@@ -3338,10 +3338,10 @@
"bmj" = (/obj/machinery/door/firedoor/border_only{dir = 8; name = "Firelock West"},/obj/machinery/door/airlock/research{name = "Toxins Storage"; req_access_txt = "8"},/obj/structure/cable/green{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/obj/machinery/atmospherics/pipe/simple/hidden/supply,/turf/simulated/floor,/area/rnd/research) "bmj" = (/obj/machinery/door/firedoor/border_only{dir = 8; name = "Firelock West"},/obj/machinery/door/airlock/research{name = "Toxins Storage"; req_access_txt = "8"},/obj/structure/cable/green{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/obj/machinery/atmospherics/pipe/simple/hidden/supply,/turf/simulated/floor,/area/rnd/research)
"bmk" = (/obj/machinery/atmospherics/pipe/tank/air{dir = 8},/turf/simulated/floor/plating{icon_state = "warnplate"; dir = 1},/area/maintenance/research_starboard) "bmk" = (/obj/machinery/atmospherics/pipe/tank/air{dir = 8},/turf/simulated/floor/plating{icon_state = "warnplate"; dir = 1},/area/maintenance/research_starboard)
"bml" = (/obj/structure/cable/green{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/simulated/floor{icon_state = "white"},/area/rnd/research) "bml" = (/obj/structure/cable/green{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/simulated/floor{icon_state = "white"},/area/rnd/research)
"bmm" = (/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"},/obj/machinery/atmospherics/pipe/simple/visible{dir = 4},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 9; pixel_y = 0},/turf/simulated/floor{dir = 1; icon_state = "warnwhitecorner"},/area/rnd/mixing) "bmm" = (/obj/structure/cable/green{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/machinery/atmospherics/pipe/manifold/hidden/supply{dir = 1},/turf/simulated/floor{icon_state = "white"},/area/rnd/mixing)
"bmn" = (/obj/structure/closet/emcloset,/turf/simulated/floor{dir = 9; icon_state = "warning"},/area/hallway/secondary/entry/aft) "bmn" = (/obj/structure/closet/emcloset,/turf/simulated/floor{dir = 9; icon_state = "warning"},/area/hallway/secondary/entry/aft)
"bmo" = (/turf/simulated/wall,/area/medical/patient_a) "bmo" = (/turf/simulated/wall,/area/medical/patient_a)
"bmp" = (/obj/machinery/atmospherics/pipe/simple/hidden{tag = "icon-intact (EAST)"; icon_state = "intact"; dir = 4},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/turf/simulated/wall/r_wall,/area/rnd/mixing) "bmp" = (/obj/structure/cable/green{d1 = 2; d2 = 8; icon_state = "2-8"},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 6},/turf/simulated/floor{icon_state = "white"},/area/rnd/mixing)
"bmq" = (/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,/turf/simulated/floor/plating,/area/hallway/secondary/entry/aft) "bmq" = (/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,/turf/simulated/floor/plating,/area/hallway/secondary/entry/aft)
"bmr" = (/obj/machinery/space_heater,/turf/simulated/floor/plating,/area/storage/emergency) "bmr" = (/obj/machinery/space_heater,/turf/simulated/floor/plating,/area/storage/emergency)
"bms" = (/obj/structure/reagent_dispensers/watertank,/turf/simulated/floor/plating,/area/storage/emergency) "bms" = (/obj/structure/reagent_dispensers/watertank,/turf/simulated/floor/plating,/area/storage/emergency)
@@ -3414,7 +3414,7 @@
"bnH" = (/obj/structure/disposalpipe/segment,/obj/machinery/door/firedoor/border_only,/turf/simulated/floor{dir = 2; icon_state = "yellowcorner"},/area/hallway/primary/aft) "bnH" = (/obj/structure/disposalpipe/segment,/obj/machinery/door/firedoor/border_only,/turf/simulated/floor{dir = 2; icon_state = "yellowcorner"},/area/hallway/primary/aft)
"bnI" = (/turf/simulated/wall/r_wall,/area/maintenance/cargo) "bnI" = (/turf/simulated/wall/r_wall,/area/maintenance/cargo)
"bnJ" = (/obj/machinery/status_display{layer = 4; pixel_x = 0; pixel_y = 32},/obj/machinery/atmospherics/unary/vent_scrubber/on,/turf/simulated/floor{icon_state = "white"},/area/rnd/research) "bnJ" = (/obj/machinery/status_display{layer = 4; pixel_x = 0; pixel_y = 32},/obj/machinery/atmospherics/unary/vent_scrubber/on,/turf/simulated/floor{icon_state = "white"},/area/rnd/research)
"bnK" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/turf/simulated/floor{dir = 8; icon_state = "warnwhite"},/area/rnd/mixing) "bnK" = (/obj/item/device/transfer_valve{pixel_x = -5},/obj/item/device/transfer_valve{pixel_x = -5},/obj/item/device/transfer_valve{pixel_x = 0},/obj/item/device/transfer_valve{pixel_x = 0},/obj/item/device/transfer_valve{pixel_x = 5},/obj/item/device/transfer_valve{pixel_x = 5},/obj/structure/table,/obj/machinery/atmospherics/pipe/simple/hidden/universal,/turf/simulated/floor{dir = 1; icon_state = "whitepurple"},/area/rnd/mixing)
"bnL" = (/obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers{dir = 1},/obj/machinery/atmospherics/pipe/manifold/hidden/supply{dir = 1},/turf/simulated/floor{dir = 1; icon_state = "whiteredcorner"},/area/medical/patient_wing) "bnL" = (/obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers{dir = 1},/obj/machinery/atmospherics/pipe/manifold/hidden/supply{dir = 1},/turf/simulated/floor{dir = 1; icon_state = "whiteredcorner"},/area/medical/patient_wing)
"bnM" = (/obj/structure/cable/green{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/atmospherics/pipe/manifold/hidden/supply,/obj/machinery/atmospherics/pipe/manifold4w/hidden/scrubbers,/turf/simulated/floor{dir = 1; icon_state = "whitered_b"; tag = "icon-whitered_b (WEST)"},/area/medical/patient_wing) "bnM" = (/obj/structure/cable/green{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/atmospherics/pipe/manifold/hidden/supply,/obj/machinery/atmospherics/pipe/manifold4w/hidden/scrubbers,/turf/simulated/floor{dir = 1; icon_state = "whitered_b"; tag = "icon-whitered_b (WEST)"},/area/medical/patient_wing)
"bnN" = (/obj/machinery/camera{c_tag = "Medbay Patient Hallway - Port"; dir = 4; network = list("SS13")},/turf/simulated/floor{icon_state = "white"},/area/medical/patient_wing) "bnN" = (/obj/machinery/camera{c_tag = "Medbay Patient Hallway - Port"; dir = 4; network = list("SS13")},/turf/simulated/floor{icon_state = "white"},/area/medical/patient_wing)
@@ -3678,7 +3678,7 @@
"bsL" = (/obj/machinery/light{dir = 4},/obj/machinery/firealarm{dir = 4; pixel_x = 24},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/turf/simulated/floor,/area/hallway/secondary/entry/aft) "bsL" = (/obj/machinery/light{dir = 4},/obj/machinery/firealarm{dir = 4; pixel_x = 24},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/turf/simulated/floor,/area/hallway/secondary/entry/aft)
"bsM" = (/obj/item/weapon/screwdriver,/obj/effect/decal/cleanable/dirt,/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/turf/simulated/floor/plating,/area/maintenance/locker) "bsM" = (/obj/item/weapon/screwdriver,/obj/effect/decal/cleanable/dirt,/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/turf/simulated/floor/plating,/area/maintenance/locker)
"bsN" = (/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},/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_x = 0},/turf/simulated/floor/plating,/area/maintenance/research_starboard) "bsN" = (/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},/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_x = 0},/turf/simulated/floor/plating,/area/maintenance/research_starboard)
"bsO" = (/obj/item/stack/sheet/rglass,/obj/effect/decal/cleanable/cobweb,/obj/effect/decal/cleanable/dirt,/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 6},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 6},/turf/simulated/floor/plating,/area/maintenance/locker) "bsO" = (/obj/machinery/atmospherics/pipe/simple/hidden/cyan,/turf/simulated/wall/r_wall,/area/rnd/mixing)
"bsP" = (/obj/structure/closet/crate,/obj/item/weapon/coin/silver,/turf/simulated/floor/plating,/area/storage/emergency) "bsP" = (/obj/structure/closet/crate,/obj/item/weapon/coin/silver,/turf/simulated/floor/plating,/area/storage/emergency)
"bsQ" = (/obj/structure/shuttle/engine/propulsion/burst{dir = 4},/turf/space,/area/shuttle/research/station) "bsQ" = (/obj/structure/shuttle/engine/propulsion/burst{dir = 4},/turf/space,/area/shuttle/research/station)
"bsR" = (/obj/structure/window/reinforced{dir = 1},/obj/structure/shuttle/engine/heater{dir = 8},/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced,/turf/simulated/floor/plating/airless,/area/shuttle/research/station) "bsR" = (/obj/structure/window/reinforced{dir = 1},/obj/structure/shuttle/engine/heater{dir = 8},/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced,/turf/simulated/floor/plating/airless,/area/shuttle/research/station)
@@ -3800,7 +3800,7 @@
"bvd" = (/obj/machinery/status_display{density = 0; layer = 4; pixel_x = -32; pixel_y = 0},/obj/machinery/light{icon_state = "tube1"; dir = 8},/turf/simulated/floor,/area/hallway/primary/central_one) "bvd" = (/obj/machinery/status_display{density = 0; layer = 4; pixel_x = -32; pixel_y = 0},/obj/machinery/light{icon_state = "tube1"; dir = 8},/turf/simulated/floor,/area/hallway/primary/central_one)
"bve" = (/mob/living/simple_animal/mouse,/turf/simulated/floor/plating,/area/maintenance/research_starboard) "bve" = (/mob/living/simple_animal/mouse,/turf/simulated/floor/plating,/area/maintenance/research_starboard)
"bvf" = (/obj/machinery/sparker{dir = 2; id = "mixingsparker"; pixel_x = 25},/obj/machinery/atmospherics/unary/vent_pump{dir = 4; external_pressure_bound = 0; external_pressure_bound_default = 0; icon_state = "map_vent_in"; initialize_directions = 1; internal_pressure_bound = 4000; internal_pressure_bound_default = 4000; on = 1; pressure_checks = 2; pressure_checks_default = 2; pump_direction = 0},/turf/simulated/floor/engine/vacuum,/area/rnd/mixing) "bvf" = (/obj/machinery/sparker{dir = 2; id = "mixingsparker"; pixel_x = 25},/obj/machinery/atmospherics/unary/vent_pump{dir = 4; external_pressure_bound = 0; external_pressure_bound_default = 0; icon_state = "map_vent_in"; initialize_directions = 1; internal_pressure_bound = 4000; internal_pressure_bound_default = 4000; on = 1; pressure_checks = 2; pressure_checks_default = 2; pump_direction = 0},/turf/simulated/floor/engine/vacuum,/area/rnd/mixing)
"bvg" = (/obj/effect/decal/cleanable/blood/oil/streak{amount = 0},/turf/simulated/floor/plating,/area/maintenance/research_starboard) "bvg" = (/obj/structure/sign/nosmoking_2{pixel_x = -32},/obj/machinery/camera{c_tag = "Toxins Lab"; dir = 4; network = list("SS13","Research")},/turf/simulated/floor{icon_state = "white"},/area/rnd/mixing)
"bvh" = (/obj/machinery/firealarm{dir = 8; pixel_x = -24},/obj/machinery/atmospherics/pipe/simple/visible,/turf/simulated/floor{icon_state = "floorgrime"},/area/maintenance/incinerator) "bvh" = (/obj/machinery/firealarm{dir = 8; pixel_x = -24},/obj/machinery/atmospherics/pipe/simple/visible,/turf/simulated/floor{icon_state = "floorgrime"},/area/maintenance/incinerator)
"bvi" = (/obj/machinery/atmospherics/pipe/simple/visible,/turf/simulated/floor{icon_state = "floorgrime"},/area/maintenance/incinerator) "bvi" = (/obj/machinery/atmospherics/pipe/simple/visible,/turf/simulated/floor{icon_state = "floorgrime"},/area/maintenance/incinerator)
"bvj" = (/obj/machinery/atmospherics/unary/vent_scrubber/on{dir = 1},/turf/simulated/floor,/area/hallway/secondary/entry/aft) "bvj" = (/obj/machinery/atmospherics/unary/vent_scrubber/on{dir = 1},/turf/simulated/floor,/area/hallway/secondary/entry/aft)
@@ -4174,9 +4174,9 @@
"bCn" = (/obj/machinery/atmospherics/portables_connector{dir = 1},/obj/machinery/portable_atmospherics/canister/oxygen,/turf/simulated/floor{icon_state = "delivery"},/area/medical/sleeper) "bCn" = (/obj/machinery/atmospherics/portables_connector{dir = 1},/obj/machinery/portable_atmospherics/canister/oxygen,/turf/simulated/floor{icon_state = "delivery"},/area/medical/sleeper)
"bCo" = (/obj/item/device/radio/intercom{dir = 4; name = "Station Intercom (General)"; pixel_x = 27},/obj/structure/disposalpipe/segment,/turf/simulated/floor,/area/quartermaster/qm) "bCo" = (/obj/item/device/radio/intercom{dir = 4; name = "Station Intercom (General)"; pixel_x = 27},/obj/structure/disposalpipe/segment,/turf/simulated/floor,/area/quartermaster/qm)
"bCp" = (/obj/structure/table,/obj/item/device/t_scanner,/turf/simulated/floor/plating,/area/maintenance/engineering) "bCp" = (/obj/structure/table,/obj/item/device/t_scanner,/turf/simulated/floor/plating,/area/maintenance/engineering)
"bCq" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/obj/machinery/atmospherics/pipe/simple/hidden/supply,/turf/simulated/floor{icon_state = "white"},/area/rnd/mixing) "bCq" = (/obj/machinery/airlock_sensor{id_tag = "tox_airlock_sensor"; master_tag = "tox_airlock_control"; pixel_y = 24},/obj/machinery/light/small{dir = 1},/obj/machinery/atmospherics/binary/pump/on{dir = 4},/obj/machinery/atmospherics/pipe/simple/hidden/cyan,/turf/simulated/floor/engine,/area/rnd/mixing)
"bCr" = (/obj/machinery/hologram/holopad,/turf/simulated/floor{icon_state = "white"},/area/rnd/mixing) "bCr" = (/obj/machinery/hologram/holopad,/turf/simulated/floor{icon_state = "white"},/area/rnd/mixing)
"bCs" = (/obj/item/device/transfer_valve{pixel_x = -5},/obj/item/device/transfer_valve{pixel_x = -5},/obj/item/device/transfer_valve{pixel_x = 0},/obj/item/device/transfer_valve{pixel_x = 0},/obj/item/device/transfer_valve{pixel_x = 5},/obj/item/device/transfer_valve{pixel_x = 5},/obj/structure/table,/turf/simulated/floor{dir = 1; icon_state = "whitepurple"},/area/rnd/mixing) "bCs" = (/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"},/obj/machinery/atmospherics/pipe/simple/visible{dir = 4},/turf/simulated/floor{dir = 1; icon_state = "warnwhitecorner"},/area/rnd/mixing)
"bCt" = (/turf/simulated/wall,/area/hallway/primary/aft) "bCt" = (/turf/simulated/wall,/area/hallway/primary/aft)
"bCu" = (/obj/item/device/radio/intercom{dir = 4; name = "Station Intercom (General)"; pixel_x = 27},/turf/simulated/floor{dir = 2; icon_state = "redcorner"},/area/hallway/primary/central_three) "bCu" = (/obj/item/device/radio/intercom{dir = 4; name = "Station Intercom (General)"; pixel_x = 27},/turf/simulated/floor{dir = 2; icon_state = "redcorner"},/area/hallway/primary/central_three)
"bCv" = (/obj/structure/dispenser,/turf/simulated/floor{dir = 5; icon_state = "whitepurple"},/area/rnd/mixing) "bCv" = (/obj/structure/dispenser,/turf/simulated/floor{dir = 5; icon_state = "whitepurple"},/area/rnd/mixing)
@@ -4233,7 +4233,7 @@
"bDu" = (/obj/machinery/iv_drip,/obj/machinery/power/apc{dir = 4; name = "east bump"; pixel_x = 24},/obj/structure/cable/green{d2 = 8; icon_state = "0-8"},/turf/simulated/floor{dir = 6; icon_state = "whitered"},/area/medical/patient_b) "bDu" = (/obj/machinery/iv_drip,/obj/machinery/power/apc{dir = 4; name = "east bump"; pixel_x = 24},/obj/structure/cable/green{d2 = 8; icon_state = "0-8"},/turf/simulated/floor{dir = 6; icon_state = "whitered"},/area/medical/patient_b)
"bDv" = (/obj/structure/cable/green{d1 = 2; d2 = 4; icon_state = "2-4"},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 10},/turf/simulated/floor{dir = 3; icon_state = "whitered"},/area/medical/patient_b) "bDv" = (/obj/structure/cable/green{d1 = 2; d2 = 4; icon_state = "2-4"},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 10},/turf/simulated/floor{dir = 3; icon_state = "whitered"},/area/medical/patient_b)
"bDw" = (/obj/machinery/dna_scannernew,/obj/machinery/light_switch{dir = 2; name = "light switch "; pixel_x = 0; pixel_y = -22},/turf/simulated/floor{dir = 2; icon_state = "whitepurple"},/area/medical/genetics_cloning) "bDw" = (/obj/machinery/dna_scannernew,/obj/machinery/light_switch{dir = 2; name = "light switch "; pixel_x = 0; pixel_y = -22},/turf/simulated/floor{dir = 2; icon_state = "whitepurple"},/area/medical/genetics_cloning)
"bDx" = (/obj/structure/sign/nosmoking_2{pixel_x = -32},/obj/machinery/camera{c_tag = "Toxins Lab"; dir = 4; network = list("SS13","Research")},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/obj/machinery/atmospherics/pipe/simple/hidden/supply,/turf/simulated/floor{icon_state = "white"},/area/rnd/mixing) "bDx" = (/turf/simulated/floor{dir = 8; icon_state = "warnwhite"},/area/rnd/mixing)
"bDy" = (/obj/machinery/firealarm{dir = 8; pixel_x = -24},/turf/simulated/floor{dir = 5; icon_state = "whitehall"},/area/rnd/research) "bDy" = (/obj/machinery/firealarm{dir = 8; pixel_x = -24},/turf/simulated/floor{dir = 5; icon_state = "whitehall"},/area/rnd/research)
"bDz" = (/obj/structure/disposalpipe/segment{dir = 4},/obj/structure/cable/green{d1 = 4; d2 = 8; icon_state = "4-8"},/turf/simulated/floor,/area/janitor) "bDz" = (/obj/structure/disposalpipe/segment{dir = 4},/obj/structure/cable/green{d1 = 4; d2 = 8; icon_state = "4-8"},/turf/simulated/floor,/area/janitor)
"bDA" = (/obj/structure/disposalpipe/segment{dir = 4; icon_state = "pipe-c"},/obj/structure/cable/green{d1 = 4; d2 = 8; icon_state = "4-8"},/turf/simulated/floor,/area/janitor) "bDA" = (/obj/structure/disposalpipe/segment{dir = 4; icon_state = "pipe-c"},/obj/structure/cable/green{d1 = 4; d2 = 8; icon_state = "4-8"},/turf/simulated/floor,/area/janitor)
@@ -4380,7 +4380,7 @@
"bGl" = (/turf/simulated/floor{dir = 9; icon_state = "whitehall"},/area/rnd/research) "bGl" = (/turf/simulated/floor{dir = 9; icon_state = "whitehall"},/area/rnd/research)
"bGm" = (/obj/machinery/door/firedoor/border_only{dir = 8; name = "Firelock West"},/obj/machinery/door/poddoor{density = 0; icon_state = "pdoor0"; id = "Biohazard"; name = "Biohazard Shutter"; opacity = 0},/obj/machinery/door/airlock/research{name = "Toxins Launch Room Access"; req_access_txt = "8"},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/turf/simulated/floor{icon_state = "white"},/area/rnd/mixing) "bGm" = (/obj/machinery/door/firedoor/border_only{dir = 8; name = "Firelock West"},/obj/machinery/door/poddoor{density = 0; icon_state = "pdoor0"; id = "Biohazard"; name = "Biohazard Shutter"; opacity = 0},/obj/machinery/door/airlock/research{name = "Toxins Launch Room Access"; req_access_txt = "8"},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/turf/simulated/floor{icon_state = "white"},/area/rnd/mixing)
"bGn" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 8},/obj/machinery/door/firedoor/border_only{dir = 2},/turf/simulated/floor/plating,/area/rnd/mixing) "bGn" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 8},/obj/machinery/door/firedoor/border_only{dir = 2},/turf/simulated/floor/plating,/area/rnd/mixing)
"bGo" = (/obj/structure/cable/green{d1 = 2; d2 = 8; icon_state = "2-8"},/obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers{dir = 1},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/turf/simulated/floor{icon_state = "white"},/area/rnd/mixing) "bGo" = (/obj/structure/sign/fire{pixel_y = -32},/obj/machinery/atmospherics/binary/pump/on{dir = 8},/obj/machinery/atmospherics/pipe/simple/hidden/cyan,/turf/simulated/floor/engine,/area/rnd/mixing)
"bGp" = (/turf/simulated/shuttle/wall{icon_state = "swall3"; dir = 2},/area/shuttle/mining/station) "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) "bGq" = (/obj/structure/table,/turf/simulated/shuttle/floor,/area/shuttle/mining/station)
"bGr" = (/obj/machinery/portable_atmospherics/canister,/obj/machinery/light{dir = 1},/turf/simulated/floor/engine,/area/rnd/misc_lab) "bGr" = (/obj/machinery/portable_atmospherics/canister,/obj/machinery/light{dir = 1},/turf/simulated/floor/engine,/area/rnd/misc_lab)
@@ -4392,10 +4392,10 @@
"bGx" = (/obj/machinery/door_control{id = "medprivb"; name = "Privacy Shutters"; pixel_y = 25},/obj/machinery/alarm{dir = 8; icon_state = "alarm0"; pixel_x = 24},/obj/structure/table,/obj/item/weapon/clipboard,/obj/item/weapon/paper_bin,/obj/item/weapon/pen,/obj/machinery/light_switch{dir = 2; name = "light switch "; pixel_x = 0; pixel_y = 36},/obj/machinery/atmospherics/unary/vent_scrubber/on{dir = 8},/turf/simulated/floor{dir = 5; icon_state = "whitered"},/area/medical/patient_b) "bGx" = (/obj/machinery/door_control{id = "medprivb"; name = "Privacy Shutters"; pixel_y = 25},/obj/machinery/alarm{dir = 8; icon_state = "alarm0"; pixel_x = 24},/obj/structure/table,/obj/item/weapon/clipboard,/obj/item/weapon/paper_bin,/obj/item/weapon/pen,/obj/machinery/light_switch{dir = 2; name = "light switch "; pixel_x = 0; pixel_y = 36},/obj/machinery/atmospherics/unary/vent_scrubber/on{dir = 8},/turf/simulated/floor{dir = 5; icon_state = "whitered"},/area/medical/patient_b)
"bGy" = (/obj/machinery/power/apc{dir = 1; name = "north bump"; pixel_x = 0; pixel_y = 24},/obj/structure/cable/green{d2 = 4; icon_state = "0-4"},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/obj/structure/cable/green{d2 = 8; icon_state = "0-8"},/turf/simulated/floor,/area/crew_quarters/heads/hop) "bGy" = (/obj/machinery/power/apc{dir = 1; name = "north bump"; pixel_x = 0; pixel_y = 24},/obj/structure/cable/green{d2 = 4; icon_state = "0-4"},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/obj/structure/cable/green{d2 = 8; icon_state = "0-8"},/turf/simulated/floor,/area/crew_quarters/heads/hop)
"bGz" = (/obj/structure/cable/green{d1 = 4; d2 = 8; icon_state = "4-8"},/turf/simulated/floor{icon_state = "white"},/area/rnd/mixing) "bGz" = (/obj/structure/cable/green{d1 = 4; d2 = 8; icon_state = "4-8"},/turf/simulated/floor{icon_state = "white"},/area/rnd/mixing)
"bGA" = (/obj/effect/landmark/start{name = "Scientist"},/obj/structure/cable/green{d1 = 4; d2 = 8; icon_state = "4-8"},/turf/simulated/floor{icon_state = "white"},/area/rnd/mixing) "bGA" = (/obj/machinery/meter,/obj/machinery/door_control{id = "mixvent"; name = "Mixing Room Vent Control"; pixel_x = -25; pixel_y = 5; req_access_txt = "7"},/obj/machinery/ignition_switch{id = "mixingsparker"; pixel_x = -25; pixel_y = -5},/obj/machinery/atmospherics/pipe/simple/visible{dir = 4},/turf/simulated/floor{dir = 4; icon_state = "warnwhitecorner"},/area/rnd/mixing)
"bGB" = (/obj/structure/cable/green{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/machinery/atmospherics/unary/vent_pump/on{dir = 4},/turf/simulated/floor{icon_state = "white"},/area/rnd/mixing) "bGB" = (/obj/structure/cable/green{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/machinery/atmospherics/unary/vent_pump/on{dir = 4},/turf/simulated/floor{icon_state = "white"},/area/rnd/mixing)
"bGC" = (/obj/structure/cable/green{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/machinery/atmospherics/pipe/manifold/hidden/supply{dir = 1},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 6},/turf/simulated/floor{icon_state = "white"},/area/rnd/mixing) "bGC" = (/obj/effect/decal/cleanable/blood/oil/streak{amount = 0},/obj/machinery/atmospherics/pipe/simple/hidden/universal,/turf/simulated/floor/plating,/area/maintenance/research_starboard)
"bGD" = (/obj/structure/cable/green{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/turf/simulated/floor{icon_state = "white"},/area/rnd/mixing) "bGD" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers,/turf/simulated/floor/plating,/area/maintenance/research_starboard)
"bGE" = (/obj/machinery/portable_atmospherics/powered/pump,/obj/structure/window/reinforced{dir = 4},/turf/simulated/floor{dir = 2; icon_state = "whitepurple"},/area/rnd/mixing) "bGE" = (/obj/machinery/portable_atmospherics/powered/pump,/obj/structure/window/reinforced{dir = 4},/turf/simulated/floor{dir = 2; icon_state = "whitepurple"},/area/rnd/mixing)
"bGF" = (/turf/simulated/wall,/area/storage/tech) "bGF" = (/turf/simulated/wall,/area/storage/tech)
"bGG" = (/obj/structure/extinguisher_cabinet{pixel_x = -24},/turf/simulated/floor{dir = 5; icon_state = "whitehall"},/area/rnd/research) "bGG" = (/obj/structure/extinguisher_cabinet{pixel_x = -24},/turf/simulated/floor{dir = 5; icon_state = "whitehall"},/area/rnd/research)
@@ -5469,7 +5469,7 @@
"cbi" = (/obj/machinery/requests_console{department = "Science"; departmentType = 2; name = "Science Requests Console"; pixel_x = -30; pixel_y = 0},/turf/simulated/floor{icon_state = "white"},/area/rnd/lab) "cbi" = (/obj/machinery/requests_console{department = "Science"; departmentType = 2; name = "Science Requests Console"; pixel_x = -30; pixel_y = 0},/turf/simulated/floor{icon_state = "white"},/area/rnd/lab)
"cbj" = (/obj/machinery/camera{c_tag = "Research Division Access"; dir = 2; network = list("SS13","Research")},/obj/structure/sink{dir = 4; icon_state = "sink"; pixel_x = 11; pixel_y = 0},/turf/simulated/floor{icon_state = "warnwhite"; dir = 5},/area/rnd/research) "cbj" = (/obj/machinery/camera{c_tag = "Research Division Access"; dir = 2; network = list("SS13","Research")},/obj/structure/sink{dir = 4; icon_state = "sink"; pixel_x = 11; pixel_y = 0},/turf/simulated/floor{icon_state = "warnwhite"; dir = 5},/area/rnd/research)
"cbk" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 10},/turf/simulated/floor{icon_state = "white"},/area/rnd/research) "cbk" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 10},/turf/simulated/floor{icon_state = "white"},/area/rnd/research)
"cbl" = (/obj/machinery/airlock_sensor{id_tag = "tox_airlock_sensor"; master_tag = "tox_airlock_control"; pixel_y = 24},/obj/machinery/light/small{dir = 1},/obj/machinery/atmospherics/binary/pump/on{dir = 4},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 6},/turf/simulated/floor/engine,/area/rnd/mixing) "cbl" = (/obj/machinery/atmospherics/pipe/simple/hidden/universal{dir = 4},/turf/simulated/floor{icon_state = "hydrofloor"},/area/rnd/xenobiology/xenoflora)
"cbm" = (/obj/machinery/door/firedoor/border_only{dir = 4; name = "hazard door east"},/obj/machinery/door/airlock/glass_research{name = "Robotics Lab"; req_access_txt = "29"},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/turf/simulated/floor{icon_state = "white"},/area/assembly/robotics) "cbm" = (/obj/machinery/door/firedoor/border_only{dir = 4; name = "hazard door east"},/obj/machinery/door/airlock/glass_research{name = "Robotics Lab"; req_access_txt = "29"},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/turf/simulated/floor{icon_state = "white"},/area/assembly/robotics)
"cbn" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/turf/simulated/floor{icon_state = "white"},/area/assembly/robotics) "cbn" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/turf/simulated/floor{icon_state = "white"},/area/assembly/robotics)
"cbo" = (/obj/structure/stool/bed/chair{dir = 8},/obj/item/device/radio/intercom{broadcasting = 0; listening = 1; name = "Station Intercom (General)"; pixel_y = 20},/turf/simulated/shuttle/floor,/area/shuttle/escape_pod5/station) "cbo" = (/obj/structure/stool/bed/chair{dir = 8},/obj/item/device/radio/intercom{broadcasting = 0; listening = 1; name = "Station Intercom (General)"; pixel_y = 20},/turf/simulated/shuttle/floor,/area/shuttle/escape_pod5/station)
@@ -5496,10 +5496,10 @@
"cbJ" = (/obj/machinery/atmospherics/pipe/simple/visible/green{tag = "icon-intact (NORTHEAST)"; icon_state = "intact"; dir = 5},/turf/simulated/floor,/area/atmos) "cbJ" = (/obj/machinery/atmospherics/pipe/simple/visible/green{tag = "icon-intact (NORTHEAST)"; icon_state = "intact"; dir = 5},/turf/simulated/floor,/area/atmos)
"cbK" = (/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_x = 0},/turf/simulated/wall/r_wall,/area/engine/engine_smes) "cbK" = (/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_x = 0},/turf/simulated/wall/r_wall,/area/engine/engine_smes)
"cbL" = (/obj/structure/cable{d1 = 2; d2 = 4; icon_state = "2-4"},/obj/structure/table,/obj/item/stack/cable_coil,/obj/item/stack/cable_coil{pixel_x = 3; pixel_y = 3},/obj/item/weapon/storage/box/lights/mixed,/obj/structure/cable{d1 = 2; d2 = 8; icon_state = "2-8"},/turf/simulated/floor,/area/engine/engine_smes) "cbL" = (/obj/structure/cable{d1 = 2; d2 = 4; icon_state = "2-4"},/obj/structure/table,/obj/item/stack/cable_coil,/obj/item/stack/cable_coil{pixel_x = 3; pixel_y = 3},/obj/item/weapon/storage/box/lights/mixed,/obj/structure/cable{d1 = 2; d2 = 8; icon_state = "2-8"},/turf/simulated/floor,/area/engine/engine_smes)
"cbM" = (/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 8},/obj/structure/window/reinforced{dir = 1},/obj/structure/grille,/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_x = 0},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/turf/simulated/floor/plating,/area/engine/engine_airlock) "cbM" = (/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 8},/obj/structure/window/reinforced{dir = 1},/obj/structure/grille,/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_x = 0},/obj/machinery/atmospherics/pipe/simple/hidden/universal,/turf/simulated/floor/plating,/area/engine/engine_airlock)
"cbN" = (/obj/structure/table,/obj/machinery/microwave{pixel_x = -3; pixel_y = 6},/turf/simulated/floor{icon_state = "white"},/area/medical/virology) "cbN" = (/obj/structure/table,/obj/machinery/microwave{pixel_x = -3; pixel_y = 6},/turf/simulated/floor{icon_state = "white"},/area/medical/virology)
"cbO" = (/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_x = 0},/turf/simulated/wall/r_wall,/area/engine/engine_monitoring) "cbO" = (/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_x = 0},/turf/simulated/wall/r_wall,/area/engine/engine_monitoring)
"cbP" = (/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 8},/obj/structure/window/reinforced{dir = 1},/obj/structure/grille,/obj/structure/cable{d1 = 1; d2 = 8; icon_state = "1-8"},/obj/machinery/atmospherics/pipe/simple/hidden/supply,/turf/simulated/floor/plating,/area/engine/engine_airlock) "cbP" = (/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 8},/obj/structure/window/reinforced{dir = 1},/obj/structure/grille,/obj/structure/cable{d1 = 1; d2 = 8; icon_state = "1-8"},/obj/machinery/atmospherics/pipe/simple/hidden/universal,/turf/simulated/floor/plating,/area/engine/engine_airlock)
"cbQ" = (/obj/machinery/door/airlock/maintenance_hatch{frequency = 1379; icon_state = "door_closed"; id_tag = "engine_airlock_exterior"; locked = 0; name = "Engine Airlock Exterior"; req_access_txt = "10"},/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_x = 0},/turf/simulated/floor/plating,/area/engine/engine_airlock) "cbQ" = (/obj/machinery/door/airlock/maintenance_hatch{frequency = 1379; icon_state = "door_closed"; id_tag = "engine_airlock_exterior"; locked = 0; name = "Engine Airlock Exterior"; req_access_txt = "10"},/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_x = 0},/turf/simulated/floor/plating,/area/engine/engine_airlock)
"cbR" = (/obj/machinery/hologram/holopad,/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_x = 0},/obj/machinery/atmospherics/pipe/manifold/hidden/supply{dir = 4},/obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers{dir = 8},/turf/simulated/floor,/area/engine/engine_monitoring) "cbR" = (/obj/machinery/hologram/holopad,/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_x = 0},/obj/machinery/atmospherics/pipe/manifold/hidden/supply{dir = 4},/obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers{dir = 8},/turf/simulated/floor,/area/engine/engine_monitoring)
"cbS" = (/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/engine/engine_monitoring) "cbS" = (/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/engine/engine_monitoring)
@@ -5515,7 +5515,7 @@
"ccc" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced{dir = 8},/turf/simulated/floor/plating,/area/maintenance/starboardsolar) "ccc" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced{dir = 8},/turf/simulated/floor/plating,/area/maintenance/starboardsolar)
"ccd" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 1},/turf/simulated/floor/plating,/area/maintenance/starboardsolar) "ccd" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 1},/turf/simulated/floor/plating,/area/maintenance/starboardsolar)
"cce" = (/turf/simulated/shuttle/wall{icon_state = "swall_s5"; dir = 2},/area/shuttle/escape_pod5/station) "cce" = (/turf/simulated/shuttle/wall{icon_state = "swall_s5"; dir = 2},/area/shuttle/escape_pod5/station)
"ccf" = (/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"},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 5},/turf/simulated/floor/plating{icon_state = "warnplate"; dir = 9},/area/engine/engine_airlock) "ccf" = (/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"},/obj/machinery/atmospherics/pipe/simple/hidden{dir = 5; icon_state = "intact"; tag = "icon-intact-f (NORTHEAST)"},/turf/simulated/floor/plating{icon_state = "warnplate"; dir = 9},/area/engine/engine_airlock)
"ccg" = (/obj/structure/stool/bed/chair/office/dark,/obj/effect/landmark/start{name = "Station Engineer"},/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/simulated/floor,/area/engine/engine_monitoring) "ccg" = (/obj/structure/stool/bed/chair/office/dark,/obj/effect/landmark/start{name = "Station Engineer"},/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/simulated/floor,/area/engine/engine_monitoring)
"cch" = (/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 = -3; req_access_txt = "10"},/obj/machinery/door_control{desc = "A remote control-switch for the engine charging port."; id = "EngineEmitterPort"; name = "Engine Charging Port"; pixel_x = -6; pixel_y = 7; req_access_txt = "10"},/obj/machinery/door_control{desc = "A remote control-switch for the engine emitter."; id = "EngineEmitter"; name = "Engine Emitter"; normaldoorcontrol = 2; pixel_x = 6; pixel_y = 7; req_access_txt = "10"},/obj/machinery/atmospherics/pipe/simple/hidden/supply,/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/turf/simulated/floor,/area/engine/engine_monitoring) "cch" = (/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 = -3; req_access_txt = "10"},/obj/machinery/door_control{desc = "A remote control-switch for the engine charging port."; id = "EngineEmitterPort"; name = "Engine Charging Port"; pixel_x = -6; pixel_y = 7; req_access_txt = "10"},/obj/machinery/door_control{desc = "A remote control-switch for the engine emitter."; id = "EngineEmitter"; name = "Engine Emitter"; normaldoorcontrol = 2; pixel_x = 6; pixel_y = 7; req_access_txt = "10"},/obj/machinery/atmospherics/pipe/simple/hidden/supply,/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/turf/simulated/floor,/area/engine/engine_monitoring)
"cci" = (/obj/structure/stool/bed/chair/office/dark,/obj/effect/landmark/start{name = "Station Engineer"},/turf/simulated/floor,/area/engine/engine_monitoring) "cci" = (/obj/structure/stool/bed/chair/office/dark,/obj/effect/landmark/start{name = "Station Engineer"},/turf/simulated/floor,/area/engine/engine_monitoring)
@@ -8576,7 +8576,7 @@
"diV" = (/obj/machinery/door/airlock/external{frequency = 1380; glass = 1380; icon_state = "door_locked"; id_tag = "centcom_shuttle_bay_door"; locked = 1; name = "Transport Airlock"},/turf/unsimulated/floor{icon_state = "vault"; dir = 5},/area/centcom/ferry) "diV" = (/obj/machinery/door/airlock/external{frequency = 1380; glass = 1380; icon_state = "door_locked"; id_tag = "centcom_shuttle_bay_door"; locked = 1; name = "Transport Airlock"},/turf/unsimulated/floor{icon_state = "vault"; dir = 5},/area/centcom/ferry)
"diW" = (/obj/machinery/computer/shuttle_control{req_access = null; req_access_txt = "101"; shuttle_tag = "Centcom"},/turf/simulated/shuttle/floor,/area/shuttle/transport1/centcom) "diW" = (/obj/machinery/computer/shuttle_control{req_access = null; req_access_txt = "101"; shuttle_tag = "Centcom"},/turf/simulated/shuttle/floor,/area/shuttle/transport1/centcom)
"diX" = (/obj/structure/table/reinforced,/obj/item/device/megaphone,/obj/item/clothing/glasses/sunglasses/sechud,/obj/item/weapon/storage/box/trackimp,/obj/item/weapon/storage/box/cdeathalarm_kit,/turf/unsimulated/floor{icon_state = "vault"; dir = 8},/area/centcom/specops) "diX" = (/obj/structure/table/reinforced,/obj/item/device/megaphone,/obj/item/clothing/glasses/sunglasses/sechud,/obj/item/weapon/storage/box/trackimp,/obj/item/weapon/storage/box/cdeathalarm_kit,/turf/unsimulated/floor{icon_state = "vault"; dir = 8},/area/centcom/specops)
"diY" = (/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},/obj/item/stack/sheet/glass{amount = 50},/obj/item/stack/sheet/metal{amount = 50; pixel_x = 2; pixel_y = 2},/obj/item/stack/sheet/metal{amount = 50; pixel_x = 2; pixel_y = 2},/obj/item/stack/sheet/metal{amount = 50; pixel_x = 2; pixel_y = 2},/obj/item/stack/sheet/metal{amount = 50; pixel_x = 2; pixel_y = 2},/obj/item/stack/sheet/plasteel{amount = 50},/obj/item/stack/sheet/plasteel{amount = 50},/obj/item/stack/sheet/plasteel{amount = 50},/obj/item/stack/sheet/plasteel{amount = 50},/obj/item/stack/sheet/rglass{amount = 50},/obj/item/stack/sheet/rglass{amount = 50},/obj/item/stack/sheet/rglass{amount = 50},/obj/item/weapon/storage/briefcase/inflatable{pixel_x = 3; pixel_y = 3},/obj/item/weapon/storage/briefcase/inflatable{pixel_x = 3; pixel_y = 3},/obj/item/weapon/storage/briefcase/inflatable{pixel_x = 3; pixel_y = 3},/obj/item/weapon/storage/briefcase/inflatable{pixel_x = 3; pixel_y = 3},/turf/unsimulated/floor{icon_state = "dark"},/area/centcom) "diY" = (/obj/structure/closet/emcloset,/obj/machinery/atmospherics/pipe/simple/hidden{dir = 9; icon_state = "intact"; tag = "icon-intact-f (NORTHWEST)"},/turf/simulated/floor/plating{icon_state = "warnplate"; dir = 5},/area/engine/engine_airlock)
"diZ" = (/obj/machinery/computer/shuttle_control/emergency,/turf/simulated/shuttle/floor,/area/shuttle/escape/centcom) "diZ" = (/obj/machinery/computer/shuttle_control/emergency,/turf/simulated/shuttle/floor,/area/shuttle/escape/centcom)
"dja" = (/obj/machinery/door/airlock/external{frequency = 1380; icon_state = "door_locked"; id_tag = "specops_shuttle_fore_hatch"; locked = 1; name = "Forward Docking Hatch"; req_access_txt = "13"},/turf/simulated/shuttle/plating,/area/shuttle/specops/centcom) "dja" = (/obj/machinery/door/airlock/external{frequency = 1380; icon_state = "door_locked"; id_tag = "specops_shuttle_fore_hatch"; locked = 1; name = "Forward Docking Hatch"; req_access_txt = "13"},/turf/simulated/shuttle/plating,/area/shuttle/specops/centcom)
"djb" = (/obj/structure/table/reinforced,/obj/item/device/flash,/obj/item/device/flash,/obj/item/device/flash,/obj/item/device/flash,/obj/item/weapon/melee/baton/loaded,/obj/item/weapon/melee/baton/loaded,/obj/item/weapon/melee/baton/loaded,/obj/item/weapon/melee/baton/loaded,/obj/item/weapon/storage/belt/security/tactical,/obj/item/weapon/storage/belt/security/tactical,/obj/item/weapon/storage/belt/security/tactical,/obj/item/weapon/storage/belt/security/tactical,/obj/item/taperoll/police,/turf/unsimulated/floor{icon_state = "vault"; dir = 1},/area/centcom/specops) "djb" = (/obj/structure/table/reinforced,/obj/item/device/flash,/obj/item/device/flash,/obj/item/device/flash,/obj/item/device/flash,/obj/item/weapon/melee/baton/loaded,/obj/item/weapon/melee/baton/loaded,/obj/item/weapon/melee/baton/loaded,/obj/item/weapon/melee/baton/loaded,/obj/item/weapon/storage/belt/security/tactical,/obj/item/weapon/storage/belt/security/tactical,/obj/item/weapon/storage/belt/security/tactical,/obj/item/weapon/storage/belt/security/tactical,/obj/item/taperoll/police,/turf/unsimulated/floor{icon_state = "vault"; dir = 1},/area/centcom/specops)
@@ -10554,6 +10554,7 @@
"dUX" = (/obj/structure/table,/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced{dir = 8},/obj/item/weapon/storage/box/cups,/obj/item/weapon/storage/box/cups{pixel_x = 2; pixel_y = 5},/turf/simulated/floor{dir = 9; icon_state = "blue"},/area/medical/reception) "dUX" = (/obj/structure/table,/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced{dir = 8},/obj/item/weapon/storage/box/cups,/obj/item/weapon/storage/box/cups{pixel_x = 2; pixel_y = 5},/turf/simulated/floor{dir = 9; icon_state = "blue"},/area/medical/reception)
"dUY" = (/obj/structure/table,/obj/machinery/door/window/northright{name = "Medbay Lobby"; req_access_txt = "5"},/obj/item/weapon/reagent_containers/spray/cleaner{pixel_x = -5},/turf/simulated/floor{dir = 1; icon_state = "blue"},/area/medical/reception) "dUY" = (/obj/structure/table,/obj/machinery/door/window/northright{name = "Medbay Lobby"; req_access_txt = "5"},/obj/item/weapon/reagent_containers/spray/cleaner{pixel_x = -5},/turf/simulated/floor{dir = 1; icon_state = "blue"},/area/medical/reception)
"dUZ" = (/obj/machinery/door/airlock/glass{name = "Central Access"},/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_x = 0},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/turf/simulated/floor,/area/hallway/primary/central_two) "dUZ" = (/obj/machinery/door/airlock/glass{name = "Central Access"},/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_x = 0},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/turf/simulated/floor,/area/hallway/primary/central_two)
"dVa" = (/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},/obj/item/stack/sheet/glass{amount = 50},/obj/item/stack/sheet/metal{amount = 50; pixel_x = 2; pixel_y = 2},/obj/item/stack/sheet/metal{amount = 50; pixel_x = 2; pixel_y = 2},/obj/item/stack/sheet/metal{amount = 50; pixel_x = 2; pixel_y = 2},/obj/item/stack/sheet/metal{amount = 50; pixel_x = 2; pixel_y = 2},/obj/item/stack/sheet/plasteel{amount = 50},/obj/item/stack/sheet/plasteel{amount = 50},/obj/item/stack/sheet/plasteel{amount = 50},/obj/item/stack/sheet/plasteel{amount = 50},/obj/item/stack/sheet/glass/reinforced{amount = 50},/obj/item/stack/sheet/glass/reinforced{amount = 50},/obj/item/stack/sheet/glass/reinforced{amount = 50},/obj/item/weapon/storage/briefcase/inflatable{pixel_x = 3; pixel_y = 3},/obj/item/weapon/storage/briefcase/inflatable{pixel_x = 3; pixel_y = 3},/obj/item/weapon/storage/briefcase/inflatable{pixel_x = 3; pixel_y = 3},/obj/item/weapon/storage/briefcase/inflatable{pixel_x = 3; pixel_y = 3},/turf/unsimulated/floor{icon_state = "dark"},/area/centcom)
"dVb" = (/obj/machinery/meter,/obj/machinery/light/small,/obj/machinery/atmospherics/pipe/simple/visible/cyan{dir = 4; icon_state = "intact"; tag = "icon-intact (EAST)"},/turf/simulated/floor/plating,/area/research_outpost/atmos) "dVb" = (/obj/machinery/meter,/obj/machinery/light/small,/obj/machinery/atmospherics/pipe/simple/visible/cyan{dir = 4; icon_state = "intact"; tag = "icon-intact (EAST)"},/turf/simulated/floor/plating,/area/research_outpost/atmos)
"dVc" = (/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; pixel_y = 0},/obj/machinery/door/firedoor/border_only{dir = 4; name = "Firelock"},/obj/machinery/door/airlock/research{name = "Spectrometry Lab"; req_access_txt = "65"},/obj/machinery/atmospherics/pipe/simple/hidden/supply,/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/turf/simulated/floor{icon_state = "white"},/area/research_outpost/spectro) "dVc" = (/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; pixel_y = 0},/obj/machinery/door/firedoor/border_only{dir = 4; name = "Firelock"},/obj/machinery/door/airlock/research{name = "Spectrometry Lab"; req_access_txt = "65"},/obj/machinery/atmospherics/pipe/simple/hidden/supply,/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/turf/simulated/floor{icon_state = "white"},/area/research_outpost/spectro)
"dVd" = (/obj/machinery/atmospherics/pipe/simple/visible/purple{dir = 5},/turf/simulated/floor/plating,/area/research_outpost/atmos) "dVd" = (/obj/machinery/atmospherics/pipe/simple/visible/purple{dir = 5},/turf/simulated/floor/plating,/area/research_outpost/atmos)
@@ -10999,7 +11000,7 @@
"edB" = (/obj/machinery/camera{c_tag = "SMES"; dir = 8; network = list("SS13","Supermatter")},/obj/machinery/atmospherics/unary/vent_pump/on{dir = 8},/turf/simulated/floor,/area/engine/engine_smes) "edB" = (/obj/machinery/camera{c_tag = "SMES"; dir = 8; network = list("SS13","Supermatter")},/obj/machinery/atmospherics/unary/vent_pump/on{dir = 8},/turf/simulated/floor,/area/engine/engine_smes)
"edC" = (/obj/structure/table/reinforced,/obj/machinery/camera{c_tag = "Engine Monitoring Room"; dir = 4; network = list("SS13","Supermatter")},/obj/machinery/firealarm{dir = 8; pixel_x = -24},/turf/simulated/floor,/area/engine/engine_monitoring) "edC" = (/obj/structure/table/reinforced,/obj/machinery/camera{c_tag = "Engine Monitoring Room"; dir = 4; network = list("SS13","Supermatter")},/obj/machinery/firealarm{dir = 8; pixel_x = -24},/turf/simulated/floor,/area/engine/engine_monitoring)
"edD" = (/obj/machinery/portable_atmospherics/hydroponics/soil,/obj/structure/window/reinforced{dir = 8},/turf/simulated/floor/grass,/area/research_outpost/maintstore1) "edD" = (/obj/machinery/portable_atmospherics/hydroponics/soil,/obj/structure/window/reinforced{dir = 8},/turf/simulated/floor/grass,/area/research_outpost/maintstore1)
"edE" = (/obj/structure/closet/emcloset,/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 9},/turf/simulated/floor/plating{icon_state = "warnplate"; dir = 5},/area/engine/engine_airlock) "edE" = (/obj/item/weapon/table_parts,/obj/item/weapon/rack_parts,/obj/item/stack/sheet/glass/reinforced{amount = 8},/obj/item/stack/rods{amount = 6},/turf/simulated/floor{icon_state = "floorgrime"},/area/mine/north_outpost)
"edF" = (/obj/machinery/power/apc{dir = 1; name = "north bump"; pixel_x = 0; pixel_y = 24},/obj/structure/cable{d2 = 2; icon_state = "0-2"; pixel_y = 0},/obj/machinery/atmospherics/binary/pump/on{dir = 8; name = "Filter to Waste"; target_pressure = 4500},/turf/simulated/floor/plating,/area/research_outpost/atmos) "edF" = (/obj/machinery/power/apc{dir = 1; name = "north bump"; pixel_x = 0; pixel_y = 24},/obj/structure/cable{d2 = 2; icon_state = "0-2"; pixel_y = 0},/obj/machinery/atmospherics/binary/pump/on{dir = 8; name = "Filter to Waste"; target_pressure = 4500},/turf/simulated/floor/plating,/area/research_outpost/atmos)
"edG" = (/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) "edG" = (/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)
"edH" = (/obj/structure/sign/securearea{desc = "A warning sign which reads 'EXTERNAL AIRLOCK'"; icon_state = "space"; layer = 4; name = "EXTERNAL AIRLOCK"; pixel_x = 32; pixel_y = 0},/turf/space,/area/space) "edH" = (/obj/structure/sign/securearea{desc = "A warning sign which reads 'EXTERNAL AIRLOCK'"; icon_state = "space"; layer = 4; name = "EXTERNAL AIRLOCK"; pixel_x = 32; pixel_y = 0},/turf/space,/area/space)
@@ -11203,7 +11204,6 @@
"ehy" = (/obj/machinery/atmospherics/pipe/tank/air{dir = 8; initialize_directions = 0; level = 1},/turf/simulated/floor/plating,/area/mine/north_outpost) "ehy" = (/obj/machinery/atmospherics/pipe/tank/air{dir = 8; initialize_directions = 0; level = 1},/turf/simulated/floor/plating,/area/mine/north_outpost)
"ehz" = (/obj/effect/decal/cleanable/dirt,/obj/item/device/radio/intercom{name = "Station Intercom (General)"; pixel_y = -29},/turf/simulated/floor{icon_state = "floorgrime"},/area/mine/north_outpost) "ehz" = (/obj/effect/decal/cleanable/dirt,/obj/item/device/radio/intercom{name = "Station Intercom (General)"; pixel_y = -29},/turf/simulated/floor{icon_state = "floorgrime"},/area/mine/north_outpost)
"ehA" = (/obj/machinery/door/firedoor/border_only{dir = 2},/obj/effect/decal/cleanable/dirt,/turf/simulated/floor{dir = 8; icon_state = "loadingarea"},/area/mine/north_outpost) "ehA" = (/obj/machinery/door/firedoor/border_only{dir = 2},/obj/effect/decal/cleanable/dirt,/turf/simulated/floor{dir = 8; icon_state = "loadingarea"},/area/mine/north_outpost)
"ehB" = (/obj/item/weapon/table_parts,/obj/item/weapon/rack_parts,/obj/item/stack/sheet/rglass{amount = 8},/obj/item/stack/rods{amount = 6},/turf/simulated/floor{icon_state = "floorgrime"},/area/mine/north_outpost)
"ehC" = (/obj/structure/plasticflaps/mining,/obj/machinery/conveyor{backwards = 2; dir = 2; forwards = 1; id = "mining_north"},/turf/simulated/floor{icon_state = "floorgrime"},/area/mine/north_outpost) "ehC" = (/obj/structure/plasticflaps/mining,/obj/machinery/conveyor{backwards = 2; dir = 2; forwards = 1; id = "mining_north"},/turf/simulated/floor{icon_state = "floorgrime"},/area/mine/north_outpost)
"ehD" = (/obj/machinery/light/small{dir = 1},/turf/simulated/floor/plating/airless{icon_state = "asteroidplating"},/area/mine/explored) "ehD" = (/obj/machinery/light/small{dir = 1},/turf/simulated/floor/plating/airless{icon_state = "asteroidplating"},/area/mine/explored)
"ehE" = (/obj/structure/sign/securearea{desc = "A warning sign which reads 'MOVING PARTS'."; name = "\improper MOVING PARTS"; pixel_y = 32},/obj/machinery/conveyor_switch{id = "mining_nort"; pixel_y = 10},/turf/simulated/floor/airless{icon_state = "asteroidwarning"; dir = 1},/area/mine/explored) "ehE" = (/obj/structure/sign/securearea{desc = "A warning sign which reads 'MOVING PARTS'."; name = "\improper MOVING PARTS"; pixel_y = 32},/obj/machinery/conveyor_switch{id = "mining_nort"; pixel_y = 10},/turf/simulated/floor/airless{icon_state = "asteroidwarning"; dir = 1},/area/mine/explored)
@@ -11390,7 +11390,7 @@ aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabdQbdQbdQbdQbdQbdQbdQbdQbdQbdQaaaaaeboqbhBbosboOboNboPboPboPboPboPboRboSaFNaFUaFTaFSaFRaYyaYyaYybdXaEvaYyaPEaPEaPEaPEaDGaHhaFZbpfaPEaGbbphbalaJfaJlbpqbcQbeebalbbJbefbPhbcSbcSbcSbehatFbvdaMabcmbvqaGvaGwaGraGsaGpaGqaGlaGmbaAbaBberbprbetbetbetaNPbevbaBbaDbexaGibclbdpbeyaGeaGdaGcbqlbwybwxbwJbwIaGKaGEaGDaGDaGMaGLaGNaGzaGzaGzaGPaGzaGzaGzaGzaGzaGAaGBaGBaGBaGCaGDaGDaGEaGDaGDaGFaGBaGBaHiaGzaHeaHpaHlaGzaHjaGDaGDaGDaGDaGDaGDaGDaGDaGDaGDaGDaGDaGDaGRaGPaGQaGzaGXaGSaGTaHaaHaaGYaGZaKQaStbeLaTMaTMaTNaJGaJGaJGaJGaJGaJGaJGaJGaJGaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabdQbdQbdQbdQbdQbdQbdQbdQbdQbdQaaaaaeboqbhBbosboOboNboPboPboPboPboPboRboSaFNaFUaFTaFSaFRaYyaYyaYybdXaEvaYyaPEaPEaPEaPEaDGaHhaFZbpfaPEaGbbphbalaJfaJlbpqbcQbeebalbbJbefbPhbcSbcSbcSbehatFbvdaMabcmbvqaGvaGwaGraGsaGpaGqaGlaGmbaAbaBberbprbetbetbetaNPbevbaBbaDbexaGibclbdpbeyaGeaGdaGcbqlbwybwxbwJbwIaGKaGEaGDaGDaGMaGLaGNaGzaGzaGzaGPaGzaGzaGzaGzaGzaGAaGBaGBaGBaGCaGDaGDaGEaGDaGDaGFaGBaGBaHiaGzaHeaHpaHlaGzaHjaGDaGDaGDaGDaGDaGDaGDaGDaGDaGDaGDaGDaGDaGRaGPaGQaGzaGXaGSaGTaHaaHaaGYaGZaKQaStbeLaTMaTMaTNaJGaJGaJGaJGaJGaJGaJGaJGaJGaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabdQbdQbdQbdQbdQbdQbdQbdQbdQbdQbdQbijbiebpxbpwbpzbnAbePbePbeQbePbePbePbUVaNlaNlaNlaNlaDBaYyaZYbeSbeTaHvaYybVdbVebVdaPEaPEaPEaPEbpAaPEbVcblDbalbTpcnLbcQbRAbVabalbbJbarbUXbcSbcSbcSbfeatFbwKaMabcmbxHblvbgCbembfibfjbepbVtbhZbaAbpGbpSbpRbetbpTbetbobbqsbqrbaDbfrbVibVjbVgbVgbVgbVhbVfbqlbxJbxIbyybyxcxRdPwdPxdTPbmZcFsbVFcegceibVGbVHctbctbctaaZFaZFaZFaZFaZFbfDbVwbEuaZFctcbVybVxbVBaZFbfDbfybVIbVJbdzaZFaZFbVKaZFaZFcejbfOaZFbfDaZFaZFaZFaZFaZFaZFaZFaZFaZFaBDaZFaZFbdzbfQbfRbfSbfTbfUcGxcGybfWaaeaaaaaeaJGaJGaJGaJGaJGaJGaJGaJGaJGaaaaaaaaaaaaaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabdQbdQbdQbdQbdQbdQbdQbdQbdQbdQbdQbijbiebpxbpwbpzbnAbePbePbeQbePbePbePbUVaNlaNlaNlaNlaDBaYyaZYbeSbeTaHvaYybVdbVebVdaPEaPEaPEaPEbpAaPEbVcblDbalbTpcnLbcQbRAbVabalbbJbarbUXbcSbcSbcSbfeatFbwKaMabcmbxHblvbgCbembfibfjbepbVtbhZbaAbpGbpSbpRbetbpTbetbobbqsbqrbaDbfrbVibVjbVgbVgbVgbVhbVfbqlbxJbxIbyybyxcxRdPwdPxdTPbmZcFsbVFcegceibVGbVHctbctbctaaZFaZFaZFaZFaZFbfDbVwbEuaZFctcbVybVxbVBaZFbfDbfybVIbVJbdzaZFaZFbVKaZFaZFcejbfOaZFbfDaZFaZFaZFaZFaZFaZFaZFaZFaZFaBDaZFaZFbdzbfQbfRbfSbfTbfUcGxcGybfWaaeaaaaaeaJGaJGaJGaJGaJGaJGaJGaJGaJGaaaaaaaaaaaaaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabdQbdQbdQbdQbdQbdQbdQbdQbdQbdQbdQbqvbqubqzbqwbqEbnAbfYbfZbgabgabgbbgcbqYbqUbrabrabrjbrhaYyaYyaYybcJbUgaYyaNlaNlaNlaNlbUfaEtaEtbrBbUdbUcbrGbUCbMpbYMbUqbUBbUjbalbTKbarbUibcSbKabcSbgzbyzbyAaMabcmasMbUsbUrbUubUtbUobUnbUpbfkbaAbaBbgFbsfbsBbshbsCbsfbgKbaBbaDbaDbUybUDbgObgPbclbUwbUxbqlbyCbyBbyDbqlbTqbTqbTqbTqbTqbTqbcqbcqbUMbUNbUJbUKbUNbUMbcqbcqbcqbcqbcqbcqbcqbcqbcqbcqbUObcqbcqbcqbcqbcqbcqcuObcqaZFaZFbURbhkbhkbTqbTqbTqbTqbTqbhmbhnbhnbhobhnaZFbhnbhobUSbhnbhpbTqcuRcuRcuRcvMaPtcBhaPtaPtaaaaaaaaaaJGaJGaJGaJGaJGaJGaJGaJGaJGaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabdQbdQbdQbdQbdQbdQbdQbdQbdQbdQbdQbqvbqubqzbqwbqEbnAbfYbfZbgabgabgbbgcbqYbqUbrabrabrjbrhaYyaYyaYybcJbUgaYyaNlaNlaNlaNlbUfaEtaEtbrBbUdbUcbrGbUCbMpbYMbUqbUBbUjbalbTKbarbUibcSbKabcSbgzbyzbyAaMabcmasMbUsbUrbUubUtbUobUnbUpbfkbaAbaBbgFbsfbsBbshbsCbsfbgKbaBbaDbaDbUybUDbgObgPbclbUwbUxbqlbyCbyBbyDbqlbTqbTqbTqbTqbTqbTqbcqbcqbUMbUNbUJbUKbUNbUMbcqbcqbcqbcqbcqbcqbcqbcqbcqbcqbUObcqbcqbcqbcqbcqbcqcuObcqaZFaZFbURbhkbhkbTqbTqbTqbTqbTqbhmbhnbhnbhobhnaZFbhnbhobUSbhnbhpbTqcuRcuRcuRcvMaPtcBhaPtaPtaaaaaaaaaaJGaJGaJGaJGaJGaJGaJGaJGaJGaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabdQbdQbdQbdQbdQbdQbdQbdQbdQbdQbdQbkUbkRbpxbpwbsLbnAbhtbePbhubhvbePbePbePauUbSSbSRbSRbRuaYyaZYbhzbcJbTzaYybsObsMbtdbsZbtobtebtebtpbtebtebtqbalaFibLsbbHbLwbTtbUCbTibarbTjbcSbcSbTkbhUbyEbyAaMabyHasMbTbbTbbTbbTbbTbbTbbtxbTbbaAbaBbtHbtEbtVbtMbtVbtWbunbaBbaDbaDbimbuCbiobipbclaGdbSVbqlbffaLXaLYbqlcqlcqncqSbTncrDcrGcrMcrFcqUcqVbTTbTUcqVbTOcpscoYcmTbTMbTNcmUcpMckbcrscpNbTRbTPbTScktcktclSbktbSibTqbTqbTJbTqbTLbTLbTqbiVbiWbiXbTqbTEbTFbTEbTqbhmbhnbhpbTqbTDbTIbTDbTqbThbTgbNtbTHbTGbkebhgaaaaaaaaaaaaaJGaJGaJGaJGaJGaJGaJGaJGaJGaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabdQbdQbdQbdQbdQbdQbdQbdQbdQbdQbdQbkUbkRbpxbpwbsLbnAbhtbePbhubhvbePbePbePauUbSSbSRbSRbRuaYyaZYbhzbcJbTzaYybjRbsMbtdbsZbtobtebtebtpbtebtebtqbalaFibLsbbHbLwbTtbUCbTibarbTjbcSbcSbTkbhUbyEbyAaMabyHasMbTbbTbbTbbTbbTbbTbbtxbTbbaAbaBbtHbtEbtVbtMbtVbtWbunbaBbaDbaDbimbuCbiobipbclaGdbSVbqlbffaLXaLYbqlcqlcqncqSbTncrDcrGcrMcrFcqUcqVbTTbTUcqVbTOcpscoYcmTbTMbTNcmUcpMckbcrscpNbTRbTPbTScktcktclSbktbSibTqbTqbTJbTqbTLbTLbTqbiVbiWbiXbTqbTEbTFbTEbTqbhmbhnbhpbTqbTDbTIbTDbTqbThbTgbNtbTHbTGbkebhgaaaaaaaaaaaaaJGaJGaJGaJGaJGaJGaJGaJGaJGaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabdQbdQbdQbdQbdQbdQbdQbdQbdQbdQaaacbCbuQbuRbmdbvjbnAbjibePbjjbjkbjlbRxbePbRybRobRrbRsbRuaYyaYyaYyaYyaYyaYybSebSdbScbSbbvnbalbalbalbalbalbalbalbShbalbalbalbMVbalbSgbRFbSfbcSbcSbcSbjAbyzbyAaMabyJasMbRPbRObRRbRQbREbLrbRKbRIaaebaBbRMbRLbRUbvrbRWbRYbRZbaBaaebaDbjNbRSbjObjPbclaGdbRTbqlbyLbyKaLYbyMcqOcgPbSwbSxbSKbSLbSGbSIchochocgRcgScjtcjtbSOciEciDbSNbSMciAckcckbcjDbSQbSPcgecjvcjucgecgfbktbSibiSbkwbkxcgdbSlbkAbkBbkCbkDbkCbSjbkFbSsbkHbTqbcqbSrbSmbTqbSzbSEbSDbSvbNHbSAbNtbSubkSbkTbhgaaaaaaaaaaafaJGaJGaJGaJGaJGaJGaJGaJGaJGaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabdQbdQbdQbdQbdQbdQbdQbdQbdQbdQaaacbCbuQbuRbmdbvjbnAbjibePbjjbjkbjlbRxbePbRybRobRrbRsbRuaYyaYyaYyaYyaYyaYybSebSdbScbSbbvnbalbalbalbalbalbalbalbShbalbalbalbMVbalbSgbRFbSfbcSbcSbcSbjAbyzbyAaMabyJasMbRPbRObRRbRQbREbLrbRKbRIaaebaBbRMbRLbRUbvrbRWbRYbRZbaBaaebaDbjNbRSbjObjPbclaGdbRTbqlbyLbyKaLYbyMcqOcgPbSwbSxbSKbSLbSGbSIchochocgRcgScjtcjtbSOciEciDbSNbSMciAckcckbcjDbSQbSPcgecjvcjucgecgfbktbSibiSbkwbkxcgdbSlbkAbkBbkCbkDbkCbSjbkFbSsbkHbTqbcqbSrbSmbTqbSzbSEbSDbSvbNHbSAbNtbSubkSbkTbhgaaaaaaaaaaafaJGaJGaJGaJGaJGaJGaJGaJGaJGaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabmRbmQbnxbnvbkRbvubvubvubvLbvubvWbikbwcbwkbnAbkWbkXbkYbkZblacaHcaGaJaaEtaEtaEtbwmbrabwqbrabrabrabrabwFbZXbZXbZZbwSbalbljblkcrwblmblnbloboAbZVblrblschfckRbTibgAbSfbcSbcSbZWbaratFbyAbztbzubxabxdbxcbxcbxfbxCbxhbxRcazbzmbaBbaBbaBbaBbznbaBbaBbaBbaBaaebaDcaqbRScahcajcaecafcadbqlbzEaLXaLYbqldVHdVIdVJcaXcaVbgUcUZbZscjtcjtcjtcjtcjtcjtbZNcaLcaQbSNcaUcaScaJckbdVwbZDcaKcgecjvcjucgedVLbktbSibiScbtbLZbLZcbpcbqcbmcbncbncbncbrcbncbhcbgbhlcbfcbkcbjbNtcbibNHcbdcbabXbbXfbNtbmPbkSbmsbhgaaaaaaaaaaaaaaaaJGaJGaJGaJGaJGaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaateaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabmRbmQbnxbnvbkRbvubvubvubvLbvubvWbikbwcbwkbnAbkWbkXbkYbkZblacaHcaGaJaaEtaEtaEtbwmbrabwqbrabrabrabrabwFbZXbZXbZZbwSbalbljblkcrwblmblnbloboAbZVblrblschfckRbTibgAbSfbcSbcSbZWbaratFbyAbztbzubxabxdbxcbxcbxfbxCbxhbxRcazbzmbaBbaBbaBbaBbznbaBbaBbaBbaBaaebaDcaqbRScahcajcaecafcadbqlbzEaLXaLYbqldVHdVIdVJcaXcaVbgUcUZbZscjtcjtcjtcjtcjtcjtbZNcaLcaQbSNcaUcaScaJckbdVwbZDcaKcgecjvcjucgedVLbktbSibiScbtbLZbLZcbpcbqcbmcbncbncbncbrcbncbhcbgbhlcbfcbkcbjbNtcbibNHcbdcbabXbbXfbNtbmPbkSbmsbhgaaaaaaaaaaaaaaaaJGaJGaJGaJGaJGaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaateaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabzwbzHbzBbzRbzObzYbzYbAjbAibApbnAbmSbmTbkZbmUbePbePbePaNlbZqbZrbYsbYtbYsbYsbYsbYtbYsaNlaNlbalbalbalbYubalblpblpblpblpblpblpboAbIwbnbbVobndbYwbYJbYLbYHbYIbqfbYFbYxbzFbzWbzVbAAbAzbABcwZbYSbTscDdbUkbRKbRIbAIbACbnybnzbBgbBdbnCbnzbnDbACaaebaDbnFbZobnFbaDbaDbaDbBobqlbzZaLXaLYbyMcqOcgPbZzbZAbZubgUdUSbZsdUXdUYdUVdUWdVnbZObZNbZMcmTdVpbZRbZQbZIckbbZGbZDbSPcgecjvcjucgecgfbktbSibiSdTXbnYdTYbXPbkxbocbodboebofbZSbpDbZTbohbhlbZUbsqchDbNtbVZbVAbVzbXBbVVbVXbNtbmPbkSborbhgaaaaaaaaaaaaaaeaaeaaeaaeaaeaaeaaeaaeaaeaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabzwbzHbzBbzRbzObzYbzYbAjbAibApbnAbmSbmTbkZbmUbePbePbePaNlbZqbZrbYsbYtbYsbYsbYsbYtbYsaNlaNlbalbalbalbYubalblpblpblpblpblpblpboAbIwbnbbVobndbYwbYJbYLbYHbYIbqfbYFbYxbzFbzWbzVbAAbAzbABcwZbYSbTscDdbUkbRKbRIbAIbACbnybnzbBgbBdbnCbnzbnDbACaaebaDbnFbZobnFbaDbaDbaDbBobqlbzZaLXaLYbyMcqOcgPbZzbZAbZubgUdUSbZsdUXdUYdUVdUWdVnbZObZNbZMcmTdVpbZRbZQbZIckbbZGbZDbSPcgecjvcjucgecgfbktbSibiSdTXbnYdTYbXPbkxbocbodboebofbZSbpDbZTbohbhlbZUbsqchDbNtbVZbVAbVzbXBbVVbVXbNtbmPbkSborbhgaaaaaaaaaaaaaaeaaeaaeaaeaaeaaeaaeaaeaaeaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
@@ -11409,19 +11409,19 @@ aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabrtbrtbrtbrtbrtbrtbrtbrtbrtbrtbrtbrtbrtbrtbrtbrtbrtbrtaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabGpbGqbEHbEIbGpbGsbTybGubASbDZbwHbwGbwAbwzbwCbwBbwDbwDbwEbAabAabAabUQbAabAabAabAabAabAabAabAabAabAabAabAabAaecmeclecpbAabAabAabAabAabTAbAaauWauWauWauWbNiauWaxoaBsecvauWbzXbBxbBxbwXbxebTCbTWbTQbIVbwYbxbbwZbwQbPZbwRbTXbwMbwNbwObwPbwTbwVbwWbEMbEKbAgbAybAybATbAgbAqboobhQbhQbhQbhQbhQbhQbhQbhQbhQbhQbBRbxkbBqbBqbuqbxibxgbFjbtCbjfbjfbjfbFCbFDbFybjfbjfbjfbjfbjfbxmbxlbxnbTYbTYbTYbTYbTYbTYbTYbTYbTYbTYbTYbTYbTYbTYbTYbTYbTYbTYbTYbTYbTYbTYbTYbxXbmNbmNbtnbjBbjBbjSbjSbBSbjSbjSbjBbjBaaeaaeaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabrtbrtbrtbrtbrtbrtbrtbrtbrtbrtbrtbrtbrtbrtbrtbrtbrtbrtaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabGpbGqbEHbEIbGpbGsbTybGubASbDZbwHbwGbwAbwzbwCbwBbwDbwDbwEbAabAabAabUQbAabAabAabAabAabAabAabAabAabAabAabAabAaecmeclecpbAabAabAabAabAabTAbAaauWauWauWauWbNiauWaxoaBsecvauWbzXbBxbBxbwXbxebTCbTWbTQbIVbwYbxbbwZbwQbPZbwRbTXbwMbwNbwObwPbwTbwVbwWbEMbEKbAgbAybAybATbAgbAqboobhQbhQbhQbhQbhQbhQbhQbhQbhQbhQbBRbxkbBqbBqbuqbxibxgbFjbtCbjfbjfbjfbFCbFDbFybjfbjfbjfbjfbjfbxmbxlbxnbTYbTYbTYbTYbTYbTYbTYbTYbTYbTYbTYbTYbTYbTYbTYbTYbTYbTYbTYbTYbTYbTYbTYbxXbmNbmNbtnbjBbjBbjSbjSbBSbjSbjSbjBbjBaaeaaeaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabrtbrtbrtbrtbrtbrtbrtbrtbrtbrtbrtbrtbrtbrtbrtbrtbrtbrtaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabBTbHBbHCbHBbBTbHDbFSbFMbFPbTfbHHbEWbxrbxpbAUbxobHLbxtbFLbAUbxxbxybnqbkiaaaaaaaaaaaabGFbGfbHRbxwbHTblObQCbCtbxEbHXbBYbCtbxKbxFbxMbxLbxAbxzbLqbxBbTZbkLbxDbmvbmvbmvbmvbymbBmbBlbBlbBkbymbUabUebUbbubbxbbxObxNbykbxPbyibyjbygbyhbxZbyabyqbyrbwWbGebAybAybypbAgbAgbGebAqboobhQbGkbGrbCxbUUbCMbHEbGObGvbhQbCLbysbDpbDpbuqbyubytbGlbGwbDjbDMbDObDTbGMbGEbDsbDHbDJbDXbjfbywbyvbywbngbngbngbngbngaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaeaaaaaabxYbjBbxXbjBbjBbjSbjSbjSbjSbjSbjSbjSbjBbjBaaeaaeaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabrtbrtbrtbrtbrtbrtbrtbrtbrtbrtbrtbrtbrtbrtbrtbrtbrtbrtaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabBTbHBbHCbHBbBTbHDbFSbFMbFPbTfbHHbEWbxrbxpbAUbxobHLbxtbFLbAUbxxbxybnqbkiaaaaaaaaaaaabGFbGfbHRbxwbHTblObQCbCtbxEbHXbBYbCtbxKbxFbxMbxLbxAbxzbLqbxBbTZbkLbxDbmvbmvbmvbmvbymbBmbBlbBlbBkbymbUabUebUbbubbxbbxObxNbykbxPbyibyjbygbyhbxZbyabyqbyrbwWbGebAybAybypbAgbAgbGebAqboobhQbGkbGrbCxbUUbCMbHEbGObGvbhQbCLbysbDpbDpbuqbyubytbGlbGwbDjbDMbDObDTbGMbGEbDsbDHbDJbDXbjfbywbyvbywbngbngbngbngbngaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaeaaaaaabxYbjBbxXbjBbjBbjSbjSbjSbjSbjSbjSbjSbjBbjBaaeaaeaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabrtbrtbrtbrtbrtbrtbrtbrtbrtbrtbrtbrtbrtbrtbrtbrtbrtaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabGpbHBbHBbHBbNvbNnbEWbOgbNdbNcbEWbEWbEsbJibAUbAUbAUbAUbAUbAUbEgbEhbEebEfaaabEdbnmbnmbErbJsbHVbEnbEjbHVbEibCtbDRbDQbDPbCtbDLbDBbDAbDzbEcbDYbDWbGHbGHbkLbDVbDUcjhbClbFtbymbzXbFvbBxbBxbFkbUlbOmbUmbIVbFqbFsbFrbENbPZbEYbFabPZbFebFfbFhbEEbEJbwWbAqbAqbAqbAqbAqbAqbAqbAqbpjbhQbKFbUGbUFbCxbCxbCxbCxbEDbhQbKtbAlbKpbKpbuqbSnbECbOWbEBbKgbKgbKgbKgbKhbIYbIYbKibKobJYbjfbEzbBJbEvbngbExbEwbJAbJzaaeaaeaaeaaeaaeaaeaaeaaeaaeaaeaaeaaeaaeaaeaaeaaeaaeaaebtybjBbptbpubpubjSbjSbjSbjSbjSbjSbjSbjSbjBbjBaaeaaeaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabrtbrtbrtbrtbrtbrtbrtbrtbrtbrtbrtbrtbrtbrtbrtbrtbrtaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabGpbHBbHBbHBbNvbNnbEWbOgbNdbNcbEWbEWbEsbJibAUbAUbAUbAUbAUbAUbEgbEhbEebEfaaabEdbnmbnmbErbJsbHVbEnbEjbHVbEibCtbDRbDQbDPbCtbDLbDBbDAbDzbEcbDYbDWbGHbGHbkLbDVbDUcjhbClbFtbymbzXbFvbBxbBxbFkbUlbOmbUmbIVbFqbFsbFrbENbPZbEYbFabPZbFebFfbFhbEEbEJbwWbAqbAqbAqbAqbAqbAqbAqbAqbpjbhQbKFbUGbUFbCxbCxbCxbCxbEDbhQbKtbAlbKpbKpbuqbSnbECbOWbEBbKgbKgbKgbKgbKhbIYbIYbKibKobJYbjfbEzbBJbEvbngbExbEwbJAbJzaaeaaeaaeaaeaaeaaeaaeaaeaaeaaeaaeaaeaaeaaeaaeaaeaaeaaebtybjBbptbpubpubjSbjSbjSbjSbjSbjSbjSbjSbjBbjBaaeaaeaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabrtbrtbrtbrtbrtbrtbrtbrtbrtbrtbrtbrtbrtbrtbrtaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabBTbHCbHCbHCbBTbKKbQvbQebKNbOUbEWbEWbFYbFWbFUbFxbFxbFxbFxbFxbFxbFzbFAbBtaaabCObLabFwbLcbLdbHVbFEbFBbHUbLgbCtbFHbYpbFIbCtbLlbLmbLnbFFbFObFNbFTbGHbFJbClbFKbmvbClbClbGSbymbFmbCgbFlbETbBxbUWbVbbTcbVkbGQbGPbGNbGWbGXbzzbmKbGYbFebFhbFhbEEbGTbwWbKwbVlbGVbmobKybVmbGxbkybpjbhQbCxbCxbLEbCxbCxbCxbCxbRqbhQbLCbAlbHPbHPbuqbGGbGJbGKbGLbGzbGzbGzbGzbGAbGzbGBbGCbGDbGobGmbGibGgbGdbGcbGbbGabFZbKJaaeaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabVnaaaaaeaaaaaabjBbjBbkQbjSbjSbjSbjSbjSbjSbjSbjSbjSbjSbjSbjBbjBaaeaaeaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabrtbrtbrtbrtbrtbrtbrtbrtbrtbrtbrtbrtbrtbrtbrtaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabBTbHCbHCbHCbBTbKKbQvbQebKNbOUbEWbEWbFYbFWbFUbFxbFxbFxbFxbFxbFxbFzbFAbBtaaabCObLabFwbLcbLdbHVbFEbFBbHUbLgbCtbFHbYpbFIbCtbLlbLmbLnbFFbFObFNbFTbGHbFJbClbFKbmvbClbClbGSbymbFmbCgbFlbETbBxbUWbVbbTcbVkbGQbGPbGNbGWbGXbzzbmKbGYbFebFhbFhbEEbGTbwWbKwbVlbGVbmobKybVmbGxbkybpjbhQbCxbCxbLEbCxbCxbCxbCxbRqbhQbLCbAlbHPbHPbuqbGGbGJbGKbGLbGzbGBbjTbjTbjUbmmbjTbjTbjTbmpbGmbGibGgbGdbGcbGbbGabFZbKJaaeaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabVnaaaaaeaaaaaabjBbjBbkQbjSbjSbjSbjSbjSbjSbjSbjSbjSbjSbjSbjBbjBaaeaaeaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabrtbrtbrtbrtbrtbrtbrtbrtbrtbrtbrtbrtaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaafaaaaaaaaaaaaaaaaaabGpbMwbMxbMybGpbMzbTybGubASbASbMAbMAbMAbASbASbkibBhbBhbkgbkgbkgbkgbnqbBtaaabBzbBubBwcdrbBDbBAbBBbVsbVpbVpbVMbBnbBjbBibCtbGHbGHbGHbGHbGHbVNbGHbGHbBsbBrbBpbmvbClbCjbCpbymbEbbCgbBxbCibHdbUWbVObSTbVQbCcbCebCdbCabLtbCbbtKbLhbBWbBXbBZbVUbBUbwWbBVbBMbBObmobBPbCEbCDbkybpjbhQbhQbhQbLEbCxbCxbCxbhQbhQbhQbCAbCybHPbHPbuqbCwbmlbGlbGwbHAbHybHzbHtbHubCsbCvbCqbCrbBIbjfbBKbBJbBLbngbHlbHkbBHbGnaaeaaeaaeaaeaaeaaeaaeaaeaaeaaeaaeaaeaaeaaeaaeaaeaaeaaebjBbjSbjSbjSbjSbjSbjSbjXbjSbHmbjSbjSbjSbjSbjSbjBbjBaaeaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabrtbrtbrtbrtbrtbrtbrtbrtbrtbrtbrtbrtaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaafaaaaaaaaaaaaaaaaaabGpbMwbMxbMybGpbMzbTybGubASbASbMAbMAbMAbASbASbkibBhbBhbkgbkgbkgbkgbnqbBtaaabBzbBubBwcdrbBDbBAbBBbVsbVpbVpbVMbBnbBjbBibCtbGHbGHbGHbGHbGHbVNbGHbGHbBsbBrbBpbmvbClbCjbCpbymbEbbCgbBxbCibHdbUWbVObSTbVQbCcbCebCdbCabLtbCbbtKbLhbBWbBXbBZbVUbBUbwWbBVbBMbBObmobBPbCEbCDbkybpjbhQbhQbhQbLEbCxbCxbCxbhQbhQbhQbCAbCybHPbHPbuqbCwbmlbGlbGwbHAbHybHzbHtbHubnKbCvbIYbCrbBIbjfbBKbBJbBLbngbHlbHkbBHbGnaaeaaeaaeaaeaaeaaeaaeaaeaaeaaeaaeaaeaaeaaeaaeaaeaaeaaebjBbjSbjSbjSbjSbjSbjSbjXbjSbHmbjSbjSbjSbjSbjSbjBbjBaaeaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabNObESbNPbESbNQbMoaaeaaaaaabASbNRbNSbNTbASaaabkibCKbCJbCIbCFbCFbCFbCNbBtaaabCObNWbCPbNYbNZbHVbMQbCQbMSbOdbCtbCRbqLbCTbVYbWdbWdbWdbWibWibWjbCYbClbClbClboJbmvbmvbmvbmvbymbymbDfbHwbDebymbWpbWXbWWbWZbWYbWpbXjbXmbXkbYzbXnbWpbwWbwWbwWbwWbwWbwWbDmbDibDlbmobDgbDvbDubkybpjbhQblzbYGbYAbIRbIQbITbISblzblUbDtbDrbOcblTbuqbDybmlbOabtCbjfbjfbjfbjfbjfbjfbjfbDxbIYbDabjfbnfcfdbnfbngbMYbIJbIGbngaaeaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaeaaaaaabjBbulbulbulbulbulbulbILbjSbuPbulbHmbjSbjSbjSbjSbjBaaeaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabNObESbNPbESbNQbMoaaeaaaaaabASbNRbNSbNTbASaaabkibCKbCJbCIbCFbCFbCFbCNbBtaaabCObNWbCPbNYbNZbHVbMQbCQbMSbOdbCtbCRbqLbCTbVYbWdbWdbWdbWibWibWjbCYbClbClbClboJbmvbmvbmvbmvbymbymbDfbHwbDebymbWpbWXbWWbWZbWYbWpbXjbXmbXkbYzbXnbWpbwWbwWbwWbwWbwWbwWbDmbDibDlbmobDgbDvbDubkybpjbhQblzbYGbYAbIRbIQbITbISblzblUbDtbDrbOcblTbuqbDybmlbOabtCbjfbjfbjfbjfbjfbsObjfbvgbIYbDabjfbnfcfdbnfbngbMYbIJbIGbngaaeaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaeaaaaaabjBbulbulbulbulbulbulbILbjSbuPbulbHmbjSbjSbjSbjSbjBaaeaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaeaaeaaeaaeaaeaaeaaeaaeaaeaaeaaeaaeaaeaaeaaeaaebnIbkibkibkibkibkgbnubnqbntaaabnnbnmbnmbnkbnlbHVbHVbnibHVbnhbCtbkpbkobnHbCtbgXbgXbgXbgXbgXbgXbgXbgXbnGbnBbZebYObZkbZibmvbymblCbmwbvJbmxbvMbZlbZYbZFcaccabcatbZYcavcaucaAcaycaEbmVbmWbmibmXbmYbidbnabncbnabmoblYbmbblYbkybpjbhQbmecaIcaFbmhbmgbplbmfbDqblUbuqbmjbuqbuqbuZbsabmlbsabvaaaebjcblZbvfbswcblbmpbmmbmtbnEbjfbriblSbpPbngbnwbnjbnjbolaaLaaLaaaaaaaaaaaaaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabombmNbmNbmNbmNbmNbmNbmNcbvbmLbjSbjSbjSbjSbmObmLbEOaaeaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaeaaeaaeaaeaaeaaeaaeaaeaaeaaeaaeaaeaaeaaeaaeaaebnIbkibkibkibkibkgbnubnqbntaaabnnbnmbnmbnkbnlbHVbHVbnibHVbnhbCtbkpbkobnHbCtbgXbgXbgXbgXbgXbgXbgXbgXbnGbnBbZebYObZkbZibmvbymblCbmwbvJbmxbvMbZlbZYbZFcaccabcatbZYcavcaucaAcaycaEbmVbmWbmibmXbmYbidbnabncbnabmoblYbmbblYbkybpjbhQbmecaIcaFbmhbmgbplbmfbDqblUbuqbmjbuqbuqbuZbsabmlbsabvaaaebjcblZbvfbswbCqbswbCsbmtbnEbjfbriblSbpPbngbnwbnjbnjbolaaLaaLaaaaaaaaaaaaaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabombmNbmNbmNbmNbmNbmNbmNcbvbmLbjSbjSbjSbjSbmObmLbEOaaeaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacaBcaCcaCcaDbpbbkiboZbkgbpabkiaaaaaaaaaaaabGFbQybQzbQAbQBefBbHVbCtboWboUbBYbCtbgXbmEbmGbmFbmCcbFbmDbgXccbccbccbccbccbboJbnZbnXcclboMbpkboLboQccNcdlccWcdscdmcdscducdscdycdDcdAcdGbokbojbokbozboCbrkboyboGboIboDboEbnMbnLcefcedbnQbnPbnSbnRbicbnTbnUbicbicbiabnWbnVbvYbnJbsabsabmlbsabwtaaebjcbjdcekbopcelboKbnKboYcepbjfbrXblSblXbngbngbngbngbngaaeaaeaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaeaaaaaabjBbpubpubpubpubpubpubpvbjSbptbpubkabjSbjSbjSbjSbjBaaeaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacaBcaCcaCcaDbpbbkiboZbkgbpabkiaaaaaaaaaaaabGFbQybQzbQAbQBefBbHVbCtboWboUbBYbCtbgXbmEbmGbmFbmCcbFbmDbgXccbccbccbccbccbboJbnZbnXcclboMbpkboLboQccNcdlccWcdscdmcdscducdscdycdDcdAcdGbokbojbokbozboCbrkboyboGboIboDboEbnMbnLcefcedbnQbnPbnSbnRbicbnTbnUbicbicbiabnWbnVbvYbnJbsabsabmlbsabwtaaebjcbjdcekbopcelboKbDxboYcepbjfbrXblSblXbngbngbngbngbngaaeaaeaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaeaaaaaabjBbpubpubpubpubpubpubpvbjSbptbpubkabjSbjSbjSbjSbjBaaeaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabkfbrKcbobrPbkgbkdbkjbkgbkhbkiaaMaaaaaaaaabGFbGFbGFbGFbGFbGFbCtbCtbkpbkobkmbCtbCtceqbgwbgxbgxbgwbgvbgXceWceuceuceYccbbisbymbymbqxbirbrlbfEbiAceZcfWcflcfYcfXcgacfZcgccgbcghcggcgibiFbiIbiJbiIbjgbjhbjnbiZbjabjbbjeblybjwblxblwblubqDbqDbjqbjIbjHbjGbjFbjEbjCbjzcgjbjMbjQbjLbjMcgmbjKbrWaaebjcbjdbszbswbjTbjUbjRcgnbjmbjfblXblSbnebmkbnfaaeaaeaaeaaeaaeaaeaaeaaeaaeaaeaaeaaeaaeaaeaaeaaeaaeaaeaaeaaeaaebjBbjSbjSbjSbjSbjSbjSbjXbjSbkabjSbjSbjSbjSbjSbjBbjBaaeaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabkfbrKcbobrPbkgbkdbkjbkgbkhbkiaaMaaaaaaaaabGFbGFbGFbGFbGFbGFbCtbCtbkpbkobkmbCtbCtceqbgwbgxbgxbgwbgvbgXceWceuceuceYccbbisbymbymbqxbirbrlbfEbiAceZcfWcflcfYcfXcgacfZcgccgbcghcggcgibiFbiIbiJbiIbjgbjhbjnbiZbjabjbbjeblybjwblxblwblubqDbqDbjqbjIbjHbjGbjFbjEbjCbjzcgjbjMbjQbjLbjMcgmbjKbrWaaebjcbjdbszbswbGobswbGAcgnbjmbjfblXblSbnebmkbnfaaeaaeaaeaaeaaeaaeaaeaaeaaeaaeaaeaaeaaeaaeaaeaaeaaeaaeaaeaaeaaebjBbjSbjSbjSbjSbjSbjSbjXbjSbkabjSbjSbjSbjSbjSbjBbjBaaeaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaccecaCcaCcaDblBblAblRbkibpibkiblJcgtcgDblJblJblKcgGblMblNblPblQecQblGblFblHbllblIbgwbugbjDbiNbiMchecgLchwchiciBchTccbbkMbkLbkKbkJbkIbiTbiTbldciFcjbciPbWpbWpcjCcjcbWpbWpckvcjQckwbidbnNbksbhebiKbkGbiKbiGbiHbkEbiHbiGbliblxbooblubknbkrblhbtYbtTbltbkNbhQbhQbtCbtCbtCbtCbtCblgbleblfbtCbjfbjfbjfbjfbjfbjfbjfbjfbjfbjfbjfbpdboTbpgbpebnfaaaaaeaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaeaaaaaabjBbjBbkQbjSbjSbjSbjSbjSbjSbjSbjSbjSbjSbjSbjBbjBaaeaaeaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaccecaCcaCcaDblBblAblRbkibpibkiblJcgtcgDblJblJblKcgGblMblNblPblQecQblGblFblHbllblIbgwbugbjDbiNbiMchecgLchwchiciBchTccbbkMbkLbkKbkJbkIbiTbiTbldciFcjbciPbWpbWpcjCcjcbWpbWpckvcjQckwbidbnNbksbhebiKbkGbiKbiGbiHbkEbiHbiGbliblxbooblubknbkrblhbtYbtTbltbkNbhQbhQbtCbtCbtCbtCbtCblgbleblfbtCbjfbjfbjfbjfbjfbsObjfbjfbjfbjfbjfbpdboTbpgbpebnfaaaaaeaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaeaaaaaabjBbjBbkQbjSbjSbjSbjSbjSbjSbjSbjSbjSbjSbjSbjBbjBaaeaaeaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaamaambCVaamaamaamaamaamaaaaaaaaaaaaaaaaaaaaeaaeaaabxWbxTbxTbxTbxVbxTbxTbupburblJbuockzblJbuIbuJbuGbuHckAbuEbuAbuBbuObuMbuLbxUbuKbgwbugbwLbxjbiMclnbgXclwclwclwclwclwbtQbkLbymbCnbvlbtSbtRbtIclDcnwcnpbWpbtNbtPbtObuibiDbujbukbumbwUbhebksaJzbiKbtUbtXbiGbtZbuabufbiGbtcblxbpjblublubsIbsIbsIbsIbsIbsIblubuScovcnAcowbvkbtCbtCbtFbtCbtCbvsbuUbvcbuTblXbvgblXblXbvebtlbtkcpwcpabtjbnfbnfbnfaaeaaeaaeaaeaaeaaeaaeaaeaaeaaeaaeaaeaaeaaeaaeaaeaaeaaeaaeaaebtybjBbuPbulbulbjSbjSbjSbjSbjSbjSbjSbjSbjBbjBaaeaaeaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaamaambCVaamaamaamaamaamaaaaaaaaaaaaaaaaaaaaeaaeaaabxWbxTbxTbxTbxVbxTbxTbupburblJbuockzblJbuIbuJbuGbuHckAbuEbuAbuBbuObuMbuLbxUbuKbgwbugbwLbxjbiMclnbgXclwclwclwclwclwbtQbkLbymbCnbvlbtSbtRbtIclDcnwcnpbWpbtNbtPbtObuibiDbujbukbumbwUbhebksaJzbiKbtUbtXbiGbtZbuabufbiGbtcblxbpjblublubsIbsIbsIbsIbsIbsIblubuScovcnAcowbvkbtCbtCbtFbtCbtCbvsbuUbvcbuTblXbGCblXblXbvebtlbtkcpwcpabtjbnfbnfbnfaaeaaeaaeaaeaaeaaeaaeaaeaaeaaeaaeaaeaaeaaeaaeaaeaaeaaeaaeaaebtybjBbuPbulbulbjSbjSbjSbjSbjSbjSbjSbjSbjBbjBaaeaaeaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaamaaaaaaaaaaaaaaeaaeaaaaaaaaaaaaaaaaaaaaaaaaaaaaaeaaeecwecxbsKcrecqfbthcrfbwnbwoblJbwlcrhblJblJbwubwvbwwcribwrbwsbAkblGblFblHbwibwgbgwbgwbwhbwjbgwcrlbgXcrncrmclwcrAclwboJbqZbqZbqZbqZbqZbqZbqZbWpcrQcrHbWpbrAbwfbqJbtDbiDbvTbvUbvVbwUbhebksbhebiKbvObvPbiGbvSbvQbvRbiGbvAbGIcrUcrWbKUbvIbvHbsrbvtbvvbqhcsmcshcsybBFcsBcshctsbvobvpeczctWctScuacuacuacuacuacuacuacuacuacuabvFbvzbvxbvwcucbnfbnfbnfbnfaaaaaeaaaaaaaaaaajaajaajaaeaaaaaaaaeaaaaaaaaeaaaaaabxYbjBbxXbjBbjBbjSbjSbjSbjSbjSbjSbjSbjBbjBaaeaaeaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaamaaaaaaaaaaaaaaeaaeaaaaaaaaaaaaaaaaaaaaaaaaaaaaaeaaeecwecxbsKcrecqfbthcrfbwnbwoblJbwlcrhblJblJbwubwvbwwcribwrbwsbAkblGblFblHbwibwgbgwbgwbwhbwjbgwcrlbgXcrncrmclwcrAclwboJbqZbqZbqZbqZbqZbqZbqZbWpcrQcrHbWpbrAbwfbqJbtDbiDbvTbvUbvVbwUbhebksbhebiKbvObvPbiGbvSbvQbvRbiGbvAbGIcrUcrWbKUbvIbvHbsrbvtbvvbqhcsmcshcsybBFcsBcshctsbvobvpeczctWctScuacuacuacuabGDcuacuacuacuacuabvFbvzbvxbvwcucbnfbnfbnfbnfaaaaaeaaaaaaaaaaajaajaajaaeaaaaaaaaeaaaaaaaaeaaaaaabxYbjBbxXbjBbjBbjSbjSbjSbjSbjSbjSbjSbjBbjBaaeaaeaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaamaaaaaaaaaaaaaaaaaeaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaeecCecCbsKcuHcukbthcuKbqpbqqblJbqtcwzcwacwJcwAcwXcwKcxabqHbqAbqCbqNbqLbqKbqIbqSbqQbqPbqObqVbqXcxdcxccxxcxeczecyRclwboJbqZbpEbqWbqRbpCbpBbpycBpcCKcBycCNbppbpscCTbsmbiDbsnbsobsibwUbhebksbhebiKbpKbpLbiGbrOcCVbpJbiGbqiblxblxbsTblxbqbbqcbqbbqbbqbbqabsSbybbybbxSbqobybbudecGbqkecHbuddfTbyobxsbxqdfTdfTdfTdfTbylbxsbxqdfTdfTblXbsGcDfbsNcDpcDobsEcExcEycEycEycEycEycEycEycEycEycEycEycEycEycEycEycEybpmbpnbpnbpobjBbjBbjSbjSbqmbjSbjSbjBbjBaaeaaeaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaamaaaaaaaaaaaaaaaaaeaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaeecCecCbsKcuHcukbthcuKbqpbqqblJbqtcwzcwacwJcwAcwXcwKcxabqHbqAbqCbqNbqLbqKbqIbqSbqQbqPbqObqVbqXcxdcxccxxcxeczecyRclwboJbqZbpEbqWbqRbpCbpBbpycBpcCKcBycCNbppbpscCTbsmbiDbsnbsobsibwUbhebksbhebiKbpKbpLbiGbrOcCVbpJbiGbqiblxblxbsTblxbqbbqcbqbbqbbqbbqabsSbybbybbxSbqobybbudecGbqkecHbuddfTbyobxsbxqdfTdfTdfTdfTbylbxsbxqdfTdfTblXbsGcDfbsNcDpcDobsEcExcEycEycEycEycEycEycEycEycEycEycEycEycEycEycEycEybpmbpnbpnbpobjBbjBbjSbjSbqmbjSbjSbjBbjBaaeaaeaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaamaaeaaaaaaaaaaaaaaeaaeaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabsgbsgbsgbsgbsgbsgbsgbsjbsscvgcvgcvgcvgcvgbstbsubsvbsvbsvbsAbuNblGblFblHbtsblIbttbslbtucECbspbtGbgXcHMcEKclwcHTclwbrNbqZbzxbzsbzsbzsbrMbrLbWpcIncHYbWpbrAbqJbrzbtDbiDbtAbtBbtzbwUbhebksbtJbiKbrmbrnbiGbiGbiGbiGbiGbsecIHblxbsTblxbrYbsdbrYbqdbsbbscbtibybcJabBvbrVctibudbuhbrRbrSbudbrTbADbADbADbAGbzJbzQbAsbAvbzibzabyXdfTcMgcLFcNTbnfbnfbnfbnfaaaaaeaaaaaaaaaaajaajaajaaeaaaaaaaaeaaaaaaaaeaaeaaebtrbtwbtmbtnbtybjBbjBbjSbmLbjSbjBbjBaaeaaeaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaamaaeaaaaaaaaaaaaaaeaaeaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabsgbsgbsgbsgbsgbsgbsgbsjbsscvgcvgcvgcvgcvgbstbsubsvbsvbsvbsAbuNblGblFblHbtsblIbttbslbtucECbspbtGbgXcHMcEKclwcHTclwbrNbqZbzxbzsbzsbzsbrMbrLbWpcIncHYbWpbrAbqJbrzbtDbiDbtAbtBbtzbwUbhebksbtJbiKbrmbrnbiGbiGbiGbiGbiGbsecIHblxbsTblxbrYbsdbrYbqdbsbbscbtibybcJabBvbrVctibudbuhbrRbrSbudbrTbADbADbADbAGbzJbzQbAsbAvbzibzabyXdfTcMgcLFcNTbnfbnfbnfbnfaaaaaeaaaaaaaaaaajaajaajaaeaaaaaaaaeaaaaaaaaeaaeaaebtrbtwbtmbtnbtybjBbjBbjSbmLbjSbjBbjBaaeaaeaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaamaaeaaeaaaaaaaaaaaeaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaeaaebsgctYctZcOfctXcRbbsgcufcvZdgkdgjcwYcrCcrrcrrbuKcBVcBVcBUcBZbAkblGblFblHcnCbuKcnzcRScnBcVhcnxcnybgXcWqcWiclwcWtclwboJbqZdZLdZOdZOdZOcyVbqZdYtcQHczmdYtczHdZRczodZHbiDdZGbtBcrVbwUcylcxUbxQbiKcyIcypbiKcONcdnbidcBbcugcuDcRdcRecRdcuSbqccvGbqdcvFcvEbsTbybcBrcAEcAEczIcALcAHcAMcAHcAOcANcCQcCPcCPcCRdfQdfQdgBcCUdgodgodgndfTbYUcxPbYWbYUaaaaaaaaaaaeaaeaaeaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaeaaecrLbEQbEQbFgbtybtybjBbjBbjBbjBbEOaaeaaeaaaaaaaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaamaaeaaeaaaaaaaaaaaeaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaeaaebsgctYctZcOfctXcRbbsgcufcvZdgkdgjcwYcrCcrrcrrbuKcBVcBVcBUcBZbAkblGblFblHcnCbuKcnzcRScnBcVhcnxcnybgXcWqcWiclwcWtclwboJbqZdZLdZOdZOdZOcyVbqZdYtcQHczmdYtczHdZRczodZHbiDdZGbtBcrVbwUcylcxUbxQbiKcyIcypbiKcONcdnbidcBbcugcuDcRdcRecRdcuSbqccvGbqdcvFcvEbsTbybcBrcAEcAEczIcALcAHcAMcAHcAOcANcCQcCPcCPcCRdfQdfQdgBcCUdgodgodgndfTbYUcxPbYWbYUaaaaaaaaaaaeaaeaaeaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaeaaecrLbEQbEQbFgbtybtybjBbjBbjBbjBbEOaaeaaeaaaaaaaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaamaaaaaeaaeaaebTebTebTebTebTebTebTebTebTebTebTebTebTeaaaaaacnmcnjcnjcnjcnlcWxbsgcqqcpdcnWcnQcEzcnnctVctRctIctHctCctBctActzcujcWCcuhcuibCtbgXbgXbgXbgXbgXbgXbgXclwclwclwclwclwboJbqZbqZdZrdZscuobqZbqZcupcutcuxdYtbiDbiDbiDbiDbiDbwUdZydZzbwUcqXcuycqXbiKcuAcuzbiKcJLcNGbiddZVbidearblxbsTblxcWKcuEctubqbcttcvEbsTbybcvKcvLcvLcvPcvOcvNcvUcvTcvRcvQcvWdgWcBDcBzdgicBJdfQdfQdfQdfRdfSdfTculcumcunbYUaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaeaaeaaeaaeaaeaaaaaaaaaaaaaaeaaeaaeaaeaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaamaaaaaeaaeaaebTebTebTebTebTebTebTebTebTebTebTebTebTeaaaaaacnmcnjcnjcnjcnlcWxbsgcqqcpdcnWcnQcEzcnnctVctRctIctHctCctBctActzcujcWCcuhcuibCtbgXbgXbgXbgXbgXbgXbgXclwclwclwclwclwboJbqZbqZdZrdZscuobqZbqZcupcutcuxdYtbiDbiDbiDbiDbiDbwUdZydZzbwUcqXcuycqXbiKcuAcuzbiKcJLcNGbiddZVbidearblxbsTblxcWKcuEctubqbcttcvEbsTbybcvKcvLcvLcvPcvOcvNcvUcvTcvRcvQcvWcblcBDcBzdgicBJdfQdfQdfQdfRdfSdfTculcumcunbYUaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaeaaeaaeaaeaaeaaaaaaaaaaaaaaeaaeaaeaaeaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaamaaaaaaaaaaaabTecnScqacnSbTecnOcpYcnObTecnMcpZcnMbTeaaaaaacBvcnjcnjcnlcnlcWMbsgcDacxbcvgdcVddhcFHcFlcFkcFnbYpbYpcFobYpbAkblGcEUblHcpCcBscEZcpucpEcpucEPbskcBIcCncWrcCEcCJbskboJbEaeaxbMXbMXcNicNkcNEcNFcmCcNDcNmcNscNleaeeaeeaudXBbwUbwUbwUcLscKZcLubiKbiKbiKbiKcNGcNGbidcWPbidcIfblxbsTblxcWUcDxcDxcERcEScFpcUBbybcJCcGecGecFXcGlcGjcFTcFRcFVcFUcGtcGmdfQdfQcWZdhndfQdhpdfQdfRdghdfTcFKcFMcFJbYUaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaamaaaaaaaaaaaabTecnScqacnSbTecnOcpYcnObTecnMcpZcnMbTeaaaaaacBvcnjcnjcnlcnlcWMbsgcDacxbcvgdcVddhcFHcFlcFkcFnbYpbYpcFobYpbAkblGcEUblHcpCcBscEZcpucpEcpucEPbskcBIcCncWrcCEcCJbskboJbEaeaxbMXbMXcNicNkcNEcNFcmCcNDcNmcNscNleaeeaeeaudXBbwUbwUbwUcLscKZcLubiKbiKbiKbiKcNGcNGbidcWPbidcIfblxbsTblxcWUcDxcDxcERcEScFpcUBbybcJCcGecGecFXcGlcGjcFTcFRcFVcFUcGtcGmdfQdfQcWZdhndfQdhpdfQdfRdghdfTcFKcFMcFJbYUaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaamaaaaaaaaaaaabTecnScnRcnSbTecnOcnPcnObTecnMcnNcnMbTeaaaaaacBvcnjcnlcnlcnlcYCcXdcYGcvYcvgclOcClbpIcsMcsEcBscoycoEcoDdgFbAkblGdaHcuhdaRdcHdcBdeCdeCdeCdeEdeZdeKdfNcBqcBmcBnbskboJbEaeabbMXbOscEpeaaeageahcEscEtcEqeadcEreafeaeeandXBdfXdgadfZcEBdgGcEBdgHdgRdgRdgYdgRdhabidbidbidbidblxcRfblxdhodhdcDzcDJcDybqhcUBbybdgPdgQdgQdgQccQbudcEebuddgTcDKcEfdgMdgMdgXdgWdgWdgVdgMdgMcDndgOdfTdhBdhzdhCbYUaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaamaaaaaaaaaaaabTecnScnRcnSbTecnOcnPcnObTecnMcnNcnMbTeaaaaaacBvcnjcnlcnlcnlcYCcXdcYGcvYcvgclOcClbpIcsMcsEcBscoycoEcoDdgFbAkblGdaHcuhdaRdcHdcBdeCdeCdeCdeEdeZdeKdfNcBqcBmcBnbskboJbEaeabbMXbOscEpeaaeageahcEscEtcEqeadcEreafeaeeandXBdfXdgadfZcEBdgGcEBdgHdgRdgRdgYdgRdhabidbidbidbidblxcRfblxdhodhdcDzcDJcDybqhcUBbybdgPdgQdgQdgQccQbudcEebuddgTcDKcEfdgMdgMdgXdgWdgWdgVdgMdgMcDndgOdfTdhBdhzdhCbYUaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaamaaaaaaaaaaaabTecFfcnicFebTecFdcnfcFcbTecFbcnccEVbTeaaaaaecBvdeMcnjcnlcnlcnlbsgdaTcZgdaGdaGdaLdaGdaGdaGdaGcrzbYpcrxcrybAkcWIcWLcWQcWTcWFcWGcWHcWHcWHcQkbskcQKcPBcPVcFIcDedhLdhFbEadhObMXdcMdcKdcLdbGdbNdbkdbBdcCdcEdbSdbUeaedbhdXBcmIcqzdXFdbjdbidhMdXFdfJddEddFblxdhRdgRdgRdgRdgRdgRdjddhZdlEdkQdgRdgRdgRdgRdpbbybcFwcFxcFvdhTbuddcNdcQdcOdfTdhVcFrcFrcFrdhPcvudhQdhScFrcFrcFrdhYdfTdhXddxcccccdaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaamaaaaaaaaaaaabTecFfcnicFebTecFdcnfcFcbTecFbcnccEVbTeaaaaaecBvdeMcnjcnlcnlcnlbsgdaTcZgdaGdaGdaLdaGdaGdaGdaGcrzbYpcrxcrybAkcWIcWLcWQcWTcWFcWGcWHcWHcWHcQkbskcQKcPBcPVcFIcDedhLdhFbEadhObMXdcMdcKdcLdbGdbNdbkdbBdcCdcEdbSdbUeaedbhdXBcmIcqzdXFdbjdbidhMdXFdfJddEddFblxdhRdgRdgRdgRdgRdgRdjddhZdlEdkQdgRdgRdgRdgRdpbbybcFwcFxcFvdhTbuddcNdcQdcOdfTdhVcFrcFrcFrdhPcvudhQdhScFrcFrcFrdhYdfTdhXddxcccccdaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
@@ -11445,7 +11445,7 @@ aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaactvctvctvctvctvctvctvctvctvctvctvctvctvctvctvaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaeaaeaamaaaaaaaaaaaabTecfBcgNcfBbTechVciechVbTebUhcesbUhbTeaaabTebUhbUhbVrbTeaaaaaaaaabYmcifbXTchmdYKcigcjmbYKcrjcjJcjKcjLbYrceDcakcjEcewcjFbYrcjGcjIcjHbYoaaaaaecVFedveducXaaaeaaabmvbClbClbCjbVPctUcpoctTbVPctEaaeaaeaaaaaaaaaaaaaaaaaaaaaaaabVucjOcjPdVQciGciGdVQbXKdVSbVuaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabudccCccCccCcfccihccCccCcfccihccCccCbudaafaaaciHaaaaaaaaeaaeaaeaaaaaaedwaaeaaaaaaaaeaaeaaaaaaciHaaacmdcmdcmdcmdcmdcmdcmdcmdcmdcmdcmdcmdcmdcmdcmdcmdcmdcmdcmdaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaactvctvctvctvctvctvctvctvctvctvctvctvctvctvctvaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaeaaeaamaaaaaaaaaaaabTecfBcgNcfBbTechVciechVbTebUhcesbUhbTeaaabTebUhbUhbVrbTeaaaaaaaaabYmcifbXTchmdYKcigcjmbYKcrjcjJcjKcjLbYrceDcakcjEcewcjFbYrcjGcjIcjHbYoaaaaaecVFedveducXaaaeaaabmvbClbClbCjbVPctUcpoctTbVPctEaaeaaeaaaaaaaaaaaaaaaaaaaaaaaabVucjOcjPdVQciGciGdVQbXKdVSbVuaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabudccCccCccCcfccihccCccCcfccihccCccCbudaafaaaciHaaaaaaaaeaaeaaeaaaaaaedwaaeaaaaaaaaeaaeaaaaaaciHaaacmdcmdcmdcmdcmdcmdcmdcmdcmdcmdcmdcmdcmdcmdcmdcmdcmdcmdcmdaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaactvctvctvctvctvctvctvctvctvctvctvctvctvctvctvaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaeaaAaaaaaaaaaaaebTecfBceGcfBbTechVcijchVbTebUhceIbUhbTeaaabTebUhbUhbUhbTeaaaaaaaaabYmbXZcikbYNbXZcigcjTcivcrjcjRcjWckabYrcjUckmckjckeckdbYrckrckpcknbYoaaaaaacVFedyedxcXbaaaaaabmvbClbClbmvbVPcrJcrJcrJbVPcubctmaaaaaaaaaaaaaaaaaaaaaaaaaaabVudVTckubXKbXKbXKbXKbXKdVUbVuaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaccQbudbudbudbudbudbudbudbudciKciKciKccQaaaaaaciHciHciHciHciHaaaaaaaaadyPaaaaaaaaaciHciHciHbCVciHaaacmdcmdcmdcmdcmdcmdcmdcmdcmdcmdcmdcmdcmdcmdcmdcmdcmdcmdcmdaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaactvctvctvctvctvctvctvctvctvctvctvctvctvctvctvaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaeaaAaaaaaaaaaaaebTecfBceGcfBbTechVcijchVbTebUhceIbUhbTeaaabTebUhbUhbUhbTeaaaaaaaaabYmbXZcikbYNbXZcigcjTcivcrjcjRcjWckabYrcjUckmckjckeckdbYrckrckpcknbYoaaaaaacVFedyedxcXbaaaaaabmvbClbClbmvbVPcrJcrJcrJbVPcubctmaaaaaaaaaaaaaaaaaaaaaaaaaaabVudVTckubXKbXKbXKbXKbXKdVUbVuaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaccQbudbudbudbudbudbudbudbudciKciKciKccQaaaaaaciHciHciHciHciHaaaaaaaaadyPaaaaaaaaaciHciHciHbCVciHaaacmdcmdcmdcmdcmdcmdcmdcmdcmdcmdcmdcmdcmdcmdcmdcmdcmdcmdcmdaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaactvctvctvctvctvctvctvctvctvctvctvctvctvctvctvaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaamaaaaaaaaaaaebTebTebTebTebTebTebTebTebTebTebTebTebTeaaabYybTebTebTebTeaaaaaaaaabYmcVjbXTbXZbXZbYacbHcbIcbKcbLcbycbAcbEcbGcbScbRcbVcbTcbOcbMcbQcbPbYoaaeaaaedzcVvcVucVFciWaaabmvcbwbClcbxciIaaeaaeaaeaaaciMaaeaaeaaaaaaaaaaaaaaaaaaaaaaaabZJbVubVubXCdVZdVQdVQdVQdVYbXCaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabXlbXlbXlaaaaaaaaaaaaaaaaaaaaaaaaaaaciHaaeedAaaeciHaaaaaaaaaaaaaaaaaaaaacmdcmdcmdcmdcmdcmdcmdcmdcmdcmdcmdcmdcmdcmdcmdcmdcmdcmdcmdaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaactvctvctvctvctvctvctvctvctvctvctvctvctvctvctvaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaamaaaaaaaaaaaebTebTebTebTebTebTebTebTebTebTebTebTebTeaaabYybTebTebTebTeaaaaaaaaabYmcVjbXTbXZbXZbYacbHcbIcbKcbLcbycbAcbEcbGcbScbRcbVcbTcbOcbMcbQcbPbYoaaeaaaedzcVvcVucVFciWaaabmvcbwbClcbxciIaaeaaeaaeaaaciMaaeaaeaaaaaaaaaaaaaaaaaaaaaaaabZJbVubVubXCdVZdVQdVQdVQdVYbXCaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabXlbXlbXlaaaaaaaaaaaaaaaaaaaaaaaaaaaciHaaeedAaaeciHaaaaaaaaaaaaaaaaaaaaacmdcmdcmdcmdcmdcmdcmdcmdcmdcmdcmdcmdcmdcmdcmdcmdcmdcmdcmdaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaactvctvctvctvctvctvctvctvctvctvctvctvctvctvctvaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaamaaaaaaaaeaaeaaaaaaaaaaaaaaaaaaaaaaaeaaeaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabYmbYQbXTbYNbXZcigbXRbYKcrjccoccjedBbYredCccicchccgbYvbYrccfedGedEbYoaaLcVGcVGcVGcVGcVGcVGcVGbmvcbZcbYccaaaeaaaaaaaaeedHciXaaeaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabYCciGciGciGciGciGbYCaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaciHaaaaaeaaaciHaaaaaaaaaaaaaaaaaacmdcmdcmdcmdcmdcmdcmdcmdcmdcmdcmdcmdcmdcmdcmdcmdcmdcmdcmdcmdcmdaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaactvctvctvctvctvctvctvctvctvctvctvctvctvctvctvaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaamaaaaaaaaeaaeaaaaaaaaaaaaaaaaaaaaaaaeaaeaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabYmbYQbXTbYNbXZcigbXRbYKcrjccoccjedBbYredCccicchccgbYvbYrccfedGdiYbYoaaLcVGcVGcVGcVGcVGcVGcVGbmvcbZcbYccaaaeaaaaaaaaeedHciXaaeaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabYCciGciGciGciGciGbYCaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaciHaaaaaeaaaciHaaaaaaaaaaaaaaaaaacmdcmdcmdcmdcmdcmdcmdcmdcmdcmdcmdcmdcmdcmdcmdcmdcmdcmdcmdcmdcmdaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaactvctvctvctvctvctvctvctvctvctvctvctvctvctvctvaaaaaaaaaaaaaaaaaaaaaaaaaaaaafaaaaaaaaaaaaaaaaaaaamaaaaaeaaeaaaaaaaaaaaaaaaaaaaaaaaaaaaaaeaaaaaaaaaaaacjgaaaaaaaaaaaaaaaaaaaaaaaabZbbZdbZfbZmdYLccAccvbYKcrjccwccxccycczcjjccGccFccHcjwbYrcjAedIcjBbYoaaacVGcVGcVGcVGcVGcVGcVGedKccsccpbmvaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabVubYXbYRbYRbYRbYTbVuaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaciHciHciHciHciHaaaaaaaaaaaaaaaaaacmdcmdcmdcmdcmdcmdcmdcmdcmdcmdcmdcmdcmdcmdcmdcmdcmdcmdcmdcmdcmdaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaactvctvctvctvctvctvctvctvctvctvctvctvctvctvctvaaaaaaaaaaaaaaaaaaaaaaaaaaaaafaaaaaaaaaaaaaaaaaaaamaaaaaeaaeaaaaaaaaaaaaaaaaaaaaaaaaaaaaaeaaaaaaaaaaaacjgaaaaaaaaaaaaaaaaaaaaaaaabZbbZdbZfbZmdYLccAccvbYKcrjccwccxccycczcjjccGccFccHcjwbYrcjAedIcjBbYoaaacVGcVGcVGcVGcVGcVGcVGedKccsccpbmvaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabVubYXbYRbYRbYRbYTbVuaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaciHciHciHciHciHaaaaaaaaaaaaaaaaaacmdcmdcmdcmdcmdcmdcmdcmdcmdcmdcmdcmdcmdcmdcmdcmdcmdcmdcmdcmdcmdaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaactvctvctvctvctvctvctvctvctvctvctvctvctvctvctvaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaamaaeaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaeaaaaaaaaaaaaaaaaaaaaeaaaaaaaaaaaaaaaaaaaaacfRcfRcfRcfRcfRcjSbZjbZjbZjbZjedLbZjccUccMccPccMccLbZjbZjbZnbZjbZjbZjcVGcVGcVGcVGcVGcVGcVGaaeaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacmdcmdcmdcmdaaaaaacmdcmdcmdcmdcmdcmdcmdaaaaaacmdcmdcmdcmdaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaactvctvctvctvctvctvctvctvctvctvctvctvctvctvctvaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaamaaeaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaeaaaaaaaaaaaaaaaaaaaaeaaaaaaaaaaaaaaaaaaaaacfRcfRcfRcfRcfRcjSbZjbZjbZjbZjedLbZjccUccMccPccMccLbZjbZjbZnbZjbZjbZjcVGcVGcVGcVGcVGcVGcVGaaeaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacmdcmdcmdcmdaaaaaacmdcmdcmdcmdcmdcmdcmdaaaaaacmdcmdcmdcmdaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaactvctvctvctvctvctvctvctvctvctvctvctvctvctvctvctvctvaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaAaaaaaaaaeaaeaaaaaeaaeaaaaaaaaeaaeaaeaaaaaaaaaaaaaaaaaaaaaaaacjYcaacaacaaclQclMclRclzclVcjZckoctkckqcksccXcdbcdecyUcCucBEcCucCucBobZCbZHckWbZEbZjcVGcVGcVGcVGcVGcVGcVGaaeaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacmdcmdcmdcmdcmdcmdcmdaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaactvctvctvctvctvctvctvctvctvctvctvctvctvctvctvctvctvaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaAaaaaaaaaeaaeaaaaaeaaeaaaaaaaaeaaeaaeaaaaaaaaaaaaaaaaaaaaaaaacjYcaacaacaaclQclMclRclzclVcjZckoctkckqcksccXcdbcdecyUcCucBEcCucCucBobZCbZHckWbZEbZjcVGcVGcVGcVGcVGcVGcVGaaeaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacmdcmdcmdcmdcmdcmdcmdaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
@@ -11650,7 +11650,7 @@ aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacFYeidcFYaaaaaaaaaaaacFYeiBeizeiAcJHcJHcFYcJfcJjcIQcJfcJkcIQcJlcJmcIQcJfcJjcIQcJncIRdRcdRbdRadQZcJqcGrcIScITcIScGrcJrcJscJtcJucJucIRaaaaaacGFcHbcHbcHbcHbcHbcHbcHbcHbcHccHdaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaeeJaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadqLdqLdqLdqLdqLdqLdqLdqLdqLdqL aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacFYeidcFYaaaaaaaaaaaacFYeiBeizeiAcJHcJHcFYcJfcJjcIQcJfcJkcIQcJlcJmcIQcJfcJjcIQcJncIRdRcdRbdRadQZcJqcGrcIScITcIScGrcJrcJscJtcJucJucIRaaaaaacGFcHbcHbcHbcHbcHbcHbcHbcHbcHccHdaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaeeJaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadqLdqLdqLdqLdqLdqLdqLdqLdqLdqL
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacFYeiicFYcFYcFYcFYcFYcFYefLcJEcJEcJEeiCcFYcJGcJmcIQcJGcJgcIQcJGcJjcIQcJGcJicIQcJncIRcJIcJJcJJcJJcJJcGrcIScITcIScGrcJucJucJucJucJucIRaaaaaacJKcJKcJKcJKcJKcJKcJKcJKcJKcJKcJKcIRcIRcIRcIRcIRcIRcIRcIRcIRcIRaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaeeJaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadqLdqLdqLdqLdqLdqLdqLdqLdqL aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacFYeiicFYcFYcFYcFYcFYcFYefLcJEcJEcJEeiCcFYcJGcJmcIQcJGcJgcIQcJGcJjcIQcJGcJicIQcJncIRcJIcJJcJJcJJcJJcGrcIScITcIScGrcJucJucJucJucJucIRaaaaaacJKcJKcJKcJKcJKcJKcJKcJKcJKcJKcJKcIRcIRcIRcIRcIRcIRcIRcIRcIRcIRaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaeeJaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadqLdqLdqLdqLdqLdqLdqLdqLdqL
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacIPcIPcIPcIPcIPcFYcLteieeigeihcJceifcFYeiDcJEcJEcJEeiCcFYcIQcIQcIQcIQcIQcIQcIQcIQcIQcIQcIQcIQcJncIRcJIcJJcJJcJJcJJcGrcGrcIKcGrcGrcJucJucJucJucJucIRcJKcJKcJKcJKcJKcJKcJNcJOcJPcIRcJQcJQcJQcIRcJQcJQcJQcJQcJQcJQcJQcJQcIRaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaeeJaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadqLdqLdqLdqLdqLdqLdqLdqL aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacIPcIPcIPcIPcIPcFYcLteieeigeihcJceifcFYeiDcJEcJEcJEeiCcFYcIQcIQcIQcIQcIQcIQcIQcIQcIQcIQcIQcIQcJncIRcJIcJJcJJcJJcJJcGrcGrcIKcGrcGrcJucJucJucJucJucIRcJKcJKcJKcJKcJKcJKcJNcJOcJPcIRcJQcJQcJQcIRcJQcJQcJQcJQcJQcJQcJQcJQcIRaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaeeJaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadqLdqLdqLdqLdqLdqLdqLdqL
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacIXcIPcIPcIPcIPcIPcIPcIPcIPcIPcIPcIPcIPcIPcIPcIPcIPcIPcIPcIPcIPcIYcIZcJbcJTdmScLtcJEcJEcJEcJEefPcFYdiYcJEcJEcJEehVcFYcJYcJicIQcJfcJicIQcJZcJjcIQcJfcJmcIQcJncIRcKadQYdPKcKccKdcIRcKecKecKecIRcJucJucJucJucJucIRcKfcKgcKfcKhcKicJKcKjcKjcKjcKkcJQcJQcJQcKkcJQcKlcKmcKlcJQcKncKocKpcIRaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaeeJaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadqLdqLdqLdqLdqLdqLdqL aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacIXcIPcIPcIPcIPcIPcIPcIPcIPcIPcIPcIPcIPcIPcIPcIPcIPcIPcIPcIPcIPcIYcIZcJbcJTdmScLtcJEcJEcJEcJEefPcFYdVacJEcJEcJEehVcFYcJYcJicIQcJfcJicIQcJZcJjcIQcJfcJmcIQcJncIRcKadQYdPKcKccKdcIRcKecKecKecIRcJucJucJucJucJucIRcKfcKgcKfcKhcKicJKcKjcKjcKjcKkcJQcJQcJQcKkcJQcKlcKmcKlcJQcKncKocKpcIRaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaeeJaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadqLdqLdqLdqLdqLdqLdqL
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacJvcJwcJwcJwcJwcJwcJwcJwcJwcJwcJwcJwcJwcJwcJxcJycJwcJwcJwcJzcJxcJAcJBcJDefMcFYefNcJEcJEcJEcJEcJVcFYeeBcJEcJEcJEefjcFYcJGcJjcJhcJGcJjcIQcJGcJXcIQcJGcKtcIQcJncIRcKucIRcKvcKwcKxcIRcJJcJJcJJcIRcKvcKwcKycIRcKzcIRcKAcKBcKAcKBcKAcJKcIRcIRcIRcIRcJQcJQcJQcIRcKCcKDcKlcKEcKCcKFcKGcKGcIRaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaeeJaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadqLdqLaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadqLdqLdqLdqLdqLdqL aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacJvcJwcJwcJwcJwcJwcJwcJwcJwcJwcJwcJwcJwcJwcJxcJycJwcJwcJwcJzcJxcJAcJBcJDefMcFYefNcJEcJEcJEcJEcJVcFYeeBcJEcJEcJEefjcFYcJGcJjcJhcJGcJjcIQcJGcJXcIQcJGcKtcIQcJncIRcKucIRcKvcKwcKxcIRcJJcJJcJJcIRcKvcKwcKycIRcKzcIRcKAcKBcKAcKBcKAcJKcIRcIRcIRcIRcJQcJQcJQcIRcKCcKDcKlcKEcKCcKFcKGcKGcIRaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaeeJaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadqLdqLaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadqLdqLdqLdqLdqLdqL
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacIXcIPcIPcIPcIPcIPcIPcIPcIPcIPcIPcIPcIPcIPcIPcIPcIPcIPcIPcIPcIPcIPcIPcIPcIPcFYdjbcJEcJEcJEcJEeiacFYeibcJEcJEeiccFYcFYcFYcIPcIPcIPcIPcIPcIPcIPcIPcIPcIPcIPcJncIRcJJcJJcKKcKbcKbcKbcKbcKbcKbcKbcKbcKbcKLcJJcJJcKMcKAcKAcKAcKAcKAcJKcKNcKjcJNcIRcJQcJQcJQcIRcKOcKOcKPcKOcKOcKFcKGcKGcIRaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaeeJaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadqLdqLdqLdqLaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadqLdqLdqLdqLdqL aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacIXcIPcIPcIPcIPcIPcIPcIPcIPcIPcIPcIPcIPcIPcIPcIPcIPcIPcIPcIPcIPcIPcIPcIPcIPcFYdjbcJEcJEcJEcJEeiacFYeibcJEcJEeiccFYcFYcFYcIPcIPcIPcIPcIPcIPcIPcIPcIPcIPcIPcJncIRcJJcJJcKKcKbcKbcKbcKbcKbcKbcKbcKbcKbcKLcJJcJJcKMcKAcKAcKAcKAcKAcJKcKNcKjcJNcIRcJQcJQcJQcIRcKOcKOcKPcKOcKOcKFcKGcKGcIRaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaeeJaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadqLdqLdqLdqLaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadqLdqLdqLdqLdqL
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacIXcIPcIPcIPcIPcIPcIPcIPcIPcIPcIPcIPcIPcIPcIPcIPcIPcIPcIPcIPcIPcIYdpicJDehWcFYehXefCefCdvmcJEcFYcFYehYcJEcJEcKScFYefJefKcFYdmUdmUdmUdmUdmUdmUdmTcLacLbcIPcJncIRcJJcJJcLccLdcLecLecLecLecLecLecLecLfcJIcJJcJJcJKcLgcLhcLicLjcLkcJKcLlcKjcJOcIRcJQcJQcJQcIRcLmcLmcKjcLmcLmcKFcKGcKGcIRaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaeeOaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadqLdqLdqLdqLdqLaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadqLdqLdqLdqLdqL aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacIXcIPcIPcIPcIPcIPcIPcIPcIPcIPcIPcIPcIPcIPcIPcIPcIPcIPcIPcIPcIPcIYdpicJDehWcFYehXefCefCdvmcJEcFYcFYehYcJEcJEcKScFYefJefKcFYdmUdmUdmUdmUdmUdmUdmTcLacLbcIPcJncIRcJJcJJcLccLdcLecLecLecLecLecLecLecLfcJIcJJcJJcJKcLgcLhcLicLjcLkcJKcLlcKjcJOcIRcJQcJQcJQcIRcLmcLmcKjcLmcLmcKFcKGcKGcIRaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaeeOaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadqLdqLdqLdqLdqLaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadqLdqLdqLdqLdqL
@@ -12379,7 +12379,7 @@ aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadHndHndHndHndHndH
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadHndHndHndHndHndHndHndHndHndHndHndHndHVdHVdHndHndHndHndHndHndHndHndHndHndHndHndHndHndHndHndHndHndsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadGpdGpdGpdGpdGpdGpdsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsaaaaaaaaaaaaaaaaaaaaaaaaaaaadsadsadsadsadsadsadsadqTdqTdBvdCidCidCidHSdCidCidCidCidIeegPegOegRegQegVegUegXegWegMegSegTegMdsadsadsadsadsadsadsadsadsadsadqTdqTdqTdsadsadsadsadqTdqTdqTdqTdqTaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadHndHndHndHndHndHndHndHndHndHndHndHndHVdHVdHndHndHndHndHndHndHndHndHndHndHndHndHndHndHndHndHndHndsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadGpdGpdGpdGpdGpdGpdsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsaaaaaaaaaaaaaaaaaaaaaaaaaaaadsadsadsadsadsadsadsadqTdqTdBvdCidCidCidHSdCidCidCidCidIeegPegOegRegQegVegUegXegWegMegSegTegMdsadsadsadsadsadsadsadsadsadsadqTdqTdqTdsadsadsadsadqTdqTdqTdqTdqTaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadHndHndHndHndHndHndHndHndHndHndHndHndHVdHVdHndHndHndHndHndHndHndHVdHVdHVdHndHndHndHndHndHndHndHndHndsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadGpdGpdGpdsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsaaaaaaaaaaaaaaaaaaaaaaaaadsadsadsadsadsadsadsadqTdqTdBvdBvdCidCidHSdCidCidCidCiehcegZegYehbehaehhehgehjehieheehdehfegMdsadsadsadsadsadsadsadsadsadsadsadsadqTdqTdsadsadsadsadqTdqTdqTdqTaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadHndHndHndHndHndHndHndHndHndHndHndHndHVdHVdHndHndHndHndHndHndHndHVdHVdHVdHndHndHndHndHndHndHndHndHndsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadGpdGpdGpdsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsaaaaaaaaaaaaaaaaaaaaaaaaadsadsadsadsadsadsadsadqTdqTdBvdBvdCidCidHSdCidCidCidCiehcegZegYehbehaehhehgehjehieheehdehfegMdsadsadsadsadsadsadsadsadsadsadsadsadqTdqTdsadsadsadsadqTdqTdqTdqTaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadHndHndHndHndHndHndHndHndHndHndHndHndHndHndHndHndHndHndHndHndHndHVdHVdHVdHVdHndHndHndHndHndHndHndHndHndHndsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsaaaaaaaaaadqTaaaaaaaaaaaadsadsadsadsadsadsadsadqTdqTdqTdBvdCidCidHSdCidCidCidCiegMegMegMegMegMegMehmehoehnegMehkehlegMdsadsadsadsadsadsadsadsadsadsadsadsadsadsadqTdqTdsadsadsadqTdqTdqTaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadHndHndHndHndHndHndHndHndHndHndHndHndHndHndHndHndHndHndHndHndHndHVdHVdHVdHVdHndHndHndHndHndHndHndHndHndHndsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsaaaaaaaaaadqTaaaaaaaaaaaadsadsadsadsadsadsadsadqTdqTdqTdBvdCidCidHSdCidCidCidCiegMegMegMegMegMegMehmehoehnegMehkehlegMdsadsadsadsadsadsadsadsadsadsadsadsadsadsadqTdqTdsadsadsadqTdqTdqTaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadHndHndHndHndHndHndHndHndHndHndHndHndHndHndHndHndHndHndHndHndHndHVdHVdHVdHVdHndHndHndHndHndHndHndHndHndHndsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsaaaaaaaaaadsadsadsaaaaaaadsadsadsadsadsadsadsadsadsadqTdBvdCidCidIadIcehuehtehtehvehqehpehsehrehAehzehgehBehxehwehyegMdsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadqTdqTdqTdsadsadqTdqTaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadHndHndHndHndHndHndHndHndHndHndHndHndHndHndHndHndHndHndHndHndHndHVdHVdHVdHVdHndHndHndHndHndHndHndHndHndHndsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsaaaaaaaaaadsadsadsaaaaaaadsadsadsadsadsadsadsadsadsadqTdBvdCidCidIadIcehuehtehtehvehqehpehsehrehAehzehgedEehxehwehyegMdsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadqTdqTdqTdsadsadqTdqTaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadHndHndHndHndHndHndHndHndHVdHndHndHndHndHndHndHndHndHndHndHndHndHndHVdHVdHVdHVdHndHndHndHndHndHndHndHndHndHndHndsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsaaaaaaaaaadsadsadsaaaaaaaaaadsadsadsadsadsadsadsadsadqTdBvdCidCidCidCidHSdCidCiegMegMegMegMehCegMegMegMegMegMegMegMegMdsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadqTdqTdqTdqTdqTaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadHndHndHndHndHndHndHndHndHVdHndHndHndHndHndHndHndHndHndHndHndHndHndHVdHVdHVdHVdHndHndHndHndHndHndHndHndHndHndHndsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsaaaaaaaaaadsadsadsaaaaaaaaaadsadsadsadsadsadsadsadsadqTdBvdCidCidCidCidHSdCidCiegMegMegMegMehCegMegMegMegMegMegMegMegMdsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadqTdqTdqTdqTdqTaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadHndHndHndHndHndHndHndHndHVdHVdHVdHndHndHndHndHndHndHndHndHndHndHndHndHndHVdHVdHVdHndHndHndHndHndHndHndHndHndHndHndHndsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsaaaaaaaaaaaaaaaaaaaaaaaaaaaadsadsadsadsadsadsadsadsadqTdBvdBvdCidCidCidHSdCidCidCidCiehDehEdMCdMCduDdsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadqTdqTdqTdqTaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadHndHndHndHndHndHndHndHndHVdHVdHVdHndHndHndHndHndHndHndHndHndHndHndHndHndHVdHVdHVdHndHndHndHndHndHndHndHndHndHndHndHndsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsaaaaaaaaaaaaaaaaaaaaaaaaaaaadsadsadsadsadsadsadsadsadqTdBvdBvdCidCidCidHSdCidCidCidCiehDehEdMCdMCduDdsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadqTdqTdqTdqTaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadHndHndHndHndHndHndHndHndHVdHVdHVdHndHndHndHndHndHndHndHndHndHndHndHndHndHVdHVdHVdHndHndHndHndHndHndHndHndHndHndHndHndsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadsadsadsadsadsadsadsadqTdqTdBvdCidCidIedHIdHJdCidCidCidCidCidCidCiduDdsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadqTdqTaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadHndHndHndHndHndHndHndHndHVdHVdHVdHndHndHndHndHndHndHndHndHndHndHndHndHndHVdHVdHVdHndHndHndHndHndHndHndHndHndHndHndHndsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadsadsadsadsadsadsadsadqTdqTdBvdCidCidIedHIdHJdCidCidCidCidCidCidCiduDdsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadqTdqTaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa