From cec6c028f53518d398d605eaa4532a8afa555fb4 Mon Sep 17 00:00:00 2001 From: oranges Date: Thu, 23 Nov 2017 10:16:16 +1300 Subject: [PATCH 01/66] [READY]Refactors uplinks to a component! --- code/__DEFINES/components.dm | 2 +- code/datums/components/_component.dm | 13 +- code/datums/components/uplink.dm | 204 ++++++++++++++++++ code/datums/mind.dm | 21 +- .../uplink_item.dm => datums/uplink_items.dm} | 49 +---- code/datums/uplink_purchase_log.dm | 64 ++++++ code/game/gamemodes/nuclear/nuclear.dm | 13 +- .../gamemodes/nuclear/nuclear_challenge.dm | 17 +- code/game/gamemodes/sandbox/h_sandbox.dm | 2 +- code/game/gamemodes/traitor/traitor.dm | 4 +- .../machinery/computer/telecrystalconsoles.dm | 25 ++- code/game/objects/items.dm | 4 - code/game/objects/items/devices/PDA/PDA.dm | 17 +- .../objects/items/devices/PDA/virus_cart.dm | 19 +- .../game/objects/items/devices/radio/radio.dm | 4 +- .../objects/items/devices/uplink_devices.dm | 31 +++ .../objects/items/implants/implantuplink.dm | 51 +++++ code/game/objects/items/stacks/telecrystal.dm | 20 +- .../awaymissions/mission_code/snowdin.dm | 9 - .../friendly/drone/extra_drone_types.dm | 6 +- code/modules/paperwork/pen.dm | 10 +- code/modules/reagents/chemistry/holder.dm | 12 ++ code/modules/uplink/uplink.dm | 162 -------------- tgstation.dme | 7 + 24 files changed, 468 insertions(+), 298 deletions(-) create mode 100644 code/datums/components/uplink.dm rename code/{modules/uplink/uplink_item.dm => datums/uplink_items.dm} (97%) create mode 100644 code/datums/uplink_purchase_log.dm create mode 100644 code/game/objects/items/devices/uplink_devices.dm delete mode 100644 code/modules/uplink/uplink.dm diff --git a/code/__DEFINES/components.dm b/code/__DEFINES/components.dm index 135fe3ece3..fa7b96f037 100644 --- a/code/__DEFINES/components.dm +++ b/code/__DEFINES/components.dm @@ -71,4 +71,4 @@ // /obj/machinery signals #define COMSIG_MACHINE_PROCESS "machine_process" //from machinery subsystem fire(): () -#define COMSIG_MACHINE_PROCESS_ATMOS "machine_process_atmos" //from air subsystem process_atmos_machinery(): () +#define COMSIG_MACHINE_PROCESS_ATMOS "machine_process_atmos" //from air subsystem process_atmos_machinery(): () diff --git a/code/datums/components/_component.dm b/code/datums/components/_component.dm index 0c85ddd871..48e1b98fd1 100644 --- a/code/datums/components/_component.dm +++ b/code/datums/components/_component.dm @@ -16,7 +16,7 @@ if(Initialize(arglist(arguments)) == COMPONENT_INCOMPATIBLE) qdel(src, TRUE, TRUE) return - + _CheckDupesAndJoinParent(P) /datum/component/proc/_CheckDupesAndJoinParent() @@ -45,12 +45,12 @@ if(!old) //let the others know P.SendSignal(COMSIG_COMPONENT_ADDED, src) - + //lazy init the parent's dc list var/list/dc = P.datum_components if(!dc) P.datum_components = dc = list() - + //set up the typecache var/our_type = type for(var/I in _GetInverseTypeList(our_type)) @@ -114,7 +114,7 @@ if(!procs) procs = list() signal_procs = procs - + var/list/sig_types = islist(sig_type_or_types) ? sig_type_or_types : list(sig_type_or_types) for(var/sig_type in sig_types) if(!override) @@ -177,7 +177,7 @@ for(var/I in target) var/datum/component/C = I if(!C.enabled) - continue + continue var/list/sps = C.signal_procs var/datum/callback/CB = LAZYACCESS(sps, sigtype) if(!CB) @@ -255,3 +255,6 @@ target.TakeComponent(I) else target.TakeComponent(comps) + +/datum/component/ui_host() + return parent diff --git a/code/datums/components/uplink.dm b/code/datums/components/uplink.dm new file mode 100644 index 0000000000..407965aeb9 --- /dev/null +++ b/code/datums/components/uplink.dm @@ -0,0 +1,204 @@ +GLOBAL_LIST_EMPTY(uplinks) + +/** + * Uplinks + * + * All /obj/item(s) have a hidden_uplink var. By default it's null. Give the item one with 'new(src') (it must be in it's contents). Then add 'uses.' + * Use whatever conditionals you want to check that the user has an uplink, and then call interact() on their uplink. + * You might also want the uplink menu to open if active. Check if the uplink is 'active' and then interact() with it. +**/ +/datum/component/uplink + dupe_mode = COMPONENT_DUPE_UNIQUE + var/name = "syndicate uplink" + var/active = FALSE + var/lockable = TRUE + var/locked = TRUE + var/telecrystals + var/selected_cat + var/owner = null + var/datum/game_mode/gamemode + var/spent_telecrystals = 0 + var/datum/uplink_purchase_log/purchase_log + var/list/uplink_items + var/hidden_crystals = 0 + +/datum/component/uplink/Initialize(_owner, _lockable = TRUE, _enabled = FALSE, datum/game_mode/_gamemode, starting_tc = 20) + if(!isitem(parent)) + return COMPONENT_INCOMPATIBLE + GLOB.uplinks += src + uplink_items = get_uplink_items(gamemode) + RegisterSignal(COMSIG_PARENT_ATTACKBY, .proc/OnAttackBy) + RegisterSignal(COMSIG_ITEM_ATTACK_SELF, .proc/interact) + owner = _owner + if(owner) + LAZYINITLIST(GLOB.uplink_purchase_logs_by_key) + if(GLOB.uplink_purchase_logs_by_key[owner]) + purchase_log = GLOB.uplink_purchase_logs_by_key[owner] + else + purchase_log = new(owner, src) + lockable = _lockable + active = _enabled + gamemode = _gamemode + telecrystals = starting_tc + if(!lockable) + active = TRUE + locked = FALSE + +/datum/component/uplink/InheritComponent(datum/component/uplink/U) + lockable |= U.lockable + active |= U.active + if(!gamemode) + gamemode = U.gamemode + telecrystals += U.telecrystals + if(purchase_log && U.purchase_log) + purchase_log.MergeWithAndDel(U.purchase_log) + +/datum/component/uplink/Destroy() + GLOB.uplinks -= src + gamemode = null + return ..() + +/datum/component/uplink/proc/LoadTC(mob/user, obj/item/stack/telecrystal/TC, silent = FALSE) + if(!silent) + to_chat(user, "You slot [TC] into [parent] and charge its internal uplink.") + var/amt = TC.amount + telecrystals += amt + TC.use(amt) + +/datum/component/uplink/proc/set_gamemode(_gamemode) + gamemode = _gamemode + uplink_items = get_uplink_items(gamemode) + +/datum/component/uplink/proc/OnAttackBy(obj/item/I, mob/user) + if(!active) + return //no hitting everyone/everything just to try to slot tcs in! + if(istype(I, /obj/item/stack/telecrystal)) + LoadTC(user, I) + for(var/item in subtypesof(/datum/uplink_item)) + var/datum/uplink_item/UI = item + var/path = null + if(initial(UI.refund_path)) + path = initial(UI.refund_path) + else + path = initial(UI.item) + var/cost = 0 + if(initial(UI.refund_amount)) + cost = initial(UI.refund_amount) + else + cost = initial(UI.cost) + var/refundable = initial(UI.refundable) + if(I.type == path && refundable && I.check_uplink_validity()) + telecrystals += cost + spent_telecrystals -= cost + to_chat(user, "[I] refunded.") + qdel(I) + return + +/datum/component/uplink/proc/interact(mob/user) + if(locked) + return + active = TRUE + if(user) + ui_interact(user) + +/datum/component/uplink/ui_interact(mob/user, ui_key = "main", datum/tgui/ui = null, force_open = FALSE, \ + datum/tgui/master_ui = null, datum/ui_state/state = GLOB.inventory_state) + active = TRUE + ui = SStgui.try_update_ui(user, src, ui_key, ui, force_open) + if(!ui) + ui = new(user, src, ui_key, "uplink", name, 450, 750, master_ui, state) + ui.set_autoupdate(FALSE) // This UI is only ever opened by one person, and never is updated outside of user input. + ui.set_style("syndicate") + ui.open() + +/datum/component/uplink/ui_data(mob/user) + if(!user.mind) + return + var/list/data = list() + data["telecrystals"] = telecrystals + data["lockable"] = lockable + + data["categories"] = list() + for(var/category in uplink_items) + var/list/cat = list( + "name" = category, + "items" = (category == selected_cat ? list() : null)) + if(category == selected_cat) + for(var/item in uplink_items[category]) + var/datum/uplink_item/I = uplink_items[category][item] + if(I.limited_stock == 0) + continue + if(I.restricted_roles.len) + var/is_inaccessible = 1 + for(var/R in I.restricted_roles) + if(R == user.mind.assigned_role) + is_inaccessible = 0 + if(is_inaccessible) + continue + cat["items"] += list(list( + "name" = I.name, + "cost" = I.cost, + "desc" = I.desc, + )) + data["categories"] += list(cat) + return data + +/datum/component/uplink/ui_act(action, params) + if(!active) + return + + switch(action) + if("buy") + var/item = params["item"] + + var/list/buyable_items = list() + for(var/category in uplink_items) + buyable_items += uplink_items[category] + + if(item in buyable_items) + var/datum/uplink_item/I = buyable_items[item] + MakePurchase(usr, I) + . = TRUE + if("lock") + active = FALSE + locked = TRUE + telecrystals += hidden_crystals + hidden_crystals = 0 + SStgui.close_uis(src) + if("select") + selected_cat = params["category"] + return TRUE + +/datum/component/uplink/proc/MakePurchase(mob/user, datum/uplink_item/U) + if(!istype(U)) + return + if (!user || user.incapacitated()) + return + + if(telecrystals < U.cost || U.limited_stock == 0) + return + telecrystals -= U.cost + + var/atom/A = U.spawn_item(get_turf(user), src, user) + if(U.purchase_log_vis && purchase_log) + var/obj/item/storage/box/B = A + var/list/atom/logging = list() + if(istype(B) && B.contents.len > 0) + logging |= list(B) + else + logging |= A + for(var/atom/_logging in logging) + purchase_log.LogPurchase(_logging, U.cost) + + if(U.limited_stock > 0) + U.limited_stock -= 1 + + SSblackbox.record_feedback("nested tally", "traitor_uplink_items_bought", 1, list("[initial(U.name)]", "[U.cost]")) + if(ishuman(user) && istype(A, /obj/item)) + var/mob/living/carbon/human/H = user + if(H.put_in_hands(A)) + to_chat(H, "[A] materializes into your hands!") + else + to_chat(H, "\The [A] materializes onto the floor.") + return TRUE + diff --git a/code/datums/mind.dm b/code/datums/mind.dm index 04b3ee31b7..0a069ad6e3 100644 --- a/code/datums/mind.dm +++ b/code/datums/mind.dm @@ -299,9 +299,7 @@ to_chat(traitor_mob, "Unfortunately, [employer] wasn't able to get you an Uplink.") . = 0 else - var/obj/item/device/uplink/U = new(uplink_loc) - U.owner = "[traitor_mob.key]" - uplink_loc.hidden_uplink = U + uplink_loc.LoadComponent(/datum/component/uplink, traitor_mob.key) if(uplink_loc == R) R.traitor_frequency = sanitize_frequency(rand(MIN_FREQ, MAX_FREQ)) @@ -717,7 +715,7 @@ if(((src in SSticker.mode.traitors) || (src in SSticker.mode.syndicates)) && ishuman(current)) text = "Uplink: give" - var/obj/item/device/uplink/U = find_syndicate_uplink() + var/datum/component/uplink/U = find_syndicate_uplink() if(U) text += " | take" if (check_rights(R_FUN, 0)) @@ -1306,7 +1304,7 @@ log_admin("[key_name(usr)] removed [current]'s uplink.") if("crystals") if(check_rights(R_FUN, 0)) - var/obj/item/device/uplink/U = find_syndicate_uplink() + var/datum/component/uplink/U = find_syndicate_uplink() if(U) var/crystals = input("Amount of telecrystals for [key]","Syndicate uplink", U.telecrystals) as null | num if(!isnull(crystals)) @@ -1335,15 +1333,14 @@ /datum/mind/proc/find_syndicate_uplink() var/list/L = current.GetAllContents() - for (var/obj/item/I in L) - if (I.hidden_uplink) - return I.hidden_uplink - return null + for (var/i in L) + var/atom/movable/I = i + . = I.GetComponent(/datum/component/uplink) + if(.) + break /datum/mind/proc/take_uplink() - var/obj/item/device/uplink/H = find_syndicate_uplink() - if(H) - qdel(H) + qdel(find_syndicate_uplink()) /datum/mind/proc/make_Traitor() if(!(has_antag_datum(ANTAG_DATUM_TRAITOR))) diff --git a/code/modules/uplink/uplink_item.dm b/code/datums/uplink_items.dm similarity index 97% rename from code/modules/uplink/uplink_item.dm rename to code/datums/uplink_items.dm index 6aad347e2a..cd51838309 100644 --- a/code/modules/uplink/uplink_item.dm +++ b/code/datums/uplink_items.dm @@ -89,43 +89,14 @@ GLOBAL_LIST_EMPTY(uplink_items) // Global list so we only initialize this once. /datum/uplink_item/proc/get_discount() return pick(4;0.75,2;0.5,1;0.25) -/datum/uplink_item/proc/spawn_item(turf/loc, obj/item/device/uplink/U) +/datum/uplink_item/proc/spawn_item(turf/loc, datum/component/uplink/U, mob/user) if(item) +<<<<<<< HEAD:code/modules/uplink/uplink_item.dm SSblackbox.add_details("traitor_uplink_items_bought", "[name]|[cost]") +======= +>>>>>>> ccd4981... Merge pull request #32624 from kevinz000/component_uplinks:code/datums/uplink_items.dm return new item(loc) -/datum/uplink_item/proc/buy(mob/user, obj/item/device/uplink/U) - if(!istype(U)) - return - if (!user || user.incapacitated()) - return - - if(U.telecrystals < cost || limited_stock == 0) - return - else - U.telecrystals -= cost - U.spent_telecrystals += cost - - var/atom/A = spawn_item(get_turf(user), U) - var/obj/item/storage/box/B = A - if(istype(B) && B.contents.len > 0) - for(var/obj/item/I in B) - U.purchase_log += "[icon2base64html(I)]" - else - if(purchase_log_vis) - U.purchase_log += "[icon2base64html(A)]" - - if(limited_stock > 0) - limited_stock -= 1 - - if(ishuman(user) && istype(A, /obj/item)) - var/mob/living/carbon/human/H = user - if(H.put_in_hands(A)) - to_chat(H, "[A] materializes into your hands!") - else - to_chat(H, "\The [A] materializes onto the floor.") - return 1 - /datum/uplink_item/Destroy() if(src in GLOB.uplink_items) GLOB.uplink_items -= src //Take us out instead of leaving a null! @@ -368,7 +339,7 @@ GLOBAL_LIST_EMPTY(uplink_items) // Global list so we only initialize this once. cost = 12 surplus = 35 include_modes = list(/datum/game_mode/nuclear) - + /datum/uplink_item/dangerous/guardian name = "Holoparasites" desc = "Though capable of near sorcerous feats via use of hardlight holograms and nanomachines, they require an \ @@ -977,8 +948,8 @@ GLOBAL_LIST_EMPTY(uplink_items) // Global list so we only initialize this once. item = /obj/item/briefcase_launchpad cost = 6 -/datum/uplink_item/device_tools/briefcase_launchpad/buy(mob/user, obj/item/device/uplink/U) - var/obj/item/device/launchpad_remote/L = new(get_turf(user)) //free remote +/datum/uplink_item/device_tools/briefcase_launchpad/spawn_item(turf/loc, datum/component/uplink/U, mob/user) + var/obj/item/device/launchpad_remote/L = new(loc) //free remote if(ishuman(user)) var/mob/living/carbon/human/H = user if(H.put_in_hands(L)) @@ -1381,7 +1352,7 @@ GLOBAL_LIST_EMPTY(uplink_items) // Global list so we only initialize this once. exclude_modes = list(/datum/game_mode/nuclear) cant_discount = TRUE -/datum/uplink_item/badass/surplus/spawn_item(turf/loc, obj/item/device/uplink/U) +/datum/uplink_item/badass/surplus/spawn_item(turf/loc, datum/component/uplink/U) var/list/uplink_items = get_uplink_items(SSticker.mode) var/crate_value = 50 @@ -1397,7 +1368,7 @@ GLOBAL_LIST_EMPTY(uplink_items) // Global list so we only initialize this once. continue crate_value -= I.cost var/obj/goods = new I.item(C) - U.purchase_log += "[icon2base64html(goods)]" + U.purchase_log.LogPurchase(goods, I.cost) SSblackbox.add_details("traitor_uplink_items_bought", "[name]|[cost]") return C @@ -1409,7 +1380,7 @@ GLOBAL_LIST_EMPTY(uplink_items) // Global list so we only initialize this once. cost = 0 cant_discount = TRUE -/datum/uplink_item/badass/random/spawn_item(turf/loc, obj/item/device/uplink/U) +/datum/uplink_item/badass/random/spawn_item(turf/loc, datum/component/uplink/U) var/list/uplink_items = get_uplink_items(SSticker.mode) var/list/possible_items = list() for(var/category in uplink_items) diff --git a/code/datums/uplink_purchase_log.dm b/code/datums/uplink_purchase_log.dm new file mode 100644 index 0000000000..5ec462d237 --- /dev/null +++ b/code/datums/uplink_purchase_log.dm @@ -0,0 +1,64 @@ +GLOBAL_LIST(uplink_purchase_logs_by_key) //assoc key = /datum/uplink_purchase_log + +/datum/uplink_purchase_log + var/owner + var/list/purchase_log //assoc path-of-item = /datum/uplink_purchase_entry + var/datum/component/uplink/parent + var/total_spent = 0 + +/datum/uplink_purchase_log/New(_owner, datum/component/uplink/_parent) + owner = _owner + parent = _parent + LAZYINITLIST(GLOB.uplink_purchase_logs_by_key) + if(owner) + if(GLOB.uplink_purchase_logs_by_key[owner]) + stack_trace("WARNING: DUPLICATE PURCHASE LOGS DETECTED. [_owner] [_parent] [_parent.type]") + MergeWithAndDel(GLOB.uplink_purchase_logs_by_key[owner]) + GLOB.uplink_purchase_logs_by_key[owner] = src + purchase_log = list() + +/datum/uplink_purchase_log/Destroy() + purchase_log = null + parent = null + return ..() + +/datum/uplink_purchase_log/proc/MergeWithAndDel(datum/uplink_purchase_log/other) + if(!istype(other)) + return + . = owner == other.owner + if(!.) + return + for(var/path in other.purchase_log) + if(!purchase_log[path]) + purchase_log[path] = other.purchase_log[path] + else + var/datum/uplink_purchase_entry/UPE = purchase_log[path] + var/datum/uplink_purchase_entry/UPE_O = other.purchase_log[path] + UPE.amount_purchased += UPE_O.amount_purchased + qdel(other) + +/datum/uplink_purchase_log/proc/TotalTelecrystalsSpent() + . = total_spent + +/datum/uplink_purchase_log/proc/generate_render(show_key = TRUE) + . = "" + for(var/path in purchase_log) + var/datum/uplink_purchase_entry/UPE = purchase_log[path] + . += "\[[UPE.icon_b64][show_key?"([owner])":""]\]" + +/datum/uplink_purchase_log/proc/LogPurchase(atom/A, cost) + var/datum/uplink_purchase_entry/UPE + if(purchase_log[A.type]) + UPE = purchase_log[A.type] + else + UPE = new + purchase_log[A.type] = UPE + UPE.path = A.type + UPE.icon_b64 = "[icon2base64html(A)]" + UPE.amount_purchased++ + total_spent += cost + +/datum/uplink_purchase_entry + var/amount_purchased = 0 + var/path + var/icon_b64 diff --git a/code/game/gamemodes/nuclear/nuclear.dm b/code/game/gamemodes/nuclear/nuclear.dm index 1e5d899bfa..94c372ef23 100644 --- a/code/game/gamemodes/nuclear/nuclear.dm +++ b/code/game/gamemodes/nuclear/nuclear.dm @@ -264,10 +264,11 @@ var/TC_uses = 0 for(var/datum/mind/syndicate in syndicates) text += printplayer(syndicate) - for(var/obj/item/device/uplink/H in GLOB.uplinks) - if(H && H.owner && H.owner == syndicate.key) - TC_uses += H.spent_telecrystals - purchases += H.purchase_log + for(var/datum/component/uplink/H in GLOB.uplinks) + if(H.purchase_log) + purchases += H.purchase_log.generate_render() + else + stack_trace("WARNING: Uplink with no purchase_log in nuclear mode! Owner: [H.owner]") text += "
" text += "(Syndicates used [TC_uses] TC) [purchases]" if(TC_uses == 0 && station_was_nuked && !are_operatives_dead()) @@ -325,9 +326,7 @@ R.freqlock = 1 if(tc) - var/obj/item/device/radio/uplink/nuclear/U = new(H) - U.hidden_uplink.owner = "[H.key]" - U.hidden_uplink.telecrystals = tc + var/obj/item/device/radio/uplink/nuclear/U = new(H, H.key, tc) H.equip_to_slot_or_del(U, slot_in_backpack) var/obj/item/implant/weapons_auth/W = new/obj/item/implant/weapons_auth(H) diff --git a/code/game/gamemodes/nuclear/nuclear_challenge.dm b/code/game/gamemodes/nuclear/nuclear_challenge.dm index 6e7a567324..f9b565a65d 100644 --- a/code/game/gamemodes/nuclear/nuclear_challenge.dm +++ b/code/game/gamemodes/nuclear/nuclear_challenge.dm @@ -54,10 +54,7 @@ var/obj/item/circuitboard/computer/syndicate_shuttle/board = V board.challenge = TRUE - var/obj/item/device/radio/uplink/nuclear/U = new(get_turf(user)) - U.hidden_uplink.owner = "[user.key]" - U.hidden_uplink.telecrystals = CHALLENGE_TELECRYSTALS - U.hidden_uplink.set_gamemode(/datum/game_mode/nuclear) + new /obj/item/device/radio/uplink/nuclear(get_turf(user), user.key, CHALLENGE_TELECRYSTALS) CONFIG_SET(number/shuttle_refuel_delay, max(CONFIG_GET(number/shuttle_refuel_delay), CHALLENGE_SHUTTLE_DELAY)) SSblackbox.set_val("nuclear_challenge_mode",1) qdel(src) @@ -65,22 +62,22 @@ /obj/item/device/nuclear_challenge/proc/check_allowed(mob/living/user) if(declaring_war) to_chat(user, "You are already in the process of declaring war! Make your mind up.") - return 0 + return FALSE if(GLOB.player_list.len < CHALLENGE_MIN_PLAYERS) to_chat(user, "The enemy crew is too small to be worth declaring war on.") - return 0 + return FALSE if(user.z != ZLEVEL_CENTCOM) to_chat(user, "You have to be at your base to use this.") - return 0 + return FALSE if(world.time-SSticker.round_start_time > CHALLENGE_TIME_LIMIT) to_chat(user, "It's too late to declare hostilities. Your benefactors are already busy with other schemes. You'll have to make do with what you have on hand.") - return 0 + return FALSE for(var/V in GLOB.syndicate_shuttle_boards) var/obj/item/circuitboard/computer/syndicate_shuttle/board = V if(board.moved) to_chat(user, "The shuttle has already been moved! You have forfeit the right to declare war.") - return 0 - return 1 + return FALSE + return TRUE #undef CHALLENGE_TELECRYSTALS #undef CHALLENGE_MIN_PLAYERS diff --git a/code/game/gamemodes/sandbox/h_sandbox.dm b/code/game/gamemodes/sandbox/h_sandbox.dm index cf2b867941..101a33e551 100644 --- a/code/game/gamemodes/sandbox/h_sandbox.dm +++ b/code/game/gamemodes/sandbox/h_sandbox.dm @@ -28,7 +28,7 @@ GLOBAL_VAR_INIT(hsboxspawn, TRUE) var/global/list/spawn_forbidden = list( /obj/item/tk_grab, /obj/item/implant, // not implanter, the actual thing that is inside you /obj/item/assembly, /obj/item/device/onetankbomb, /obj/item/radio, /obj/item/device/pda/ai, - /obj/item/device/uplink, /obj/item/smallDelivery, /obj/item/projectile, + /obj/item/smallDelivery, /obj/item/projectile, /obj/item/borg/sight, /obj/item/borg/stun, /obj/item/robot_module) /datum/hSB/proc/update() diff --git a/code/game/gamemodes/traitor/traitor.dm b/code/game/gamemodes/traitor/traitor.dm index a4229942c5..e367750bc1 100644 --- a/code/game/gamemodes/traitor/traitor.dm +++ b/code/game/gamemodes/traitor/traitor.dm @@ -103,11 +103,11 @@ var/TC_uses = 0 var/uplink_true = FALSE var/purchases = "" - for(var/obj/item/device/uplink/H in GLOB.uplinks) + for(var/datum/component/uplink/H in GLOB.uplinks) if(H && H.owner && H.owner == traitor.key) TC_uses += H.spent_telecrystals uplink_true = TRUE - purchases += H.purchase_log + purchases += H.purchase_log.generate_render(FALSE) var/objectives = "" if(traitor.objectives.len)//If the traitor had no objectives, don't need to process this. diff --git a/code/game/machinery/computer/telecrystalconsoles.dm b/code/game/machinery/computer/telecrystalconsoles.dm index c879bc175a..959253036b 100644 --- a/code/game/machinery/computer/telecrystalconsoles.dm +++ b/code/game/machinery/computer/telecrystalconsoles.dm @@ -33,7 +33,8 @@ GLOBAL_LIST_INIT(possible_uplinker_IDs, list("Alfa","Bravo","Charlie","Delta","E if(uplinkholder) to_chat(user, "[src] already has an uplink in it.") return - if(I.hidden_uplink) + GET_COMPONENT_FROM(hidden_uplink, /datum/component/uplink, I) + if(hidden_uplink) if(!user.transferItemToLoc(I, src)) return uplinkholder = I @@ -56,26 +57,28 @@ GLOBAL_LIST_INIT(possible_uplinker_IDs, list("Alfa","Bravo","Charlie","Delta","E /obj/machinery/computer/telecrystals/uplinker/proc/donateTC(amt, addLog = 1) if(uplinkholder && linkedboss) + GET_COMPONENT_FROM(hidden_uplink, /datum/component/uplink, uplinkholder) if(amt < 0) - linkedboss.storedcrystals += uplinkholder.hidden_uplink.telecrystals + linkedboss.storedcrystals += hidden_uplink.telecrystals if(addLog) - linkedboss.logTransfer("[src] donated [uplinkholder.hidden_uplink.telecrystals] telecrystals to [linkedboss].") - uplinkholder.hidden_uplink.telecrystals = 0 - else if(amt <= uplinkholder.hidden_uplink.telecrystals) - uplinkholder.hidden_uplink.telecrystals -= amt + linkedboss.logTransfer("[src] donated [hidden_uplink.telecrystals] telecrystals to [linkedboss].") + hidden_uplink.telecrystals = 0 + else if(amt <= hidden_uplink.telecrystals) + hidden_uplink.telecrystals -= amt linkedboss.storedcrystals += amt if(addLog) linkedboss.logTransfer("[src] donated [amt] telecrystals to [linkedboss].") /obj/machinery/computer/telecrystals/uplinker/proc/giveTC(amt, addLog = 1) if(uplinkholder && linkedboss) + GET_COMPONENT_FROM(hidden_uplink, /datum/component/uplink, uplinkholder) if(amt < 0) - uplinkholder.hidden_uplink.telecrystals += linkedboss.storedcrystals + hidden_uplink.telecrystals += linkedboss.storedcrystals if(addLog) linkedboss.logTransfer("[src] received [linkedboss.storedcrystals] telecrystals from [linkedboss].") linkedboss.storedcrystals = 0 else if(amt <= linkedboss.storedcrystals) - uplinkholder.hidden_uplink.telecrystals += amt + hidden_uplink.telecrystals += amt linkedboss.storedcrystals -= amt if(addLog) linkedboss.logTransfer("[src] received [amt] telecrystals from [linkedboss].") @@ -95,7 +98,8 @@ GLOBAL_LIST_INIT(possible_uplinker_IDs, list("Alfa","Bravo","Charlie","Delta","E dat += "No linked management consoles detected. Scan for uplink stations using the management console.

" if(uplinkholder) - dat += "[uplinkholder.hidden_uplink.telecrystals] telecrystals remain in this uplink.
" + GET_COMPONENT_FROM(hidden_uplink, /datum/component/uplink, uplinkholder) + dat += "[hidden_uplink.telecrystals] telecrystals remain in this uplink.
" if(linkedboss) dat += "Donate TC: 1 | 5 | All" dat += "
Eject Uplink" @@ -175,7 +179,8 @@ GLOBAL_LIST_INIT(possible_uplinker_IDs, list("Alfa","Bravo","Charlie","Delta","E for(var/obj/machinery/computer/telecrystals/uplinker/A in TCstations) dat += "[A.name] | " if(A.uplinkholder) - dat += "[A.uplinkholder.hidden_uplink.telecrystals] telecrystals." + GET_COMPONENT_FROM(hidden_uplink, /datum/component/uplink, A.uplinkholder) + dat += "[hidden_uplink.telecrystals] telecrystals." if(storedcrystals) dat+= "
Add TC: 1 | 5 | 10 | All" dat += "
" diff --git a/code/game/objects/items.dm b/code/game/objects/items.dm index e96c4c015b..52dc2fed6e 100644 --- a/code/game/objects/items.dm +++ b/code/game/objects/items.dm @@ -57,7 +57,6 @@ GLOBAL_VAR_INIT(rpg_loot_items, FALSE) var/slowdown = 0 // How much clothing is slowing you down. Negative values speeds you up var/armour_penetration = 0 //percentage of armour effectiveness to remove var/list/allowed = null //suit storage stuff. - var/obj/item/device/uplink/hidden_uplink = null var/equip_delay_self = 0 //In deciseconds, how long an item takes to equip; counts only for normal clothing slots, not pockets etc. var/equip_delay_other = 20 //In deciseconds, how long an item takes to put on another person var/strip_delay = 40 //In deciseconds, how long an item takes to remove from another person @@ -224,9 +223,6 @@ GLOBAL_VAR_INIT(rpg_loot_items, FALSE) /obj/item/interact(mob/user) add_fingerprint(user) - if(hidden_uplink && hidden_uplink.active) - hidden_uplink.interact(user) - return 1 ui_interact(user) /obj/item/ui_act(action, params) diff --git a/code/game/objects/items/devices/PDA/PDA.dm b/code/game/objects/items/devices/PDA/PDA.dm index 244e82ee77..8e52483cba 100644 --- a/code/game/objects/items/devices/PDA/PDA.dm +++ b/code/game/objects/items/devices/PDA/PDA.dm @@ -155,15 +155,20 @@ GLOBAL_LIST_EMPTY(PDAs) return /obj/item/device/pda/attack_self(mob/user) +<<<<<<< HEAD +======= + if(!user.IsAdvancedToolUser()) + to_chat(user, "You don't have the dexterity to do this!") + return + + . = ..() + +>>>>>>> ccd4981... Merge pull request #32624 from kevinz000/component_uplinks var/datum/asset/assets = get_asset_datum(/datum/asset/simple/pda) assets.send(user) user.set_machine(src) - if(hidden_uplink && hidden_uplink.active) - hidden_uplink.interact(user) - return - var/dat = "Personal Data Assistant" @@ -496,7 +501,9 @@ GLOBAL_LIST_EMPTY(PDAs) if("Ringtone") var/t = input(U, "Please enter new ringtone", name, ttone) as text if(in_range(src, U) && loc == U && t) + GET_COMPONENT(hidden_uplink, /datum/component/uplink) if(hidden_uplink && (trim(lowertext(t)) == trim(lowertext(lock_code)))) + hidden_uplink.locked = FALSE hidden_uplink.interact(U) to_chat(U, "The PDA softly beeps.") U << browse(null, "window=pda") @@ -822,8 +829,6 @@ GLOBAL_LIST_EMPTY(PDAs) var/obj/item/photo/P = C photo = P.img to_chat(user, "You scan \the [C].") - else if(hidden_uplink && hidden_uplink.active) - hidden_uplink.attackby(C, user, params) else return ..() diff --git a/code/game/objects/items/devices/PDA/virus_cart.dm b/code/game/objects/items/devices/PDA/virus_cart.dm index ce7f85b825..e28f6676e8 100644 --- a/code/game/objects/items/devices/PDA/virus_cart.dm +++ b/code/game/objects/items/devices/PDA/virus_cart.dm @@ -7,7 +7,7 @@ /obj/item/cartridge/virus/message_header() return "[charges] viral files left.
" - + /obj/item/cartridge/virus/message_special(obj/item/device/pda/target) if (!istype(loc, /obj/item/device/pda)) return "" //Sanity check, this shouldn't be possible. @@ -67,11 +67,12 @@ var/difficulty = 0 if(target.cartridge) difficulty += BitCount(target.cartridge.access&(CART_MEDICAL | CART_SECURITY | CART_ENGINE | CART_CLOWN | CART_JANITOR | CART_MANIFEST)) - if(target.cartridge.access & CART_MANIFEST) + if(target.cartridge.access & CART_MANIFEST) difficulty++ //if cartridge has manifest access it has extra snowflake difficulty else difficulty += 2 - if(!target.detonatable || prob(difficulty * 15) || (target.hidden_uplink)) + GET_COMPONENT_FROM(hidden_uplink, /datum/component/uplink, target) + if(!target.detonatable || prob(difficulty * 15) || (hidden_uplink)) U.show_message("An error flashes on your [src].", 1) else U.show_message("Success!", 1) @@ -92,14 +93,14 @@ charges-- var/lock_code = "[rand(100,999)] [pick(GLOB.phonetic_alphabet)]" to_chat(U, "Virus Sent! The unlock code to the target is: [lock_code]") - if(!target.hidden_uplink) - var/obj/item/device/uplink/uplink = new(target) - target.hidden_uplink = uplink + GET_COMPONENT_FROM(hidden_uplink, /datum/component/uplink, target) + if(!hidden_uplink) + hidden_uplink = target.LoadComponent(/datum/component/uplink) target.lock_code = lock_code else - target.hidden_uplink.hidden_crystals += target.hidden_uplink.telecrystals //Temporarially hide the PDA's crystals, so you can't steal telecrystals. - target.hidden_uplink.telecrystals = telecrystals + hidden_uplink.hidden_crystals += hidden_uplink.telecrystals //Temporarially hide the PDA's crystals, so you can't steal telecrystals. + hidden_uplink.telecrystals = telecrystals telecrystals = 0 - target.hidden_uplink.active = TRUE + hidden_uplink.active = TRUE else to_chat(U, "PDA not found.") diff --git a/code/game/objects/items/devices/radio/radio.dm b/code/game/objects/items/devices/radio/radio.dm index 6603bc29ef..236f3df93e 100644 --- a/code/game/objects/items/devices/radio/radio.dm +++ b/code/game/objects/items/devices/radio/radio.dm @@ -155,7 +155,9 @@ if(.) frequency = sanitize_frequency(tune, freerange) set_frequency(frequency) - if(frequency == traitor_frequency && hidden_uplink) + GET_COMPONENT(hidden_uplink, /datum/component/uplink) + if(hidden_uplink && (frequency == traitor_frequency)) + hidden_uplink.locked = FALSE hidden_uplink.interact(usr) ui.close() if("listen") diff --git a/code/game/objects/items/devices/uplink_devices.dm b/code/game/objects/items/devices/uplink_devices.dm new file mode 100644 index 0000000000..3f3970fe51 --- /dev/null +++ b/code/game/objects/items/devices/uplink_devices.dm @@ -0,0 +1,31 @@ + +// A collection of pre-set uplinks, for admin spawns. +/obj/item/device/radio/uplink/Initialize(mapload, _owner, _tc_amount = 20) + . = ..() + icon_state = "radio" + lefthand_file = 'icons/mob/inhands/misc/devices_lefthand.dmi' + righthand_file = 'icons/mob/inhands/misc/devices_righthand.dmi' + LoadComponent(/datum/component/uplink, _owner, FALSE, TRUE, null, _tc_amount) + +/obj/item/device/radio/uplink/nuclear/Initialize() + . = ..() + GET_COMPONENT(hidden_uplink, /datum/component/uplink) + hidden_uplink.set_gamemode(/datum/game_mode/nuclear) + +/obj/item/device/multitool/uplink/Initialize(mapload, _owner, _tc_amount = 20) + . = ..() + LoadComponent(/datum/component/uplink, _owner, FALSE, TRUE, null, _tc_amount) + +/obj/item/pen/uplink/Initialize(mapload, _owner, _tc_amount = 20) + . = ..() + LoadComponent(/datum/component/uplink) + traitor_unlock_degrees = 360 + +/obj/item/device/radio/uplink/old + name = "dusty radio" + desc = "A dusty looking radio." + +/obj/item/device/radio/uplink/old/Initialize(mapload, _owner, _tc_amount = 10) + . = ..() + GET_COMPONENT(hidden_uplink, /datum/component/uplink) + hidden_uplink.name = "dusty radio" diff --git a/code/game/objects/items/implants/implantuplink.dm b/code/game/objects/items/implants/implantuplink.dm index d89c4598b5..82555e12c4 100644 --- a/code/game/objects/items/implants/implantuplink.dm +++ b/code/game/objects/items/implants/implantuplink.dm @@ -1,3 +1,4 @@ +<<<<<<< HEAD /obj/item/implant/uplink name = "uplink implant" desc = "Sneeki breeki." @@ -40,3 +41,53 @@ /obj/item/implant/uplink/precharged starting_tc = 10 +======= +/obj/item/implant/uplink + name = "uplink implant" + desc = "Sneeki breeki." + icon = 'icons/obj/radio.dmi' + icon_state = "radio" + lefthand_file = 'icons/mob/inhands/misc/devices_lefthand.dmi' + righthand_file = 'icons/mob/inhands/misc/devices_righthand.dmi' + var/starting_tc = 0 + +/obj/item/implant/uplink/Initialize(mapload, _owner) + . = ..() + LoadComponent(/datum/component/uplink, _owner, TRUE, FALSE, null, starting_tc) + +/obj/item/implant/uplink/implant(mob/living/target, mob/user, silent = 0) + GET_COMPONENT(hidden_uplink, /datum/component/uplink) + if(hidden_uplink) + for(var/X in target.implants) + if(istype(X, type)) + var/obj/item/implant/imp_e = X + GET_COMPONENT_FROM(their_hidden_uplink, /datum/component/uplink, imp_e) + if(their_hidden_uplink) + their_hidden_uplink.telecrystals += hidden_uplink.telecrystals + qdel(src) + return TRUE + else + qdel(imp_e) //INFERIOR AND EMPTY! + + if(..()) + if(hidden_uplink) + hidden_uplink.owner = "[user.key]" + return TRUE + return FALSE + +/obj/item/implant/uplink/activate() + GET_COMPONENT(hidden_uplink, /datum/component/uplink) + if(hidden_uplink) + hidden_uplink.interact(usr) + +/obj/item/implanter/uplink + name = "implanter (uplink)" + imp_type = /obj/item/implant/uplink + +/obj/item/implanter/uplink/precharged + name = "implanter (precharged uplink)" + imp_type = /obj/item/implant/uplink/precharged + +/obj/item/implant/uplink/precharged + starting_tc = 10 +>>>>>>> ccd4981... Merge pull request #32624 from kevinz000/component_uplinks diff --git a/code/game/objects/items/stacks/telecrystal.dm b/code/game/objects/items/stacks/telecrystal.dm index 87978ac58e..0300d08414 100644 --- a/code/game/objects/items/stacks/telecrystal.dm +++ b/code/game/objects/items/stacks/telecrystal.dm @@ -13,18 +13,16 @@ if(target == user) //You can't go around smacking people with crystals to find out if they have an uplink or not. for(var/obj/item/implant/uplink/I in target) if(I && I.imp_in) - I.hidden_uplink.telecrystals += amount - use(amount) - to_chat(user, "You press [src] onto yourself and charge your hidden uplink.") + GET_COMPONENT_FROM(hidden_uplink, /datum/component/uplink, I) + if(hidden_uplink) + hidden_uplink.telecrystals += amount + use(amount) + to_chat(user, "You press [src] onto yourself and charge your hidden uplink.") + else + return ..() /obj/item/stack/telecrystal/afterattack(obj/item/I, mob/user, proximity) - if(!proximity) - return - if(isitem(I) && I.hidden_uplink && I.hidden_uplink.active) //No metagaming by using this on every PDA around just to see if it gets used up. - I.hidden_uplink.telecrystals += amount - use(amount) - to_chat(user, "You slot [src] into [I] and charge its internal uplink.") - else if(istype(I, /obj/item/cartridge/virus/frame)) + if(istype(I, /obj/item/cartridge/virus/frame)) var/obj/item/cartridge/virus/frame/cart = I if(!cart.charges) to_chat(user, "[cart] is out of charges, it's refusing to accept [src].") @@ -32,6 +30,8 @@ cart.telecrystals += amount use(amount) to_chat(user, "You slot [src] into [cart]. The next time it's used, it will also give telecrystals.") + else + return ..() /obj/item/stack/telecrystal/five amount = 5 diff --git a/code/modules/awaymissions/mission_code/snowdin.dm b/code/modules/awaymissions/mission_code/snowdin.dm index c8658c677f..c015d778fe 100644 --- a/code/modules/awaymissions/mission_code/snowdin.dm +++ b/code/modules/awaymissions/mission_code/snowdin.dm @@ -218,15 +218,6 @@ desc = "This wand uses healing magics to heal and revive. The years of the cold have weakened the magic inside the wand." max_charges = 5 -/obj/item/device/radio/uplink/old - name = "dusty radio" - desc = "A dusty looking radio." - -/obj/item/device/radio/uplink/old/Initialize() - . = ..() - hidden_uplink.name = "dusty radio" - hidden_uplink.telecrystals = 10 - /obj/effect/mob_spawn/human/syndicatesoldier/coldres name = "Syndicate Snow Operative" outfit = /datum/outfit/snowsyndie/corpse diff --git a/code/modules/mob/living/simple_animal/friendly/drone/extra_drone_types.dm b/code/modules/mob/living/simple_animal/friendly/drone/extra_drone_types.dm index a19a6abeb3..3aa1153133 100644 --- a/code/modules/mob/living/simple_animal/friendly/drone/extra_drone_types.dm +++ b/code/modules/mob/living/simple_animal/friendly/drone/extra_drone_types.dm @@ -34,7 +34,8 @@ /mob/living/simple_animal/drone/syndrone/Initialize() . = ..() - internal_storage.hidden_uplink.telecrystals = 10 + GET_COMPONENT_FROM(hidden_uplink, /datum/component/uplink, internal_storage) + hidden_uplink.telecrystals = 10 /mob/living/simple_animal/drone/syndrone/Login() ..() @@ -47,7 +48,8 @@ /mob/living/simple_animal/drone/syndrone/badass/Initialize() . = ..() - internal_storage.hidden_uplink.telecrystals = 30 + GET_COMPONENT_FROM(hidden_uplink, /datum/component/uplink, internal_storage) + hidden_uplink.telecrystals = 30 var/obj/item/implant/weapons_auth/W = new/obj/item/implant/weapons_auth(src) W.implant(src) diff --git a/code/modules/paperwork/pen.dm b/code/modules/paperwork/pen.dm index 4b31ce7262..6732bec474 100644 --- a/code/modules/paperwork/pen.dm +++ b/code/modules/paperwork/pen.dm @@ -99,19 +99,13 @@ if(deg && (deg > 0 && deg <= 360)) degrees = deg to_chat(user, "You rotate the top of the pen to [degrees] degrees.") + GET_COMPONENT(hidden_uplink, /datum/component/uplink) if(hidden_uplink && degrees == traitor_unlock_degrees) to_chat(user, "Your pen makes a clicking noise, before quickly rotating back to 0 degrees!") degrees = 0 + hidden_uplink.locked = FALSE hidden_uplink.interact(user) - -/obj/item/pen/attackby(obj/item/I, mob/user, params) - if(hidden_uplink) - return hidden_uplink.attackby(I, user, params) - else - return ..() - - /obj/item/pen/attack(mob/living/M, mob/user,stealth) if(!istype(M)) return diff --git a/code/modules/reagents/chemistry/holder.dm b/code/modules/reagents/chemistry/holder.dm index b16d0bc2e7..eb1c6d7b43 100644 --- a/code/modules/reagents/chemistry/holder.dm +++ b/code/modules/reagents/chemistry/holder.dm @@ -732,6 +732,18 @@ out += "[taste_desc]" return english_list(out, "something indescribable") +<<<<<<< HEAD +======= + +/datum/reagents/proc/expose_temperature(var/temperature, var/coeff=0.02) + var/temp_delta = (temperature - chem_temp) * coeff + if(temp_delta > 0) + chem_temp = min(chem_temp + max(temp_delta, 1), temperature) + else + chem_temp = max(chem_temp + min(temp_delta, -1), temperature) + chem_temp = round(chem_temp) + handle_reactions() +>>>>>>> ccd4981... Merge pull request #32624 from kevinz000/component_uplinks /////////////////////////////////////////////////////////////////////////////////// diff --git a/code/modules/uplink/uplink.dm b/code/modules/uplink/uplink.dm deleted file mode 100644 index 6b53ed5920..0000000000 --- a/code/modules/uplink/uplink.dm +++ /dev/null @@ -1,162 +0,0 @@ -GLOBAL_LIST_EMPTY(uplinks) - -/** - * Uplinks - * - * All /obj/item(s) have a hidden_uplink var. By default it's null. Give the item one with 'new(src') (it must be in it's contents). Then add 'uses.' - * Use whatever conditionals you want to check that the user has an uplink, and then call interact() on their uplink. - * You might also want the uplink menu to open if active. Check if the uplink is 'active' and then interact() with it. -**/ -/obj/item/device/uplink - name = "syndicate uplink" - desc = "There is something wrong if you're examining this." - var/active = FALSE - var/lockable = TRUE - var/telecrystals = 20 - var/selected_cat = null - var/owner = null - var/datum/game_mode/gamemode = null - var/spent_telecrystals = 0 - var/purchase_log = "" - var/list/uplink_items - var/hidden_crystals = 0 - -/obj/item/device/uplink/Initialize() - . = ..() - GLOB.uplinks += src - uplink_items = get_uplink_items(gamemode) - -/obj/item/device/uplink/proc/set_gamemode(gamemode) - src.gamemode = gamemode - uplink_items = get_uplink_items(gamemode) - -/obj/item/device/uplink/Destroy() - GLOB.uplinks -= src - return ..() - -/obj/item/device/uplink/attackby(obj/item/I, mob/user, params) - for(var/item in subtypesof(/datum/uplink_item)) - var/datum/uplink_item/UI = item - var/path = null - if(initial(UI.refund_path)) - path = initial(UI.refund_path) - else - path = initial(UI.item) - var/cost = 0 - if(initial(UI.refund_amount)) - cost = initial(UI.refund_amount) - else - cost = initial(UI.cost) - var/refundable = initial(UI.refundable) - if(I.type == path && refundable && I.check_uplink_validity()) - telecrystals += cost - spent_telecrystals -= cost - to_chat(user, "[I] refunded.") - qdel(I) - return - ..() - -/obj/item/device/uplink/interact(mob/user) - active = TRUE - if(user) - ui_interact(user) - -/obj/item/device/uplink/ui_interact(mob/user, ui_key = "main", datum/tgui/ui = null, force_open = FALSE, \ - datum/tgui/master_ui = null, datum/ui_state/state = GLOB.inventory_state) - ui = SStgui.try_update_ui(user, src, ui_key, ui, force_open) - if(!ui) - ui = new(user, src, ui_key, "uplink", name, 450, 750, master_ui, state) - ui.set_autoupdate(FALSE) // This UI is only ever opened by one person, and never is updated outside of user input. - ui.set_style("syndicate") - ui.open() - -/obj/item/device/uplink/ui_data(mob/user) - if(!user.mind) - return - var/list/data = list() - data["telecrystals"] = telecrystals - data["lockable"] = lockable - - data["categories"] = list() - for(var/category in uplink_items) - var/list/cat = list( - "name" = category, - "items" = (category == selected_cat ? list() : null)) - if(category == selected_cat) - for(var/item in uplink_items[category]) - var/datum/uplink_item/I = uplink_items[category][item] - if(I.limited_stock == 0) - continue - if(I.restricted_roles.len) - var/is_inaccessible = 1 - for(var/R in I.restricted_roles) - if(R == user.mind.assigned_role) - is_inaccessible = 0 - if(is_inaccessible) - continue - cat["items"] += list(list( - "name" = I.name, - "cost" = I.cost, - "desc" = I.desc, - )) - data["categories"] += list(cat) - return data - - -/obj/item/device/uplink/ui_act(action, params) - if(!active) - return - - switch(action) - if("buy") - var/item = params["item"] - - var/list/buyable_items = list() - for(var/category in uplink_items) - buyable_items += uplink_items[category] - - if(item in buyable_items) - var/datum/uplink_item/I = buyable_items[item] - I.buy(usr, src) - . = TRUE - if("lock") - active = FALSE - telecrystals += hidden_crystals - hidden_crystals = 0 - SStgui.close_uis(src) - if("select") - selected_cat = params["category"] - return 1 - - -/obj/item/device/uplink/ui_host() - return loc - -// Refund certain items by hitting the uplink with it. -/obj/item/device/radio/uplink/attackby(obj/item/I, mob/user, params) - return hidden_uplink.attackby(I, user, params) - -// A collection of pre-set uplinks, for admin spawns. -/obj/item/device/radio/uplink/Initialize() - . = ..() - icon_state = "radio" - lefthand_file = 'icons/mob/inhands/misc/devices_lefthand.dmi' - righthand_file = 'icons/mob/inhands/misc/devices_righthand.dmi' - hidden_uplink = new(src) - hidden_uplink.active = TRUE - hidden_uplink.lockable = FALSE - -/obj/item/device/radio/uplink/nuclear/Initialize() - . = ..() - hidden_uplink.set_gamemode(/datum/game_mode/nuclear) - -/obj/item/device/multitool/uplink/Initialize() - . = ..() - hidden_uplink = new(src) - hidden_uplink.active = TRUE - hidden_uplink.lockable = FALSE - -/obj/item/pen/uplink/Initialize() - . = ..() - hidden_uplink = new(src) - traitor_unlock_degrees = 360 diff --git a/tgstation.dme b/tgstation.dme index bbbd444d7d..8cb49902ba 100755 --- a/tgstation.dme +++ b/tgstation.dme @@ -310,6 +310,8 @@ #include "code\datums\shuttles.dm" #include "code\datums\soullink.dm" #include "code\datums\spawners_menu.dm" +#include "code\datums\uplink_items.dm" +#include "code\datums\uplink_purchase_log.dm" #include "code\datums\verbs.dm" #include "code\datums\weakrefs.dm" #include "code\datums\world_topic.dm" @@ -342,6 +344,7 @@ #include "code\datums\components\spooky.dm" #include "code\datums\components\squeek.dm" #include "code\datums\components\thermite.dm" +#include "code\datums\components\uplink.dm" #include "code\datums\diseases\_disease.dm" #include "code\datums\diseases\_MobProcs.dm" #include "code\datums\diseases\anxiety.dm" @@ -908,6 +911,7 @@ #include "code\game\objects\items\devices\taperecorder.dm" #include "code\game\objects\items\devices\traitordevices.dm" #include "code\game\objects\items\devices\transfer_valve.dm" +#include "code\game\objects\items\devices\uplink_devices.dm" #include "code\game\objects\items\devices\PDA\cart.dm" #include "code\game\objects\items\devices\PDA\PDA.dm" #include "code\game\objects\items\devices\PDA\PDA_types.dm" @@ -2372,9 +2376,12 @@ #include "code\modules\tgui\states\self.dm" #include "code\modules\tgui\states\zlevel.dm" #include "code\modules\tooltip\tooltip.dm" +<<<<<<< HEAD #include "code\modules\uplink\uplink.dm" #include "code\modules\uplink\uplink_item.dm" #include "code\modules\uplink\uplink_item_cit.dm" +======= +>>>>>>> ccd4981... Merge pull request #32624 from kevinz000/component_uplinks #include "code\modules\vehicles\atv.dm" #include "code\modules\vehicles\bicycle.dm" #include "code\modules\vehicles\pimpin_ride.dm" From 783960a986ed1582136b541bfa161b7f73e1e6e0 Mon Sep 17 00:00:00 2001 From: XDTM Date: Wed, 22 Nov 2017 22:36:09 +0100 Subject: [PATCH 02/66] Divides species in subtypes, makes viruses able to infect certain subtypes --- code/__DEFINES/DNA.dm | 11 +++ code/datums/diseases/_MobProcs.dm | 19 +++-- code/datums/diseases/_disease.dm | 2 + .../diseases/advance/symptoms/species.dm | 30 ++++++++ code/datums/diseases/beesease.dm | 1 + code/datums/diseases/magnitis.dm | 2 + code/datums/diseases/parrotpossession.dm | 2 + code/datums/diseases/rhumba_beat.dm | 1 + code/datums/diseases/transformation.dm | 3 +- .../carbon/human/species_types/abductors.dm | 2 +- .../carbon/human/species_types/android.dm | 2 +- .../carbon/human/species_types/angel.dm | 2 +- .../carbon/human/species_types/corporate.dm | 21 ++++++ .../carbon/human/species_types/dullahan.dm | 2 +- .../carbon/human/species_types/flypeople.dm | 1 + .../carbon/human/species_types/golems.dm | 12 ++-- .../carbon/human/species_types/humans.dm | 6 ++ .../carbon/human/species_types/jellypeople.dm | 4 +- .../human/species_types/lizardpeople.dm | 5 ++ .../carbon/human/species_types/plasmamen.dm | 2 +- .../carbon/human/species_types/podpeople.dm | 69 +++++++++++++++++++ .../human/species_types/shadowpeople.dm | 2 +- .../carbon/human/species_types/skeletons.dm | 2 +- .../carbon/human/species_types/synths.dm | 7 +- .../carbon/human/species_types/vampire.dm | 2 +- .../carbon/human/species_types/zombies.dm | 3 +- code/modules/mob/living/carbon/life.dm | 2 +- tgstation.dme | 1 + 28 files changed, 192 insertions(+), 26 deletions(-) create mode 100644 code/datums/diseases/advance/symptoms/species.dm diff --git a/code/__DEFINES/DNA.dm b/code/__DEFINES/DNA.dm index a2aa7b1414..de3d235664 100644 --- a/code/__DEFINES/DNA.dm +++ b/code/__DEFINES/DNA.dm @@ -127,6 +127,7 @@ #define TOXINLOVER 24 #define DIGITIGRADE 25 //Uses weird leg sprites. Optional for Lizards, required for ashwalkers. Don't give it to other races unless you make sprites for this (see human_parts_greyscale.dmi) #define NO_UNDERWEAR 26 +<<<<<<< HEAD #define MUTCOLORS2 27 #define MUTCOLORS3 28 #define NOLIVER 29 @@ -136,6 +137,16 @@ #define NOGENITALS 30 //Cannot create, use, or otherwise have genitals #define NO_DNA_COPY 31 #define DRINKSBLOOD 32 +======= +#define NOLIVER 27 +#define NOSTOMACH 28 +#define NO_DNA_COPY 29 +#define DRINKSBLOOD 30 +#define SPECIES_ORGANIC 31 +#define SPECIES_INORGANIC 32 +#define SPECIES_UNDEAD 33 +#define SPECIES_ROBOTIC 34 +>>>>>>> 9d487d2... Divides species in subtypes, makes viruses able to infect certain subtypes (#32858) #define ORGAN_SLOT_BRAIN "brain" #define ORGAN_SLOT_APPENDIX "appendix" diff --git a/code/datums/diseases/_MobProcs.dm b/code/datums/diseases/_MobProcs.dm index f13239a113..7c08a3908f 100644 --- a/code/datums/diseases/_MobProcs.dm +++ b/code/datums/diseases/_MobProcs.dm @@ -143,14 +143,25 @@ //Proc to use when you 100% want to infect someone, as long as they aren't immune /mob/proc/ForceContractDisease(datum/disease/D) if(!CanContractDisease(D)) - return 0 + return FALSE AddDisease(D) /mob/living/carbon/human/CanContractDisease(datum/disease/D) - if(dna && (VIRUSIMMUNE in dna.species.species_traits) && !D.bypasses_immunity) - return 0 + + if(dna) + if((VIRUSIMMUNE in dna.species.species_traits) && !D.bypasses_immunity) + return FALSE + + var/can_infect = FALSE + for(var/host_type in D.infectable_hosts) + if(host_type in dna.species.species_traits) + can_infect = TRUE + break + if(!can_infect) + return FALSE + for(var/thing in D.required_organs) if(!((locate(thing) in bodyparts) || (locate(thing) in internal_organs))) - return 0 + return FALSE return ..() \ No newline at end of file diff --git a/code/datums/diseases/_disease.dm b/code/datums/diseases/_disease.dm index 69da2ab96d..547b1d5db9 100644 --- a/code/datums/diseases/_disease.dm +++ b/code/datums/diseases/_disease.dm @@ -30,6 +30,8 @@ var/list/required_organs = list() var/needs_all_cures = TRUE var/list/strain_data = list() //dna_spread special bullshit + var/list/infectable_hosts = list(SPECIES_ORGANIC) //if the disease can spread on organics, synthetics, or undead + var/process_dead = FALSE //if this ticks while the host is dead /datum/disease/Destroy() affected_mob = null diff --git a/code/datums/diseases/advance/symptoms/species.dm b/code/datums/diseases/advance/symptoms/species.dm new file mode 100644 index 0000000000..837252c1e6 --- /dev/null +++ b/code/datums/diseases/advance/symptoms/species.dm @@ -0,0 +1,30 @@ +/datum/symptom/undead_adaptation + name = "Necrotic Metabolism" + desc = "The virus is able to thrive and act even within dead hosts." + stealth = 2 + resistance = -2 + stage_speed = 1 + transmittable = 0 + level = 5 + severity = 0 + +/datum/symptom/undead_adaptation/Start(datum/disease/advance/A) + if(!..()) + return + A.process_dead = TRUE + A.infectable_hosts |= SPECIES_UNDEAD + +/datum/symptom/inorganic_adaptation + name = "Inorganic Biology" + desc = "The virus can survive and replicate even in an inorganic environment, increasing its resistance and infection rate." + stealth = -1 + resistance = 4 + stage_speed = -2 + transmittable = 3 + level = 5 + severity = 0 + +/datum/symptom/inorganic_adaptation/Start(datum/disease/advance/A) + if(!..()) + return + A.infectable_hosts |= SPECIES_INORGANIC \ No newline at end of file diff --git a/code/datums/diseases/beesease.dm b/code/datums/diseases/beesease.dm index f02c3b90ee..80ec0abe6b 100644 --- a/code/datums/diseases/beesease.dm +++ b/code/datums/diseases/beesease.dm @@ -10,6 +10,7 @@ viable_mobtypes = list(/mob/living/carbon/human, /mob/living/carbon/monkey) desc = "If left untreated subject will regurgitate bees." severity = VIRUS_SEVERITY_MEDIUM + infectable_hosts = list(SPECIES_ORGANIC, SPECIES_UNDEAD) //bees nesting in corpses /datum/disease/beesease/stage_act() ..() diff --git a/code/datums/diseases/magnitis.dm b/code/datums/diseases/magnitis.dm index e82c24ba59..4430eee19d 100644 --- a/code/datums/diseases/magnitis.dm +++ b/code/datums/diseases/magnitis.dm @@ -10,6 +10,8 @@ permeability_mod = 0.75 desc = "This disease disrupts the magnetic field of your body, making it act as if a powerful magnet. Injections of iron help stabilize the field." severity = VIRUS_SEVERITY_MEDIUM + infectable_hosts = list(SPECIES_ORGANIC, SPECIES_ROBOTIC) + process_dead = TRUE /datum/disease/magnitis/stage_act() ..() diff --git a/code/datums/diseases/parrotpossession.dm b/code/datums/diseases/parrotpossession.dm index 42d5daa797..284c3bd7f2 100644 --- a/code/datums/diseases/parrotpossession.dm +++ b/code/datums/diseases/parrotpossession.dm @@ -11,6 +11,8 @@ viable_mobtypes = list(/mob/living/carbon/human) desc = "Subject is possesed by the vengeful spirit of a parrot. Call the priest." severity = VIRUS_SEVERITY_MEDIUM + infectable_hosts = list(SPECIES_ORGANIC, SPECIES_UNDEAD, SPECIES_INORGANIC, SPECIES_ROBOTIC) + bypasses_immunity = TRUE //2spook var/mob/living/simple_animal/parrot/Poly/ghost/parrot /datum/disease/parrot_possession/stage_act() diff --git a/code/datums/diseases/rhumba_beat.dm b/code/datums/diseases/rhumba_beat.dm index 855f1f44f0..8217364fb5 100644 --- a/code/datums/diseases/rhumba_beat.dm +++ b/code/datums/diseases/rhumba_beat.dm @@ -9,6 +9,7 @@ viable_mobtypes = list(/mob/living/carbon/human) permeability_mod = 1 severity = VIRUS_SEVERITY_BIOHAZARD + process_dead = TRUE /datum/disease/rhumba_beat/stage_act() ..() diff --git a/code/datums/diseases/transformation.dm b/code/datums/diseases/transformation.dm index 0ff47f854d..60622f61cb 100644 --- a/code/datums/diseases/transformation.dm +++ b/code/datums/diseases/transformation.dm @@ -127,7 +127,7 @@ stage4 = list("Your skin feels very loose.", "You can feel... something...inside you.") stage5 = list("Your skin feels as if it's about to burst off!") new_form = /mob/living/silicon/robot - + infectable_hosts = list(SPECIES_ORGANIC, SPECIES_UNDEAD, SPECIES_ROBOTIC) /datum/disease/transformation/robot/stage_act() ..() @@ -240,3 +240,4 @@ stage4 = list("You're ravenous.") stage5 = list("You have become a morph.") new_form = /mob/living/simple_animal/hostile/morph + infectable_hosts = list(SPECIES_ORGANIC, SPECIES_INORGANIC, SPECIES_UNDEAD) //magic! diff --git a/code/modules/mob/living/carbon/human/species_types/abductors.dm b/code/modules/mob/living/carbon/human/species_types/abductors.dm index 160b0b73a1..cf03d12130 100644 --- a/code/modules/mob/living/carbon/human/species_types/abductors.dm +++ b/code/modules/mob/living/carbon/human/species_types/abductors.dm @@ -3,7 +3,7 @@ id = "abductor" say_mod = "gibbers" sexes = FALSE - species_traits = list(NOBLOOD,NOBREATH,VIRUSIMMUNE,NOGUNS,NOHUNGER) + species_traits = list(SPECIES_ORGANIC,NOBLOOD,NOBREATH,VIRUSIMMUNE,NOGUNS,NOHUNGER) mutanttongue = /obj/item/organ/tongue/abductor var/scientist = FALSE // vars to not pollute spieces list with castes diff --git a/code/modules/mob/living/carbon/human/species_types/android.dm b/code/modules/mob/living/carbon/human/species_types/android.dm index 44f1e5c456..4badfa8405 100644 --- a/code/modules/mob/living/carbon/human/species_types/android.dm +++ b/code/modules/mob/living/carbon/human/species_types/android.dm @@ -2,7 +2,7 @@ name = "Android" id = "android" say_mod = "states" - species_traits = list(NOBREATH,RESISTHOT,RESISTCOLD,RESISTPRESSURE,NOFIRE,NOBLOOD,VIRUSIMMUNE,PIERCEIMMUNE,NOHUNGER,EASYLIMBATTACHMENT) + species_traits = list(SPECIES_ROBOTIC,NOBREATH,RESISTHOT,RESISTCOLD,RESISTPRESSURE,NOFIRE,NOBLOOD,PIERCEIMMUNE,NOHUNGER,EASYLIMBATTACHMENT) meat = null damage_overlay_type = "synth" mutanttongue = /obj/item/organ/tongue/robot diff --git a/code/modules/mob/living/carbon/human/species_types/angel.dm b/code/modules/mob/living/carbon/human/species_types/angel.dm index cc9a2ff12f..de0120028c 100644 --- a/code/modules/mob/living/carbon/human/species_types/angel.dm +++ b/code/modules/mob/living/carbon/human/species_types/angel.dm @@ -2,7 +2,7 @@ name = "Angel" id = "angel" default_color = "FFFFFF" - species_traits = list(EYECOLOR,HAIR,FACEHAIR,LIPS) + species_traits = list(SPECIES_ORGANIC,EYECOLOR,HAIR,FACEHAIR,LIPS) mutant_bodyparts = list("tail_human", "ears", "wings") default_features = list("mcolor" = "FFF", "tail_human" = "None", "ears" = "None", "wings" = "Angel") use_skintones = 1 diff --git a/code/modules/mob/living/carbon/human/species_types/corporate.dm b/code/modules/mob/living/carbon/human/species_types/corporate.dm index b9106cf408..4127e49cec 100644 --- a/code/modules/mob/living/carbon/human/species_types/corporate.dm +++ b/code/modules/mob/living/carbon/human/species_types/corporate.dm @@ -1,3 +1,4 @@ +<<<<<<< HEAD /datum/species/corporate name = "Corporate Agent" id = "agent" @@ -16,4 +17,24 @@ blacklisted = 1 use_skintones = 0 species_traits = list(RADIMMUNE,VIRUSIMMUNE,NOBLOOD,PIERCEIMMUNE,EYECOLOR,NODISMEMBER,NOHUNGER) +======= +/datum/species/corporate + name = "Corporate Agent" + id = "agent" + hair_alpha = 0 + say_mod = "declares" + speedmod = -2//Fast + brutemod = 0.7//Tough against firearms + burnmod = 0.65//Tough against lasers + coldmod = 0 + heatmod = 0.5//it's a little tough to burn them to death not as hard though. + punchdamagelow = 20 + punchdamagehigh = 30//they are inhumanly strong + punchstunthreshold = 25 + attack_verb = "smash" + attack_sound = 'sound/weapons/resonator_blast.ogg' + blacklisted = 1 + use_skintones = 0 + species_traits = list(SPECIES_ORGANIC,RADIMMUNE,VIRUSIMMUNE,NOBLOOD,PIERCEIMMUNE,EYECOLOR,NODISMEMBER,NOHUNGER) +>>>>>>> 9d487d2... Divides species in subtypes, makes viruses able to infect certain subtypes (#32858) sexes = 0 \ No newline at end of file diff --git a/code/modules/mob/living/carbon/human/species_types/dullahan.dm b/code/modules/mob/living/carbon/human/species_types/dullahan.dm index 5effff5bd3..78cf1a3b7a 100644 --- a/code/modules/mob/living/carbon/human/species_types/dullahan.dm +++ b/code/modules/mob/living/carbon/human/species_types/dullahan.dm @@ -2,7 +2,7 @@ name = "dullahan" id = "dullahan" default_color = "FFFFFF" - species_traits = list(EYECOLOR,HAIR,FACEHAIR,LIPS,NOBREATH,NOHUNGER) + species_traits = list(SPECIES_ORGANIC,EYECOLOR,HAIR,FACEHAIR,LIPS,NOBREATH,NOHUNGER) mutant_bodyparts = list("tail_human", "ears", "wings") default_features = list("mcolor" = "FFF", "tail_human" = "None", "ears" = "None", "wings" = "None") use_skintones = TRUE diff --git a/code/modules/mob/living/carbon/human/species_types/flypeople.dm b/code/modules/mob/living/carbon/human/species_types/flypeople.dm index 61609f653c..7b37e5fc42 100644 --- a/code/modules/mob/living/carbon/human/species_types/flypeople.dm +++ b/code/modules/mob/living/carbon/human/species_types/flypeople.dm @@ -2,6 +2,7 @@ name = "Flyperson" id = "fly" say_mod = "buzzes" + species_traits = list(SPECIES_ORGANIC) mutanttongue = /obj/item/organ/tongue/fly mutantliver = /obj/item/organ/liver/fly mutantstomach = /obj/item/organ/stomach/fly diff --git a/code/modules/mob/living/carbon/human/species_types/golems.dm b/code/modules/mob/living/carbon/human/species_types/golems.dm index e3d2d5db61..ee2d13ae4a 100644 --- a/code/modules/mob/living/carbon/human/species_types/golems.dm +++ b/code/modules/mob/living/carbon/human/species_types/golems.dm @@ -2,7 +2,7 @@ // Animated beings of stone. They have increased defenses, and do not need to breathe. They're also slow as fuuuck. name = "Golem" id = "iron golem" - species_traits = list(NOBREATH,RESISTHOT,RESISTCOLD,RESISTPRESSURE,NOFIRE,NOGUNS,NOBLOOD,RADIMMUNE,VIRUSIMMUNE,PIERCEIMMUNE,NODISMEMBER,MUTCOLORS,NO_UNDERWEAR) + species_traits = list(SPECIES_INORGANIC,NOBREATH,RESISTHOT,RESISTCOLD,RESISTPRESSURE,NOFIRE,NOGUNS,NOBLOOD,RADIMMUNE,PIERCEIMMUNE,NODISMEMBER,MUTCOLORS,NO_UNDERWEAR) mutant_organs = list(/obj/item/organ/adamantine_resonator) speedmod = 2 armor = 55 @@ -76,7 +76,7 @@ fixed_mut_color = "a3d" meat = /obj/item/ore/plasma //Can burn and takes damage from heat - species_traits = list(NOBREATH,RESISTCOLD,RESISTPRESSURE,NOGUNS,NOBLOOD,RADIMMUNE,VIRUSIMMUNE,PIERCEIMMUNE,NODISMEMBER,MUTCOLORS,NO_UNDERWEAR) + species_traits = list(SPECIES_INORGANIC,NOBREATH,RESISTCOLD,RESISTPRESSURE,NOGUNS,NOBLOOD,RADIMMUNE,PIERCEIMMUNE,NODISMEMBER,MUTCOLORS,NO_UNDERWEAR) info_text = "As a Plasma Golem, you burn easily. Be careful, if you get hot enough while burning, you'll blow up!" heatmod = 0 //fine until they blow up prefix = "Plasma" @@ -242,7 +242,7 @@ fixed_mut_color = "49311c" meat = /obj/item/stack/sheet/mineral/wood //Can burn and take damage from heat - species_traits = list(NOBREATH,RESISTCOLD,RESISTPRESSURE,NOGUNS,NOBLOOD,RADIMMUNE,VIRUSIMMUNE,PIERCEIMMUNE,NODISMEMBER,MUTCOLORS,NO_UNDERWEAR) + species_traits = list(SPECIES_ORGANIC,NOBREATH,RESISTCOLD,RESISTPRESSURE,NOGUNS,NOBLOOD,RADIMMUNE,PIERCEIMMUNE,NODISMEMBER,MUTCOLORS,NO_UNDERWEAR) armor = 30 burnmod = 1.25 heatmod = 1.5 @@ -549,7 +549,7 @@ limbs_id = "cultgolem" sexes = FALSE info_text = "As a Runic Golem, you possess eldritch powers granted by the Elder God Nar'Sie." - species_traits = list(NOBREATH,RESISTHOT,RESISTCOLD,RESISTPRESSURE,NOFIRE,NOGUNS,NOBLOOD,RADIMMUNE,VIRUSIMMUNE,PIERCEIMMUNE,NODISMEMBER,NO_UNDERWEAR) //no mutcolors + species_traits = list(SPECIES_INORGANIC,NOBREATH,RESISTHOT,RESISTCOLD,RESISTPRESSURE,NOFIRE,NOGUNS,NOBLOOD,RADIMMUNE,PIERCEIMMUNE,NODISMEMBER,NO_UNDERWEAR) //no mutcolors prefix = "Runic" var/obj/effect/proc_holder/spell/targeted/ethereal_jaunt/shift/golem/phase_shift @@ -602,7 +602,7 @@ limbs_id = "clockgolem" info_text = "As a clockwork golem, you are faster than \ other types of golem (being a machine), and are immune to electric shocks." - species_traits = list(NO_UNDERWEAR, NOTRANSSTING, NOBREATH, NOZOMBIE, VIRUSIMMUNE, RADIMMUNE, NOBLOOD, RESISTCOLD, RESISTPRESSURE, PIERCEIMMUNE) + species_traits = list(SPECIES_INORGANIC,NO_UNDERWEAR, NOTRANSSTING, NOBREATH, NOZOMBIE, RADIMMUNE, NOBLOOD, RESISTCOLD, RESISTPRESSURE, PIERCEIMMUNE) armor = 20 //Reinforced, but much less so to allow for fast movement attack_verb = "smash" attack_sound = 'sound/magic/clockwork/anima_fragment_attack.ogg' @@ -653,7 +653,7 @@ limbs_id = "clothgolem" sexes = FALSE info_text = "As a Cloth Golem, you are able to reform yourself after death, provided your remains aren't burned or destroyed. You are, of course, very flammable." - species_traits = list(NOBREATH,RESISTCOLD,RESISTPRESSURE,NOGUNS,NOBLOOD,RADIMMUNE,VIRUSIMMUNE,PIERCEIMMUNE,NODISMEMBER,NO_UNDERWEAR) //no mutcolors, and can burn + species_traits = list(SPECIES_UNDEAD,NOBREATH,RESISTCOLD,RESISTPRESSURE,NOGUNS,NOBLOOD,RADIMMUNE,PIERCEIMMUNE,NODISMEMBER,NO_UNDERWEAR) //no mutcolors, and can burn armor = 15 //feels no pain, but not too resistant burnmod = 2 // don't get burned speedmod = 1 // not as heavy as stone diff --git a/code/modules/mob/living/carbon/human/species_types/humans.dm b/code/modules/mob/living/carbon/human/species_types/humans.dm index 63fdacc504..7d43d1cdb4 100644 --- a/code/modules/mob/living/carbon/human/species_types/humans.dm +++ b/code/modules/mob/living/carbon/human/species_types/humans.dm @@ -2,9 +2,15 @@ name = "Human" id = "human" default_color = "FFFFFF" +<<<<<<< HEAD species_traits = list(MUTCOLORS_PARTSONLY,EYECOLOR,HAIR,FACEHAIR,LIPS) mutant_bodyparts = list("tail_human", "ears", "taur") default_features = list("tail_human" = "None", "ears" = "None", "taur" = "none") +======= + species_traits = list(SPECIES_ORGANIC,EYECOLOR,HAIR,FACEHAIR,LIPS) + mutant_bodyparts = list("tail_human", "ears", "wings") + default_features = list("mcolor" = "FFF", "tail_human" = "None", "ears" = "None", "wings" = "None") +>>>>>>> 9d487d2... Divides species in subtypes, makes viruses able to infect certain subtypes (#32858) use_skintones = 1 skinned_type = /obj/item/stack/sheet/animalhide/human disliked_food = GROSS | RAW diff --git a/code/modules/mob/living/carbon/human/species_types/jellypeople.dm b/code/modules/mob/living/carbon/human/species_types/jellypeople.dm index b79a0e81a5..5d10ea6b36 100644 --- a/code/modules/mob/living/carbon/human/species_types/jellypeople.dm +++ b/code/modules/mob/living/carbon/human/species_types/jellypeople.dm @@ -4,7 +4,7 @@ id = "jelly" default_color = "00FF90" say_mod = "chirps" - species_traits = list(MUTCOLORS,EYECOLOR,NOBLOOD,VIRUSIMMUNE,TOXINLOVER) + species_traits = list(SPECIES_ORGANIC,MUTCOLORS,EYECOLOR,NOBLOOD,VIRUSIMMUNE,TOXINLOVER) meat = /obj/item/reagent_containers/food/snacks/meat/slab/human/mutant/slime exotic_blood = "slimejelly" damage_overlay_type = "" @@ -101,7 +101,7 @@ name = "Slimeperson" id = "slime" default_color = "00FFFF" - species_traits = list(MUTCOLORS,EYECOLOR,HAIR,FACEHAIR,NOBLOOD,VIRUSIMMUNE, TOXINLOVER) + species_traits = list(SPECIES_ORGANIC,MUTCOLORS,EYECOLOR,HAIR,FACEHAIR,NOBLOOD,VIRUSIMMUNE, TOXINLOVER) say_mod = "says" hair_color = "mutcolor" hair_alpha = 150 diff --git a/code/modules/mob/living/carbon/human/species_types/lizardpeople.dm b/code/modules/mob/living/carbon/human/species_types/lizardpeople.dm index e528d58b11..c1db8cd69b 100644 --- a/code/modules/mob/living/carbon/human/species_types/lizardpeople.dm +++ b/code/modules/mob/living/carbon/human/species_types/lizardpeople.dm @@ -4,8 +4,13 @@ id = "lizard" say_mod = "hisses" default_color = "00FF00" +<<<<<<< HEAD species_traits = list(MUTCOLORS,EYECOLOR,LIPS,HAIR,FACEHAIR) mutant_bodyparts = list("tail_lizard", "snout", "spines", "horns", "frills", "body_markings", "legs", "taur") +======= + species_traits = list(SPECIES_ORGANIC,MUTCOLORS,EYECOLOR,LIPS) + mutant_bodyparts = list("tail_lizard", "snout", "spines", "horns", "frills", "body_markings", "legs") +>>>>>>> 9d487d2... Divides species in subtypes, makes viruses able to infect certain subtypes (#32858) mutanttongue = /obj/item/organ/tongue/lizard mutanttail = /obj/item/organ/tail/lizard coldmod = 1.5 diff --git a/code/modules/mob/living/carbon/human/species_types/plasmamen.dm b/code/modules/mob/living/carbon/human/species_types/plasmamen.dm index 817e22163a..c4f85501d0 100644 --- a/code/modules/mob/living/carbon/human/species_types/plasmamen.dm +++ b/code/modules/mob/living/carbon/human/species_types/plasmamen.dm @@ -4,7 +4,7 @@ say_mod = "rattles" sexes = 0 meat = /obj/item/stack/sheet/mineral/plasma - species_traits = list(NOBLOOD,RESISTCOLD,RADIMMUNE,NOTRANSSTING,VIRUSIMMUNE,NOHUNGER) + species_traits = list(SPECIES_INORGANIC,NOBLOOD,RESISTCOLD,RADIMMUNE,NOTRANSSTING,NOHUNGER) mutantlungs = /obj/item/organ/lungs/plasmaman mutanttongue = /obj/item/organ/tongue/bone/plasmaman mutantliver = /obj/item/organ/liver/plasmaman diff --git a/code/modules/mob/living/carbon/human/species_types/podpeople.dm b/code/modules/mob/living/carbon/human/species_types/podpeople.dm index 3881eae6f5..37b3d1b1cf 100644 --- a/code/modules/mob/living/carbon/human/species_types/podpeople.dm +++ b/code/modules/mob/living/carbon/human/species_types/podpeople.dm @@ -1,3 +1,4 @@ +<<<<<<< HEAD /datum/species/pod // A mutation caused by a human being ressurected in a revival pod. These regain health in light, and begin to wither in darkness. name = "Podperson" @@ -69,3 +70,71 @@ H.show_message("The radiation beam singes you!") if(/obj/item/projectile/energy/florayield) H.nutrition = min(H.nutrition+30, NUTRITION_LEVEL_FULL) +======= +/datum/species/pod + // A mutation caused by a human being ressurected in a revival pod. These regain health in light, and begin to wither in darkness. + name = "Podperson" + id = "pod" + default_color = "59CE00" + species_traits = list(SPECIES_ORGANIC,MUTCOLORS,EYECOLOR) + attack_verb = "slash" + attack_sound = 'sound/weapons/slice.ogg' + miss_sound = 'sound/weapons/slashmiss.ogg' + burnmod = 1.25 + heatmod = 1.5 + meat = /obj/item/reagent_containers/food/snacks/meat/slab/human/mutant/plant + disliked_food = MEAT | DAIRY + liked_food = VEGETABLES | FRUIT | GRAIN + +/datum/species/pod/on_species_gain(mob/living/carbon/C, datum/species/old_species) + . = ..() + C.faction |= "plants" + C.faction |= "vines" + +/datum/species/pod/on_species_loss(mob/living/carbon/C) + . = ..() + C.faction -= "plants" + C.faction -= "vines" + +/datum/species/pod/spec_life(mob/living/carbon/human/H) + if(H.stat == DEAD) + return + var/light_amount = 0 //how much light there is in the place, affects receiving nutrition and healing + if(isturf(H.loc)) //else, there's considered to be no light + var/turf/T = H.loc + light_amount = min(1,T.get_lumcount()) - 0.5 + H.nutrition += light_amount * 10 + if(H.nutrition > NUTRITION_LEVEL_FULL) + H.nutrition = NUTRITION_LEVEL_FULL + if(light_amount > 0.2) //if there's enough light, heal + H.heal_overall_damage(1,1) + H.adjustToxLoss(-1) + H.adjustOxyLoss(-1) + + if(H.nutrition < NUTRITION_LEVEL_STARVING + 50) + H.take_overall_damage(2,0) + +/datum/species/pod/handle_chemicals(datum/reagent/chem, mob/living/carbon/human/H) + if(chem.id == "plantbgone") + H.adjustToxLoss(3) + H.reagents.remove_reagent(chem.id, REAGENTS_METABOLISM) + return 1 + +/datum/species/pod/on_hit(obj/item/projectile/P, mob/living/carbon/human/H) + switch(P.type) + if(/obj/item/projectile/energy/floramut) + if(prob(15)) + H.rad_act(rand(30,80)) + H.Knockdown(100) + H.visible_message("[H] writhes in pain as [H.p_their()] vacuoles boil.", "You writhe in pain as your vacuoles boil!", "You hear the crunching of leaves.") + if(prob(80)) + H.randmutb() + else + H.randmutg() + H.domutcheck() + else + H.adjustFireLoss(rand(5,15)) + H.show_message("The radiation beam singes you!") + if(/obj/item/projectile/energy/florayield) + H.nutrition = min(H.nutrition+30, NUTRITION_LEVEL_FULL) +>>>>>>> 9d487d2... Divides species in subtypes, makes viruses able to infect certain subtypes (#32858) diff --git a/code/modules/mob/living/carbon/human/species_types/shadowpeople.dm b/code/modules/mob/living/carbon/human/species_types/shadowpeople.dm index a326150c60..09c9df5f9f 100644 --- a/code/modules/mob/living/carbon/human/species_types/shadowpeople.dm +++ b/code/modules/mob/living/carbon/human/species_types/shadowpeople.dm @@ -9,7 +9,7 @@ blacklisted = 1 ignored_by = list(/mob/living/simple_animal/hostile/faithless) meat = /obj/item/reagent_containers/food/snacks/meat/slab/human/mutant/shadow - species_traits = list(NOBREATH,NOBLOOD,RADIMMUNE,VIRUSIMMUNE) + species_traits = list(SPECIES_ORGANIC,NOBREATH,NOBLOOD,RADIMMUNE,VIRUSIMMUNE) dangerous_existence = 1 mutanteyes = /obj/item/organ/eyes/night_vision diff --git a/code/modules/mob/living/carbon/human/species_types/skeletons.dm b/code/modules/mob/living/carbon/human/species_types/skeletons.dm index acaa182ad0..0a55ae0134 100644 --- a/code/modules/mob/living/carbon/human/species_types/skeletons.dm +++ b/code/modules/mob/living/carbon/human/species_types/skeletons.dm @@ -6,7 +6,7 @@ blacklisted = 1 sexes = 0 meat = /obj/item/reagent_containers/food/snacks/meat/slab/human/mutant/skeleton - species_traits = list(NOBREATH,RESISTHOT,RESISTCOLD,RESISTPRESSURE,NOBLOOD,RADIMMUNE,VIRUSIMMUNE,PIERCEIMMUNE,NOHUNGER,EASYDISMEMBER,EASYLIMBATTACHMENT) + species_traits = list(SPECIES_UNDEAD,NOBREATH,RESISTHOT,RESISTCOLD,RESISTPRESSURE,NOBLOOD,RADIMMUNE,PIERCEIMMUNE,NOHUNGER,EASYDISMEMBER,EASYLIMBATTACHMENT) mutanttongue = /obj/item/organ/tongue/bone damage_overlay_type = ""//let's not show bloody wounds or burns over bones. disliked_food = NONE diff --git a/code/modules/mob/living/carbon/human/species_types/synths.dm b/code/modules/mob/living/carbon/human/species_types/synths.dm index 8b21c2a237..856a472a73 100644 --- a/code/modules/mob/living/carbon/human/species_types/synths.dm +++ b/code/modules/mob/living/carbon/human/species_types/synths.dm @@ -3,13 +3,13 @@ id = "synth" say_mod = "beep boops" //inherited from a user's real species sexes = 0 - species_traits = list(NOTRANSSTING,NOBREATH,VIRUSIMMUNE,NODISMEMBER,NOHUNGER) //all of these + whatever we inherit from the real species + species_traits = list(SPECIES_ROBOTIC,NOTRANSSTING,NOBREATH,VIRUSIMMUNE,NODISMEMBER,NOHUNGER) //all of these + whatever we inherit from the real species dangerous_existence = 1 blacklisted = 1 meat = null damage_overlay_type = "synth" limbs_id = "synth" - var/list/initial_species_traits = list(NOTRANSSTING,NOBREATH,VIRUSIMMUNE,NODISMEMBER,NOHUNGER,NO_DNA_COPY) //for getting these values back for assume_disguise() + var/list/initial_species_traits = list(SPECIES_ROBOTIC,NOTRANSSTING,NOBREATH,VIRUSIMMUNE,NODISMEMBER,NOHUNGER,NO_DNA_COPY) //for getting these values back for assume_disguise() var/disguise_fail_health = 75 //When their health gets to this level their synthflesh partially falls off var/datum/species/fake_species = null //a species to do most of our work for us, unless we're damaged @@ -41,7 +41,8 @@ say_mod = S.say_mod sexes = S.sexes species_traits = initial_species_traits.Copy() - species_traits.Add(S.species_traits) + species_traits |= S.species_traits + species_traits -= list(SPECIES_ORGANIC, SPECIES_INORGANIC, SPECIES_UNDEAD) attack_verb = S.attack_verb attack_sound = S.attack_sound miss_sound = S.miss_sound diff --git a/code/modules/mob/living/carbon/human/species_types/vampire.dm b/code/modules/mob/living/carbon/human/species_types/vampire.dm index 0d309876c7..6d1384f12f 100644 --- a/code/modules/mob/living/carbon/human/species_types/vampire.dm +++ b/code/modules/mob/living/carbon/human/species_types/vampire.dm @@ -2,7 +2,7 @@ name = "vampire" id = "vampire" default_color = "FFFFFF" - species_traits = list(EYECOLOR,HAIR,FACEHAIR,LIPS,NOHUNGER,NOBREATH,DRINKSBLOOD) + species_traits = list(SPECIES_UNDEAD,EYECOLOR,HAIR,FACEHAIR,LIPS,NOHUNGER,NOBREATH,DRINKSBLOOD) mutant_bodyparts = list("tail_human", "ears", "wings") default_features = list("mcolor" = "FFF", "tail_human" = "None", "ears" = "None", "wings" = "None") exotic_bloodtype = "U" diff --git a/code/modules/mob/living/carbon/human/species_types/zombies.dm b/code/modules/mob/living/carbon/human/species_types/zombies.dm index 8c87e1c9c9..2fe526368a 100644 --- a/code/modules/mob/living/carbon/human/species_types/zombies.dm +++ b/code/modules/mob/living/carbon/human/species_types/zombies.dm @@ -8,7 +8,7 @@ sexes = 0 blacklisted = 1 meat = /obj/item/reagent_containers/food/snacks/meat/slab/human/mutant/zombie - species_traits = list(NOBREATH,RESISTCOLD,RESISTPRESSURE,NOBLOOD,RADIMMUNE,NOZOMBIE,EASYDISMEMBER,EASYLIMBATTACHMENT,NOTRANSSTING) + species_traits = list(SPECIES_UNDEAD,NOBREATH,RESISTCOLD,RESISTPRESSURE,NOBLOOD,RADIMMUNE,NOZOMBIE,EASYDISMEMBER,EASYLIMBATTACHMENT,NOTRANSSTING) mutanttongue = /obj/item/organ/tongue/zombie var/static/list/spooks = list('sound/hallucinations/growl1.ogg','sound/hallucinations/growl2.ogg','sound/hallucinations/growl3.ogg','sound/hallucinations/veryfar_noise.ogg','sound/hallucinations/wail.ogg') disliked_food = NONE @@ -73,6 +73,7 @@ id = "goofzombies" limbs_id = "zombie" //They look like zombies sexes = 0 + species_traits = list(SPECIES_ORGANIC) meat = /obj/item/reagent_containers/food/snacks/meat/slab/human/mutant/zombie mutanttongue = /obj/item/organ/tongue/zombie diff --git a/code/modules/mob/living/carbon/life.dm b/code/modules/mob/living/carbon/life.dm index f9b13dd24f..44613a9036 100644 --- a/code/modules/mob/living/carbon/life.dm +++ b/code/modules/mob/living/carbon/life.dm @@ -248,7 +248,7 @@ if(prob(D.infectivity)) D.spread() - if(stat != DEAD) + if(stat != DEAD && !D.process_dead) D.stage_act() //todo generalize this and move hud out diff --git a/tgstation.dme b/tgstation.dme index bbbd444d7d..48c61949b3 100755 --- a/tgstation.dme +++ b/tgstation.dme @@ -386,6 +386,7 @@ #include "code\datums\diseases\advance\symptoms\shivering.dm" #include "code\datums\diseases\advance\symptoms\skin.dm" #include "code\datums\diseases\advance\symptoms\sneeze.dm" +#include "code\datums\diseases\advance\symptoms\species.dm" #include "code\datums\diseases\advance\symptoms\symptoms.dm" #include "code\datums\diseases\advance\symptoms\viral.dm" #include "code\datums\diseases\advance\symptoms\vision.dm" From fc2a0f48fa13ecedfe12023c128e0a102b93cbf5 Mon Sep 17 00:00:00 2001 From: deathride58 Date: Wed, 22 Nov 2017 17:45:15 -0500 Subject: [PATCH 03/66] Update DNA.dm --- code/__DEFINES/DNA.dm | 19 ++++++------------- 1 file changed, 6 insertions(+), 13 deletions(-) diff --git a/code/__DEFINES/DNA.dm b/code/__DEFINES/DNA.dm index de3d235664..d3dd3fabe3 100644 --- a/code/__DEFINES/DNA.dm +++ b/code/__DEFINES/DNA.dm @@ -127,18 +127,7 @@ #define TOXINLOVER 24 #define DIGITIGRADE 25 //Uses weird leg sprites. Optional for Lizards, required for ashwalkers. Don't give it to other races unless you make sprites for this (see human_parts_greyscale.dmi) #define NO_UNDERWEAR 26 -<<<<<<< HEAD -#define MUTCOLORS2 27 -#define MUTCOLORS3 28 -#define NOLIVER 29 -#define NOSTOMACH 30 -//citadel code -#define NOAROUSAL 29 //Stops all arousal effects -#define NOGENITALS 30 //Cannot create, use, or otherwise have genitals -#define NO_DNA_COPY 31 -#define DRINKSBLOOD 32 -======= -#define NOLIVER 27 +#define NOLIVER 27 #define NOSTOMACH 28 #define NO_DNA_COPY 29 #define DRINKSBLOOD 30 @@ -146,7 +135,11 @@ #define SPECIES_INORGANIC 32 #define SPECIES_UNDEAD 33 #define SPECIES_ROBOTIC 34 ->>>>>>> 9d487d2... Divides species in subtypes, makes viruses able to infect certain subtypes (#32858) +//citadel code +#define MUTCOLORS2 35 +#define MUTCOLORS3 36 +#define NOAROUSAL 37 //Stops all arousal effects +#define NOGENITALS 38 //Cannot create, use, or otherwise have genitals #define ORGAN_SLOT_BRAIN "brain" #define ORGAN_SLOT_APPENDIX "appendix" From 3f07d95b565bcedee9c674371845c1de3aaab9c4 Mon Sep 17 00:00:00 2001 From: deathride58 Date: Wed, 22 Nov 2017 17:46:40 -0500 Subject: [PATCH 04/66] Update corporate.dm --- .../carbon/human/species_types/corporate.dm | 23 +------------------ 1 file changed, 1 insertion(+), 22 deletions(-) diff --git a/code/modules/mob/living/carbon/human/species_types/corporate.dm b/code/modules/mob/living/carbon/human/species_types/corporate.dm index 4127e49cec..a15a14159a 100644 --- a/code/modules/mob/living/carbon/human/species_types/corporate.dm +++ b/code/modules/mob/living/carbon/human/species_types/corporate.dm @@ -1,23 +1,3 @@ -<<<<<<< HEAD -/datum/species/corporate - name = "Corporate Agent" - id = "agent" - hair_alpha = 0 - say_mod = "declares" - speedmod = -2//Fast - brutemod = 0.7//Tough against firearms - burnmod = 0.65//Tough against lasers - coldmod = 0 - heatmod = 0.5//it's a little tough to burn them to death not as hard though. - punchdamagelow = 20 - punchdamagehigh = 30//they are inhumanly strong - punchstunthreshold = 25 - attack_verb = "smash" - attack_sound = 'sound/weapons/resonator_blast.ogg' - blacklisted = 1 - use_skintones = 0 - species_traits = list(RADIMMUNE,VIRUSIMMUNE,NOBLOOD,PIERCEIMMUNE,EYECOLOR,NODISMEMBER,NOHUNGER) -======= /datum/species/corporate name = "Corporate Agent" id = "agent" @@ -36,5 +16,4 @@ blacklisted = 1 use_skintones = 0 species_traits = list(SPECIES_ORGANIC,RADIMMUNE,VIRUSIMMUNE,NOBLOOD,PIERCEIMMUNE,EYECOLOR,NODISMEMBER,NOHUNGER) ->>>>>>> 9d487d2... Divides species in subtypes, makes viruses able to infect certain subtypes (#32858) - sexes = 0 \ No newline at end of file + sexes = 0 From 93a2d653bfc0f760f6f322d3e576a7e0980e270f Mon Sep 17 00:00:00 2001 From: deathride58 Date: Wed, 22 Nov 2017 17:48:56 -0500 Subject: [PATCH 05/66] Update humans.dm --- .../mob/living/carbon/human/species_types/humans.dm | 12 +++--------- 1 file changed, 3 insertions(+), 9 deletions(-) diff --git a/code/modules/mob/living/carbon/human/species_types/humans.dm b/code/modules/mob/living/carbon/human/species_types/humans.dm index 7d43d1cdb4..fe0acc4feb 100644 --- a/code/modules/mob/living/carbon/human/species_types/humans.dm +++ b/code/modules/mob/living/carbon/human/species_types/humans.dm @@ -2,15 +2,9 @@ name = "Human" id = "human" default_color = "FFFFFF" -<<<<<<< HEAD - species_traits = list(MUTCOLORS_PARTSONLY,EYECOLOR,HAIR,FACEHAIR,LIPS) - mutant_bodyparts = list("tail_human", "ears", "taur") - default_features = list("tail_human" = "None", "ears" = "None", "taur" = "none") -======= - species_traits = list(SPECIES_ORGANIC,EYECOLOR,HAIR,FACEHAIR,LIPS) - mutant_bodyparts = list("tail_human", "ears", "wings") - default_features = list("mcolor" = "FFF", "tail_human" = "None", "ears" = "None", "wings" = "None") ->>>>>>> 9d487d2... Divides species in subtypes, makes viruses able to infect certain subtypes (#32858) + species_traits = list(MUTCOLORS_PARTSONLY,SPECIES_ORGANIC,EYECOLOR,HAIR,FACEHAIR,LIPS) + mutant_bodyparts = list("tail_human", "ears", "wings", "taur") + default_features = list("mcolor" = "FFF", "tail_human" = "None", "ears" = "None", "wings" = "None", "taur" = "none") use_skintones = 1 skinned_type = /obj/item/stack/sheet/animalhide/human disliked_food = GROSS | RAW From 6bfba3ea033a7f41abe805b9f9fc7c8fbb736563 Mon Sep 17 00:00:00 2001 From: deathride58 Date: Wed, 22 Nov 2017 17:50:23 -0500 Subject: [PATCH 06/66] Update lizardpeople.dm --- .../mob/living/carbon/human/species_types/lizardpeople.dm | 7 +------ 1 file changed, 1 insertion(+), 6 deletions(-) diff --git a/code/modules/mob/living/carbon/human/species_types/lizardpeople.dm b/code/modules/mob/living/carbon/human/species_types/lizardpeople.dm index c1db8cd69b..257abf63d0 100644 --- a/code/modules/mob/living/carbon/human/species_types/lizardpeople.dm +++ b/code/modules/mob/living/carbon/human/species_types/lizardpeople.dm @@ -4,13 +4,8 @@ id = "lizard" say_mod = "hisses" default_color = "00FF00" -<<<<<<< HEAD - species_traits = list(MUTCOLORS,EYECOLOR,LIPS,HAIR,FACEHAIR) + species_traits = list(SPECIES_ORGANIC,MUTCOLORS,EYECOLOR,LIPS, HAIR, FACEHAIR) mutant_bodyparts = list("tail_lizard", "snout", "spines", "horns", "frills", "body_markings", "legs", "taur") -======= - species_traits = list(SPECIES_ORGANIC,MUTCOLORS,EYECOLOR,LIPS) - mutant_bodyparts = list("tail_lizard", "snout", "spines", "horns", "frills", "body_markings", "legs") ->>>>>>> 9d487d2... Divides species in subtypes, makes viruses able to infect certain subtypes (#32858) mutanttongue = /obj/item/organ/tongue/lizard mutanttail = /obj/item/organ/tail/lizard coldmod = 1.5 From 29d4b023f09d8774b45ea4df1adc7562ca2f66d3 Mon Sep 17 00:00:00 2001 From: deathride58 Date: Wed, 22 Nov 2017 17:51:36 -0500 Subject: [PATCH 07/66] Update podpeople.dm --- .../carbon/human/species_types/podpeople.dm | 99 +++---------------- 1 file changed, 15 insertions(+), 84 deletions(-) diff --git a/code/modules/mob/living/carbon/human/species_types/podpeople.dm b/code/modules/mob/living/carbon/human/species_types/podpeople.dm index 37b3d1b1cf..8ff0e67f5d 100644 --- a/code/modules/mob/living/carbon/human/species_types/podpeople.dm +++ b/code/modules/mob/living/carbon/human/species_types/podpeople.dm @@ -1,76 +1,3 @@ -<<<<<<< HEAD -/datum/species/pod - // A mutation caused by a human being ressurected in a revival pod. These regain health in light, and begin to wither in darkness. - name = "Podperson" - id = "pod" - default_color = "59CE00" - species_traits = list(MUTCOLORS,EYECOLOR) - attack_verb = "slash" - attack_sound = 'sound/weapons/slice.ogg' - miss_sound = 'sound/weapons/slashmiss.ogg' - burnmod = 1.25 - heatmod = 1.55 - meat = /obj/item/reagent_containers/food/snacks/meat/slab/human/mutant/plant - disliked_food = NONE - liked_food = NONE - toxic_food = NONE - - -/datum/species/pod/on_species_gain(mob/living/carbon/C, datum/species/old_species) - . = ..() - C.faction |= "plants" - C.faction |= "vines" - -/datum/species/pod/on_species_loss(mob/living/carbon/C) - . = ..() - C.faction -= "plants" - C.faction -= "vines" - -/datum/species/pod/spec_life(mob/living/carbon/human/H) - if(H.stat == DEAD) - return - var/light_amount = 0 //how much light there is in the place, affects receiving nutrition and healing - if(isturf(H.loc)) //else, there's considered to be no light - var/turf/T = H.loc - light_amount = min(1,T.get_lumcount()) - 0.5 - H.nutrition += light_amount * 10 - if(H.nutrition > NUTRITION_LEVEL_FULL) - H.nutrition = NUTRITION_LEVEL_FULL - if(light_amount > 0.2) //if there's enough light, heal - H.heal_overall_damage(0.75,0) - H.adjustOxyLoss(-0.5) - - if(H.nutrition < NUTRITION_LEVEL_STARVING + 55) - H.adjustOxyLoss(5) //can eat to negate this unfortunately - H.adjustToxLoss(3) - - -/datum/species/pod/handle_chemicals(datum/reagent/chem, mob/living/carbon/human/H) - if(chem.id == "plantbgone") - H.adjustToxLoss(5) - H.reagents.remove_reagent(chem.id, REAGENTS_METABOLISM) - H.confused = max(H.confused, 1) - return TRUE - - -/datum/species/pod/on_hit(obj/item/projectile/P, mob/living/carbon/human/H) - switch(P.type) - if(/obj/item/projectile/energy/floramut) - if(prob(15)) - H.rad_act(rand(30,80)) - H.Knockdown(100) - H.visible_message("[H] writhes in pain as [H.p_their()] vacuoles boil.", "You writhe in pain as your vacuoles boil!", "You hear the crunching of leaves.") - if(prob(80)) - H.randmutb() - else - H.randmutg() - H.domutcheck() - else - H.adjustFireLoss(rand(5,15)) - H.show_message("The radiation beam singes you!") - if(/obj/item/projectile/energy/florayield) - H.nutrition = min(H.nutrition+30, NUTRITION_LEVEL_FULL) -======= /datum/species/pod // A mutation caused by a human being ressurected in a revival pod. These regain health in light, and begin to wither in darkness. name = "Podperson" @@ -81,10 +8,12 @@ attack_sound = 'sound/weapons/slice.ogg' miss_sound = 'sound/weapons/slashmiss.ogg' burnmod = 1.25 - heatmod = 1.5 + heatmod = 1.55 meat = /obj/item/reagent_containers/food/snacks/meat/slab/human/mutant/plant - disliked_food = MEAT | DAIRY - liked_food = VEGETABLES | FRUIT | GRAIN + disliked_food = NONE + liked_food = NONE + toxic_food = NONE + /datum/species/pod/on_species_gain(mob/living/carbon/C, datum/species/old_species) . = ..() @@ -107,18 +36,21 @@ if(H.nutrition > NUTRITION_LEVEL_FULL) H.nutrition = NUTRITION_LEVEL_FULL if(light_amount > 0.2) //if there's enough light, heal - H.heal_overall_damage(1,1) - H.adjustToxLoss(-1) - H.adjustOxyLoss(-1) + H.heal_overall_damage(0.75,0) + H.adjustOxyLoss(-0.5) + + if(H.nutrition < NUTRITION_LEVEL_STARVING + 55) + H.adjustOxyLoss(5) //can eat to negate this unfortunately + H.adjustToxLoss(3) - if(H.nutrition < NUTRITION_LEVEL_STARVING + 50) - H.take_overall_damage(2,0) /datum/species/pod/handle_chemicals(datum/reagent/chem, mob/living/carbon/human/H) if(chem.id == "plantbgone") - H.adjustToxLoss(3) + H.adjustToxLoss(5) H.reagents.remove_reagent(chem.id, REAGENTS_METABOLISM) - return 1 + H.confused = max(H.confused, 1) + return TRUE + /datum/species/pod/on_hit(obj/item/projectile/P, mob/living/carbon/human/H) switch(P.type) @@ -137,4 +69,3 @@ H.show_message("The radiation beam singes you!") if(/obj/item/projectile/energy/florayield) H.nutrition = min(H.nutrition+30, NUTRITION_LEVEL_FULL) ->>>>>>> 9d487d2... Divides species in subtypes, makes viruses able to infect certain subtypes (#32858) From c69f933f15317db2915e14685a6e20c1cc548b21 Mon Sep 17 00:00:00 2001 From: deathride58 Date: Wed, 22 Nov 2017 17:55:49 -0500 Subject: [PATCH 08/66] Update uplink_items.dm --- code/datums/uplink_items.dm | 4 ---- 1 file changed, 4 deletions(-) diff --git a/code/datums/uplink_items.dm b/code/datums/uplink_items.dm index cd51838309..43abd72f16 100644 --- a/code/datums/uplink_items.dm +++ b/code/datums/uplink_items.dm @@ -91,10 +91,6 @@ GLOBAL_LIST_EMPTY(uplink_items) // Global list so we only initialize this once. /datum/uplink_item/proc/spawn_item(turf/loc, datum/component/uplink/U, mob/user) if(item) -<<<<<<< HEAD:code/modules/uplink/uplink_item.dm - SSblackbox.add_details("traitor_uplink_items_bought", "[name]|[cost]") -======= ->>>>>>> ccd4981... Merge pull request #32624 from kevinz000/component_uplinks:code/datums/uplink_items.dm return new item(loc) /datum/uplink_item/Destroy() From 1d4e3612ea099251072076660e0a5e521766ecb2 Mon Sep 17 00:00:00 2001 From: deathride58 Date: Wed, 22 Nov 2017 17:56:49 -0500 Subject: [PATCH 09/66] Update PDA.dm --- code/game/objects/items/devices/PDA/PDA.dm | 3 --- 1 file changed, 3 deletions(-) diff --git a/code/game/objects/items/devices/PDA/PDA.dm b/code/game/objects/items/devices/PDA/PDA.dm index 8e52483cba..4eebb60195 100644 --- a/code/game/objects/items/devices/PDA/PDA.dm +++ b/code/game/objects/items/devices/PDA/PDA.dm @@ -155,15 +155,12 @@ GLOBAL_LIST_EMPTY(PDAs) return /obj/item/device/pda/attack_self(mob/user) -<<<<<<< HEAD -======= if(!user.IsAdvancedToolUser()) to_chat(user, "You don't have the dexterity to do this!") return . = ..() ->>>>>>> ccd4981... Merge pull request #32624 from kevinz000/component_uplinks var/datum/asset/assets = get_asset_datum(/datum/asset/simple/pda) assets.send(user) From 738c1b7b2ac4fc7ccaa5911a5c42e4cc4e100f0d Mon Sep 17 00:00:00 2001 From: deathride58 Date: Wed, 22 Nov 2017 17:57:43 -0500 Subject: [PATCH 10/66] Update implantuplink.dm --- .../objects/items/implants/implantuplink.dm | 45 ------------------- 1 file changed, 45 deletions(-) diff --git a/code/game/objects/items/implants/implantuplink.dm b/code/game/objects/items/implants/implantuplink.dm index 82555e12c4..4ef25c28a9 100644 --- a/code/game/objects/items/implants/implantuplink.dm +++ b/code/game/objects/items/implants/implantuplink.dm @@ -1,47 +1,3 @@ -<<<<<<< HEAD -/obj/item/implant/uplink - name = "uplink implant" - desc = "Sneeki breeki." - icon = 'icons/obj/radio.dmi' - icon_state = "radio" - lefthand_file = 'icons/mob/inhands/misc/devices_lefthand.dmi' - righthand_file = 'icons/mob/inhands/misc/devices_righthand.dmi' - origin_tech = "materials=4;magnets=4;programming=4;biotech=4;syndicate=5;bluespace=5" - var/starting_tc = 0 - -/obj/item/implant/uplink/New() - hidden_uplink = new(src) - hidden_uplink.telecrystals = starting_tc - ..() - -/obj/item/implant/uplink/implant(mob/living/target, mob/user, silent = 0) - for(var/X in target.implants) - if(istype(X, type)) - var/obj/item/implant/imp_e = X - imp_e.hidden_uplink.telecrystals += hidden_uplink.telecrystals - qdel(src) - return 1 - - if(..()) - hidden_uplink.owner = "[user.key]" - return 1 - return 0 - -/obj/item/implant/uplink/activate() - if(hidden_uplink) - hidden_uplink.interact(usr) - -/obj/item/implanter/uplink - name = "implanter (uplink)" - imp_type = /obj/item/implant/uplink - -/obj/item/implanter/uplink/precharged - name = "implanter (precharged uplink)" - imp_type = /obj/item/implant/uplink/precharged - -/obj/item/implant/uplink/precharged - starting_tc = 10 -======= /obj/item/implant/uplink name = "uplink implant" desc = "Sneeki breeki." @@ -90,4 +46,3 @@ /obj/item/implant/uplink/precharged starting_tc = 10 ->>>>>>> ccd4981... Merge pull request #32624 from kevinz000/component_uplinks From 72f14418f1f4ee78b94b7b6f5822059cf7d44afe Mon Sep 17 00:00:00 2001 From: deathride58 Date: Wed, 22 Nov 2017 17:59:42 -0500 Subject: [PATCH 11/66] Update holder.dm --- code/modules/reagents/chemistry/holder.dm | 12 ------------ 1 file changed, 12 deletions(-) diff --git a/code/modules/reagents/chemistry/holder.dm b/code/modules/reagents/chemistry/holder.dm index eb1c6d7b43..b16d0bc2e7 100644 --- a/code/modules/reagents/chemistry/holder.dm +++ b/code/modules/reagents/chemistry/holder.dm @@ -732,18 +732,6 @@ out += "[taste_desc]" return english_list(out, "something indescribable") -<<<<<<< HEAD -======= - -/datum/reagents/proc/expose_temperature(var/temperature, var/coeff=0.02) - var/temp_delta = (temperature - chem_temp) * coeff - if(temp_delta > 0) - chem_temp = min(chem_temp + max(temp_delta, 1), temperature) - else - chem_temp = max(chem_temp + min(temp_delta, -1), temperature) - chem_temp = round(chem_temp) - handle_reactions() ->>>>>>> ccd4981... Merge pull request #32624 from kevinz000/component_uplinks /////////////////////////////////////////////////////////////////////////////////// From a0cdca9e7c568a003dc755857dc21ddd70efaffb Mon Sep 17 00:00:00 2001 From: Matt Smith Date: Thu, 30 Nov 2017 02:55:45 +0000 Subject: [PATCH 12/66] Fix turbine computer showing broken --- code/modules/power/turbine.dm | 14 +++++++++----- tgui/src/interfaces/turbine_computer.ract | 18 +++++++++--------- 2 files changed, 18 insertions(+), 14 deletions(-) diff --git a/code/modules/power/turbine.dm b/code/modules/power/turbine.dm index ac664894de..8b88193e21 100644 --- a/code/modules/power/turbine.dm +++ b/code/modules/power/turbine.dm @@ -344,10 +344,10 @@ /obj/machinery/computer/turbine_computer/ui_data(mob/user) var/list/data = list() - data["working"] = (compressor.starter && compressor && compressor.turbine && !compressor.stat && !compressor.turbine.stat) data["connected"] = (compressor && compressor.turbine) ? TRUE : FALSE - data["compressor_broke"] = (!compressor || compressor.stat) ? TRUE : FALSE - data["turbine_broke"] = (!compressor || compressor.turbine.stat) ? TRUE : FALSE + data["compressor_broke"] = (!compressor || (compressor.stat & BROKEN)) ? TRUE : FALSE + data["turbine_broke"] = (!compressor || !compressor.turbine || (compressor.turbine.stat & BROKEN)) ? TRUE : FALSE + data["broken"] = (data["compressor_broke"] || data["turbine_broke"]) data["online"] = compressor.starter data["power"] = DisplayPower(compressor.turbine.lastgen) @@ -360,9 +360,13 @@ if(..()) return switch(action) - if("power") + if("power-on") if(compressor && compressor.turbine) - compressor.starter = !compressor.starter + compressor.starter = TRUE + . = TRUE + if("power-off") + if(compressor && compressor.turbine) + compressor.starter = FALSE . = TRUE if("reconnect") locate_machinery() diff --git a/tgui/src/interfaces/turbine_computer.ract b/tgui/src/interfaces/turbine_computer.ract index 0e24823b39..325c5b4581 100644 --- a/tgui/src/interfaces/turbine_computer.ract +++ b/tgui/src/interfaces/turbine_computer.ract @@ -13,20 +13,20 @@ component.exports = {
- Reconnect + Reconnect
- {{#if data.working}} - {{data.online && !(data.compressor_broke || data.turbine_broke) ? "Online" : "Offline"}} - {{else}} + {{#if data.broken}} Broken + {{else}} + {{data.online && !(data.compressor_broke || data.turbine_broke) ? "Online" : "Offline"}} {{/if}}
- On - Off + On + Off
{{#if data.compressor_broke}}
@@ -40,12 +40,12 @@ component.exports = {
- {{data.working ? data.rpm : "--"}} RPM + {{data.broken ? "--" : data.rpm}} RPM - {{data.working ? data.temp : "--"}} K + {{data.broken ? "--" : data.temp}} K - {{data.working ? data.power : "--"}} + {{data.broken ? "--" : data.power}} From 7be54897b2fbc0279de36221cad8d7099b62c6fd Mon Sep 17 00:00:00 2001 From: CosmicScientist Date: Sat, 2 Dec 2017 11:48:59 +0000 Subject: [PATCH 13/66] Plushie relationships! --- code/game/objects/items/plushes.dm | 302 ++++++++++++++++++++++++++++- 1 file changed, 300 insertions(+), 2 deletions(-) diff --git a/code/game/objects/items/plushes.dm b/code/game/objects/items/plushes.dm index f2fd53403a..29e3b59d3f 100644 --- a/code/game/objects/items/plushes.dm +++ b/code/game/objects/items/plushes.dm @@ -9,13 +9,91 @@ var/list/squeak_override //Weighted list; If you want your plush to have different squeak sounds use this var/stuffed = TRUE //If the plushie has stuffing in it var/obj/item/grenade/grenade //You can remove the stuffing from a plushie and add a grenade to it for *nefarious uses* + //--love ~<3-- + gender = NEUTER + var/obj/item/toy/plush/lover + var/obj/item/toy/plush/partner + var/obj/item/toy/plush/plush_child + var/obj/item/toy/plush/paternal_parent //who initiated creation + var/obj/item/toy/plush/maternal_parent //who owns, see love() + var/list/scorned = list() //who the plush hates + var/list/scorned_by = list() //who hates the plush, to remove external references on Destroy() + var/heartbroken = FALSE + var/vowbroken = FALSE + var/young = FALSE + var/mood_message + var/list/love_message + var/list/partner_message + var/list/heartbroken_message + var/list/vowbroken_message + var/list/parent_message + var/normal_desc + //--end of love :'(-- /obj/item/toy/plush/Initialize() . = ..() AddComponent(/datum/component/squeak, squeak_override) + //have we decided if Pinocchio goes in the blue or pink aisle yet? + if(gender == NEUTER) + if(prob(50)) + gender = FEMALE + else + gender = MALE + + love_message = list("\n[src] is so happy, \he could rip a seam!") + partner_message = list("\n[src] has a ring on \his finger! It says bound to my dear [partner].") + heartbroken_message = list("\n[src] looks so sad.") + vowbroken_message = list("\n[src] lost \his ring...") + parent_message = list("\n[src] can't remember what sleep is.") + + normal_desc = desc + /obj/item/toy/plush/Destroy() QDEL_NULL(grenade) + + //inform next of kin and... acquaintances + if(partner) + partner.bad_news(src) + partner = null + lover = null + else if(lover) + lover.bad_news(src) + lover = null + + if(paternal_parent) + paternal_parent.bad_news(src) + paternal_parent = null + + if(maternal_parent) + maternal_parent.bad_news(src) + maternal_parent = null + + if(plush_child) + plush_child.bad_news(src) + plush_child = null + + var/i + var/obj/item/toy/plush/P + for(i=1, i<=scorned.len, i++) + P = scorned[i] + P.bad_news(src) + scorned = null + + for(i=1, i<=scorned_by.len, i++) + P = scorned_by[i] + P.bad_news(src) + scorned_by = null + + //null remaining lists + squeak_override = null + + love_message = null + partner_message = null + heartbroken_message = null + vowbroken_message = null + parent_message = null + return ..() /obj/item/toy/plush/handle_atom_del(atom/A) @@ -66,8 +144,221 @@ var/turf/T = get_turf(user) log_game("[key_name(user)] added a grenade ([I.name]) to [src] at [COORD(T)].") return + if(istype(I, /obj/item/toy/plush)) + love(I, user) + return return ..() +/obj/item/toy/plush/proc/love(obj/item/toy/plush/Kisser, mob/living/user) //~<3 + var/chance = 100 //to steal a kiss, surely there's a 100% chance no-one would reject a plush such as I? + var/concern = 20 //perhaps something might cloud true love with doubt + var/loyalty = 30 //why should another get between us? + var/duty = 50 //conquering another's is what I live for + + //we are not catholic + if(young == TRUE || Kisser.young == TRUE) + user.show_message("[src] plays tag with [Kisser].", 1, + "They're happy.", 0) + Kisser.cheer_up() + cheer_up() + + //never again + else if(Kisser in scorned) + //message, visible, alternate message, neither visible nor audible + user.show_message("[src] rejects the advances of [Kisser]!", 1, + "That didn't feel like it worked.", 0) + else if(src in Kisser.scorned) + user.show_message("[Kisser] realises who [src] is and turns away.", 1, + "That didn't feel like it worked.", 0) + + //first comes love + else if(Kisser.lover != src && Kisser.partner != src) //cannot be lovers or married + if(Kisser.lover) //if the initiator has a lover + Kisser.lover.heartbreak(Kisser) //the old lover can get over the kiss-and-run whilst the kisser has some fun + chance -= concern //one heart already broken, what does another mean? + if(lover) //if the recipient has a lover + chance -= loyalty //mustn't... but those lips + if(partner) //if the recipient has a partner + chance -= duty //do we mate for life? + + if(prob(chance)) //did we bag a date? + user.visible_message("[user] makes [Kisser] kiss [src]!", + "You make [Kisser] kiss [src]!") + if(lover) //who cares for the past, we live in the present + lover.heartbreak(src) + new_lover(Kisser) + Kisser.new_lover(src) + else + user.show_message("[src] rejects the advances of [Kisser], maybe next time?", 1, + "That didn't feel like it worked, this time.", 0) + + //then comes marriage + else if(Kisser.lover == src && Kisser.partner != src) //need to be lovers (assumes loving is a two way street) but not married (also assumes similar) + user.visible_message("[user] pronounces [Kisser] and [src] married! D'aw.", + "You pronounce [Kisser] and [src] married!") + new_partner(Kisser) + Kisser.new_partner(src) + + //then comes a baby in a baby's carriage, or an adoption in an adoption's orphanage + else if(Kisser.partner == src && !plush_child) //the one advancing does not take ownership of the child and we have a one child policy in the toyshop + user.visible_message("[user] is going to break [Kisser] and [src] by bashing them like that.", + "[Kisser] passionately embraces [src] in your hands. Look away you perv!") + plop(Kisser) + user.visible_message("Something drops at the feet of [user].", + "The miracle of oh god did that just come out of [src]?!") + + //then comes protection, or abstinence if we are catholic + else if(Kisser.partner == src && plush_child) + user.visible_message("[user] makes [Kisser] nuzzle [src]!", + "You make [Kisser] nuzzle [src]!") + + //then oh fuck something unexpected happened + else + user.show_message("[Kisser] and [src] don't know what to do with one another.", 0) + +/obj/item/toy/plush/proc/heartbreak(obj/item/toy/plush/Brutus) + if(lover != Brutus) + to_chat(world, "lover != Brutus") + return //why are we considering someone we don't love? + + scorned.Add(Brutus) + Brutus.scorned_by(src) + + lover = null + Brutus.lover = null //feeling's mutual + + heartbroken = TRUE + mood_message = pick(heartbroken_message) + + if(partner == Brutus) //oh dear... + partner = null + Brutus.partner = null //it'd be weird otherwise + vowbroken = TRUE + mood_message = pick(vowbroken_message) + + update_desc() + +/obj/item/toy/plush/proc/scorned_by(obj/item/toy/plush/Outmoded) + scorned_by.Add(Outmoded) + +/obj/item/toy/plush/proc/new_lover(obj/item/toy/plush/Juliet) + if(lover == Juliet) + return //nice try + lover = Juliet + + cheer_up() + lover.cheer_up() + + mood_message = pick(love_message) + update_desc() + + if(partner) //who? + partner = null //more like who cares + +/obj/item/toy/plush/proc/new_partner(obj/item/toy/plush/Apple_of_my_eye) + if(partner == Apple_of_my_eye) + return //double marriage is just insecurity + if(lover != Apple_of_my_eye) + return //union not born out of love will falter + + partner = Apple_of_my_eye + + heal_memories() + partner.heal_memories() + + mood_message = pick(partner_message) + update_desc() + +/obj/item/toy/plush/proc/plop(obj/item/toy/plush/Daddy) + if(partner != Daddy) + return //we do not have bastards in our toyshop + + if(prob(50)) //it has my eyes + plush_child = new type(get_turf(loc)) + else //it has your eyes + plush_child = new Daddy.type(get_turf(loc)) + + plush_child.make_young(src, Daddy) + +/obj/item/toy/plush/proc/make_young(obj/item/toy/plush/Mama, obj/item/toy/plush/Dada) + if(Mama == Dada) + return //cloning is reserved for plants and spacemen + + maternal_parent = Mama + paternal_parent = Dada + young = TRUE + name = "[Mama] Jr" //Icelandic naming convention pending + normal_desc = "[src] is a little baby of [maternal_parent] and [paternal_parent]!" //original desc won't be used so the child can have moods + update_desc() + + Mama.mood_message = pick(Mama.parent_message) + Mama.update_desc() + Dada.mood_message = pick(Dada.parent_message) + Dada.update_desc() + +/obj/item/toy/plush/proc/bad_news(obj/item/toy/plush/Deceased) //cotton to cotton, sawdust to sawdust + var/is_that_letter_for_me = FALSE + if(partner == Deceased) //covers marriage + is_that_letter_for_me = TRUE + partner = null + lover = null + else if(lover == Deceased) //covers lovers + is_that_letter_for_me = TRUE + lover = null + + //covers children + if(maternal_parent == Deceased) + is_that_letter_for_me = TRUE + maternal_parent = null + + if(paternal_parent == Deceased) + is_that_letter_for_me = TRUE + paternal_parent = null + + //covers parents + if(plush_child == Deceased) + is_that_letter_for_me = TRUE + plush_child = null + + //covers bad memories + if(Deceased in scorned) + scorned.Remove(Deceased) + cheer_up() //what cold button eyes you have + + if(Deceased in scorned_by) + scorned_by.Remove(Deceased) + + //all references to the departed should be cleaned up by now + + if(is_that_letter_for_me) + heartbroken = TRUE + mood_message = pick(heartbroken_message) + update_desc() + +/obj/item/toy/plush/proc/cheer_up() //it'll be all right + if(!heartbroken) + return //you cannot make smile what is already + if(vowbroken) + return //it's a pretty big deal + + heartbroken = !heartbroken + + if(mood_message in heartbroken_message) + mood_message = null + update_desc() + +/obj/item/toy/plush/proc/heal_memories() //time fixes all wounds + if(!vowbroken) + vowbroken = !vowbroken + if(mood_message in vowbroken_message) + mood_message = null + cheer_up() + +/obj/item/toy/plush/proc/update_desc() + desc = normal_desc + if(mood_message) + desc += mood_message + /obj/item/toy/plush/carpplushie name = "space carp plushie" desc = "An adorable stuffed toy that resembles a space carp." @@ -88,6 +379,7 @@ desc = "An adorable plushie of the clockwork justiciar himself with new and improved spring arm action." icon_state = "plushvar" var/obj/item/toy/plush/narplush/clash_target + gender = MALE //he's a boy, right? /obj/item/toy/plush/plushvar/Moved() . = ..() @@ -173,6 +465,7 @@ desc = "A small stuffed doll of the elder god nar'sie. Who thought this was a good children's toy?" icon_state = "narplush" var/clashing + gender = FEMALE //it's canon if the toy is /obj/item/toy/plush/narplush/Moved() . = ..() @@ -198,7 +491,7 @@ /obj/item/toy/plush/nukeplushie name = "operative plushie" - desc = "An stuffed toy that resembles a syndicate nuclear operative. The tag claims operatives to be purely fictitious." + desc = "A stuffed toy that resembles a syndicate nuclear operative. The tag claims operatives to be purely fictitious." icon_state = "plushie_nuke" item_state = "plushie_nuke" attack_verb = list("shot", "nuked", "detonated") @@ -210,4 +503,9 @@ icon_state = "plushie_slime" item_state = "plushie_slime" attack_verb = list("blorbled", "slimed", "absorbed") - squeak_override = list('sound/effects/blobattack.ogg' = 1) \ No newline at end of file +<<<<<<< HEAD + squeak_override = list('sound/effects/blobattack.ogg' = 1) +======= + squeak_override = list('sound/effects/blobattack.ogg' = 1) + gender = FEMALE //given all the jokes and drawings, I'm not sure the xenobiologists would make a slimeboy +>>>>>>> 502905f... Plushie relationships! (#33184) From f016daa833d694ef5d0053d8465a9138ee2c135b Mon Sep 17 00:00:00 2001 From: Leo Date: Fri, 1 Dec 2017 22:00:46 -0200 Subject: [PATCH 14/66] Merge pull request #33179 from nicbn/removesmices Removes the mob mouse from maintenance from maps --- _maps/map_files/BoxStation/BoxStation.dmm | 1 - _maps/map_files/PubbyStation/PubbyStation.dmm | 3 --- 2 files changed, 4 deletions(-) diff --git a/_maps/map_files/BoxStation/BoxStation.dmm b/_maps/map_files/BoxStation/BoxStation.dmm index b630c327cf..5c99a5cbcc 100644 --- a/_maps/map_files/BoxStation/BoxStation.dmm +++ b/_maps/map_files/BoxStation/BoxStation.dmm @@ -44126,7 +44126,6 @@ /area/maintenance/aft) "cdM" = ( /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, -/mob/living/simple_animal/mouse, /turf/open/floor/plating, /area/maintenance/aft) "cdN" = ( diff --git a/_maps/map_files/PubbyStation/PubbyStation.dmm b/_maps/map_files/PubbyStation/PubbyStation.dmm index fab27c788f..7b2b7dbea1 100644 --- a/_maps/map_files/PubbyStation/PubbyStation.dmm +++ b/_maps/map_files/PubbyStation/PubbyStation.dmm @@ -5716,7 +5716,6 @@ /turf/open/floor/plating, /area/maintenance/department/security/brig) "apA" = ( -/mob/living/simple_animal/mouse/gray, /turf/open/floor/plating{ icon_state = "platingdmg3" }, @@ -14612,7 +14611,6 @@ /turf/open/floor/plating, /area/maintenance/department/cargo) "aKo" = ( -/mob/living/simple_animal/mouse/gray, /turf/open/floor/plating{ burnt = 1; icon_state = "panelscorched" @@ -24725,7 +24723,6 @@ /obj/machinery/atmospherics/pipe/simple/supply/hidden{ dir = 4 }, -/mob/living/simple_animal/mouse/gray, /turf/open/floor/plating, /area/maintenance/department/cargo) "biB" = ( From 8017aac116166cc38ee5eff9c1ba22a2bb180b9f Mon Sep 17 00:00:00 2001 From: BeeSting12 Date: Fri, 1 Dec 2017 18:54:31 -0500 Subject: [PATCH 16/66] Fixes spelling error in opened cryogenic pods. (#33189) --- code/game/objects/structures/showcase.dm | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/code/game/objects/structures/showcase.dm b/code/game/objects/structures/showcase.dm index 4d1c60acf8..85a557a657 100644 --- a/code/game/objects/structures/showcase.dm +++ b/code/game/objects/structures/showcase.dm @@ -40,14 +40,14 @@ icon_state = "pod_g" /obj/structure/showcase/machinery/oldpod - name = "damaged cyrogenic pod" - desc = "A damaged cyrogenic pod long since lost to time, including its former occupant..." + name = "damaged cryogenic pod" + desc = "A damaged cryogenic pod long since lost to time, including its former occupant..." icon = 'icons/obj/cryogenic2.dmi' icon_state = "sleeper-open" /obj/structure/showcase/machinery/oldpod/used - name = "opened cyrogenic pod" - desc = "Cyrogenic pod that has recently discharged its occupand. The pod appears non-functional." + name = "opened cryogenic pod" + desc = "A cryogenic pod that has recently discharged its occupant. The pod appears non-functional." /obj/structure/showcase/cyborg/old name = "Cyborg Statue" From ae5221371fe2918e1bde485524b35fc7fa4edbbf Mon Sep 17 00:00:00 2001 From: ExcessiveUseOfCobblestone <11748095+ExcessiveUseOfCobblestone@users.noreply.github.com> Date: Sat, 2 Dec 2017 18:46:14 -0500 Subject: [PATCH 18/66] Revolutionaries can now see deconversion message regardless of status (#33202) --- code/datums/antagonists/revolution.dm | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/code/datums/antagonists/revolution.dm b/code/datums/antagonists/revolution.dm index fc501a55a7..9db86bdf08 100644 --- a/code/datums/antagonists/revolution.dm +++ b/code/datums/antagonists/revolution.dm @@ -134,11 +134,11 @@ /datum/antagonist/rev/farewell() if(ishuman(owner.current)) - owner.current.visible_message("[owner.current] looks like they just remembered their real allegiance!", \ - "You are no longer a brainwashed revolutionary! Your memory is hazy from the time you were a rebel...the only thing you remember is the name of the one who brainwashed you...") + owner.current.visible_message("[owner.current] looks like they just remembered their real allegiance!") + to_chat(owner, "You are no longer a brainwashed revolutionary! Your memory is hazy from the time you were a rebel...the only thing you remember is the name of the one who brainwashed you...") else if(issilicon(owner.current)) - owner.current.visible_message("The frame beeps contentedly, purging the hostile memory engram from the MMI before initalizing it.", \ - "The frame's firmware detects and deletes your neural reprogramming! You remember nothing but the name of the one who flashed you.") + owner.current.visible_message("The frame beeps contentedly, purging the hostile memory engram from the MMI before initalizing it.") + to_chat(owner, "The frame's firmware detects and deletes your neural reprogramming! You remember nothing but the name of the one who flashed you.") /datum/antagonist/rev/proc/remove_revolutionary(borged, deconverter) log_attack("[owner.current] (Key: [key_name(owner.current)]) has been deconverted from the revolution by [deconverter] (Key: [key_name(deconverter)])!") From efceed42778281b7b98b01faf76c86f3f07d5acb Mon Sep 17 00:00:00 2001 From: LetterJay Date: Sun, 3 Dec 2017 06:09:42 -0600 Subject: [PATCH 20/66] tgui --- tgui/assets/tgui.css | 2 +- tgui/assets/tgui.js | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/tgui/assets/tgui.css b/tgui/assets/tgui.css index ffe61666b9..256b53c106 100644 --- a/tgui/assets/tgui.css +++ b/tgui/assets/tgui.css @@ -1 +1 @@ -@charset "utf-8";body,html{box-sizing:border-box;height:100%;margin:0}html{overflow:hidden;cursor:default}body{overflow:auto;font-family:Verdana,Geneva,sans-serif;font-size:12px;color:#fff;background-color:#2a2a2a;background-image:linear-gradient(180deg,#2a2a2a 0,#202020);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr="#ff2a2a2a",endColorstr="#ff202020",GradientType=0)}*,:after,:before{box-sizing:inherit}h1,h2,h3,h4{display:inline-block;margin:0;padding:6px 0}h1{font-size:18px}h2{font-size:16px}h3{font-size:14px}h4{font-size:12px}body.clockwork{background:linear-gradient(180deg,#b18b25 0,#5f380e);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr="#ffb18b25",endColorstr="#ff5f380e",GradientType=0)}body.clockwork .normal{color:#b18b25}body.clockwork .good{color:#cfba47}body.clockwork .average{color:#896b19}body.clockwork .bad{color:#5f380e}body.clockwork .highlight{color:#b18b25}body.clockwork main{display:block;margin-top:32px;padding:2px 6px 0}body.clockwork hr{height:2px;background-color:#b18b25;border:none}body.clockwork .hidden{display:none}body.clockwork .bar .barText,body.clockwork span.button{color:#b18b25;font-size:12px;font-weight:400;font-style:normal;text-decoration:none}body.clockwork .bold{font-weight:700}body.clockwork .italic{font-style:italic}body.clockwork [unselectable=on]{-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}body.clockwork div[data-tooltip],body.clockwork span[data-tooltip]{position:relative}body.clockwork div[data-tooltip]:after,body.clockwork span[data-tooltip]:after{position:absolute;display:block;z-index:2;width:250px;padding:10px;-ms-transform:translateX(-50%);transform:translateX(-50%);visibility:hidden;opacity:0;-ms-filter:"progid:DXImageTransform.Microsoft.Alpha(Opacity=0)";white-space:normal;text-align:left;content:attr(data-tooltip);transition:all .5s;border:1px solid #170800;background-color:#2d1400}body.clockwork div[data-tooltip]:hover:after,body.clockwork span[data-tooltip]:hover:after{visibility:visible;opacity:1;-ms-filter:"progid:DXImageTransform.Microsoft.Alpha(Opacity=100)"}body.clockwork div[data-tooltip].tooltip-top:after,body.clockwork span[data-tooltip].tooltip-top:after{bottom:100%;left:50%;-ms-transform:translateX(-50%) translateY(8px);transform:translateX(-50%) translateY(8px)}body.clockwork div[data-tooltip].tooltip-top:hover:after,body.clockwork span[data-tooltip].tooltip-top:hover:after{-ms-transform:translateX(-50%) translateY(-8px);transform:translateX(-50%) translateY(-8px)}body.clockwork div[data-tooltip].tooltip-bottom:after,body.clockwork span[data-tooltip].tooltip-bottom:after{top:100%;left:50%;-ms-transform:translateX(-50%) translateY(-8px);transform:translateX(-50%) translateY(-8px)}body.clockwork div[data-tooltip].tooltip-bottom:hover:after,body.clockwork span[data-tooltip].tooltip-bottom:hover:after{-ms-transform:translateX(-50%) translateY(8px);transform:translateX(-50%) translateY(8px)}body.clockwork div[data-tooltip].tooltip-left:after,body.clockwork span[data-tooltip].tooltip-left:after{top:50%;right:100%;-ms-transform:translateX(8px) translateY(-50%);transform:translateX(8px) translateY(-50%)}body.clockwork div[data-tooltip].tooltip-left:hover:after,body.clockwork span[data-tooltip].tooltip-left:hover:after{-ms-transform:translateX(-8px) translateY(-50%);transform:translateX(-8px) translateY(-50%)}body.clockwork div[data-tooltip].tooltip-right:after,body.clockwork span[data-tooltip].tooltip-right:after{top:50%;left:100%;-ms-transform:translateX(-8px) translateY(-50%);transform:translateX(-8px) translateY(-50%)}body.clockwork div[data-tooltip].tooltip-right:hover:after,body.clockwork span[data-tooltip].tooltip-right:hover:after{-ms-transform:translateX(8px) translateY(-50%);transform:translateX(8px) translateY(-50%)}body.clockwork .bar{display:inline-block;position:relative;vertical-align:middle;width:100%;height:20px;line-height:17px;padding:1px;border:1px solid #170800;background:#2d1400}body.clockwork .bar .barText{position:absolute;top:0;right:3px}body.clockwork .bar .barFill{display:block;height:100%;transition:background-color 1s;background-color:#b18b25}body.clockwork .bar .barFill.good{background-color:#cfba47}body.clockwork .bar .barFill.average{background-color:#896b19}body.clockwork .bar .barFill.bad{background-color:#5f380e}body.clockwork span.button{display:inline-block;vertical-align:middle;min-height:20px;line-height:17px;padding:0 5px;white-space:nowrap;border:1px solid #170800}body.clockwork span.button .fa{padding-right:2px}body.clockwork span.button.normal{transition:background-color .5s;background-color:#5f380e}body.clockwork span.button.normal.active:focus,body.clockwork span.button.normal.active:hover{transition:background-color .25s;background-color:#704211;outline:0}body.clockwork span.button.disabled{transition:background-color .5s;background-color:#2d1400}body.clockwork span.button.disabled.active:focus,body.clockwork span.button.disabled.active:hover{transition:background-color .25s;background-color:#441e00;outline:0}body.clockwork span.button.selected{transition:background-color .5s;background-color:#cfba47}body.clockwork span.button.selected.active:focus,body.clockwork span.button.selected.active:hover{transition:background-color .25s;background-color:#d1bd50;outline:0}body.clockwork span.button.toggle{transition:background-color .5s;background-color:#cfba47}body.clockwork span.button.toggle.active:focus,body.clockwork span.button.toggle.active:hover{transition:background-color .25s;background-color:#d1bd50;outline:0}body.clockwork span.button.caution{transition:background-color .5s;background-color:#be6209}body.clockwork span.button.caution.active:focus,body.clockwork span.button.caution.active:hover{transition:background-color .25s;background-color:#cd6a0a;outline:0}body.clockwork span.button.danger{transition:background-color .5s;background-color:#9a9d00}body.clockwork span.button.danger.active:focus,body.clockwork span.button.danger.active:hover{transition:background-color .25s;background-color:#abaf00;outline:0}body.clockwork span.button.gridable{width:125px;margin:2px 0}body.clockwork span.button.gridable.center{text-align:center;width:75px}body.clockwork span.button+span:not(.button),body.clockwork span:not(.button)+span.button{margin-left:5px}body.clockwork div.display{width:100%;padding:4px;margin:6px 0;background-color:#2d1400;-ms-filter:"progid:DXImageTransform.Microsoft.gradient(startColorStr=#e62d1400,endColorStr=#e62d1400)";filter:progid:DXImageTransform.Microsoft.gradient(startColorStr=#e62d1400,endColorStr=#e62d1400);background-color:rgba(45,20,0,.9);box-shadow:inset 0 0 5px rgba(0,0,0,.3)}body.clockwork div.display.tabular{padding:0;margin:0}body.clockwork div.display header,body.clockwork div.subdisplay header{display:block;position:relative;width:100%;padding:0 4px;margin-bottom:6px;color:#cfba47;border-bottom:2px solid #b18b25}body.clockwork div.display header .buttonRight,body.clockwork div.subdisplay header .buttonRight{position:absolute;bottom:6px;right:4px}body.clockwork div.display article,body.clockwork div.subdisplay article{display:table;width:100%;border-collapse:collapse}body.clockwork input{display:inline-block;vertical-align:middle;height:20px;line-height:17px;padding:0 5px;white-space:nowrap;color:#b18b25;background-color:#cfba47;border:1px solid #272727}body.clockwork input.number{width:35px}body.clockwork input::-webkit-input-placeholder{color:#999}body.clockwork input:-ms-input-placeholder{color:#999}body.clockwork input::placeholder{color:#999}body.clockwork input::-ms-clear{display:none}body.clockwork svg.linegraph{overflow:hidden}body.clockwork div.notice{margin:8px 0;padding:4px;box-shadow:none;color:#2d1400;font-weight:700;font-style:italic;background-color:#000;background-image:repeating-linear-gradient(-45deg,#000,#000 10px,#170800 0,#170800 20px)}body.clockwork div.notice .label{color:#2d1400}body.clockwork div.notice .content:only-of-type{padding:0}body.clockwork div.notice hr{background-color:#896b19}body.clockwork div.resize{position:fixed;bottom:0;right:0;width:0;height:0;border-style:solid;border-width:0 0 45px 45px;border-color:transparent transparent #5f380e;-ms-transform:rotate(1turn);transform:rotate(1turn)}body.clockwork section .cell,body.clockwork section .content,body.clockwork section .label,body.clockwork section .line,body.nanotrasen section .cell,body.nanotrasen section .content,body.nanotrasen section .label,body.nanotrasen section .line,body.syndicate section .cell,body.syndicate section .content,body.syndicate section .label,body.syndicate section .line{display:table-cell;margin:0;text-align:left;vertical-align:middle;padding:3px 2px}body.clockwork section{display:table-row;width:100%}body.clockwork section:not(:first-child){padding-top:4px}body.clockwork section.candystripe:nth-child(2n){background-color:#000;-ms-filter:"progid:DXImageTransform.Microsoft.gradient(startColorStr=#33000000,endColorStr=#33000000)";filter:progid:DXImageTransform.Microsoft.gradient(startColorStr=#33000000,endColorStr=#33000000);background-color:rgba(0,0,0,.2)}body.clockwork section .label{width:1%;padding-right:32px;white-space:nowrap;color:#b18b25}body.clockwork section .content:not(:last-child){padding-right:16px}body.clockwork section .line{width:100%}body.clockwork section .cell:not(:first-child){text-align:center;padding-top:0}body.clockwork section .cell span.button{width:75px}body.clockwork section:not(:last-child){padding-right:4px}body.clockwork div.subdisplay{width:100%;margin:0}body.clockwork header.titlebar .close,body.clockwork header.titlebar .minimize{display:inline-block;position:relative;padding:7px;margin:-7px;color:#cfba47}body.clockwork header.titlebar .close:hover,body.clockwork header.titlebar .minimize:hover{color:#d1bd50}body.clockwork header.titlebar{position:fixed;z-index:1;top:0;left:0;width:100%;height:32px;background-color:#5f380e;border-bottom:1px solid #170800;box-shadow:0 3px 3px rgba(0,0,0,.1)}body.clockwork header.titlebar .statusicon{position:absolute;top:4px;left:12px;transition:color .5s}body.clockwork header.titlebar .title{position:absolute;top:6px;left:46px;color:#cfba47;font-size:16px;white-space:nowrap}body.clockwork header.titlebar .minimize{position:absolute;top:6px;right:46px}body.clockwork header.titlebar .close{position:absolute;top:4px;right:12px}body.nanotrasen{background:url("data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiIHN0YW5kYWxvbmU9Im5vIj8+DQo8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgdmVyc2lvbj0iMS4wIiB2aWV3Qm94PSIwIDAgNDI1IDIwMCIgb3BhY2l0eT0iLjMzIj4NCiAgPHBhdGggZD0ibSAxNzguMDAzOTksMC4wMzg2OSAtNzEuMjAzOTMsMCBhIDYuNzYxMzQyMiw2LjAyNTU0OTUgMCAwIDAgLTYuNzYxMzQsNi4wMjU1NSBsIDAsMTg3Ljg3MTQ3IGEgNi43NjEzNDIyLDYuMDI1NTQ5NSAwIDAgMCA2Ljc2MTM0LDYuMDI1NTQgbCA1My4xMDcyLDAgYSA2Ljc2MTM0MjIsNi4wMjU1NDk1IDAgMCAwIDYuNzYxMzUsLTYuMDI1NTQgbCAwLC0xMDEuNTQ0MDE4IDcyLjIxNjI4LDEwNC42OTkzOTggYSA2Ljc2MTM0MjIsNi4wMjU1NDk1IDAgMCAwIDUuNzYwMTUsMi44NzAxNiBsIDczLjU1NDg3LDAgYSA2Ljc2MTM0MjIsNi4wMjU1NDk1IDAgMCAwIDYuNzYxMzUsLTYuMDI1NTQgbCAwLC0xODcuODcxNDcgYSA2Ljc2MTM0MjIsNi4wMjU1NDk1IDAgMCAwIC02Ljc2MTM1LC02LjAyNTU1IGwgLTU0LjcxNjQ0LDAgYSA2Ljc2MTM0MjIsNi4wMjU1NDk1IDAgMCAwIC02Ljc2MTMzLDYuMDI1NTUgbCAwLDEwMi42MTkzNSBMIDE4My43NjQxMywyLjkwODg2IGEgNi43NjEzNDIyLDYuMDI1NTQ5NSAwIDAgMCAtNS43NjAxNCwtMi44NzAxNyB6IiAvPg0KICA8cGF0aCBkPSJNIDQuODQ0NjMzMywyMi4xMDg3NSBBIDEzLjQxMjAzOSwxMi41MDE4NDIgMCAwIDEgMTMuNDc3NTg4LDAuMDM5MjQgbCA2Ni4xMTgzMTUsMCBhIDUuMzY0ODE1OCw1LjAwMDczNyAwIDAgMSA1LjM2NDgyMyw1LjAwMDczIGwgMCw3OS44NzkzMSB6IiAvPg0KICA8cGF0aCBkPSJtIDQyMC4xNTUzNSwxNzcuODkxMTkgYSAxMy40MTIwMzgsMTIuNTAxODQyIDAgMCAxIC04LjYzMjk1LDIyLjA2OTUxIGwgLTY2LjExODMyLDAgYSA1LjM2NDgxNTIsNS4wMDA3MzcgMCAwIDEgLTUuMzY0ODIsLTUuMDAwNzQgbCAwLC03OS44NzkzMSB6IiAvPg0KPC9zdmc+DQo8IS0tIFRoaXMgd29yayBpcyBsaWNlbnNlZCB1bmRlciBhIENyZWF0aXZlIENvbW1vbnMgQXR0cmlidXRpb24tU2hhcmVBbGlrZSA0LjAgSW50ZXJuYXRpb25hbCBMaWNlbnNlLiAtLT4NCjwhLS0gaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvbGljZW5zZXMvYnktc2EvNC4wLyAtLT4NCg==") no-repeat fixed 50%/70% 70%,linear-gradient(180deg,#2a2a2a 0,#202020);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr="#ff2a2a2a",endColorstr="#ff202020",GradientType=0)}body.nanotrasen .normal{color:#40628a}body.nanotrasen .good{color:#537d29}body.nanotrasen .average{color:#be6209}body.nanotrasen .bad{color:#b00e0e}body.nanotrasen .highlight{color:#8ba5c4}body.nanotrasen main{display:block;margin-top:32px;padding:2px 6px 0}body.nanotrasen hr{height:2px;background-color:#40628a;border:none}body.nanotrasen .hidden{display:none}body.nanotrasen .bar .barText,body.nanotrasen span.button{color:#fff;font-size:12px;font-weight:400;font-style:normal;text-decoration:none}body.nanotrasen .bold{font-weight:700}body.nanotrasen .italic{font-style:italic}body.nanotrasen [unselectable=on]{-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}body.nanotrasen div[data-tooltip],body.nanotrasen span[data-tooltip]{position:relative}body.nanotrasen div[data-tooltip]:after,body.nanotrasen span[data-tooltip]:after{position:absolute;display:block;z-index:2;width:250px;padding:10px;-ms-transform:translateX(-50%);transform:translateX(-50%);visibility:hidden;opacity:0;-ms-filter:"progid:DXImageTransform.Microsoft.Alpha(Opacity=0)";white-space:normal;text-align:left;content:attr(data-tooltip);transition:all .5s;border:1px solid #272727;background-color:#363636}body.nanotrasen div[data-tooltip]:hover:after,body.nanotrasen span[data-tooltip]:hover:after{visibility:visible;opacity:1;-ms-filter:"progid:DXImageTransform.Microsoft.Alpha(Opacity=100)"}body.nanotrasen div[data-tooltip].tooltip-top:after,body.nanotrasen span[data-tooltip].tooltip-top:after{bottom:100%;left:50%;-ms-transform:translateX(-50%) translateY(8px);transform:translateX(-50%) translateY(8px)}body.nanotrasen div[data-tooltip].tooltip-top:hover:after,body.nanotrasen span[data-tooltip].tooltip-top:hover:after{-ms-transform:translateX(-50%) translateY(-8px);transform:translateX(-50%) translateY(-8px)}body.nanotrasen div[data-tooltip].tooltip-bottom:after,body.nanotrasen span[data-tooltip].tooltip-bottom:after{top:100%;left:50%;-ms-transform:translateX(-50%) translateY(-8px);transform:translateX(-50%) translateY(-8px)}body.nanotrasen div[data-tooltip].tooltip-bottom:hover:after,body.nanotrasen span[data-tooltip].tooltip-bottom:hover:after{-ms-transform:translateX(-50%) translateY(8px);transform:translateX(-50%) translateY(8px)}body.nanotrasen div[data-tooltip].tooltip-left:after,body.nanotrasen span[data-tooltip].tooltip-left:after{top:50%;right:100%;-ms-transform:translateX(8px) translateY(-50%);transform:translateX(8px) translateY(-50%)}body.nanotrasen div[data-tooltip].tooltip-left:hover:after,body.nanotrasen span[data-tooltip].tooltip-left:hover:after{-ms-transform:translateX(-8px) translateY(-50%);transform:translateX(-8px) translateY(-50%)}body.nanotrasen div[data-tooltip].tooltip-right:after,body.nanotrasen span[data-tooltip].tooltip-right:after{top:50%;left:100%;-ms-transform:translateX(-8px) translateY(-50%);transform:translateX(-8px) translateY(-50%)}body.nanotrasen div[data-tooltip].tooltip-right:hover:after,body.nanotrasen span[data-tooltip].tooltip-right:hover:after{-ms-transform:translateX(8px) translateY(-50%);transform:translateX(8px) translateY(-50%)}body.nanotrasen .bar{display:inline-block;position:relative;vertical-align:middle;width:100%;height:20px;line-height:17px;padding:1px;border:1px solid #40628a;background:#272727}body.nanotrasen .bar .barText{position:absolute;top:0;right:3px}body.nanotrasen .bar .barFill{display:block;height:100%;transition:background-color 1s;background-color:#40628a}body.nanotrasen .bar .barFill.good{background-color:#537d29}body.nanotrasen .bar .barFill.average{background-color:#be6209}body.nanotrasen .bar .barFill.bad{background-color:#b00e0e}body.nanotrasen span.button{display:inline-block;vertical-align:middle;min-height:20px;line-height:17px;padding:0 5px;white-space:nowrap;border:1px solid #272727}body.nanotrasen span.button .fa{padding-right:2px}body.nanotrasen span.button.normal{transition:background-color .5s;background-color:#40628a}body.nanotrasen span.button.normal.active:focus,body.nanotrasen span.button.normal.active:hover{transition:background-color .25s;background-color:#4f78aa;outline:0}body.nanotrasen span.button.disabled{transition:background-color .5s;background-color:#999}body.nanotrasen span.button.disabled.active:focus,body.nanotrasen span.button.disabled.active:hover{transition:background-color .25s;background-color:#a8a8a8;outline:0}body.nanotrasen span.button.selected{transition:background-color .5s;background-color:#2f943c}body.nanotrasen span.button.selected.active:focus,body.nanotrasen span.button.selected.active:hover{transition:background-color .25s;background-color:#3ab84b;outline:0}body.nanotrasen span.button.toggle{transition:background-color .5s;background-color:#2f943c}body.nanotrasen span.button.toggle.active:focus,body.nanotrasen span.button.toggle.active:hover{transition:background-color .25s;background-color:#3ab84b;outline:0}body.nanotrasen span.button.caution{transition:background-color .5s;background-color:#9a9d00}body.nanotrasen span.button.caution.active:focus,body.nanotrasen span.button.caution.active:hover{transition:background-color .25s;background-color:#ced200;outline:0}body.nanotrasen span.button.danger{transition:background-color .5s;background-color:#9d0808}body.nanotrasen span.button.danger.active:focus,body.nanotrasen span.button.danger.active:hover{transition:background-color .25s;background-color:#ce0b0b;outline:0}body.nanotrasen span.button.gridable{width:125px;margin:2px 0}body.nanotrasen span.button.gridable.center{text-align:center;width:75px}body.nanotrasen span.button+span:not(.button),body.nanotrasen span:not(.button)+span.button{margin-left:5px}body.nanotrasen div.display{width:100%;padding:4px;margin:6px 0;background-color:#000;-ms-filter:"progid:DXImageTransform.Microsoft.gradient(startColorStr=#54000000,endColorStr=#54000000)";filter:progid:DXImageTransform.Microsoft.gradient(startColorStr=#54000000,endColorStr=#54000000);background-color:rgba(0,0,0,.33);box-shadow:inset 0 0 5px rgba(0,0,0,.5)}body.nanotrasen div.display.tabular{padding:0;margin:0}body.nanotrasen div.display header,body.nanotrasen div.subdisplay header{display:block;position:relative;width:100%;padding:0 4px;margin-bottom:6px;color:#fff;border-bottom:2px solid #40628a}body.nanotrasen div.display header .buttonRight,body.nanotrasen div.subdisplay header .buttonRight{position:absolute;bottom:6px;right:4px}body.nanotrasen div.display article,body.nanotrasen div.subdisplay article{display:table;width:100%;border-collapse:collapse}body.nanotrasen input{display:inline-block;vertical-align:middle;height:20px;line-height:17px;padding:0 5px;white-space:nowrap;color:#000;background-color:#fff;border:1px solid #272727}body.nanotrasen input.number{width:35px}body.nanotrasen input::-webkit-input-placeholder{color:#999}body.nanotrasen input:-ms-input-placeholder{color:#999}body.nanotrasen input::placeholder{color:#999}body.nanotrasen input::-ms-clear{display:none}body.nanotrasen svg.linegraph{overflow:hidden}body.nanotrasen div.notice{margin:8px 0;padding:4px;box-shadow:none;color:#000;font-weight:700;font-style:italic;background-color:#bb9b68;background-image:repeating-linear-gradient(-45deg,#bb9b68,#bb9b68 10px,#b1905d 0,#b1905d 20px)}body.nanotrasen div.notice .label{color:#000}body.nanotrasen div.notice .content:only-of-type{padding:0}body.nanotrasen div.notice hr{background-color:#272727}body.nanotrasen div.resize{position:fixed;bottom:0;right:0;width:0;height:0;border-style:solid;border-width:0 0 45px 45px;border-color:transparent transparent #363636;-ms-transform:rotate(1turn);transform:rotate(1turn)}body.nanotrasen section .cell,body.nanotrasen section .content,body.nanotrasen section .label,body.nanotrasen section .line,body.syndicate section .cell,body.syndicate section .content,body.syndicate section .label,body.syndicate section .line{display:table-cell;margin:0;text-align:left;vertical-align:middle;padding:3px 2px}body.nanotrasen section{display:table-row;width:100%}body.nanotrasen section:not(:first-child){padding-top:4px}body.nanotrasen section.candystripe:nth-child(2n){background-color:#000;-ms-filter:"progid:DXImageTransform.Microsoft.gradient(startColorStr=#33000000,endColorStr=#33000000)";filter:progid:DXImageTransform.Microsoft.gradient(startColorStr=#33000000,endColorStr=#33000000);background-color:rgba(0,0,0,.2)}body.nanotrasen section .label{width:1%;padding-right:32px;white-space:nowrap;color:#8ba5c4}body.nanotrasen section .content:not(:last-child){padding-right:16px}body.nanotrasen section .line{width:100%}body.nanotrasen section .cell:not(:first-child){text-align:center;padding-top:0}body.nanotrasen section .cell span.button{width:75px}body.nanotrasen section:not(:last-child){padding-right:4px}body.nanotrasen div.subdisplay{width:100%;margin:0}body.nanotrasen header.titlebar .close,body.nanotrasen header.titlebar .minimize{display:inline-block;position:relative;padding:7px;margin:-7px;color:#8ba5c4}body.nanotrasen header.titlebar .close:hover,body.nanotrasen header.titlebar .minimize:hover{color:#9cb2cd}body.nanotrasen header.titlebar{position:fixed;z-index:1;top:0;left:0;width:100%;height:32px;background-color:#363636;border-bottom:1px solid #161616;box-shadow:0 3px 3px rgba(0,0,0,.1)}body.nanotrasen header.titlebar .statusicon{position:absolute;top:4px;left:12px;transition:color .5s}body.nanotrasen header.titlebar .title{position:absolute;top:6px;left:46px;color:#8ba5c4;font-size:16px;white-space:nowrap}body.nanotrasen header.titlebar .minimize{position:absolute;top:6px;right:46px}body.nanotrasen header.titlebar .close{position:absolute;top:4px;right:12px}body.syndicate{background:url("data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiIHN0YW5kYWxvbmU9Im5vIj8+DQo8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgdmVyc2lvbj0iMS4wIiB2aWV3Qm94PSIwIDAgMjAwIDI4OS43NDIiIG9wYWNpdHk9Ii4zMyI+DQogIDxwYXRoIGQ9Im0gOTMuNTM3Njc3LDAgYyAtMTguMTEzMTI1LDAgLTM0LjIyMDEzMywzLjExMTY0IC00OC4zMjM0ODQsOS4zMzQzNyAtMTMuOTY1MDkyLDYuMjIxNjcgLTI0LjYxMjQ0MiwxNS4wNzExNCAtMzEuOTQwNjUxLDI2LjU0NzEgLTcuMTg5OTM5OCwxMS4zMzc4OSAtMTAuMzAxMjI2NiwyNC43NDkxMSAtMTAuMzAxMjI2Niw0MC4yMzQ3OCAwLDEwLjY0NjYyIDIuNzI1MDAyNiwyMC40NjQ2NSA4LjE3NTExMTYsMjkuNDUyNTggNS42MTUyNzcsOC45ODY4NiAxNC4wMzgyNzcsMTcuMzUyMDQgMjUuMjY4ODIxLDI1LjA5NDM2IDExLjIzMDU0NCw3LjYwNTMxIDI2LjUwNzQyMSwxNS40MTgzNSA0NS44MzA1MTQsMjMuNDM3ODIgMTkuOTgzNzQ4LDguMjk1NTcgMzQuODQ4ODQ4LDE1LjU1NDcxIDQ0LjU5Mjk5OCwyMS43NzYzOCA5Ljc0NDE0LDYuMjIyNzMgMTYuNzYxNywxMi44NTg1IDIxLjA1NTcyLDE5LjkwOTUxIDQuMjk0MDQsNy4wNTIwOCA2LjQ0MTkzLDE1Ljc2NDA4IDYuNDQxOTMsMjYuMTM0NTkgMCwxNi4xNzcwMiAtNS4yMDE5NiwyOC40ODIyMiAtMTUuNjA2NzMsMzYuOTE2ODIgLTEwLjIzOTYsOC40MzQ3IC0yNS4wMjIwMywxMi42NTIzIC00NC4zNDUxNjksMTIuNjUyMyAtMTQuMDM4MTcxLDAgLTI1LjUxNTI0NywtMS42NTk0IC0zNC40MzM2MTgsLTQuOTc3NyAtOC45MTgzNywtMy40NTY2IC0xNi4xODU1NzIsLTguNzExMyAtMjEuODAwODM5LC0xNS43NjMzIC01LjYxNTI3NywtNy4wNTIxIC0xMC4wNzQ3OTUsLTE2LjY2MDg4IC0xMy4zNzc4OTksLTI4LjgyODEyIGwgLTI0Ljc3MzE2MjYyOTM5NDUsMCAwLDU2LjgyNjMyIEMgMzMuODU2NzY5LDI4Ni4wNzYwMSA2My43NDkwNCwyODkuNzQyMDEgODkuNjc4MzgzLDI4OS43NDIwMSBjIDE2LjAyMDAyNywwIDMwLjcxOTc4NywtMS4zODI3IDQ0LjA5NzMzNywtNC4xNDc5IDEzLjU0MjcyLC0yLjkwNDMgMjUuMTA0MSwtNy40Njc2IDM0LjY4MzA5LC0xMy42ODkzIDkuNzQ0MTMsLTYuMzU5NyAxNy4zNDA0MiwtMTQuNTE5NSAyMi43OTA1MiwtMjQuNDc0OCA1LjQ1MDEsLTEwLjA5MzMyIDguMTc1MTEsLTIyLjM5OTU5IDguMTc1MTEsLTM2LjkxNjgyIDAsLTEyLjk5NzY0IC0zLjMwMjEsLTI0LjMzNTM5IC05LjkwODI5LC0zNC4wMTQ2IC02LjQ0MTA1LC05LjgxNzI1IC0xNS41MjU0NSwtMTguNTI3MDcgLTI3LjI1MTQ2LC0yNi4xMzEzMyAtMTEuNTYwODUsLTcuNjA0MjcgLTI3LjkxMDgzLC0xNS44MzE0MiAtNDkuMDUwNjYsLTI0LjY4MDIyIC0xNy41MDY0NCwtNy4xOTAxMiAtMzAuNzE5NjY4LC0xMy42ODk0OCAtMzkuNjM4MDM4LC0xOS40OTcwMSAtOC45MTgzNzEsLTUuODA3NTIgLTE4LjYwNzQ3NCwtMTIuNDM0MDkgLTI0LjA5NjUyNCwtMTguODc0MTcgLTUuNDI2MDQzLC02LjM2NjE2IC05LjY1ODgyNiwtMTUuMDcwMDMgLTkuNjU4ODI2LC0yNC44ODcyOSAwLC05LjI2NDAxIDIuMDc1NDE0LC0xNy4yMTM0NSA2LjIyMzQ1NCwtMjMuODUwMzMgMTEuMDk4Mjk4LC0xNC4zOTc0OCA0MS4yODY2MzgsLTEuNzk1MDcgNDUuMDc1NjA5LDI0LjM0NzYyIDQuODM5MzkyLDYuNzc0OTEgOC44NDkzNSwxNi4yNDcyOSAxMi4wMjk1MTUsMjguNDE1NiBsIDIwLjUzMjM0LDAgMCwtNTUuOTk5NjcgYyAtNC40NzgyNSwtNS45MjQ0OCAtOS45NTQ4OCwtMTAuNjMyMjIgLTE1LjkwODM3LC0xNC4zNzQxMSAxLjY0MDU1LDAuNDc5MDUgMy4xOTAzOSwxLjAyMzc2IDQuNjM4NjUsMS42NDAyNCA2LjQ5ODYxLDIuNjI2MDcgMTIuMTY3OTMsNy4zMjc0NyAxNy4wMDczLDE0LjEwMzQ1IDQuODM5MzksNi43NzQ5MSA4Ljg0OTM1LDE2LjI0NTY3IDEyLjAyOTUyLDI4LjQxMzk3IDAsMCA4LjQ4MTI4LC0wLjEyODk0IDguNDg5NzgsLTAuMDAyIDAuNDE3NzYsNi40MTQ5NCAtMS43NTMzOSw5LjQ1Mjg2IC00LjEyMzQyLDEyLjU2MTA0IC0yLjQxNzQsMy4xNjk3OCAtNS4xNDQ4Niw2Ljc4OTczIC00LjAwMjc4LDEzLjAwMjkgMS41MDc4Niw4LjIwMzE4IDEwLjE4MzU0LDEwLjU5NjQyIDE0LjYyMTk0LDkuMzExNTQgLTMuMzE4NDIsLTAuNDk5MTEgLTUuMzE4NTUsLTEuNzQ5NDggLTUuMzE4NTUsLTEuNzQ5NDggMCwwIDEuODc2NDYsMC45OTg2OCA1LjY1MTE3LC0xLjM1OTgxIC0zLjI3Njk1LDAuOTU1NzEgLTEwLjcwNTI5LC0wLjc5NzM4IC0xMS44MDEyNSwtNi43NjMxMyAtMC45NTc1MiwtNS4yMDg2MSAwLjk0NjU0LC03LjI5NTE0IDMuNDAxMTMsLTEwLjUxNDgyIDIuNDU0NjIsLTMuMjE5NjggNS4yODQyNiwtNi45NTgzMSA0LjY4NDMsLTE0LjQ4ODI0IGwgMC4wMDMsMC4wMDIgOC45MjY3NiwwIDAsLTU1Ljk5OTY3IGMgLTE1LjA3MTI1LC0zLjg3MTY4IC0yNy42NTMxNCwtNi4zNjA0MiAtMzcuNzQ2NzEsLTcuNDY1ODYgLTkuOTU1MzEsLTEuMTA3NTUgLTIwLjE4ODIzLC0xLjY1OTgxIC0zMC42OTY2MTMsLTEuNjU5ODEgeiBtIDcwLjMyMTYwMywxNy4zMDg5MyAwLjIzODA1LDQwLjMwNDkgYyAxLjMxODA4LDEuMjI2NjYgMi40Mzk2NSwyLjI3ODE1IDMuMzQwODEsMy4xMDYwMiA0LjgzOTM5LDYuNzc0OTEgOC44NDkzNCwxNi4yNDU2NiAxMi4wMjk1MSwyOC40MTM5NyBsIDIwLjUzMjM0LDAgMCwtNTUuOTk5NjcgYyAtNi42NzczMSwtNC41OTM4MSAtMTkuODM2NDMsLTEwLjQ3MzA5IC0zNi4xNDA3MSwtMTUuODI1MjIgeiBtIC0yOC4xMjA0OSw1LjYwNTUxIDguNTY0NzksMTcuNzE2NTUgYyAtMTEuOTcwMzcsLTYuNDY2OTcgLTEzLjg0Njc4LC05LjcxNzI2IC04LjU2NDc5LC0xNy43MTY1NSB6IG0gMjIuNzk3MDUsMCBjIDIuNzcxNSw3Ljk5OTI5IDEuNzg3NDEsMTEuMjQ5NTggLTQuNDkzNTQsMTcuNzE2NTUgbCA0LjQ5MzU0LC0xNy43MTY1NSB6IG0gMTUuMjIxOTUsMjQuMDA4NDggOC41NjQ3OSwxNy43MTY1NSBjIC0xMS45NzAzOCwtNi40NjY5NyAtMTMuODQ2NzksLTkuNzE3MjYgLTguNTY0NzksLTE3LjcxNjU1IHogbSAyMi43OTcwNCwwIGMgMi43NzE1LDcuOTk5MjkgMS43ODc0MSwxMS4yNDk1OCAtNC40OTM1NCwxNy43MTY1NSBsIDQuNDkzNTQsLTE3LjcxNjU1IHogbSAtOTkuMTEzODQsMi4yMDc2NCA4LjU2NDc5LDE3LjcxNjU1IGMgLTExLjk3MDM4MiwtNi40NjY5NyAtMTMuODQ2NzgyLC05LjcxNzI2IC04LjU2NDc5LC0xNy43MTY1NSB6IG0gMjIuNzk1NDIsMCBjIDIuNzcxNSw3Ljk5OTI5IDEuNzg3NDEsMTEuMjQ5NTggLTQuNDkzNTQsMTcuNzE2NTUgbCA0LjQ5MzU0LC0xNy43MTY1NSB6IiAvPg0KPC9zdmc+DQo8IS0tIFRoaXMgd29yayBpcyBsaWNlbnNlZCB1bmRlciBhIENyZWF0aXZlIENvbW1vbnMgQXR0cmlidXRpb24tU2hhcmVBbGlrZSA0LjAgSW50ZXJuYXRpb25hbCBMaWNlbnNlLiAtLT4NCjwhLS0gaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvbGljZW5zZXMvYnktc2EvNC4wLyAtLT4NCg==") no-repeat fixed 50%/70% 70%,linear-gradient(180deg,#750000 0,#340404);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr="#ff750000",endColorstr="#ff340404",GradientType=0)}body.syndicate .normal{color:#40628a}body.syndicate .good{color:#73e573}body.syndicate .average{color:#be6209}body.syndicate .bad{color:#b00e0e}body.syndicate .highlight{color:#000}body.syndicate main{display:block;margin-top:32px;padding:2px 6px 0}body.syndicate hr{height:2px;background-color:#272727;border:none}body.syndicate .hidden{display:none}body.syndicate .bar .barText,body.syndicate span.button{color:#fff;font-size:12px;font-weight:400;font-style:normal;text-decoration:none}body.syndicate .bold{font-weight:700}body.syndicate .italic{font-style:italic}body.syndicate [unselectable=on]{-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}body.syndicate div[data-tooltip],body.syndicate span[data-tooltip]{position:relative}body.syndicate div[data-tooltip]:after,body.syndicate span[data-tooltip]:after{position:absolute;display:block;z-index:2;width:250px;padding:10px;-ms-transform:translateX(-50%);transform:translateX(-50%);visibility:hidden;opacity:0;-ms-filter:"progid:DXImageTransform.Microsoft.Alpha(Opacity=0)";white-space:normal;text-align:left;content:attr(data-tooltip);transition:all .5s;border:1px solid #272727;background-color:#363636}body.syndicate div[data-tooltip]:hover:after,body.syndicate span[data-tooltip]:hover:after{visibility:visible;opacity:1;-ms-filter:"progid:DXImageTransform.Microsoft.Alpha(Opacity=100)"}body.syndicate div[data-tooltip].tooltip-top:after,body.syndicate span[data-tooltip].tooltip-top:after{bottom:100%;left:50%;-ms-transform:translateX(-50%) translateY(8px);transform:translateX(-50%) translateY(8px)}body.syndicate div[data-tooltip].tooltip-top:hover:after,body.syndicate span[data-tooltip].tooltip-top:hover:after{-ms-transform:translateX(-50%) translateY(-8px);transform:translateX(-50%) translateY(-8px)}body.syndicate div[data-tooltip].tooltip-bottom:after,body.syndicate span[data-tooltip].tooltip-bottom:after{top:100%;left:50%;-ms-transform:translateX(-50%) translateY(-8px);transform:translateX(-50%) translateY(-8px)}body.syndicate div[data-tooltip].tooltip-bottom:hover:after,body.syndicate span[data-tooltip].tooltip-bottom:hover:after{-ms-transform:translateX(-50%) translateY(8px);transform:translateX(-50%) translateY(8px)}body.syndicate div[data-tooltip].tooltip-left:after,body.syndicate span[data-tooltip].tooltip-left:after{top:50%;right:100%;-ms-transform:translateX(8px) translateY(-50%);transform:translateX(8px) translateY(-50%)}body.syndicate div[data-tooltip].tooltip-left:hover:after,body.syndicate span[data-tooltip].tooltip-left:hover:after{-ms-transform:translateX(-8px) translateY(-50%);transform:translateX(-8px) translateY(-50%)}body.syndicate div[data-tooltip].tooltip-right:after,body.syndicate span[data-tooltip].tooltip-right:after{top:50%;left:100%;-ms-transform:translateX(-8px) translateY(-50%);transform:translateX(-8px) translateY(-50%)}body.syndicate div[data-tooltip].tooltip-right:hover:after,body.syndicate span[data-tooltip].tooltip-right:hover:after{-ms-transform:translateX(8px) translateY(-50%);transform:translateX(8px) translateY(-50%)}body.syndicate .bar{display:inline-block;position:relative;vertical-align:middle;width:100%;height:20px;line-height:17px;padding:1px;border:1px solid #000;background:#272727}body.syndicate .bar .barText{position:absolute;top:0;right:3px}body.syndicate .bar .barFill{display:block;height:100%;transition:background-color 1s;background-color:#000}body.syndicate .bar .barFill.good{background-color:#73e573}body.syndicate .bar .barFill.average{background-color:#be6209}body.syndicate .bar .barFill.bad{background-color:#b00e0e}body.syndicate span.button{display:inline-block;vertical-align:middle;min-height:20px;line-height:17px;padding:0 5px;white-space:nowrap;border:1px solid #272727}body.syndicate span.button .fa{padding-right:2px}body.syndicate span.button.normal{transition:background-color .5s;background-color:#397439}body.syndicate span.button.normal.active:focus,body.syndicate span.button.normal.active:hover{transition:background-color .25s;background-color:#4a964a;outline:0}body.syndicate span.button.disabled{transition:background-color .5s;background-color:#363636}body.syndicate span.button.disabled.active:focus,body.syndicate span.button.disabled.active:hover{transition:background-color .25s;background-color:#545454;outline:0}body.syndicate span.button.selected{transition:background-color .5s;background-color:#9d0808}body.syndicate span.button.selected.active:focus,body.syndicate span.button.selected.active:hover{transition:background-color .25s;background-color:#ce0b0b;outline:0}body.syndicate span.button.toggle{transition:background-color .5s;background-color:#9d0808}body.syndicate span.button.toggle.active:focus,body.syndicate span.button.toggle.active:hover{transition:background-color .25s;background-color:#ce0b0b;outline:0}body.syndicate span.button.caution{transition:background-color .5s;background-color:#be6209}body.syndicate span.button.caution.active:focus,body.syndicate span.button.caution.active:hover{transition:background-color .25s;background-color:#eb790b;outline:0}body.syndicate span.button.danger{transition:background-color .5s;background-color:#9a9d00}body.syndicate span.button.danger.active:focus,body.syndicate span.button.danger.active:hover{transition:background-color .25s;background-color:#ced200;outline:0}body.syndicate span.button.gridable{width:125px;margin:2px 0}body.syndicate span.button.gridable.center{text-align:center;width:75px}body.syndicate span.button+span:not(.button),body.syndicate span:not(.button)+span.button{margin-left:5px}body.syndicate div.display{width:100%;padding:4px;margin:6px 0;background-color:#000;-ms-filter:"progid:DXImageTransform.Microsoft.gradient(startColorStr=#80000000,endColorStr=#80000000)";filter:progid:DXImageTransform.Microsoft.gradient(startColorStr=#80000000,endColorStr=#80000000);background-color:rgba(0,0,0,.5);box-shadow:inset 0 0 5px rgba(0,0,0,.75)}body.syndicate div.display.tabular{padding:0;margin:0}body.syndicate div.display header,body.syndicate div.subdisplay header{display:block;position:relative;width:100%;padding:0 4px;margin-bottom:6px;color:#fff;border-bottom:2px solid #272727}body.syndicate div.display header .buttonRight,body.syndicate div.subdisplay header .buttonRight{position:absolute;bottom:6px;right:4px}body.syndicate div.display article,body.syndicate div.subdisplay article{display:table;width:100%;border-collapse:collapse}body.syndicate input{display:inline-block;vertical-align:middle;height:20px;line-height:17px;padding:0 5px;white-space:nowrap;color:#fff;background-color:#9d0808;border:1px solid #272727}body.syndicate input.number{width:35px}body.syndicate input::-webkit-input-placeholder{color:#999}body.syndicate input:-ms-input-placeholder{color:#999}body.syndicate input::placeholder{color:#999}body.syndicate input::-ms-clear{display:none}body.syndicate svg.linegraph{overflow:hidden}body.syndicate div.notice{margin:8px 0;padding:4px;box-shadow:none;color:#000;font-weight:700;font-style:italic;background-color:#750000;background-image:repeating-linear-gradient(-45deg,#750000,#750000 10px,#910101 0,#910101 20px)}body.syndicate div.notice .label{color:#000}body.syndicate div.notice .content:only-of-type{padding:0}body.syndicate div.notice hr{background-color:#272727}body.syndicate div.resize{position:fixed;bottom:0;right:0;width:0;height:0;border-style:solid;border-width:0 0 45px 45px;border-color:transparent transparent #363636;-ms-transform:rotate(1turn);transform:rotate(1turn)}body.syndicate section .cell,body.syndicate section .content,body.syndicate section .label,body.syndicate section .line{display:table-cell;margin:0;text-align:left;vertical-align:middle;padding:3px 2px}body.syndicate section{display:table-row;width:100%}body.syndicate section:not(:first-child){padding-top:4px}body.syndicate section.candystripe:nth-child(2n){background-color:#000;-ms-filter:"progid:DXImageTransform.Microsoft.gradient(startColorStr=#33000000,endColorStr=#33000000)";filter:progid:DXImageTransform.Microsoft.gradient(startColorStr=#33000000,endColorStr=#33000000);background-color:rgba(0,0,0,.2)}body.syndicate section .label{width:1%;padding-right:32px;white-space:nowrap;color:#fff}body.syndicate section .content:not(:last-child){padding-right:16px}body.syndicate section .line{width:100%}body.syndicate section .cell:not(:first-child){text-align:center;padding-top:0}body.syndicate section .cell span.button{width:75px}body.syndicate section:not(:last-child){padding-right:4px}body.syndicate div.subdisplay{width:100%;margin:0}body.syndicate header.titlebar .close,body.syndicate header.titlebar .minimize{display:inline-block;position:relative;padding:7px;margin:-7px;color:#e74242}body.syndicate header.titlebar .close:hover,body.syndicate header.titlebar .minimize:hover{color:#eb5e5e}body.syndicate header.titlebar{position:fixed;z-index:1;top:0;left:0;width:100%;height:32px;background-color:#363636;border-bottom:1px solid #161616;box-shadow:0 3px 3px rgba(0,0,0,.1)}body.syndicate header.titlebar .statusicon{position:absolute;top:4px;left:12px;transition:color .5s}body.syndicate header.titlebar .title{position:absolute;top:6px;left:46px;color:#e74242;font-size:16px;white-space:nowrap}body.syndicate header.titlebar .minimize{position:absolute;top:6px;right:46px}body.syndicate header.titlebar .close{position:absolute;top:4px;right:12px}.no-icons header.titlebar .statusicon{font-size:20px}.no-icons header.titlebar .statusicon:after{content:"O"}.no-icons header.titlebar .minimize{top:-2px;font-size:20px}.no-icons header.titlebar .minimize:after{content:"—"}.no-icons header.titlebar .close{font-size:20px}.no-icons header.titlebar .close:after{content:"X"} \ No newline at end of file +@charset "utf-8";body,html{box-sizing:border-box;height:100%;margin:0}html{overflow:hidden;cursor:default}body{overflow:auto;font-family:Verdana,Geneva,sans-serif;font-size:12px;color:#fff;background-color:#2a2a2a;background-image:linear-gradient(180deg,#2a2a2a 0,#202020);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr="#ff2a2a2a",endColorstr="#ff202020",GradientType=0)}*,:after,:before{box-sizing:inherit}h1,h2,h3,h4{display:inline-block;margin:0;padding:6px 0}h1{font-size:18px}h2{font-size:16px}h3{font-size:14px}h4{font-size:12px}body.clockwork{background:linear-gradient(180deg,#b18b25 0,#5f380e);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr="#ffb18b25",endColorstr="#ff5f380e",GradientType=0)}body.clockwork .normal{color:#b18b25}body.clockwork .good{color:#cfba47}body.clockwork .average{color:#896b19}body.clockwork .bad{color:#5f380e}body.clockwork .highlight{color:#b18b25}body.clockwork main{display:block;margin-top:32px;padding:2px 6px 0}body.clockwork hr{height:2px;background-color:#b18b25;border:none}body.clockwork .hidden{display:none}body.clockwork .bar .barText,body.clockwork span.button{color:#b18b25;font-size:12px;font-weight:400;font-style:normal;text-decoration:none}body.clockwork .bold{font-weight:700}body.clockwork .italic{font-style:italic}body.clockwork [unselectable=on]{-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}body.clockwork div[data-tooltip],body.clockwork span[data-tooltip]{position:relative}body.clockwork div[data-tooltip]:after,body.clockwork span[data-tooltip]:after{position:absolute;display:block;z-index:2;width:250px;padding:10px;-ms-transform:translateX(-50%);transform:translateX(-50%);visibility:hidden;opacity:0;-ms-filter:"progid:DXImageTransform.Microsoft.Alpha(Opacity=0)";white-space:normal;text-align:left;content:attr(data-tooltip);transition:all .5s;border:1px solid #170800;background-color:#2d1400}body.clockwork div[data-tooltip]:hover:after,body.clockwork span[data-tooltip]:hover:after{visibility:visible;opacity:1;-ms-filter:"progid:DXImageTransform.Microsoft.Alpha(Opacity=100)"}body.clockwork div[data-tooltip].tooltip-top:after,body.clockwork span[data-tooltip].tooltip-top:after{bottom:100%;left:50%;-ms-transform:translateX(-50%) translateY(8px);transform:translateX(-50%) translateY(8px)}body.clockwork div[data-tooltip].tooltip-top:hover:after,body.clockwork span[data-tooltip].tooltip-top:hover:after{-ms-transform:translateX(-50%) translateY(-8px);transform:translateX(-50%) translateY(-8px)}body.clockwork div[data-tooltip].tooltip-bottom:after,body.clockwork span[data-tooltip].tooltip-bottom:after{top:100%;left:50%;-ms-transform:translateX(-50%) translateY(-8px);transform:translateX(-50%) translateY(-8px)}body.clockwork div[data-tooltip].tooltip-bottom:hover:after,body.clockwork span[data-tooltip].tooltip-bottom:hover:after{-ms-transform:translateX(-50%) translateY(8px);transform:translateX(-50%) translateY(8px)}body.clockwork div[data-tooltip].tooltip-left:after,body.clockwork span[data-tooltip].tooltip-left:after{top:50%;right:100%;-ms-transform:translateX(8px) translateY(-50%);transform:translateX(8px) translateY(-50%)}body.clockwork div[data-tooltip].tooltip-left:hover:after,body.clockwork span[data-tooltip].tooltip-left:hover:after{-ms-transform:translateX(-8px) translateY(-50%);transform:translateX(-8px) translateY(-50%)}body.clockwork div[data-tooltip].tooltip-right:after,body.clockwork span[data-tooltip].tooltip-right:after{top:50%;left:100%;-ms-transform:translateX(-8px) translateY(-50%);transform:translateX(-8px) translateY(-50%)}body.clockwork div[data-tooltip].tooltip-right:hover:after,body.clockwork span[data-tooltip].tooltip-right:hover:after{-ms-transform:translateX(8px) translateY(-50%);transform:translateX(8px) translateY(-50%)}body.clockwork .bar{display:inline-block;position:relative;vertical-align:middle;width:100%;height:20px;line-height:17px;padding:1px;border:1px solid #170800;background:#2d1400}body.clockwork .bar .barText{position:absolute;top:0;right:3px}body.clockwork .bar .barFill{display:block;height:100%;transition:background-color 1s;background-color:#b18b25}body.clockwork .bar .barFill.good{background-color:#cfba47}body.clockwork .bar .barFill.average{background-color:#896b19}body.clockwork .bar .barFill.bad{background-color:#5f380e}body.clockwork span.button{display:inline-block;vertical-align:middle;min-height:20px;line-height:17px;padding:0 5px;white-space:nowrap;border:1px solid #170800}body.clockwork span.button .fa{padding-right:2px}body.clockwork span.button.normal{transition:background-color .5s;background-color:#5f380e}body.clockwork span.button.normal.active:focus,body.clockwork span.button.normal.active:hover{transition:background-color .25s;background-color:#704211;outline:0}body.clockwork span.button.disabled{transition:background-color .5s;background-color:#2d1400}body.clockwork span.button.disabled.active:focus,body.clockwork span.button.disabled.active:hover{transition:background-color .25s;background-color:#441e00;outline:0}body.clockwork span.button.selected{transition:background-color .5s;background-color:#cfba47}body.clockwork span.button.selected.active:focus,body.clockwork span.button.selected.active:hover{transition:background-color .25s;background-color:#d1bd50;outline:0}body.clockwork span.button.toggle{transition:background-color .5s;background-color:#cfba47}body.clockwork span.button.toggle.active:focus,body.clockwork span.button.toggle.active:hover{transition:background-color .25s;background-color:#d1bd50;outline:0}body.clockwork span.button.caution{transition:background-color .5s;background-color:#be6209}body.clockwork span.button.caution.active:focus,body.clockwork span.button.caution.active:hover{transition:background-color .25s;background-color:#cd6a0a;outline:0}body.clockwork span.button.danger{transition:background-color .5s;background-color:#9a9d00}body.clockwork span.button.danger.active:focus,body.clockwork span.button.danger.active:hover{transition:background-color .25s;background-color:#abaf00;outline:0}body.clockwork span.button.gridable{width:125px;margin:2px 0}body.clockwork span.button.gridable.center{text-align:center;width:75px}body.clockwork span.button+span:not(.button),body.clockwork span:not(.button)+span.button{margin-left:5px}body.clockwork div.display{width:100%;padding:4px;margin:6px 0;background-color:#2d1400;-ms-filter:"progid:DXImageTransform.Microsoft.gradient(startColorStr=#e62d1400,endColorStr=#e62d1400)";filter:progid:DXImageTransform.Microsoft.gradient(startColorStr=#e62d1400,endColorStr=#e62d1400);background-color:rgba(45,20,0,.9);box-shadow:inset 0 0 5px rgba(0,0,0,.3)}body.clockwork div.display.tabular{padding:0;margin:0}body.clockwork div.display header,body.clockwork div.subdisplay header{display:block;position:relative;width:100%;padding:0 4px;margin-bottom:6px;color:#cfba47;border-bottom:2px solid #b18b25}body.clockwork div.display header .buttonRight,body.clockwork div.subdisplay header .buttonRight{position:absolute;bottom:6px;right:4px}body.clockwork div.display article,body.clockwork div.subdisplay article{display:table;width:100%;border-collapse:collapse}body.clockwork input{display:inline-block;vertical-align:middle;height:20px;line-height:17px;padding:0 5px;white-space:nowrap;color:#b18b25;background-color:#cfba47;border:1px solid #272727}body.clockwork input.number{width:35px}body.clockwork input:-ms-input-placeholder{color:#999}body.clockwork input::placeholder{color:#999}body.clockwork input::-ms-clear{display:none}body.clockwork svg.linegraph{overflow:hidden}body.clockwork div.notice{margin:8px 0;padding:4px;box-shadow:none;color:#2d1400;font-weight:700;font-style:italic;background-color:#000;background-image:repeating-linear-gradient(-45deg,#000,#000 10px,#170800 0,#170800 20px)}body.clockwork div.notice .label{color:#2d1400}body.clockwork div.notice .content:only-of-type{padding:0}body.clockwork div.notice hr{background-color:#896b19}body.clockwork div.resize{position:fixed;bottom:0;right:0;width:0;height:0;border-style:solid;border-width:0 0 45px 45px;border-color:transparent transparent #5f380e;-ms-transform:rotate(1turn);transform:rotate(1turn)}body.clockwork section .cell,body.clockwork section .content,body.clockwork section .label,body.clockwork section .line,body.nanotrasen section .cell,body.nanotrasen section .content,body.nanotrasen section .label,body.nanotrasen section .line,body.syndicate section .cell,body.syndicate section .content,body.syndicate section .label,body.syndicate section .line{display:table-cell;margin:0;text-align:left;vertical-align:middle;padding:3px 2px}body.clockwork section{display:table-row;width:100%}body.clockwork section:not(:first-child){padding-top:4px}body.clockwork section.candystripe:nth-child(2n){background-color:#000;-ms-filter:"progid:DXImageTransform.Microsoft.gradient(startColorStr=#33000000,endColorStr=#33000000)";filter:progid:DXImageTransform.Microsoft.gradient(startColorStr=#33000000,endColorStr=#33000000);background-color:rgba(0,0,0,.2)}body.clockwork section .label{width:1%;padding-right:32px;white-space:nowrap;color:#b18b25}body.clockwork section .content:not(:last-child){padding-right:16px}body.clockwork section .line{width:100%}body.clockwork section .cell:not(:first-child){text-align:center;padding-top:0}body.clockwork section .cell span.button{width:75px}body.clockwork section:not(:last-child){padding-right:4px}body.clockwork div.subdisplay{width:100%;margin:0}body.clockwork header.titlebar .close,body.clockwork header.titlebar .minimize{display:inline-block;position:relative;padding:7px;margin:-7px;color:#cfba47}body.clockwork header.titlebar .close:hover,body.clockwork header.titlebar .minimize:hover{color:#d1bd50}body.clockwork header.titlebar{position:fixed;z-index:1;top:0;left:0;width:100%;height:32px;background-color:#5f380e;border-bottom:1px solid #170800;box-shadow:0 3px 3px rgba(0,0,0,.1)}body.clockwork header.titlebar .statusicon{position:absolute;top:4px;left:12px;transition:color .5s}body.clockwork header.titlebar .title{position:absolute;top:6px;left:46px;color:#cfba47;font-size:16px;white-space:nowrap}body.clockwork header.titlebar .minimize{position:absolute;top:6px;right:46px}body.clockwork header.titlebar .close{position:absolute;top:4px;right:12px}body.nanotrasen{background:url("data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiIHN0YW5kYWxvbmU9Im5vIj8+DQo8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgdmVyc2lvbj0iMS4wIiB2aWV3Qm94PSIwIDAgNDI1IDIwMCIgb3BhY2l0eT0iLjMzIj4NCiAgPHBhdGggZD0ibSAxNzguMDAzOTksMC4wMzg2OSAtNzEuMjAzOTMsMCBhIDYuNzYxMzQyMiw2LjAyNTU0OTUgMCAwIDAgLTYuNzYxMzQsNi4wMjU1NSBsIDAsMTg3Ljg3MTQ3IGEgNi43NjEzNDIyLDYuMDI1NTQ5NSAwIDAgMCA2Ljc2MTM0LDYuMDI1NTQgbCA1My4xMDcyLDAgYSA2Ljc2MTM0MjIsNi4wMjU1NDk1IDAgMCAwIDYuNzYxMzUsLTYuMDI1NTQgbCAwLC0xMDEuNTQ0MDE4IDcyLjIxNjI4LDEwNC42OTkzOTggYSA2Ljc2MTM0MjIsNi4wMjU1NDk1IDAgMCAwIDUuNzYwMTUsMi44NzAxNiBsIDczLjU1NDg3LDAgYSA2Ljc2MTM0MjIsNi4wMjU1NDk1IDAgMCAwIDYuNzYxMzUsLTYuMDI1NTQgbCAwLC0xODcuODcxNDcgYSA2Ljc2MTM0MjIsNi4wMjU1NDk1IDAgMCAwIC02Ljc2MTM1LC02LjAyNTU1IGwgLTU0LjcxNjQ0LDAgYSA2Ljc2MTM0MjIsNi4wMjU1NDk1IDAgMCAwIC02Ljc2MTMzLDYuMDI1NTUgbCAwLDEwMi42MTkzNSBMIDE4My43NjQxMywyLjkwODg2IGEgNi43NjEzNDIyLDYuMDI1NTQ5NSAwIDAgMCAtNS43NjAxNCwtMi44NzAxNyB6IiAvPg0KICA8cGF0aCBkPSJNIDQuODQ0NjMzMywyMi4xMDg3NSBBIDEzLjQxMjAzOSwxMi41MDE4NDIgMCAwIDEgMTMuNDc3NTg4LDAuMDM5MjQgbCA2Ni4xMTgzMTUsMCBhIDUuMzY0ODE1OCw1LjAwMDczNyAwIDAgMSA1LjM2NDgyMyw1LjAwMDczIGwgMCw3OS44NzkzMSB6IiAvPg0KICA8cGF0aCBkPSJtIDQyMC4xNTUzNSwxNzcuODkxMTkgYSAxMy40MTIwMzgsMTIuNTAxODQyIDAgMCAxIC04LjYzMjk1LDIyLjA2OTUxIGwgLTY2LjExODMyLDAgYSA1LjM2NDgxNTIsNS4wMDA3MzcgMCAwIDEgLTUuMzY0ODIsLTUuMDAwNzQgbCAwLC03OS44NzkzMSB6IiAvPg0KPC9zdmc+DQo8IS0tIFRoaXMgd29yayBpcyBsaWNlbnNlZCB1bmRlciBhIENyZWF0aXZlIENvbW1vbnMgQXR0cmlidXRpb24tU2hhcmVBbGlrZSA0LjAgSW50ZXJuYXRpb25hbCBMaWNlbnNlLiAtLT4NCjwhLS0gaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvbGljZW5zZXMvYnktc2EvNC4wLyAtLT4NCg==") no-repeat fixed 50%/70% 70%,linear-gradient(180deg,#2a2a2a 0,#202020);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr="#ff2a2a2a",endColorstr="#ff202020",GradientType=0)}body.nanotrasen .normal{color:#40628a}body.nanotrasen .good{color:#537d29}body.nanotrasen .average{color:#be6209}body.nanotrasen .bad{color:#b00e0e}body.nanotrasen .highlight{color:#8ba5c4}body.nanotrasen main{display:block;margin-top:32px;padding:2px 6px 0}body.nanotrasen hr{height:2px;background-color:#40628a;border:none}body.nanotrasen .hidden{display:none}body.nanotrasen .bar .barText,body.nanotrasen span.button{color:#fff;font-size:12px;font-weight:400;font-style:normal;text-decoration:none}body.nanotrasen .bold{font-weight:700}body.nanotrasen .italic{font-style:italic}body.nanotrasen [unselectable=on]{-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}body.nanotrasen div[data-tooltip],body.nanotrasen span[data-tooltip]{position:relative}body.nanotrasen div[data-tooltip]:after,body.nanotrasen span[data-tooltip]:after{position:absolute;display:block;z-index:2;width:250px;padding:10px;-ms-transform:translateX(-50%);transform:translateX(-50%);visibility:hidden;opacity:0;-ms-filter:"progid:DXImageTransform.Microsoft.Alpha(Opacity=0)";white-space:normal;text-align:left;content:attr(data-tooltip);transition:all .5s;border:1px solid #272727;background-color:#363636}body.nanotrasen div[data-tooltip]:hover:after,body.nanotrasen span[data-tooltip]:hover:after{visibility:visible;opacity:1;-ms-filter:"progid:DXImageTransform.Microsoft.Alpha(Opacity=100)"}body.nanotrasen div[data-tooltip].tooltip-top:after,body.nanotrasen span[data-tooltip].tooltip-top:after{bottom:100%;left:50%;-ms-transform:translateX(-50%) translateY(8px);transform:translateX(-50%) translateY(8px)}body.nanotrasen div[data-tooltip].tooltip-top:hover:after,body.nanotrasen span[data-tooltip].tooltip-top:hover:after{-ms-transform:translateX(-50%) translateY(-8px);transform:translateX(-50%) translateY(-8px)}body.nanotrasen div[data-tooltip].tooltip-bottom:after,body.nanotrasen span[data-tooltip].tooltip-bottom:after{top:100%;left:50%;-ms-transform:translateX(-50%) translateY(-8px);transform:translateX(-50%) translateY(-8px)}body.nanotrasen div[data-tooltip].tooltip-bottom:hover:after,body.nanotrasen span[data-tooltip].tooltip-bottom:hover:after{-ms-transform:translateX(-50%) translateY(8px);transform:translateX(-50%) translateY(8px)}body.nanotrasen div[data-tooltip].tooltip-left:after,body.nanotrasen span[data-tooltip].tooltip-left:after{top:50%;right:100%;-ms-transform:translateX(8px) translateY(-50%);transform:translateX(8px) translateY(-50%)}body.nanotrasen div[data-tooltip].tooltip-left:hover:after,body.nanotrasen span[data-tooltip].tooltip-left:hover:after{-ms-transform:translateX(-8px) translateY(-50%);transform:translateX(-8px) translateY(-50%)}body.nanotrasen div[data-tooltip].tooltip-right:after,body.nanotrasen span[data-tooltip].tooltip-right:after{top:50%;left:100%;-ms-transform:translateX(-8px) translateY(-50%);transform:translateX(-8px) translateY(-50%)}body.nanotrasen div[data-tooltip].tooltip-right:hover:after,body.nanotrasen span[data-tooltip].tooltip-right:hover:after{-ms-transform:translateX(8px) translateY(-50%);transform:translateX(8px) translateY(-50%)}body.nanotrasen .bar{display:inline-block;position:relative;vertical-align:middle;width:100%;height:20px;line-height:17px;padding:1px;border:1px solid #40628a;background:#272727}body.nanotrasen .bar .barText{position:absolute;top:0;right:3px}body.nanotrasen .bar .barFill{display:block;height:100%;transition:background-color 1s;background-color:#40628a}body.nanotrasen .bar .barFill.good{background-color:#537d29}body.nanotrasen .bar .barFill.average{background-color:#be6209}body.nanotrasen .bar .barFill.bad{background-color:#b00e0e}body.nanotrasen span.button{display:inline-block;vertical-align:middle;min-height:20px;line-height:17px;padding:0 5px;white-space:nowrap;border:1px solid #272727}body.nanotrasen span.button .fa{padding-right:2px}body.nanotrasen span.button.normal{transition:background-color .5s;background-color:#40628a}body.nanotrasen span.button.normal.active:focus,body.nanotrasen span.button.normal.active:hover{transition:background-color .25s;background-color:#4f78aa;outline:0}body.nanotrasen span.button.disabled{transition:background-color .5s;background-color:#999}body.nanotrasen span.button.disabled.active:focus,body.nanotrasen span.button.disabled.active:hover{transition:background-color .25s;background-color:#a8a8a8;outline:0}body.nanotrasen span.button.selected{transition:background-color .5s;background-color:#2f943c}body.nanotrasen span.button.selected.active:focus,body.nanotrasen span.button.selected.active:hover{transition:background-color .25s;background-color:#3ab84b;outline:0}body.nanotrasen span.button.toggle{transition:background-color .5s;background-color:#2f943c}body.nanotrasen span.button.toggle.active:focus,body.nanotrasen span.button.toggle.active:hover{transition:background-color .25s;background-color:#3ab84b;outline:0}body.nanotrasen span.button.caution{transition:background-color .5s;background-color:#9a9d00}body.nanotrasen span.button.caution.active:focus,body.nanotrasen span.button.caution.active:hover{transition:background-color .25s;background-color:#ced200;outline:0}body.nanotrasen span.button.danger{transition:background-color .5s;background-color:#9d0808}body.nanotrasen span.button.danger.active:focus,body.nanotrasen span.button.danger.active:hover{transition:background-color .25s;background-color:#ce0b0b;outline:0}body.nanotrasen span.button.gridable{width:125px;margin:2px 0}body.nanotrasen span.button.gridable.center{text-align:center;width:75px}body.nanotrasen span.button+span:not(.button),body.nanotrasen span:not(.button)+span.button{margin-left:5px}body.nanotrasen div.display{width:100%;padding:4px;margin:6px 0;background-color:#000;-ms-filter:"progid:DXImageTransform.Microsoft.gradient(startColorStr=#54000000,endColorStr=#54000000)";filter:progid:DXImageTransform.Microsoft.gradient(startColorStr=#54000000,endColorStr=#54000000);background-color:rgba(0,0,0,.33);box-shadow:inset 0 0 5px rgba(0,0,0,.5)}body.nanotrasen div.display.tabular{padding:0;margin:0}body.nanotrasen div.display header,body.nanotrasen div.subdisplay header{display:block;position:relative;width:100%;padding:0 4px;margin-bottom:6px;color:#fff;border-bottom:2px solid #40628a}body.nanotrasen div.display header .buttonRight,body.nanotrasen div.subdisplay header .buttonRight{position:absolute;bottom:6px;right:4px}body.nanotrasen div.display article,body.nanotrasen div.subdisplay article{display:table;width:100%;border-collapse:collapse}body.nanotrasen input{display:inline-block;vertical-align:middle;height:20px;line-height:17px;padding:0 5px;white-space:nowrap;color:#000;background-color:#fff;border:1px solid #272727}body.nanotrasen input.number{width:35px}body.nanotrasen input:-ms-input-placeholder{color:#999}body.nanotrasen input::placeholder{color:#999}body.nanotrasen input::-ms-clear{display:none}body.nanotrasen svg.linegraph{overflow:hidden}body.nanotrasen div.notice{margin:8px 0;padding:4px;box-shadow:none;color:#000;font-weight:700;font-style:italic;background-color:#bb9b68;background-image:repeating-linear-gradient(-45deg,#bb9b68,#bb9b68 10px,#b1905d 0,#b1905d 20px)}body.nanotrasen div.notice .label{color:#000}body.nanotrasen div.notice .content:only-of-type{padding:0}body.nanotrasen div.notice hr{background-color:#272727}body.nanotrasen div.resize{position:fixed;bottom:0;right:0;width:0;height:0;border-style:solid;border-width:0 0 45px 45px;border-color:transparent transparent #363636;-ms-transform:rotate(1turn);transform:rotate(1turn)}body.nanotrasen section .cell,body.nanotrasen section .content,body.nanotrasen section .label,body.nanotrasen section .line,body.syndicate section .cell,body.syndicate section .content,body.syndicate section .label,body.syndicate section .line{display:table-cell;margin:0;text-align:left;vertical-align:middle;padding:3px 2px}body.nanotrasen section{display:table-row;width:100%}body.nanotrasen section:not(:first-child){padding-top:4px}body.nanotrasen section.candystripe:nth-child(2n){background-color:#000;-ms-filter:"progid:DXImageTransform.Microsoft.gradient(startColorStr=#33000000,endColorStr=#33000000)";filter:progid:DXImageTransform.Microsoft.gradient(startColorStr=#33000000,endColorStr=#33000000);background-color:rgba(0,0,0,.2)}body.nanotrasen section .label{width:1%;padding-right:32px;white-space:nowrap;color:#8ba5c4}body.nanotrasen section .content:not(:last-child){padding-right:16px}body.nanotrasen section .line{width:100%}body.nanotrasen section .cell:not(:first-child){text-align:center;padding-top:0}body.nanotrasen section .cell span.button{width:75px}body.nanotrasen section:not(:last-child){padding-right:4px}body.nanotrasen div.subdisplay{width:100%;margin:0}body.nanotrasen header.titlebar .close,body.nanotrasen header.titlebar .minimize{display:inline-block;position:relative;padding:7px;margin:-7px;color:#8ba5c4}body.nanotrasen header.titlebar .close:hover,body.nanotrasen header.titlebar .minimize:hover{color:#9cb2cd}body.nanotrasen header.titlebar{position:fixed;z-index:1;top:0;left:0;width:100%;height:32px;background-color:#363636;border-bottom:1px solid #161616;box-shadow:0 3px 3px rgba(0,0,0,.1)}body.nanotrasen header.titlebar .statusicon{position:absolute;top:4px;left:12px;transition:color .5s}body.nanotrasen header.titlebar .title{position:absolute;top:6px;left:46px;color:#8ba5c4;font-size:16px;white-space:nowrap}body.nanotrasen header.titlebar .minimize{position:absolute;top:6px;right:46px}body.nanotrasen header.titlebar .close{position:absolute;top:4px;right:12px}body.syndicate{background:url("data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiIHN0YW5kYWxvbmU9Im5vIj8+DQo8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgdmVyc2lvbj0iMS4wIiB2aWV3Qm94PSIwIDAgMjAwIDI4OS43NDIiIG9wYWNpdHk9Ii4zMyI+DQogIDxwYXRoIGQ9Im0gOTMuNTM3Njc3LDAgYyAtMTguMTEzMTI1LDAgLTM0LjIyMDEzMywzLjExMTY0IC00OC4zMjM0ODQsOS4zMzQzNyAtMTMuOTY1MDkyLDYuMjIxNjcgLTI0LjYxMjQ0MiwxNS4wNzExNCAtMzEuOTQwNjUxLDI2LjU0NzEgLTcuMTg5OTM5OCwxMS4zMzc4OSAtMTAuMzAxMjI2NiwyNC43NDkxMSAtMTAuMzAxMjI2Niw0MC4yMzQ3OCAwLDEwLjY0NjYyIDIuNzI1MDAyNiwyMC40NjQ2NSA4LjE3NTExMTYsMjkuNDUyNTggNS42MTUyNzcsOC45ODY4NiAxNC4wMzgyNzcsMTcuMzUyMDQgMjUuMjY4ODIxLDI1LjA5NDM2IDExLjIzMDU0NCw3LjYwNTMxIDI2LjUwNzQyMSwxNS40MTgzNSA0NS44MzA1MTQsMjMuNDM3ODIgMTkuOTgzNzQ4LDguMjk1NTcgMzQuODQ4ODQ4LDE1LjU1NDcxIDQ0LjU5Mjk5OCwyMS43NzYzOCA5Ljc0NDE0LDYuMjIyNzMgMTYuNzYxNywxMi44NTg1IDIxLjA1NTcyLDE5LjkwOTUxIDQuMjk0MDQsNy4wNTIwOCA2LjQ0MTkzLDE1Ljc2NDA4IDYuNDQxOTMsMjYuMTM0NTkgMCwxNi4xNzcwMiAtNS4yMDE5NiwyOC40ODIyMiAtMTUuNjA2NzMsMzYuOTE2ODIgLTEwLjIzOTYsOC40MzQ3IC0yNS4wMjIwMywxMi42NTIzIC00NC4zNDUxNjksMTIuNjUyMyAtMTQuMDM4MTcxLDAgLTI1LjUxNTI0NywtMS42NTk0IC0zNC40MzM2MTgsLTQuOTc3NyAtOC45MTgzNywtMy40NTY2IC0xNi4xODU1NzIsLTguNzExMyAtMjEuODAwODM5LC0xNS43NjMzIC01LjYxNTI3NywtNy4wNTIxIC0xMC4wNzQ3OTUsLTE2LjY2MDg4IC0xMy4zNzc4OTksLTI4LjgyODEyIGwgLTI0Ljc3MzE2MjYyOTM5NDUsMCAwLDU2LjgyNjMyIEMgMzMuODU2NzY5LDI4Ni4wNzYwMSA2My43NDkwNCwyODkuNzQyMDEgODkuNjc4MzgzLDI4OS43NDIwMSBjIDE2LjAyMDAyNywwIDMwLjcxOTc4NywtMS4zODI3IDQ0LjA5NzMzNywtNC4xNDc5IDEzLjU0MjcyLC0yLjkwNDMgMjUuMTA0MSwtNy40Njc2IDM0LjY4MzA5LC0xMy42ODkzIDkuNzQ0MTMsLTYuMzU5NyAxNy4zNDA0MiwtMTQuNTE5NSAyMi43OTA1MiwtMjQuNDc0OCA1LjQ1MDEsLTEwLjA5MzMyIDguMTc1MTEsLTIyLjM5OTU5IDguMTc1MTEsLTM2LjkxNjgyIDAsLTEyLjk5NzY0IC0zLjMwMjEsLTI0LjMzNTM5IC05LjkwODI5LC0zNC4wMTQ2IC02LjQ0MTA1LC05LjgxNzI1IC0xNS41MjU0NSwtMTguNTI3MDcgLTI3LjI1MTQ2LC0yNi4xMzEzMyAtMTEuNTYwODUsLTcuNjA0MjcgLTI3LjkxMDgzLC0xNS44MzE0MiAtNDkuMDUwNjYsLTI0LjY4MDIyIC0xNy41MDY0NCwtNy4xOTAxMiAtMzAuNzE5NjY4LC0xMy42ODk0OCAtMzkuNjM4MDM4LC0xOS40OTcwMSAtOC45MTgzNzEsLTUuODA3NTIgLTE4LjYwNzQ3NCwtMTIuNDM0MDkgLTI0LjA5NjUyNCwtMTguODc0MTcgLTUuNDI2MDQzLC02LjM2NjE2IC05LjY1ODgyNiwtMTUuMDcwMDMgLTkuNjU4ODI2LC0yNC44ODcyOSAwLC05LjI2NDAxIDIuMDc1NDE0LC0xNy4yMTM0NSA2LjIyMzQ1NCwtMjMuODUwMzMgMTEuMDk4Mjk4LC0xNC4zOTc0OCA0MS4yODY2MzgsLTEuNzk1MDcgNDUuMDc1NjA5LDI0LjM0NzYyIDQuODM5MzkyLDYuNzc0OTEgOC44NDkzNSwxNi4yNDcyOSAxMi4wMjk1MTUsMjguNDE1NiBsIDIwLjUzMjM0LDAgMCwtNTUuOTk5NjcgYyAtNC40NzgyNSwtNS45MjQ0OCAtOS45NTQ4OCwtMTAuNjMyMjIgLTE1LjkwODM3LC0xNC4zNzQxMSAxLjY0MDU1LDAuNDc5MDUgMy4xOTAzOSwxLjAyMzc2IDQuNjM4NjUsMS42NDAyNCA2LjQ5ODYxLDIuNjI2MDcgMTIuMTY3OTMsNy4zMjc0NyAxNy4wMDczLDE0LjEwMzQ1IDQuODM5MzksNi43NzQ5MSA4Ljg0OTM1LDE2LjI0NTY3IDEyLjAyOTUyLDI4LjQxMzk3IDAsMCA4LjQ4MTI4LC0wLjEyODk0IDguNDg5NzgsLTAuMDAyIDAuNDE3NzYsNi40MTQ5NCAtMS43NTMzOSw5LjQ1Mjg2IC00LjEyMzQyLDEyLjU2MTA0IC0yLjQxNzQsMy4xNjk3OCAtNS4xNDQ4Niw2Ljc4OTczIC00LjAwMjc4LDEzLjAwMjkgMS41MDc4Niw4LjIwMzE4IDEwLjE4MzU0LDEwLjU5NjQyIDE0LjYyMTk0LDkuMzExNTQgLTMuMzE4NDIsLTAuNDk5MTEgLTUuMzE4NTUsLTEuNzQ5NDggLTUuMzE4NTUsLTEuNzQ5NDggMCwwIDEuODc2NDYsMC45OTg2OCA1LjY1MTE3LC0xLjM1OTgxIC0zLjI3Njk1LDAuOTU1NzEgLTEwLjcwNTI5LC0wLjc5NzM4IC0xMS44MDEyNSwtNi43NjMxMyAtMC45NTc1MiwtNS4yMDg2MSAwLjk0NjU0LC03LjI5NTE0IDMuNDAxMTMsLTEwLjUxNDgyIDIuNDU0NjIsLTMuMjE5NjggNS4yODQyNiwtNi45NTgzMSA0LjY4NDMsLTE0LjQ4ODI0IGwgMC4wMDMsMC4wMDIgOC45MjY3NiwwIDAsLTU1Ljk5OTY3IGMgLTE1LjA3MTI1LC0zLjg3MTY4IC0yNy42NTMxNCwtNi4zNjA0MiAtMzcuNzQ2NzEsLTcuNDY1ODYgLTkuOTU1MzEsLTEuMTA3NTUgLTIwLjE4ODIzLC0xLjY1OTgxIC0zMC42OTY2MTMsLTEuNjU5ODEgeiBtIDcwLjMyMTYwMywxNy4zMDg5MyAwLjIzODA1LDQwLjMwNDkgYyAxLjMxODA4LDEuMjI2NjYgMi40Mzk2NSwyLjI3ODE1IDMuMzQwODEsMy4xMDYwMiA0LjgzOTM5LDYuNzc0OTEgOC44NDkzNCwxNi4yNDU2NiAxMi4wMjk1MSwyOC40MTM5NyBsIDIwLjUzMjM0LDAgMCwtNTUuOTk5NjcgYyAtNi42NzczMSwtNC41OTM4MSAtMTkuODM2NDMsLTEwLjQ3MzA5IC0zNi4xNDA3MSwtMTUuODI1MjIgeiBtIC0yOC4xMjA0OSw1LjYwNTUxIDguNTY0NzksMTcuNzE2NTUgYyAtMTEuOTcwMzcsLTYuNDY2OTcgLTEzLjg0Njc4LC05LjcxNzI2IC04LjU2NDc5LC0xNy43MTY1NSB6IG0gMjIuNzk3MDUsMCBjIDIuNzcxNSw3Ljk5OTI5IDEuNzg3NDEsMTEuMjQ5NTggLTQuNDkzNTQsMTcuNzE2NTUgbCA0LjQ5MzU0LC0xNy43MTY1NSB6IG0gMTUuMjIxOTUsMjQuMDA4NDggOC41NjQ3OSwxNy43MTY1NSBjIC0xMS45NzAzOCwtNi40NjY5NyAtMTMuODQ2NzksLTkuNzE3MjYgLTguNTY0NzksLTE3LjcxNjU1IHogbSAyMi43OTcwNCwwIGMgMi43NzE1LDcuOTk5MjkgMS43ODc0MSwxMS4yNDk1OCAtNC40OTM1NCwxNy43MTY1NSBsIDQuNDkzNTQsLTE3LjcxNjU1IHogbSAtOTkuMTEzODQsMi4yMDc2NCA4LjU2NDc5LDE3LjcxNjU1IGMgLTExLjk3MDM4MiwtNi40NjY5NyAtMTMuODQ2NzgyLC05LjcxNzI2IC04LjU2NDc5LC0xNy43MTY1NSB6IG0gMjIuNzk1NDIsMCBjIDIuNzcxNSw3Ljk5OTI5IDEuNzg3NDEsMTEuMjQ5NTggLTQuNDkzNTQsMTcuNzE2NTUgbCA0LjQ5MzU0LC0xNy43MTY1NSB6IiAvPg0KPC9zdmc+DQo8IS0tIFRoaXMgd29yayBpcyBsaWNlbnNlZCB1bmRlciBhIENyZWF0aXZlIENvbW1vbnMgQXR0cmlidXRpb24tU2hhcmVBbGlrZSA0LjAgSW50ZXJuYXRpb25hbCBMaWNlbnNlLiAtLT4NCjwhLS0gaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvbGljZW5zZXMvYnktc2EvNC4wLyAtLT4NCg==") no-repeat fixed 50%/70% 70%,linear-gradient(180deg,#750000 0,#340404);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr="#ff750000",endColorstr="#ff340404",GradientType=0)}body.syndicate .normal{color:#40628a}body.syndicate .good{color:#73e573}body.syndicate .average{color:#be6209}body.syndicate .bad{color:#b00e0e}body.syndicate .highlight{color:#000}body.syndicate main{display:block;margin-top:32px;padding:2px 6px 0}body.syndicate hr{height:2px;background-color:#272727;border:none}body.syndicate .hidden{display:none}body.syndicate .bar .barText,body.syndicate span.button{color:#fff;font-size:12px;font-weight:400;font-style:normal;text-decoration:none}body.syndicate .bold{font-weight:700}body.syndicate .italic{font-style:italic}body.syndicate [unselectable=on]{-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}body.syndicate div[data-tooltip],body.syndicate span[data-tooltip]{position:relative}body.syndicate div[data-tooltip]:after,body.syndicate span[data-tooltip]:after{position:absolute;display:block;z-index:2;width:250px;padding:10px;-ms-transform:translateX(-50%);transform:translateX(-50%);visibility:hidden;opacity:0;-ms-filter:"progid:DXImageTransform.Microsoft.Alpha(Opacity=0)";white-space:normal;text-align:left;content:attr(data-tooltip);transition:all .5s;border:1px solid #272727;background-color:#363636}body.syndicate div[data-tooltip]:hover:after,body.syndicate span[data-tooltip]:hover:after{visibility:visible;opacity:1;-ms-filter:"progid:DXImageTransform.Microsoft.Alpha(Opacity=100)"}body.syndicate div[data-tooltip].tooltip-top:after,body.syndicate span[data-tooltip].tooltip-top:after{bottom:100%;left:50%;-ms-transform:translateX(-50%) translateY(8px);transform:translateX(-50%) translateY(8px)}body.syndicate div[data-tooltip].tooltip-top:hover:after,body.syndicate span[data-tooltip].tooltip-top:hover:after{-ms-transform:translateX(-50%) translateY(-8px);transform:translateX(-50%) translateY(-8px)}body.syndicate div[data-tooltip].tooltip-bottom:after,body.syndicate span[data-tooltip].tooltip-bottom:after{top:100%;left:50%;-ms-transform:translateX(-50%) translateY(-8px);transform:translateX(-50%) translateY(-8px)}body.syndicate div[data-tooltip].tooltip-bottom:hover:after,body.syndicate span[data-tooltip].tooltip-bottom:hover:after{-ms-transform:translateX(-50%) translateY(8px);transform:translateX(-50%) translateY(8px)}body.syndicate div[data-tooltip].tooltip-left:after,body.syndicate span[data-tooltip].tooltip-left:after{top:50%;right:100%;-ms-transform:translateX(8px) translateY(-50%);transform:translateX(8px) translateY(-50%)}body.syndicate div[data-tooltip].tooltip-left:hover:after,body.syndicate span[data-tooltip].tooltip-left:hover:after{-ms-transform:translateX(-8px) translateY(-50%);transform:translateX(-8px) translateY(-50%)}body.syndicate div[data-tooltip].tooltip-right:after,body.syndicate span[data-tooltip].tooltip-right:after{top:50%;left:100%;-ms-transform:translateX(-8px) translateY(-50%);transform:translateX(-8px) translateY(-50%)}body.syndicate div[data-tooltip].tooltip-right:hover:after,body.syndicate span[data-tooltip].tooltip-right:hover:after{-ms-transform:translateX(8px) translateY(-50%);transform:translateX(8px) translateY(-50%)}body.syndicate .bar{display:inline-block;position:relative;vertical-align:middle;width:100%;height:20px;line-height:17px;padding:1px;border:1px solid #000;background:#272727}body.syndicate .bar .barText{position:absolute;top:0;right:3px}body.syndicate .bar .barFill{display:block;height:100%;transition:background-color 1s;background-color:#000}body.syndicate .bar .barFill.good{background-color:#73e573}body.syndicate .bar .barFill.average{background-color:#be6209}body.syndicate .bar .barFill.bad{background-color:#b00e0e}body.syndicate span.button{display:inline-block;vertical-align:middle;min-height:20px;line-height:17px;padding:0 5px;white-space:nowrap;border:1px solid #272727}body.syndicate span.button .fa{padding-right:2px}body.syndicate span.button.normal{transition:background-color .5s;background-color:#397439}body.syndicate span.button.normal.active:focus,body.syndicate span.button.normal.active:hover{transition:background-color .25s;background-color:#4a964a;outline:0}body.syndicate span.button.disabled{transition:background-color .5s;background-color:#363636}body.syndicate span.button.disabled.active:focus,body.syndicate span.button.disabled.active:hover{transition:background-color .25s;background-color:#545454;outline:0}body.syndicate span.button.selected{transition:background-color .5s;background-color:#9d0808}body.syndicate span.button.selected.active:focus,body.syndicate span.button.selected.active:hover{transition:background-color .25s;background-color:#ce0b0b;outline:0}body.syndicate span.button.toggle{transition:background-color .5s;background-color:#9d0808}body.syndicate span.button.toggle.active:focus,body.syndicate span.button.toggle.active:hover{transition:background-color .25s;background-color:#ce0b0b;outline:0}body.syndicate span.button.caution{transition:background-color .5s;background-color:#be6209}body.syndicate span.button.caution.active:focus,body.syndicate span.button.caution.active:hover{transition:background-color .25s;background-color:#eb790b;outline:0}body.syndicate span.button.danger{transition:background-color .5s;background-color:#9a9d00}body.syndicate span.button.danger.active:focus,body.syndicate span.button.danger.active:hover{transition:background-color .25s;background-color:#ced200;outline:0}body.syndicate span.button.gridable{width:125px;margin:2px 0}body.syndicate span.button.gridable.center{text-align:center;width:75px}body.syndicate span.button+span:not(.button),body.syndicate span:not(.button)+span.button{margin-left:5px}body.syndicate div.display{width:100%;padding:4px;margin:6px 0;background-color:#000;-ms-filter:"progid:DXImageTransform.Microsoft.gradient(startColorStr=#80000000,endColorStr=#80000000)";filter:progid:DXImageTransform.Microsoft.gradient(startColorStr=#80000000,endColorStr=#80000000);background-color:rgba(0,0,0,.5);box-shadow:inset 0 0 5px rgba(0,0,0,.75)}body.syndicate div.display.tabular{padding:0;margin:0}body.syndicate div.display header,body.syndicate div.subdisplay header{display:block;position:relative;width:100%;padding:0 4px;margin-bottom:6px;color:#fff;border-bottom:2px solid #272727}body.syndicate div.display header .buttonRight,body.syndicate div.subdisplay header .buttonRight{position:absolute;bottom:6px;right:4px}body.syndicate div.display article,body.syndicate div.subdisplay article{display:table;width:100%;border-collapse:collapse}body.syndicate input{display:inline-block;vertical-align:middle;height:20px;line-height:17px;padding:0 5px;white-space:nowrap;color:#fff;background-color:#9d0808;border:1px solid #272727}body.syndicate input.number{width:35px}body.syndicate input:-ms-input-placeholder{color:#999}body.syndicate input::placeholder{color:#999}body.syndicate input::-ms-clear{display:none}body.syndicate svg.linegraph{overflow:hidden}body.syndicate div.notice{margin:8px 0;padding:4px;box-shadow:none;color:#000;font-weight:700;font-style:italic;background-color:#750000;background-image:repeating-linear-gradient(-45deg,#750000,#750000 10px,#910101 0,#910101 20px)}body.syndicate div.notice .label{color:#000}body.syndicate div.notice .content:only-of-type{padding:0}body.syndicate div.notice hr{background-color:#272727}body.syndicate div.resize{position:fixed;bottom:0;right:0;width:0;height:0;border-style:solid;border-width:0 0 45px 45px;border-color:transparent transparent #363636;-ms-transform:rotate(1turn);transform:rotate(1turn)}body.syndicate section .cell,body.syndicate section .content,body.syndicate section .label,body.syndicate section .line{display:table-cell;margin:0;text-align:left;vertical-align:middle;padding:3px 2px}body.syndicate section{display:table-row;width:100%}body.syndicate section:not(:first-child){padding-top:4px}body.syndicate section.candystripe:nth-child(2n){background-color:#000;-ms-filter:"progid:DXImageTransform.Microsoft.gradient(startColorStr=#33000000,endColorStr=#33000000)";filter:progid:DXImageTransform.Microsoft.gradient(startColorStr=#33000000,endColorStr=#33000000);background-color:rgba(0,0,0,.2)}body.syndicate section .label{width:1%;padding-right:32px;white-space:nowrap;color:#fff}body.syndicate section .content:not(:last-child){padding-right:16px}body.syndicate section .line{width:100%}body.syndicate section .cell:not(:first-child){text-align:center;padding-top:0}body.syndicate section .cell span.button{width:75px}body.syndicate section:not(:last-child){padding-right:4px}body.syndicate div.subdisplay{width:100%;margin:0}body.syndicate header.titlebar .close,body.syndicate header.titlebar .minimize{display:inline-block;position:relative;padding:7px;margin:-7px;color:#e74242}body.syndicate header.titlebar .close:hover,body.syndicate header.titlebar .minimize:hover{color:#eb5e5e}body.syndicate header.titlebar{position:fixed;z-index:1;top:0;left:0;width:100%;height:32px;background-color:#363636;border-bottom:1px solid #161616;box-shadow:0 3px 3px rgba(0,0,0,.1)}body.syndicate header.titlebar .statusicon{position:absolute;top:4px;left:12px;transition:color .5s}body.syndicate header.titlebar .title{position:absolute;top:6px;left:46px;color:#e74242;font-size:16px;white-space:nowrap}body.syndicate header.titlebar .minimize{position:absolute;top:6px;right:46px}body.syndicate header.titlebar .close{position:absolute;top:4px;right:12px}.no-icons header.titlebar .statusicon{font-size:20px}.no-icons header.titlebar .statusicon:after{content:"O"}.no-icons header.titlebar .minimize{top:-2px;font-size:20px}.no-icons header.titlebar .minimize:after{content:"—"}.no-icons header.titlebar .close{font-size:20px}.no-icons header.titlebar .close:after{content:"X"} \ No newline at end of file diff --git a/tgui/assets/tgui.js b/tgui/assets/tgui.js index 16752bdaa9..4d9e2b86ba 100644 --- a/tgui/assets/tgui.js +++ b/tgui/assets/tgui.js @@ -14,4 +14,4 @@ t:7,e:"ntosheader"}," ",{t:4,f:[{p:[18,3,363],t:7,e:"ui-notice",f:[{p:[19,5,380] s:"!_0"},p:[39,2,1216]}," ",{p:[89,2,2954],t:7,e:"br"},{p:[89,6,2958],t:7,e:"br"},{p:[89,10,2962],t:7,e:"hr"},{p:[89,14,2966],t:7,e:"i",f:["NTOS v2.0.4b Copyright Nanotrasen 2557 - 2559"]}]}]},r.exports.components=r.exports.components||{};var i={ntosheader:t(284)};for(var o in i)i.hasOwnProperty(o)&&(r.exports.components[o]=i[o]);e.exports=a.extend(r.exports)},{205:205,284:284}],278:[function(t,e,n){var a=t(205),r={exports:{}};r.exports.template={v:3,t:[" ",{p:[2,1,47],t:7,e:"ntosheader"}," ",{p:[4,1,64],t:7,e:"ui-display",f:[{p:[6,2,81],t:7,e:"ui-display",a:{title:"WIRELESS CONNECTIVITY"},f:[{p:[8,3,129],t:7,e:"ui-section",a:{label:"Active NTNetRelays"},f:[{p:[9,4,173],t:7,e:"b",f:[{t:2,r:"data.ntnetrelays",p:[9,7,176]}]}]}," ",{t:4,f:[{p:[12,4,250],t:7,e:"ui-section",a:{label:"System status"},f:[{p:[13,6,291],t:7,e:"b",f:[{t:2,x:{r:["data.ntnetstatus"],s:'_0?"ENABLED":"DISABLED"'},p:[13,9,294]}]}]}," ",{p:[15,4,366],t:7,e:"ui-section",a:{label:"Control"},f:[{p:[17,4,401],t:7,e:"ui-button",a:{icon:"plus",action:"toggleWireless"},f:["TOGGLE"]}]}," ",{p:[21,4,500],t:7,e:"br"},{p:[21,8,504],t:7,e:"br"}," ",{p:[22,4,513],t:7,e:"i",f:["Caution - Disabling wireless transmitters when using wireless device may prevent you from re-enabling them again!"]}],n:50,r:"data.ntnetrelays",p:[11,3,221]},{t:4,n:51,f:[{p:[24,4,650],t:7,e:"br"},{p:[24,8,654],t:7,e:"p",f:["Wireless coverage unavailable, no relays are connected."]}],r:"data.ntnetrelays"}]}," ",{p:[29,2,750],t:7,e:"ui-display",a:{title:"FIREWALL CONFIGURATION"},f:[{p:[31,2,798],t:7,e:"table",f:[{p:[32,3,809],t:7,e:"tr",f:[{p:[33,4,818],t:7,e:"th",f:["PROTOCOL"]},{p:[34,4,835],t:7,e:"th",f:["STATUS"]},{p:[35,4,850],t:7,e:"th",f:["CONTROL"]}]},{p:[36,3,865],t:7,e:"tr",f:[" ",{p:[37,4,874],t:7,e:"td",f:["Software Downloads"]},{p:[38,4,901],t:7,e:"td",f:[{t:2,x:{r:["data.config_softwaredownload"],s:'_0?"ENABLED":"DISABLED"'},p:[38,8,905]}]},{p:[39,4,967],t:7,e:"td",f:[" ",{p:[39,9,972],t:7,e:"ui-button",a:{action:"toggle_function",params:'{"id": "1"}'},f:["TOGGLE"]}]}]},{p:[40,3,1051],t:7,e:"tr",f:[" ",{p:[41,4,1060],t:7,e:"td",f:["Peer to Peer Traffic"]},{p:[42,4,1089],t:7,e:"td",f:[{t:2,x:{r:["data.config_peertopeer"],s:'_0?"ENABLED":"DISABLED"'},p:[42,8,1093]}]},{p:[43,4,1149],t:7,e:"td",f:[{p:[43,8,1153],t:7,e:"ui-button",a:{action:"toggle_function",params:'{"id": "2"}'},f:["TOGGLE"]}]}]},{p:[44,3,1232],t:7,e:"tr",f:[" ",{p:[45,4,1241],t:7,e:"td",f:["Communication Systems"]},{p:[46,4,1271],t:7,e:"td",f:[{t:2,x:{r:["data.config_communication"],s:'_0?"ENABLED":"DISABLED"'},p:[46,8,1275]}]},{p:[47,4,1334],t:7,e:"td",f:[{p:[47,8,1338],t:7,e:"ui-button",a:{action:"toggle_function",params:'{"id": "3"}'},f:["TOGGLE"]}]}]},{p:[48,3,1417],t:7,e:"tr",f:[" ",{p:[49,4,1426],t:7,e:"td",f:["Remote System Control"]},{p:[50,4,1456],t:7,e:"td",f:[{t:2,x:{r:["data.config_systemcontrol"],s:'_0?"ENABLED":"DISABLED"'},p:[50,8,1460]}]},{p:[51,4,1519],t:7,e:"td",f:[{p:[51,8,1523],t:7,e:"ui-button",a:{action:"toggle_function",params:'{"id": "4"}'},f:["TOGGLE"]}]}]}]}]}," ",{p:[55,2,1630],t:7,e:"ui-display",a:{title:"SECURITY SYSTEMS"},f:[{t:4,f:[{p:[58,4,1699],t:7,e:"ui-notice",f:[{p:[59,5,1716],t:7,e:"h1",f:["NETWORK INCURSION DETECTED"]}]}," ",{p:[61,5,1774],t:7,e:"i",f:["An abnormal activity has been detected in the network. Please verify system logs for more information"]}],n:50,r:"data.idsalarm",p:[57,3,1673]}," ",{p:[64,3,1902],t:7,e:"ui-section",a:{label:"Intrusion Detection System"},f:[{p:[65,4,1954],t:7,e:"b",f:[{t:2,x:{r:["data.idsstatus"],s:'_0?"ENABLED":"DISABLED"'},p:[65,7,1957]}]}]}," ",{p:[68,3,2029],t:7,e:"ui-section",a:{label:"Maximal Log Count"},f:[{p:[69,4,2072],t:7,e:"b",f:[{t:2,r:"data.ntnetmaxlogs",p:[69,7,2075]}]}]}," ",{p:[72,3,2125],t:7,e:"ui-section",a:{label:"Controls"},f:[]}," ",{p:[74,4,2176],t:7,e:"table",f:[{p:[75,4,2188],t:7,e:"tr",f:[{p:[75,8,2192],t:7,e:"td",f:[{p:[75,12,2196],t:7,e:"ui-button",a:{action:"resetIDS"},f:["RESET IDS"]}]}]},{p:[76,4,2251],t:7,e:"tr",f:[{p:[76,8,2255],t:7,e:"td",f:[{p:[76,12,2259],t:7,e:"ui-button",a:{action:"toggleIDS"},f:["TOGGLE IDS"]}]}]},{p:[77,4,2316],t:7,e:"tr",f:[{p:[77,8,2320],t:7,e:"td",f:[{p:[77,12,2324],t:7,e:"ui-button",a:{action:"updatemaxlogs"},f:["SET LOG LIMIT"]}]}]},{p:[78,4,2388],t:7,e:"tr",f:[{p:[78,8,2392],t:7,e:"td",f:[{p:[78,12,2396],t:7,e:"ui-button",a:{action:"purgelogs"},f:["PURGE LOGS"]}]}]}]}," ",{p:[81,3,2467],t:7,e:"ui-subdisplay",a:{title:"System Logs"},f:[{p:[82,3,2506],t:7,e:"div",a:{"class":"statusDisplay",style:"overflow: auto;"},f:[{p:[83,3,2561],t:7,e:"div",a:{"class":"item"},f:[{p:[84,4,2584],t:7,e:"div",a:{"class":"itemContent",style:"width: 100%;"},f:[{t:4,f:[{t:2,r:"entry",p:[86,6,2667]},{p:[86,15,2676],t:7,e:"br"}],n:52,r:"data.ntnetlogs",p:[85,5,2636]}]}]}]}]}]}]}]},r.exports.components=r.exports.components||{};var i={ntosheader:t(284)};for(var o in i)i.hasOwnProperty(o)&&(r.exports.components[o]=i[o]);e.exports=a.extend(r.exports)},{205:205,284:284}],279:[function(t,e,n){var a=t(205),r={exports:{}};r.exports.template={v:3,t:[" ",{p:[2,1,47],t:7,e:"ntosheader"}," ",{p:[4,1,64],t:7,e:"ui-display",f:[{t:4,f:[{p:[7,2,102],t:7,e:"div",a:{"class":"item"},f:[{p:[8,3,124],t:7,e:"h2",f:["An error has occurred during operation..."]}," ",{p:[9,3,178],t:7,e:"b",f:["Additional information:"]},{t:2,r:"data.error",p:[9,34,209]},{p:[9,48,223],t:7,e:"br"}," ",{p:[10,3,231],t:7,e:"ui-button",a:{action:"PRG_reset"},f:["Clear"]}]}],n:50,r:"data.error",p:[6,2,81]},{t:4,n:51,f:[{t:4,n:50,x:{r:["data.downloading"],s:"_0"},f:[{p:[13,3,321],t:7,e:"h2",f:["Download in progress..."]}," ",{p:[14,3,357],t:7,e:"div",a:{"class":"itemLabel"},f:["Downloaded file:"]}," ",{p:[17,3,416],t:7,e:"div",a:{"class":"itemContent"},f:[{t:2,r:"data.download_name",p:[18,4,446]}]}," ",{p:[20,3,483],t:7,e:"div",a:{"class":"itemLabel"},f:["Download progress:"]}," ",{p:[23,3,544],t:7,e:"div",a:{"class":"itemContent"},f:[{t:2,r:"data.download_progress",p:[24,4,574]}," / ",{t:2,r:"data.download_size",p:[24,33,603]}," GQ"]}," ",{p:[26,3,642],t:7,e:"div",a:{"class":"itemLabel"},f:["Transfer speed:"]}," ",{p:[29,3,700],t:7,e:"div",a:{"class":"itemContent"},f:[{t:2,r:"data.download_netspeed",p:[30,4,730]},"GQ/s"]}," ",{p:[32,3,774],t:7,e:"div",a:{"class":"itemLabel"},f:["Controls:"]}," ",{p:[35,3,826],t:7,e:"div",a:{"class":"itemContent"},f:[{p:[36,4,856],t:7,e:"ui-button",a:{action:"PRG_reset"},f:["Abort download"]}]}]},{t:4,n:50,x:{r:["data.downloading","data.uploading"],s:"(!(_0))&&(_1)"},f:[" ",{p:[39,3,954],t:7,e:"h2",f:["Server enabled"]}," ",{p:[40,3,981],t:7,e:"div",a:{"class":"itemLabel"},f:["Connected clients:"]}," ",{p:[43,3,1042],t:7,e:"div",a:{"class":"itemContent"},f:[{t:2,r:"data.upload_clients",p:[44,4,1072]}]}," ",{p:[46,3,1109],t:7,e:"div",a:{"class":"itemLabel"},f:["Provided file:"]}," ",{p:[49,3,1166],t:7,e:"div",a:{"class":"itemContent"},f:[{t:2,r:"data.upload_filename",p:[50,4,1196]}]}," ",{p:[52,3,1234],t:7,e:"div",a:{"class":"itemLabel"},f:["Server password:"]}," ",{p:[55,3,1293],t:7,e:"div",a:{"class":"itemContent"},f:[{t:4,f:["ENABLED"],n:50,r:"data.upload_haspassword",p:[56,4,1323]},{t:4,n:51,f:["DISABLED"],r:"data.upload_haspassword"}]}," ",{p:[62,3,1420],t:7,e:"div",a:{"class":"itemLabel"},f:["Commands:"]}," ",{p:[65,3,1472],t:7,e:"div",a:{"class":"itemContent"},f:[{p:[66,4,1502],t:7,e:"ui-button",a:{action:"PRG_setpassword"},f:["Set password"]}," ",{p:[67,4,1567],t:7,e:"ui-button",a:{action:"PRG_reset"},f:["Exit server"]}]}]},{t:4,n:50,x:{r:["data.downloading","data.uploading","data.upload_filelist"],s:"(!(_0))&&((!(_1))&&(_2))"},f:[" ",{p:[70,3,1668],t:7,e:"h2",f:["File transfer server ready. Select file to upload:"]}," ",{p:[71,3,1732],t:7,e:"table",f:[{p:[72,3,1743],t:7,e:"tr",f:[{p:[72,7,1747],t:7,e:"th",f:["File name"]},{p:[72,20,1760],t:7,e:"th",f:["File size"]},{p:[72,33,1773],t:7,e:"th",f:["Controls ",{t:4,f:[{p:[74,4,1824],t:7,e:"tr",f:[{p:[74,8,1828],t:7,e:"td",f:[{t:2,r:"filename",p:[74,12,1832]}]},{p:[75,4,1849],t:7,e:"td",f:[{t:2,r:"size",p:[75,8,1853]},"GQ"]},{p:[76,4,1868],t:7,e:"td",f:[{p:[76,8,1872],t:7,e:"ui-button",a:{action:"PRG_uploadfile",params:['{"id": "',{t:2,r:"uid",p:[76,59,1923]},'"}']},f:["Select"]}]}]}],n:52,r:"data.upload_filelist",p:[73,3,1789]}]}]}]}," ",{p:[79,3,1981],t:7,e:"hr"}," ",{p:[80,3,1989],t:7,e:"ui-button",a:{action:"PRG_setpassword"},f:["Set password"]}," ",{p:[81,3,2053],t:7,e:"ui-button",a:{action:"PRG_reset"},f:["Return"]}]},{t:4,n:50,x:{r:["data.downloading","data.uploading","data.upload_filelist"],s:"(!(_0))&&((!(_1))&&(!(_2)))"},f:[" ",{p:[83,3,2116],t:7,e:"h2",f:["Available files:"]}," ",{p:[84,3,2145],t:7,e:"table",a:{border:"1",style:"border-collapse: collapse"},f:[{p:[84,55,2197],t:7,e:"tr",f:[{p:[84,59,2201],t:7,e:"th",f:["Server UID"]},{p:[84,73,2215],t:7,e:"th",f:["File Name"]},{p:[84,86,2228],t:7,e:"th",f:["File Size"]},{p:[84,99,2241],t:7,e:"th",f:["Password Protection"]},{p:[84,122,2264],t:7,e:"th",f:["Operations ",{t:4,f:[{p:[86,5,2311],t:7,e:"tr",f:[{p:[86,9,2315],t:7,e:"td",f:[{t:2,r:"uid",p:[86,13,2319]}]},{p:[87,5,2332],t:7,e:"td",f:[{t:2,r:"filename",p:[87,9,2336]}]},{p:[88,5,2354],t:7,e:"td",f:[{t:2,r:"size",p:[88,9,2358]},"GQ ",{t:4,f:[{p:[90,6,2400],t:7,e:"td",f:["Enabled"]}],n:50,r:"haspassword",p:[89,5,2374]}," ",{t:4,f:[{p:[93,6,2457],t:7,e:"td",f:["Disabled"]}],n:50,x:{r:["haspassword"],s:"!_0"},p:[92,5,2430]}]},{p:[96,5,2494],t:7,e:"td",f:[{p:[96,9,2498],t:7,e:"ui-button",a:{action:"PRG_downloadfile",params:['{"id": "',{t:2,r:"uid",p:[96,62,2551]},'"}']},f:["Download"]}]}]}],n:52,r:"data.servers",p:[85,4,2283]}]}]}]}," ",{p:[99,3,2612],t:7,e:"hr"}," ",{p:[100,3,2620],t:7,e:"ui-button",a:{action:"PRG_uploadmenu"},f:["Send file"]}]}],r:"data.error"}]}]},r.exports.components=r.exports.components||{};var i={ntosheader:t(284)};for(var o in i)i.hasOwnProperty(o)&&(r.exports.components[o]=i[o]);e.exports=a.extend(r.exports)},{205:205,284:284}],280:[function(t,e,n){var a=t(205),r={exports:{}};!function(t){"use strict";t.exports={data:{chargingState:function(t){switch(t){case 2:return"good";case 1:return"average";default:return"bad"}},chargingMode:function(t){return 2==t?"Full":1==t?"Charging":"Draining"},channelState:function(t){return t>=2?"good":"bad"},channelPower:function(t){return t>=2?"On":"Off"},channelMode:function(t){return 1==t||3==t?"Auto":"Manual"}},computed:{graphData:function(){var t=this.get("data.history");return Object.keys(t).map(function(e){return t[e].map(function(t,e){return{x:e,y:t}})})}}}}(r),r.exports.template={v:3,t:[" "," ",{p:[43,1,1082],t:7,e:"ntosheader"}," ",{p:[45,1,1099],t:7,e:"ui-display",a:{title:"Network"},f:[{t:4,f:[{p:[47,5,1157],t:7,e:"ui-linegraph",a:{points:[{t:2,r:"graphData",p:[47,27,1179]}],height:"500",legend:'["Available", "Load"]',colors:'["rgb(0, 102, 0)", "rgb(153, 0, 0)"]',xunit:"seconds ago",xfactor:[{t:2,r:"data.interval",p:[49,38,1331]}],yunit:"W",yfactor:"1",xinc:[{t:2,x:{r:["data.stored"],s:"_0/10"},p:[50,15,1387]}],yinc:"9"}}],n:50,r:"config.fancy",p:[46,3,1131]},{t:4,n:51,f:[{p:[52,5,1437],t:7,e:"ui-section",a:{label:"Available"},f:[{p:[53,7,1475],t:7,e:"span",f:[{t:2,r:"data.supply",p:[53,13,1481]}]}]}," ",{p:[55,5,1528],t:7,e:"ui-section",a:{label:"Load"},f:[{p:[56,9,1563],t:7,e:"span",f:[{t:2,r:"data.demand",p:[56,15,1569]}]}]}],r:"config.fancy"}]}," ",{p:[60,1,1638],t:7,e:"ui-display",a:{title:"Areas"},f:[{p:[61,3,1668],t:7,e:"ui-section",a:{nowrap:0},f:[{p:[62,5,1693],t:7,e:"div",a:{"class":"content"},f:["Area"]}," ",{p:[63,5,1730],t:7,e:"div",a:{"class":"content"},f:["Charge"]}," ",{p:[64,5,1769],t:7,e:"div",a:{"class":"content"},f:["Load"]}," ",{p:[65,5,1806],t:7,e:"div",a:{"class":"content"},f:["Status"]}," ",{p:[66,5,1845],t:7,e:"div",a:{"class":"content"},f:["Equipment"]}," ",{p:[67,5,1887],t:7,e:"div",a:{"class":"content"},f:["Lighting"]}," ",{p:[68,5,1928],t:7,e:"div",a:{"class":"content"},f:["Environment"]}]}," ",{t:4,f:[{p:[71,5,2013],t:7,e:"ui-section",a:{label:[{t:2,r:"name",p:[71,24,2032]}],nowrap:0},f:[{p:[72,7,2057],t:7,e:"div",a:{"class":"content"},f:[{t:2,x:{r:["@index","adata.areas"],s:"Math.round(_1[_0].charge)"},p:[72,28,2078]}," %"]}," ",{p:[73,7,2136],t:7,e:"div",a:{"class":"content"},f:[{t:2,rx:{r:"adata.areas",m:[{t:30,n:"@index"},"load"]},p:[73,28,2157]}]}," ",{p:[74,7,2199],t:7,e:"div",a:{"class":"content"},f:[{p:[74,28,2220],t:7,e:"span",a:{"class":[{t:2,x:{r:["chargingState","charging"],s:"_0(_1)"},p:[74,41,2233]}]},f:[{t:2,x:{r:["chargingMode","charging"],s:"_0(_1)"},p:[74,70,2262]}]}]}," ",{p:[75,7,2309],t:7,e:"div",a:{"class":"content"},f:[{p:[75,28,2330],t:7,e:"span",a:{"class":[{t:2,x:{r:["channelState","eqp"],s:"_0(_1)"},p:[75,41,2343]}]},f:[{t:2,x:{r:["channelPower","eqp"],s:"_0(_1)"},p:[75,64,2366]}," [",{p:[75,87,2389],t:7,e:"span",f:[{t:2,x:{r:["channelMode","eqp"],s:"_0(_1)"},p:[75,93,2395]}]},"]"]}]}," ",{p:[76,7,2444],t:7,e:"div",a:{"class":"content"},f:[{p:[76,28,2465],t:7,e:"span",a:{"class":[{t:2,x:{r:["channelState","lgt"],s:"_0(_1)"},p:[76,41,2478]}]},f:[{t:2,x:{r:["channelPower","lgt"],s:"_0(_1)"},p:[76,64,2501]}," [",{p:[76,87,2524],t:7,e:"span",f:[{t:2,x:{r:["channelMode","lgt"],s:"_0(_1)"},p:[76,93,2530]}]},"]"]}]}," ",{p:[77,7,2579],t:7,e:"div",a:{"class":"content"},f:[{p:[77,28,2600],t:7,e:"span",a:{"class":[{t:2,x:{r:["channelState","env"],s:"_0(_1)"},p:[77,41,2613]}]},f:[{t:2,x:{r:["channelPower","env"],s:"_0(_1)"},p:[77,64,2636]}," [",{p:[77,87,2659],t:7,e:"span",f:[{t:2,x:{r:["channelMode","env"],s:"_0(_1)"},p:[77,93,2665]}]},"]"]}]}]}],n:52,r:"data.areas",p:[70,3,1987]}]}]},r.exports.components=r.exports.components||{};var i={ntosheader:t(284)};for(var o in i)i.hasOwnProperty(o)&&(r.exports.components[o]=i[o]);e.exports=a.extend(r.exports)},{205:205,284:284}],281:[function(t,e,n){var a=t(205),r={exports:{}};r.exports.template={v:3,t:[" ",{p:[2,1,47],t:7,e:"ntosheader"}," ",{p:[4,1,64],t:7,e:"ui-display",f:[{p:[5,2,79],t:7,e:"div",a:{"class":"item"},f:[{p:[6,3,101],t:7,e:"div",a:{"class":"itemLabel"},f:["Payload status:"]}," ",{p:[9,3,158],t:7,e:"div",a:{"class":"itemContent"},f:[{t:4,f:["ARMED"],n:50,r:"data.armed",p:[10,4,188]},{t:4,n:51,f:["DISARMED"],r:"data.armed"}]}," ",{p:[16,3,270],t:7,e:"div",a:{"class":"itemLabel"},f:["Controls:"]}," ",{p:[19,3,321],t:7,e:"div",a:{"class":"itemContent"},f:[{p:[20,4,351],t:7,e:"table",f:[{p:[21,4,363],t:7,e:"tr",f:[{p:[21,8,367],t:7,e:"td",f:[{p:[21,12,371],t:7,e:"ui-button",a:{action:"PRG_obfuscate"},f:["OBFUSCATE PROGRAM NAME"]}]}]},{p:[22,4,444],t:7,e:"tr",f:[{p:[22,8,448],t:7,e:"td",f:[{p:[22,12,452],t:7,e:"ui-button",a:{action:"PRG_arm",state:[{t:2,x:{r:["data.armed"],s:'_0?"danger":null'},p:[22,47,487]}]},f:[{t:2,x:{r:["data.armed"],s:'_0?"DISARM":"ARM"'},p:[22,81,521]}]}," ",{p:[23,4,571],t:7,e:"ui-button",a:{icon:"radiation",state:[{t:2,x:{r:["data.armed"],s:'_0?null:"disabled"'},p:[23,39,606]}],action:"PRG_activate"},f:["ACTIVATE"]}]}]}]}]}]}]}]},r.exports.components=r.exports.components||{};var i={ntosheader:t(284)};for(var o in i)i.hasOwnProperty(o)&&(r.exports.components[o]=i[o]);e.exports=a.extend(r.exports)},{205:205,284:284}],282:[function(t,e,n){var a=t(205),r={exports:{}};r.exports.template={v:3,t:[" ",{p:[2,1,47],t:7,e:"ntosheader"}," ",{t:4,f:[{p:[5,3,95],t:7,e:"ui-display",a:{title:[{t:2,r:"class",p:[5,22,114]}," Alarms"]},f:[{p:[6,5,138],t:7,e:"ul",f:[{t:4,f:[{p:[8,9,171],t:7,e:"li",f:[{t:2,r:".",p:[8,13,175]}]}],n:52,r:".",p:[7,7,150]},{t:4,n:51,f:[{p:[10,9,211],t:7,e:"li",f:["System Nominal"]}],r:"."}]}]}],n:52,i:"class",r:"data.alarms",p:[4,1,64]}]},r.exports.components=r.exports.components||{};var i={ntosheader:t(284)};for(var o in i)i.hasOwnProperty(o)&&(r.exports.components[o]=i[o]);e.exports=a.extend(r.exports)},{205:205,284:284}],283:[function(t,e,n){var a=t(205),r={exports:{}};!function(t){"use strict";t.exports={data:{integState:function(t){var e=100;return t==e?"good":t>e/2?"average":"bad"},bigState:function(t,e,n){return charge>n?"bad":t>e?"average":"good"}}}}(r),r.exports.template={v:3,t:[" "," ",{p:[23,1,421],t:7,e:"ntosheader"}," ",{t:4,f:[{p:[27,2,462],t:7,e:"ui-button",a:{action:"PRG_clear"},f:["Back to Menu"]},{p:[27,56,516],t:7,e:"br"}," ",{p:[28,3,524],t:7,e:"ui-display",a:{title:"Supermatter Status:"},f:[{p:[29,3,568],t:7,e:"ui-section",a:{label:"Core Integrity"},f:[{p:[30,5,609],t:7,e:"ui-bar",a:{min:"0",max:"100",value:[{t:2,r:"adata.SM_integrity",p:[30,38,642]}],state:[{t:2,x:{r:["integState","adata.SM_integrity"],s:"_0(_1)"},p:[30,69,673]}]},f:[{t:2,r:"data.SM_integrity",p:[30,105,709]},"%"]}]}," ",{p:[32,3,761],t:7,e:"ui-section",a:{label:"Relative EER"},f:[{p:[33,5,800],t:7,e:"span",a:{"class":[{t:2,x:{r:["bigState","data.SM_power"],s:"_0(_1,150,300)"},p:[33,18,813]}]},f:[{t:2,r:"data.SM_power",p:[33,55,850]}," MeV/cm3"]}]}," ",{p:[35,3,903],t:7,e:"ui-section",a:{label:"Temperature"},f:[{p:[36,5,941],t:7,e:"span",a:{"class":[{t:2,x:{r:["bigState","data.SM_ambienttemp"],s:"_0(_1,4000,5000)"},p:[36,18,954]}]},f:[{t:2,r:"data.SM_ambienttemp",p:[36,63,999]}," K"]}]}," ",{p:[38,3,1052],t:7,e:"ui-section",a:{label:"Pressure"},f:[{p:[39,5,1087],t:7,e:"span",a:{"class":[{t:2,x:{r:["bigState","data.SM_ambientpressure"],s:"_0(_1,5000,10000)"},p:[39,18,1100]}]},f:[{t:2,r:"data.SM_ambientpressure",p:[39,68,1150]}," kPa"]}]}]}," ",{p:[42,3,1227],t:7,e:"hr"},{p:[42,7,1231],t:7,e:"br"}," ",{p:[43,3,1239],t:7,e:"ui-display",a:{title:"Gas Composition:"},f:[{t:4,f:[{p:[45,5,1307],t:7,e:"ui-section",a:{label:[{t:2,r:"name",p:[45,24,1326]}]},f:[{t:2,r:"amount",p:[46,6,1343]}," %"]}],n:52,r:"data.gases",p:[44,4,1281]}]}],n:50,r:"data.active",p:[26,1,440]},{t:4,n:51,f:[{p:[51,2,1418],t:7,e:"ui-button",a:{action:"PRG_refresh"},f:["Refresh"]},{p:[51,53,1469],t:7,e:"br"}," ",{p:[52,2,1476],t:7,e:"ui-display",a:{title:"Detected Supermatters"},f:[{t:4,f:[{p:[54,3,1552],t:7,e:"ui-section",a:{label:"Area"},f:[{t:2,r:"area_name",p:[55,5,1583]}," - (#",{t:2,r:"uid",p:[55,23,1601]},")"]}," ",{p:[57,3,1630],t:7,e:"ui-section",a:{label:"Integrity"},f:[{t:2,r:"integrity",p:[58,5,1666]}," %"]}," ",{p:[60,3,1702],t:7,e:"ui-section",a:{label:"Options"},f:[{p:[61,5,1736],t:7,e:"ui-button",a:{action:"PRG_set",params:['{"target" : "',{t:2,r:"uid",p:[61,54,1785]},'"}']},f:["View Details"]}]}],n:52,r:"data.supermatters",p:[53,2,1521]}]}],r:"data.active"}]},r.exports.components=r.exports.components||{};var i={ntosheader:t(284)};for(var o in i)i.hasOwnProperty(o)&&(r.exports.components[o]=i[o]);e.exports=a.extend(r.exports)},{205:205,284:284}],284:[function(t,e,n){var a=t(205),r={exports:{}};r.exports.template={v:3,t:[{p:[1,1,0],t:7,e:"div",a:{"class":"item",style:"float: left"},f:[{p:[2,2,41],t:7,e:"table",f:[{p:[2,9,48],t:7,e:"tr",f:[{t:4,f:[{p:[4,3,113],t:7,e:"td",f:[{p:[4,7,117],t:7,e:"img",a:{src:[{t:2,r:"data.PC_batteryicon",p:[4,17,127]}]}}]}],n:50,x:{r:["data.PC_batteryicon","data.PC_showbatteryicon"],s:"_0&&_1"},p:[3,2,55]}," ",{t:4,f:[{p:[7,3,226],t:7,e:"td",f:[{p:[7,7,230],t:7,e:"b",f:[{t:2,r:"data.PC_batterypercent",p:[7,10,233]}]}]}],n:50,x:{r:["data.PC_batterypercent","data.PC_showbatteryicon"],s:"_0&&_1"},p:[6,2,165]}," ",{t:4,f:[{p:[10,3,305],t:7,e:"td",f:[{p:[10,7,309],t:7,e:"img",a:{src:[{t:2,r:"data.PC_ntneticon",p:[10,17,319]}]}}]}],n:50,r:"data.PC_ntneticon",p:[9,2,276]}," ",{t:4,f:[{p:[13,3,386],t:7,e:"td",f:[{p:[13,7,390],t:7,e:"img",a:{src:[{t:2,r:"data.PC_apclinkicon",p:[13,17,400]}]}}]}],n:50,r:"data.PC_apclinkicon",p:[12,2,355]}," ",{t:4,f:[{p:[16,3,469],t:7,e:"td",f:[{p:[16,7,473],t:7,e:"b",f:[{t:2,r:"data.PC_stationtime",p:[16,10,476]}]}]}],n:50,r:"data.PC_stationtime",p:[15,2,438]}," ",{t:4,f:[{p:[19,3,552],t:7,e:"td",f:[{p:[19,7,556],t:7,e:"img",a:{src:[{t:2,r:"icon",p:[19,17,566]}]}}]}],n:52,r:"data.PC_programheaders",p:[18,2,516]}]}]}]}," ",{p:[23,1,609],t:7,e:"div",a:{style:"float: right; margin-top: 5px"},f:[{p:[24,2,655],t:7,e:"ui-button",a:{action:"PC_shutdown"},f:["Shutdown"]}," ",{t:4,f:[{p:[26,3,745],t:7,e:"ui-button",a:{action:"PC_exit"},f:["EXIT PROGRAM"]}," ",{p:[27,3,801],t:7,e:"ui-button",a:{action:"PC_minimize"},f:["Minimize Program"]}],n:50,r:"data.PC_showexitprogram",p:[25,2,710]}]}," ",{p:[30,1,881],t:7,e:"div",a:{style:"clear: both"}}]},e.exports=a.extend(r.exports)},{205:205}],285:[function(t,e,n){var a=t(205),r={exports:{}};r.exports.template={v:3,t:[{p:[1,1,0],t:7,e:"ui-display",a:{title:"Auth. Disk:"},f:[{t:4,f:[{p:[3,7,69],t:7,e:"ui-button",a:{icon:"eject",style:"selected",action:"eject_disk"},f:["++++++++++"]}],n:50,r:"data.disk_present",p:[2,3,36]},{t:4,n:51,f:[{p:[5,7,172],t:7,e:"ui-button",a:{icon:"plus",action:"insert_disk"},f:["----------"]}],r:"data.disk_present"}]}," ",{p:[8,1,266],t:7,e:"ui-display",a:{title:"Status"},f:[{p:[9,3,297],t:7,e:"span",f:[{t:2,r:"data.status1",p:[9,9,303]},"-",{t:2,r:"data.status2",p:[9,26,320]}]}]}," ",{p:[11,1,360],t:7,e:"ui-display",a:{title:"Timer"},f:[{p:[12,3,390],t:7,e:"ui-section",a:{label:"Time to Detonation"},f:[{p:[13,5,435],t:7,e:"span",f:[{t:2,x:{r:["data.timing","data.time_left","data.timer_set"],s:"_0?_1:_2"},p:[13,11,441]}]}]}," ",{t:4,f:[{p:[16,5,540],t:7,e:"ui-section",a:{label:"Adjust Timer"},f:[{p:[17,7,581],t:7,e:"ui-button",a:{icon:"refresh",state:[{t:2,x:{r:["data.disk_present","data.code_approved","data.timer_is_not_default"],s:'_0&&_1&&_2?null:"disabled"'},p:[17,40,614]}],action:"timer",params:'{"change": "reset"}'},f:["Reset"]}," ",{p:[19,7,786],t:7,e:"ui-button",a:{icon:"minus",state:[{t:2,x:{r:["data.disk_present","data.code_approved","data.timer_is_not_min"],s:'_0&&_1&&_2?null:"disabled"'},p:[19,38,817]}],action:"timer",params:'{"change": "decrease"}'},f:["Decrease"]}," ",{p:[21,7,991],t:7,e:"ui-button",a:{icon:"pencil",state:[{t:2,x:{r:["data.disk_present","data.code_approved"],s:'_0&&_1?null:"disabled"'},p:[21,39,1023]}],action:"timer",params:'{"change": "input"}'},f:["Set"]}," ",{p:[22,7,1155],t:7,e:"ui-button",a:{icon:"plus",state:[{t:2,x:{r:["data.disk_present","data.code_approved","data.timer_is_not_max"],s:'_0&&_1&&_2?null:"disabled"'},p:[22,37,1185]}],action:"timer",params:'{"change": "increase"}'},f:["Increase"]}]}],n:51,r:"data.timing",p:[15,3,518]}," ",{p:[26,3,1394],t:7,e:"ui-section",a:{label:"Timer"},f:[{p:[27,5,1426],t:7,e:"ui-button",a:{icon:"clock-o",style:[{t:2,x:{r:["data.timing"],s:'_0?"danger":"caution"'},p:[27,38,1459]}],action:"toggle_timer",state:[{t:2,x:{r:["data.disk_present","data.code_approved","data.safety"],s:'_0&&_1&&!_2?null:"disabled"'},p:[29,14,1542]}]},f:[{t:2,x:{r:["data.timing"],s:'_0?"On":"Off"'},p:[30,7,1631]}]}]}]}," ",{p:[34,1,1713],t:7,e:"ui-display",a:{title:"Anchoring"},f:[{p:[35,3,1747],t:7,e:"ui-button",a:{state:[{t:2,x:{r:["data.disk_present","data.code_approved"],s:'_0&&_1?null:"disabled"'},p:[36,12,1770]}],icon:[{t:2,x:{r:["data.anchored"],s:'_0?"lock":"unlock"'},p:[37,11,1846]}],style:[{t:2,x:{r:["data.anchored"],s:'_0?null:"caution"'},p:[38,12,1897]}],action:"anchor"},f:[{t:2,x:{r:["data.anchored"],s:'_0?"Engaged":"Off"'},p:[39,21,1956]}]}]}," ",{p:[41,1,2022],t:7,e:"ui-display",a:{title:"Safety"},f:[{p:[42,3,2053],t:7,e:"ui-button",a:{state:[{t:2,x:{r:["data.disk_present","data.code_approved"],s:'_0&&_1?null:"disabled"'},p:[43,12,2076]}],icon:[{t:2,x:{r:["data.safety"],s:'_0?"lock":"unlock"'},p:[44,11,2152]}],action:"safety",style:[{t:2,x:{r:["data.safety"],s:'_0?"caution":"danger"'},p:[45,12,2217]}]},f:[{p:[46,7,2265],t:7,e:"span",f:[{t:2,x:{r:["data.safety"],s:'_0?"On":"Off"'},p:[46,13,2271]}]}]}]}," ",{p:[49,1,2341],t:7,e:"ui-display",a:{title:"Code"},f:[{p:[50,3,2370],t:7,e:"ui-section",a:{label:"Message"},f:[{t:2,r:"data.message",p:[50,31,2398]}]}," ",{p:[51,3,2431],t:7,e:"ui-section",a:{label:"Keypad"},f:[{p:[52,5,2464],t:7,e:"ui-button",a:{action:"keypad",state:[{t:2,x:{r:["data.disk_present"],s:'_0?null:"disabled"'},p:[52,39,2498]}],params:'{"digit":"1"}'},f:["1"]}," ",{p:[53,5,2583],t:7,e:"ui-button",a:{action:"keypad",state:[{t:2,x:{r:["data.disk_present"],s:'_0?null:"disabled"'},p:[53,39,2617]}],params:'{"digit":"2"}'},f:["2"]}," ",{p:[54,5,2702],t:7,e:"ui-button",a:{action:"keypad",state:[{t:2,x:{r:["data.disk_present"],s:'_0?null:"disabled"'},p:[54,39,2736]}],params:'{"digit":"3"}'},f:["3"]}," ",{p:[55,5,2821],t:7,e:"br"}," ",{p:[56,5,2831],t:7,e:"ui-button",a:{action:"keypad",state:[{t:2,x:{r:["data.disk_present"],s:'_0?null:"disabled"'},p:[56,39,2865]}],params:'{"digit":"4"}'},f:["4"]}," ",{p:[57,5,2950],t:7,e:"ui-button",a:{action:"keypad",state:[{t:2,x:{r:["data.disk_present"],s:'_0?null:"disabled"'},p:[57,39,2984]}],params:'{"digit":"5"}'},f:["5"]}," ",{p:[58,5,3069],t:7,e:"ui-button",a:{action:"keypad",state:[{t:2,x:{r:["data.disk_present"],s:'_0?null:"disabled"'},p:[58,39,3103]}],params:'{"digit":"6"}'},f:["6"]}," ",{p:[59,5,3188],t:7,e:"br"}," ",{p:[60,5,3198],t:7,e:"ui-button",a:{action:"keypad",state:[{t:2,x:{r:["data.disk_present"],s:'_0?null:"disabled"'},p:[60,39,3232]}],params:'{"digit":"7"}'},f:["7"]}," ",{p:[61,5,3317],t:7,e:"ui-button",a:{action:"keypad",state:[{t:2,x:{r:["data.disk_present"],s:'_0?null:"disabled"'},p:[61,39,3351]}],params:'{"digit":"8"}'},f:["8"]}," ",{p:[62,5,3436],t:7,e:"ui-button",a:{action:"keypad",state:[{t:2,x:{r:["data.disk_present"],s:'_0?null:"disabled"'},p:[62,39,3470]}],params:'{"digit":"9"}'},f:["9"]}," ",{p:[63,5,3555],t:7,e:"br"}," ",{p:[64,5,3565],t:7,e:"ui-button",a:{action:"keypad",state:[{t:2,x:{r:["data.disk_present"],s:'_0?null:"disabled"'},p:[64,39,3599]}],params:'{"digit":"R"}'},f:["R"]}," ",{p:[65,5,3684],t:7,e:"ui-button",a:{action:"keypad",state:[{t:2,x:{r:["data.disk_present"],s:'_0?null:"disabled"'},p:[65,39,3718]}],params:'{"digit":"0"}'},f:["0"]}," ",{p:[66,5,3803],t:7,e:"ui-button",a:{action:"keypad",state:[{t:2,x:{r:["data.disk_present"],s:'_0?null:"disabled"'},p:[66,39,3837]}],params:'{"digit":"E"}'},f:["E"]}]}]}]},e.exports=a.extend(r.exports)},{205:205}],286:[function(t,e,n){var a=t(205),r={exports:{}};r.exports.template={v:3,t:[{t:4,f:[{p:[2,2,25],t:7,e:"ui-notice",f:["No table detected!"]}],n:51,r:"data.table",p:[1,1,0]},{p:[6,1,88],t:7,e:"ui-display",f:[{p:[7,2,103],t:7,e:"ui-display",a:{title:"Patient State"},f:[{t:4,f:[{p:[9,4,166],t:7,e:"ui-section",a:{label:"State"},f:[{p:[10,5,198],t:7,e:"span",a:{"class":[{t:2,r:"data.patient.statstate",p:[10,18,211]}]},f:[{t:2,r:"data.patient.stat",p:[10,46,239]}]}]}," ",{p:[12,4,290],t:7,e:"ui-section",a:{label:"Blood Type"},f:[{p:[13,5,327],t:7,e:"span",a:{"class":"content"},f:[{t:2,r:"data.patient.blood_type",p:[13,27,349]}]}]}," ",{p:[15,4,406],t:7,e:"ui-section",a:{label:"Health"},f:[{p:[16,5,439],t:7,e:"ui-bar",a:{min:[{t:2,r:"data.patient.minHealth",p:[16,18,452]}],max:[{t:2,r:"data.patient.maxHealth",p:[16,51,485]}],value:[{t:2,r:"data.patient.health",p:[16,86,520]}],state:[{t:2,x:{r:["data.patient.health"],s:'_0>=0?"good":"average"'},p:[17,12,557]}]},f:[{t:2,x:{r:["adata.patient.health"],s:"Math.round(_0)"},p:[17,63,608]}]}]}," ",{t:4,f:[{p:[20,5,840],t:7,e:"ui-section",a:{label:[{t:2,r:"label",p:[20,24,859]}]},f:[{p:[21,6,877],t:7,e:"ui-bar",a:{min:"0",max:[{t:2,r:"data.patient.maxHealth",p:[21,27,898]}],value:[{t:2,rx:{r:"data.patient",m:[{t:30,n:"type"}]},p:[21,62,933]}],state:"bad"},f:[{t:2,x:{r:["type","adata.patient"],s:"Math.round(_1[_0])"},p:[21,98,969]}]}]}],n:52,x:{r:[],s:'[{label:"Brute",type:"bruteLoss"},{label:"Burn",type:"fireLoss"},{label:"Toxin",type:"toxLoss"},{label:"Respiratory",type:"oxyLoss"}]'},p:[19,4,676]}],n:50,r:"data.patient",p:[8,3,141]},{t:4,n:51,f:["No patient detected."],r:"data.patient"}]}," ",{p:[28,2,1113],t:7,e:"ui-display",a:{title:"Initiated Procedures"},f:[{t:4,f:[{t:4,f:[{p:[31,5,1217],t:7,e:"ui-subdisplay",a:{title:[{t:2,r:"name",p:[31,27,1239]}]},f:[{p:[32,6,1256],t:7,e:"ui-section",a:{label:"Next Step"},f:[{p:[33,7,1294],t:7,e:"span",a:{"class":"content"},f:[{t:2,r:"next_step",p:[33,29,1316]}]}]}," ",{t:4,f:[{p:[36,7,1395],t:7,e:"ui-section",a:{label:"Alternative Step"},f:[{p:[37,8,1441],t:7,e:"span",a:{"class":"content"},f:[{t:2,r:"alternative_step",p:[37,30,1463]}]}]}],n:50,r:"alternative_step",p:[35,6,1363]}]}],n:52,r:"data.procedures",p:[30,4,1186]}],n:50,r:"data.procedures",p:[29,3,1158]},{t:4,n:51,f:["No active procedures."],r:"data.procedures"}]}]}]},e.exports=a.extend(r.exports)},{205:205}],287:[function(t,e,n){var a=t(205),r={exports:{}};r.exports.template={v:3,t:[{p:[1,1,0],t:7,e:"ui-display",f:[{p:[2,2,15],t:7,e:"ui-section",f:["This machine only accepts ore. Gibtonite and Slag are not accepted."]}," ",{p:[5,2,117],t:7,e:"ui-section",f:["Current unclaimed points: ",{t:2,r:"data.unclaimedPoints",p:[6,29,159]}," ",{t:4,f:[{p:[8,4,220],t:7,e:"ui-button",a:{action:"Claim"},f:["Claim Points"]}],n:50,r:"data.unclaimedPoints",p:[7,3,187]}]}," ",{p:[13,2,311],t:7,e:"ui-section",f:[{t:4,f:[{p:[15,4,350],t:7,e:"ui-button",a:{action:"Eject"},f:["Eject ID"]}," You have ",{t:2,r:"data.claimedPoints",p:[18,13,421]}," mining points collected."],n:50,r:"data.hasID",p:[14,3,327]},{t:4,n:51,f:[{p:[20,4,485],t:7,e:"ui-button",a:{action:"Insert"},f:["Insert ID"]}],r:"data.hasID"}]}]}," ",{p:[26,1,588],t:7,e:"ui-display",f:[{t:4,f:[{p:[28,3,627],t:7,e:"ui-section",f:[{p:[29,4,644],t:7,e:"ui-button",a:{action:"diskEject",icon:"eject"},f:["Eject Disk"]}]}," ",{t:4,f:[{p:[34,4,772],t:7,e:"ui-section",a:{"class":"candystripe"},f:[{p:[35,5,808],t:7,e:"ui-button",a:{action:"diskUpload",state:[{t:2,x:{r:["canupload"],s:'(_0)?null:"disabled"'},p:[35,42,845]}],icon:"upload",align:"right",params:['{ "design" : "',{t:2,r:"index",p:[35,129,932]},'" }']},f:["Upload"]}," File ",{t:2,r:"index",p:[38,10,988]},": ",{t:2,r:"name",p:[38,21,999]}]}],n:52,r:"data.diskDesigns",p:[33,3,741]}],n:50,r:"data.hasDisk",p:[27,2,603]},{t:4,n:51,f:[{p:[42,3,1053],t:7,e:"ui-section",f:[{p:[43,4,1070],t:7,e:"ui-button",a:{action:"diskInsert",icon:"floppy-o"},f:["Insert Disk"]}]}],r:"data.hasDisk"}]}," ",{p:[49,1,1195],t:7,e:"div",a:{"class":"display tabular"},f:[{p:[50,2,1227],t:7,e:"section",a:{"class":"candystripe"},f:[{p:[51,4,1261],t:7,e:"section",a:{"class":"cell"},f:["Mineral"]}," ",{p:[54,4,1316],t:7,e:"section",a:{"class":"cell"},f:["Sheets"]}," ",{p:[57,4,1370],t:7,e:"section",a:{"class":"cell"},f:[]}," ",{p:[59,4,1412],t:7,e:"section",a:{"class":"cell"},f:[{p:[60,5,1440],t:7,e:"ui-button",a:{"class":"center mineral",grid:0,action:"Release",params:'{"id" : "all"}'},f:["Release All"]}]}," ",{p:[64,4,1576],t:7,e:"section",a:{"class":"cell"},f:["Ore Value"]}]}," ",{t:4,f:[{p:[69,3,1673],t:7,e:"section",a:{"class":"candystripe"},f:[{p:[70,4,1707],t:7,e:"section",a:{"class":"cell"},f:[{t:2,r:"name",p:[71,5,1735]}]}," ",{p:[73,4,1763],t:7,e:"section",a:{"class":"cell",align:"right"},f:[{t:2,r:"amount",p:[74,5,1805]}]}," ",{p:[76,4,1835],t:7,e:"section",a:{"class":"cell"},f:[{p:[77,5,1863],t:7,e:"input",a:{value:[{t:2,r:"sheets",p:[77,18,1876]}],placeholder:"###","class":"number"}}]}," ",{p:[79,4,1941],t:7,e:"section",a:{"class":"cell",align:"right"},f:[{p:[80,5,1983],t:7,e:"ui-button",a:{"class":"center",grid:0,action:"Release",state:[{t:2,x:{r:["amount"],s:'(_0>=1)?null:"disabled"'},p:[80,59,2037]}],params:['{ "id" : ',{t:2,r:"id",p:[80,114,2092]},', "sheets" : ',{t:2,r:"sheets",p:[80,133,2111]}," }"]},f:["Release"]}]}," ",{p:[84,4,2178],t:7,e:"section",a:{"class":"cell",align:"right"},f:[{t:2,r:"value",p:[85,5,2220]}]}]}],n:52,r:"data.materials",p:[68,2,1645]}," ",{t:4,f:[{p:[90,3,2298],t:7,e:"section",a:{"class":"candystripe"},f:[{p:[91,4,2332],t:7,e:"section",a:{"class":"cell"},f:[{t:2,r:"name",p:[92,5,2360]}]}," ",{p:[94,4,2388],t:7,e:"section",a:{"class":"cell",align:"right"},f:[{t:2,r:"amount",p:[95,5,2430]}]}," ",{p:[97,4,2460],t:7,e:"section",a:{"class":"cell"},f:[{p:[98,5,2488],t:7,e:"input",a:{value:[{t:2,r:"sheets",p:[98,18,2501]}],placeholder:"###","class":"number"}}]}," ",{p:[100,4,2566],t:7,e:"section",a:{"class":"cell",align:"right"},f:[{p:[101,5,2608],t:7,e:"ui-button",a:{"class":"center",grid:0,action:"Smelt",state:[{t:2,x:{r:["amount"],s:'(_0>=1)?null:"disabled"'},p:[101,57,2660]}],params:['{ "id" : ',{t:2,r:"id",p:[101,113,2716]},', "sheets" : ',{t:2,r:"sheets",p:[101,132,2735]}," }"]},f:["Smelt"]}]}," ",{p:[105,4,2799],t:7,e:"section", a:{"class":"cell",align:"right"},f:[{p:[106,5,2841],t:7,e:"ui-button",a:{"class":"center",grid:0,action:"SmeltAll",state:[{t:2,x:{r:["amount"],s:'(_0>=1)?null:"disabled"'},p:[106,60,2896]}],params:['{ "id" : ',{t:2,r:"id",p:[106,116,2952]}," }"]},f:["Smelt All"]}]}]}],n:52,r:"data.alloys",p:[89,2,2273]}]}]},e.exports=a.extend(r.exports)},{205:205}],288:[function(t,e,n){var a=t(205),r={exports:{}};r.exports.template={v:3,t:[{t:4,f:[{p:{button:[{p:[4,4,87],t:7,e:"ui-button",a:{icon:"remove",state:[{t:2,x:{r:["data.has_beaker"],s:'_0?null:"disabled"'},p:[4,36,119]}],action:"empty_eject_beaker"},f:["Empty and eject"]}," ",{p:[7,4,231],t:7,e:"ui-button",a:{icon:"trash",state:[{t:2,x:{r:["data.has_beaker"],s:'_0?null:"disabled"'},p:[7,35,262]}],action:"empty_beaker"},f:["Empty"]}," ",{p:[10,4,358],t:7,e:"ui-button",a:{icon:"eject",state:[{t:2,x:{r:["data.has_beaker"],s:'_0?null:"disabled"'},p:[10,35,389]}],action:"eject_beaker"},f:["Eject"]}]},t:7,e:"ui-display",a:{title:"Beaker",button:0},f:[" ",{t:4,f:[{p:[15,4,528],t:7,e:"ui-section",f:[{t:4,f:[{p:[17,6,578],t:7,e:"span",a:{"class":"bad"},f:["The beaker is empty!"]}],n:50,r:"data.beaker_empty",p:[16,5,546]},{t:4,n:51,f:[{p:[19,6,644],t:7,e:"ui-subdisplay",a:{title:"Blood"},f:[{t:4,f:[{p:[21,8,712],t:7,e:"ui-section",a:{label:"Blood DNA"},f:[{t:2,r:"data.blood.dna",p:[21,38,742]}]}," ",{p:[22,8,782],t:7,e:"ui-section",a:{label:"Blood type"},f:[{t:2,r:"data.blood.type",p:[22,39,813]}]}],n:50,r:"data.has_blood",p:[20,7,681]},{t:4,n:51,f:[{p:[24,8,870],t:7,e:"ui-section",f:[{p:[25,9,892],t:7,e:"span",a:{"class":"average"},f:["No blood sample detected."]}]}],r:"data.has_blood"}]}],r:"data.beaker_empty"}]}],n:50,r:"data.has_beaker",p:[14,3,500]},{t:4,n:51,f:[{p:[32,4,1054],t:7,e:"ui-section",f:[{p:[33,5,1072],t:7,e:"span",a:{"class":"bad"},f:["No beaker loaded."]}]}],r:"data.has_beaker"}]}," ",{t:4,f:[{p:[38,3,1188],t:7,e:"ui-display",a:{title:"Diseases"},f:[{t:4,f:[{p:{button:[{t:4,f:[{p:[43,8,1343],t:7,e:"ui-button",a:{icon:"pencil",action:"rename_disease",state:[{t:2,x:{r:["can_rename"],s:'_0?"":"disabled"'},p:[43,64,1399]}],params:['{"index": ',{t:2,r:"index",p:[43,116,1451]},"}"]},f:["Name advanced disease"]}],n:50,r:"is_adv",p:[42,7,1320]}," ",{p:[47,7,1538],t:7,e:"ui-button",a:{icon:"flask",action:"create_culture_bottle",state:[{t:2,x:{r:["data.is_ready"],s:'_0?"":"disabled"'},p:[47,69,1600]}],params:['{"index": ',{t:2,r:"index",p:[47,124,1655]},"}"]},f:["Create virus culture bottle"]}]},t:7,e:"ui-display",a:{title:[{t:2,r:"name",p:[40,24,1269]}],button:0},f:[" ",{p:[51,6,1749],t:7,e:"ui-section",a:{label:"Disease agent"},f:[{t:2,r:"agent",p:[51,40,1783]}]}," ",{p:[52,6,1812],t:7,e:"ui-section",a:{label:"Description"},f:[{t:2,r:"description",p:[52,38,1844]}]}," ",{p:[53,6,1879],t:7,e:"ui-section",a:{label:"Spread"},f:[{t:2,r:"spread",p:[53,33,1906]}]}," ",{p:[54,6,1936],t:7,e:"ui-section",a:{label:"Possible cure"},f:[{t:2,r:"cure",p:[54,40,1970]}]}," ",{t:4,f:[{p:[56,7,2021],t:7,e:"ui-section",a:{label:"Symptoms"},f:[{t:4,f:[{p:[58,9,2087],t:7,e:"ui-button",a:{action:"symptom_details",state:"",params:['{"picked_symptom": ',{t:2,r:"sym_index",p:[58,81,2159]},', "index": ',{t:2,r:"index",p:[58,105,2183]},"}"]},f:[{t:2,r:"name",p:[59,10,2206]}," "]},{p:[60,21,2236],t:7,e:"br"}],n:52,r:"symptoms",p:[57,8,2059]}]}," ",{p:[63,7,2289],t:7,e:"ui-section",a:{label:"Resistance"},f:[{t:2,r:"resistance",p:[63,38,2320]}]}," ",{p:[64,7,2355],t:7,e:"ui-section",a:{label:"Stealth"},f:[{t:2,r:"stealth",p:[64,35,2383]}]}," ",{p:[65,7,2415],t:7,e:"ui-section",a:{label:"Stage speed"},f:[{t:2,r:"stage_speed",p:[65,39,2447]}]}," ",{p:[66,7,2483],t:7,e:"ui-section",a:{label:"Transmittability"},f:[{t:2,r:"transmission",p:[66,44,2520]}]}],n:50,r:"is_adv",p:[55,6,1999]}]}],n:52,r:"data.viruses",p:[39,4,1222]},{t:4,n:51,f:[{p:[70,5,2601],t:7,e:"ui-section",f:[{p:[71,6,2620],t:7,e:"span",a:{"class":"average"},f:["No detectable virus in the blood sample."]}]}],r:"data.viruses"}]}," ",{p:[75,3,2743],t:7,e:"ui-display",a:{title:"Antibodies"},f:[{t:4,f:[{p:[77,5,2811],t:7,e:"ui-section",a:{label:[{t:2,r:"name",p:[77,24,2830]}]},f:[{p:[78,7,2848],t:7,e:"ui-button",a:{icon:"eyedropper",state:[{t:2,x:{r:["data.is_ready"],s:'_0?"":"disabled"'},p:[78,43,2884]}],action:"create_vaccine_bottle",params:['{"index": ',{t:2,r:"id",p:[78,129,2970]},"}"]},f:["Create vaccine bottle"]}]}],n:52,r:"data.resistances",p:[76,4,2779]},{t:4,n:51,f:[{p:[83,5,3067],t:7,e:"ui-section",f:[{p:[84,6,3086],t:7,e:"span",a:{"class":"average"},f:["No antibodies detected in the blood sample."]}]}],r:"data.resistances"}]}],n:50,r:"data.has_blood",p:[37,2,1162]}],n:50,x:{r:["data.mode"],s:"_0==1"},p:[1,1,0]},{t:4,n:51,f:[{p:[90,2,3231],t:7,e:"ui-button",a:{icon:"undo",state:"",action:"back"},f:["Back"]}," ",{t:4,f:[{p:[94,4,3330],t:7,e:"ui-display",a:{title:[{t:2,r:"name",p:[94,23,3349]}]},f:[{p:[95,4,3364],t:7,e:"ui-section",f:[{t:2,r:"desc",p:[96,5,3382]}," ",{t:4,f:[{p:[98,5,3417],t:7,e:"br"}," ",{p:[99,5,3428],t:7,e:"b",f:["This symptom has been neutered, and has no effect. It will still affect the virus' statistics."]}],n:50,r:"neutered",p:[97,4,3395]}]}," ",{p:[102,4,3564],t:7,e:"ui-section",f:[{p:[103,5,3582],t:7,e:"ui-section",a:{label:"Level"},f:[{t:2,r:"level",p:[103,31,3608]}]}," ",{p:[104,5,3636],t:7,e:"ui-section",a:{label:"Resistance"},f:[{t:2,r:"resistance",p:[104,36,3667]}]}," ",{p:[105,5,3700],t:7,e:"ui-section",a:{label:"Stealth"},f:[{t:2,r:"stealth",p:[105,33,3728]}]}," ",{p:[106,5,3758],t:7,e:"ui-section",a:{label:"Stage speed"},f:[{t:2,r:"stage_speed",p:[106,37,3790]}]}," ",{p:[107,5,3824],t:7,e:"ui-section",a:{label:"Transmittability"},f:[{t:2,r:"transmission",p:[107,42,3861]}]}]}," ",{p:[109,4,3913],t:7,e:"ui-subdisplay",a:{title:"Effect Thresholds"},f:[{p:[110,5,3960],t:7,e:"ui-section",f:[{t:3,r:"threshold_desc",p:[110,17,3972]}]}]}]}],n:53,r:"data.symptom",p:[93,2,3303]}],x:{r:["data.mode"],s:"_0==1"}}]},e.exports=a.extend(r.exports)},{205:205}],289:[function(t,e,n){var a=t(205),r={exports:{}};!function(e){"use strict";var n=t(327);e.exports={data:{filter:"",tooltiptext:function(t,e,n){var a="";return t&&(a+="REQUIREMENTS: "+t+" "),e&&(a+="CATALYSTS: "+e+" "),n&&(a+="TOOLS: "+n),a}},oninit:function(){var t=this;this.on({hover:function(t){this.set("hovered",t.context.params)},unhover:function(t){this.set("hovered")}}),this.observe("filter",function(e,a,r){var i=null;i=t.get("data.display_compact")?t.findAll(".section"):t.findAll(".display:not(:first-child)"),(0,n.filterMulti)(i,t.get("filter").toLowerCase())},{init:!1})}}}(r),r.exports.template={v:3,t:[" ",{p:[48,1,1342],t:7,e:"ui-display",a:{title:[{t:2,r:"data.category",p:[48,20,1361]},{t:4,f:[" : ",{t:2,r:"data.subcategory",p:[48,64,1405]}],n:50,r:"data.subcategory",p:[48,37,1378]}]},f:[{t:4,f:[{p:[50,3,1459],t:7,e:"ui-section",f:["Crafting... ",{p:[51,16,1488],t:7,e:"i",a:{"class":"fa-spin fa fa-spinner"}}]}],n:50,r:"data.busy",p:[49,2,1438]},{t:4,n:51,f:[{p:[54,3,1557],t:7,e:"ui-section",f:[{p:[55,4,1574],t:7,e:"table",a:{style:"width:100%"},f:[{p:[56,5,1606],t:7,e:"tr",f:[{p:[57,6,1617],t:7,e:"td",a:{style:"width:150px!important"},f:[{p:[58,7,1659],t:7,e:"ui-button",a:{icon:"arrow-left",action:"backwardCat"},f:[{t:2,r:"data.prev_cat",p:[59,8,1718]}]}]}," ",{p:[62,6,1774],t:7,e:"td",a:{style:"width:150px!important"},f:[{p:[63,7,1816],t:7,e:"ui-button",a:{icon:"arrow-right",action:"forwardCat"},f:[{t:2,r:"data.next_cat",p:[64,7,1874]}]}]}," ",{p:[67,6,1930],t:7,e:"td",a:{style:"float:right!important"},f:[{t:4,f:[{p:[69,7,2014],t:7,e:"ui-button",a:{icon:"lock",action:"toggle_recipes"},f:["Showing Craftable Recipes"]}],n:50,r:"data.display_craftable_only",p:[68,6,1971]},{t:4,n:51,f:[{p:[73,7,2138],t:7,e:"ui-button",a:{icon:"unlock",action:"toggle_recipes"},f:["Showing All Recipes"]}],r:"data.display_craftable_only"}]}," ",{p:[78,6,2268],t:7,e:"td",a:{style:"float:right!important"},f:[{p:[79,7,2310],t:7,e:"ui-button",a:{icon:[{t:2,x:{r:["data.display_compact"],s:'_0?"check-square-o":"square-o"'},p:[79,24,2327]}],action:"toggle_compact"},f:["Compact"]}]}]}," ",{p:[84,5,2474],t:7,e:"tr",f:[{t:4,f:[{p:[86,6,2515],t:7,e:"td",a:{style:"width:150px!important"},f:[{p:[87,7,2557],t:7,e:"ui-button",a:{icon:"arrow-left",action:"backwardSubCat"},f:[{t:2,r:"data.prev_subcat",p:[88,8,2619]}]}]}," ",{p:[91,6,2678],t:7,e:"td",a:{style:"width:150px!important"},f:[{p:[92,7,2720],t:7,e:"ui-button",a:{icon:"arrow-right",action:"forwardSubCat"},f:[{t:2,r:"data.next_subcat",p:[93,8,2782]}]}]}],n:50,r:"data.subcategory",p:[85,5,2484]}]}]}," ",{t:4,f:[{t:4,f:[" ",{p:[101,6,2992],t:7,e:"ui-input",a:{value:[{t:2,r:"filter",p:[101,23,3009]}],placeholder:"Filter.."}}],n:51,r:"data.display_compact",p:[100,5,2902]}],n:50,r:"config.fancy",p:[99,4,2876]}]}," ",{t:4,f:[{p:[106,5,3144],t:7,e:"ui-display",f:[{t:4,f:[{p:[108,6,3193],t:7,e:"ui-section",a:{label:[{t:2,r:"name",p:[108,25,3212]}]},f:[{p:[109,7,3230],t:7,e:"ui-button",a:{tooltip:[{t:2,x:{r:["tooltiptext","req_text","catalyst_text","tool_text"],s:"_0(_1,_2,_3)"},p:[109,27,3250]}],"tooltip-side":"right",action:"make",params:['{"recipe": "',{t:2,r:"ref",p:[109,135,3358]},'"}'],icon:"gears"},v:{hover:"hover",unhover:"unhover"},f:["Craft"]}]}],n:52,r:"data.can_craft",p:[107,5,3162]}," ",{t:4,f:[{t:4,f:[{p:[116,7,3567],t:7,e:"ui-section",a:{label:[{t:2,r:"name",p:[116,26,3586]}]},f:[{p:[117,8,3605],t:7,e:"ui-button",a:{tooltip:[{t:2,x:{r:["tooltiptext","req_text","catalyst_text","tool_text"],s:"_0(_1,_2,_3)"},p:[117,28,3625]}],"tooltip-side":"right",state:"disabled",icon:"gears"},v:{hover:"hover",unhover:"unhover"},f:["Craft"]}]}],n:52,r:"data.cant_craft",p:[115,6,3534]}],n:51,r:"data.display_craftable_only",p:[114,5,3495]}]}],n:50,r:"data.display_compact",p:[105,4,3110]},{t:4,n:51,f:[{t:4,f:[{p:[126,6,3947],t:7,e:"ui-display",a:{title:[{t:2,r:"name",p:[126,25,3966]}]},f:[{t:4,f:[{p:[128,8,4009],t:7,e:"ui-section",a:{label:"Requirements"},f:[{t:2,r:"req_text",p:[129,9,4052]}]}],n:50,r:"req_text",p:[127,7,3984]}," ",{t:4,f:[{p:[133,8,4139],t:7,e:"ui-section",a:{label:"Catalysts"},f:[{t:2,r:"catalyst_text",p:[134,9,4179]}]}],n:50,r:"catalyst_text",p:[132,7,4109]}," ",{t:4,f:[{p:[138,8,4267],t:7,e:"ui-section",a:{label:"Tools"},f:[{t:2,r:"tool_text",p:[139,9,4303]}]}],n:50,r:"tool_text",p:[137,7,4241]}," ",{p:[142,7,4361],t:7,e:"ui-section",f:[{p:[143,8,4382],t:7,e:"ui-button",a:{icon:"gears",action:"make",params:['{"recipe": "',{t:2,r:"ref",p:[143,66,4440]},'"}']},f:["Craft"]}]}]}],n:52,r:"data.can_craft",p:[125,5,3916]}," ",{t:4,f:[{t:4,f:[{p:[151,7,4621],t:7,e:"ui-display",a:{title:[{t:2,r:"name",p:[151,26,4640]}]},f:[{t:4,f:[{p:[153,9,4685],t:7,e:"ui-section",a:{label:"Requirements"},f:[{t:2,r:"req_text",p:[154,10,4729]}]}],n:50,r:"req_text",p:[152,8,4659]}," ",{t:4,f:[{p:[158,9,4820],t:7,e:"ui-section",a:{label:"Catalysts"},f:[{t:2,r:"catalyst_text",p:[159,10,4861]}]}],n:50,r:"catalyst_text",p:[157,8,4789]}," ",{t:4,f:[{p:[163,9,4953],t:7,e:"ui-section",a:{label:"Tools"},f:[{t:2,r:"tool_text",p:[164,10,4990]}]}],n:50,r:"tool_text",p:[162,8,4926]}]}],n:52,r:"data.cant_craft",p:[150,6,4588]}],n:51,r:"data.display_craftable_only",p:[149,5,4549]}],r:"data.display_compact"}],r:"data.busy"}]}]},e.exports=a.extend(r.exports)},{205:205,327:327}],290:[function(t,e,n){var a=t(205),r={exports:{}};r.exports.template={v:3,t:[{p:[1,1,0],t:7,e:"ui-notice",f:[{p:[2,3,15],t:7,e:"span",f:["The regulator ",{t:2,x:{r:["data.holding"],s:'_0?"is":"is not"'},p:[2,23,35]}," connected to a tank."]}]}," ",{p:[4,1,113],t:7,e:"ui-display",a:{title:"Status",button:0},f:[{p:[5,3,151],t:7,e:"ui-section",a:{label:"Pressure"},f:[{p:[6,5,186],t:7,e:"span",f:[{t:2,x:{r:["adata.pressure"],s:"Math.round(_0)"},p:[6,11,192]}," kPa"]}]}," ",{p:[8,3,254],t:7,e:"ui-section",a:{label:"Port"},f:[{p:[9,5,285],t:7,e:"span",a:{"class":[{t:2,x:{r:["data.connected"],s:'_0?"good":"average"'},p:[9,18,298]}]},f:[{t:2,x:{r:["data.connected"],s:'_0?"Connected":"Not Connected"'},p:[9,59,339]}]}]}]}," ",{p:[12,1,430],t:7,e:"ui-display",a:{title:"Pump"},f:[{p:[13,3,459],t:7,e:"ui-section",a:{label:"Power"},f:[{p:[14,5,491],t:7,e:"ui-button",a:{icon:[{t:2,x:{r:["data.on"],s:'_0?"power-off":"close"'},p:[14,22,508]}],style:[{t:2,x:{r:["data.on"],s:'_0?"selected":"null"'},p:[15,14,559]}],action:"power"},f:[{t:2,x:{r:["data.on"],s:'_0?"On":"Off"'},p:[16,22,616]}]}]}," ",{p:[18,3,675],t:7,e:"ui-section",a:{label:"Direction"},f:[{p:[19,5,711],t:7,e:"ui-button",a:{icon:[{t:2,x:{r:["data.direction"],s:'_0=="out"?"sign-out":"sign-in"'},p:[19,22,728]}],action:"direction"},f:[{t:2,x:{r:["data.direction"],s:'_0=="out"?"Out":"In"'},p:[20,26,808]}]}]}," ",{p:[22,3,883],t:7,e:"ui-section",a:{label:"Target Pressure"},f:[{p:[23,5,925],t:7,e:"ui-bar",a:{min:[{t:2,r:"data.min_pressure",p:[23,18,938]}],max:[{t:2,r:"data.max_pressure",p:[23,46,966]}],value:[{t:2,r:"data.target_pressure",p:[24,14,1003]}]},f:[{t:2,x:{r:["adata.target_pressure"],s:"Math.round(_0)"},p:[24,40,1029]}," kPa"]}]}," ",{p:[26,3,1100],t:7,e:"ui-section",a:{label:"Pressure Regulator"},f:[{p:[27,5,1145],t:7,e:"ui-button",a:{icon:"refresh",state:[{t:2,x:{r:["data.target_pressure","data.default_pressure"],s:'_0!=_1?null:"disabled"'},p:[27,38,1178]}],action:"pressure",params:'{"pressure": "reset"}'},f:["Reset"]}," ",{p:[29,5,1328],t:7,e:"ui-button",a:{icon:"minus",state:[{t:2,x:{r:["data.target_pressure","data.min_pressure"],s:'_0>_1?null:"disabled"'},p:[29,36,1359]}],action:"pressure",params:'{"pressure": "min"}'},f:["Min"]}," ",{p:[31,5,1500],t:7,e:"ui-button",a:{icon:"pencil",action:"pressure",params:'{"pressure": "input"}'},f:["Set"]}," ",{p:[32,5,1595],t:7,e:"ui-button",a:{icon:"plus",state:[{t:2,x:{r:["data.target_pressure","data.max_pressure"],s:'_0<_1?null:"disabled"'},p:[32,35,1625]}],action:"pressure",params:'{"pressure": "max"}'},f:["Max"]}]}]}," ",{p:{button:[{t:4,f:[{p:[39,7,1891],t:7,e:"ui-button",a:{icon:"eject",style:[{t:2,x:{r:["data.on"],s:'_0?"danger":null'},p:[39,38,1922]}],action:"eject"},f:["Eject"]}],n:50,r:"data.holding",p:[38,5,1863]}]},t:7,e:"ui-display",a:{title:"Holding Tank",button:0},f:[" ",{t:4,f:[{p:[43,3,2042],t:7,e:"ui-section",a:{label:"Label"},f:[{t:2,r:"data.holding.name",p:[44,4,2073]}]}," ",{p:[46,3,2115],t:7,e:"ui-section",a:{label:"Pressure"},f:[{t:2,x:{r:["adata.holding.pressure"],s:"Math.round(_0)"},p:[47,4,2149]}," kPa"]}],n:50,r:"data.holding",p:[42,3,2018]},{t:4,n:51,f:[{p:[50,3,2223],t:7,e:"ui-section",f:[{p:[51,4,2240],t:7,e:"span",a:{"class":"average"},f:["No Holding Tank"]}]}],r:"data.holding"}]}]},e.exports=a.extend(r.exports)},{205:205}],291:[function(t,e,n){var a=t(205),r={exports:{}};r.exports.template={v:3,t:[" ",{p:[3,1,69],t:7,e:"ui-notice",f:[{p:[4,3,84],t:7,e:"span",f:["The regulator ",{t:2,x:{r:["data.holding"],s:'_0?"is":"is not"'},p:[4,23,104]}," connected to a tank."]}]}," ",{p:[6,1,182],t:7,e:"ui-display",a:{title:"Status",button:0},f:[{p:[7,3,220],t:7,e:"ui-section",a:{label:"Pressure"},f:[{p:[8,5,255],t:7,e:"span",f:[{t:2,x:{r:["adata.pressure"],s:"Math.round(_0)"},p:[8,11,261]}," kPa"]}]}," ",{p:[10,3,323],t:7,e:"ui-section",a:{label:"Port"},f:[{p:[11,5,354],t:7,e:"span",a:{"class":[{t:2,x:{r:["data.connected"],s:'_0?"good":"average"'},p:[11,18,367]}]},f:[{t:2,x:{r:["data.connected"],s:'_0?"Connected":"Not Connected"'},p:[11,59,408]}]}]}]}," ",{p:[14,1,499],t:7,e:"ui-display",a:{title:"Filter"},f:[{p:[15,3,530],t:7,e:"ui-section",a:{label:"Power"},f:[{p:[16,5,562],t:7,e:"ui-button",a:{icon:[{t:2,x:{r:["data.on"],s:'_0?"power-off":"close"'},p:[16,22,579]}],style:[{t:2,x:{r:["data.on"],s:'_0?"selected":"null"'},p:[17,14,630]}],action:"power"},f:[{t:2,x:{r:["data.on"],s:'_0?"On":"Off"'},p:[18,22,687]}]}]}]}," ",{p:{button:[{t:4,f:[{p:[24,7,856],t:7,e:"ui-button",a:{icon:"eject",style:[{t:2,x:{r:["data.on"],s:'_0?"danger":null'},p:[24,38,887]}],action:"eject"},f:["Eject"]}],n:50,r:"data.holding",p:[23,5,828]}]},t:7,e:"ui-display",a:{title:"Holding Tank",button:0},f:[" ",{t:4,f:[{p:[28,3,1007],t:7,e:"ui-section",a:{label:"Label"},f:[{t:2,r:"data.holding.name",p:[29,4,1038]}]}," ",{p:[31,3,1080],t:7,e:"ui-section",a:{label:"Pressure"},f:[{t:2,x:{r:["adata.holding.pressure"],s:"Math.round(_0)"},p:[32,4,1114]}," kPa"]}],n:50,r:"data.holding",p:[27,3,983]},{t:4,n:51,f:[{p:[35,3,1188],t:7,e:"ui-section",f:[{p:[36,4,1205],t:7,e:"span",a:{"class":"average"},f:["No Holding Tank"]}]}],r:"data.holding"}]}," ",{p:[40,1,1293],t:7,e:"ui-display",a:{title:"Filters"},f:[{t:4,f:[{p:[42,5,1345],t:7,e:"filters"}],n:53,r:"data",p:[41,3,1325]}]}]},r.exports.components=r.exports.components||{};var i={filters:t(299)};for(var o in i)i.hasOwnProperty(o)&&(r.exports.components[o]=i[o]);e.exports=a.extend(r.exports)},{205:205,299:299}],292:[function(t,e,n){var a=t(205),r={exports:{}};!function(t){"use strict";t.exports={data:{chargingState:function(t){switch(t){case 2:return"good";case 1:return"average";default:return"bad"}},chargingMode:function(t){return 2==t?"Full":1==t?"Charging":"Draining"},channelState:function(t){return t>=2?"good":"bad"},channelPower:function(t){return t>=2?"On":"Off"},channelMode:function(t){return 1==t||3==t?"Auto":"Manual"}},computed:{graphData:function(){var t=this.get("data.history");return Object.keys(t).map(function(e){return t[e].map(function(t,e){return{x:e,y:t}})})}}}}(r),r.exports.template={v:3,t:[" ",{p:[42,1,1035],t:7,e:"ui-display",a:{title:"Network"},f:[{t:4,f:[{p:[44,5,1093],t:7,e:"ui-linegraph",a:{points:[{t:2,r:"graphData",p:[44,27,1115]}],height:"500",legend:'["Available", "Load"]',colors:'["rgb(0, 102, 0)", "rgb(153, 0, 0)"]',xunit:"seconds ago",xfactor:[{t:2,r:"data.interval",p:[46,38,1267]}],yunit:"W",yfactor:"1",xinc:[{t:2,x:{r:["data.stored"],s:"_0/10"},p:[47,15,1323]}],yinc:"9"}}],n:50,r:"config.fancy",p:[43,3,1067]},{t:4,n:51,f:[{p:[49,5,1373],t:7,e:"ui-section",a:{label:"Available"},f:[{p:[50,7,1411],t:7,e:"span",f:[{t:2,r:"data.supply",p:[50,13,1417]}]}]}," ",{p:[52,5,1464],t:7,e:"ui-section",a:{label:"Load"},f:[{p:[53,9,1499],t:7,e:"span",f:[{t:2,r:"data.demand",p:[53,15,1505]}]}]}],r:"config.fancy"}]}," ",{p:[57,1,1574],t:7,e:"ui-display",a:{title:"Areas"},f:[{p:[58,3,1604],t:7,e:"ui-section",a:{nowrap:0},f:[{p:[59,5,1629],t:7,e:"div",a:{"class":"content"},f:["Area"]}," ",{p:[60,5,1666],t:7,e:"div",a:{"class":"content"},f:["Charge"]}," ",{p:[61,5,1705],t:7,e:"div",a:{"class":"content"},f:["Load"]}," ",{p:[62,5,1742],t:7,e:"div",a:{"class":"content"},f:["Status"]}," ",{p:[63,5,1781],t:7,e:"div",a:{"class":"content"},f:["Equipment"]}," ",{p:[64,5,1823],t:7,e:"div",a:{"class":"content"},f:["Lighting"]}," ",{p:[65,5,1864],t:7,e:"div",a:{"class":"content"},f:["Environment"]}]}," ",{t:4,f:[{p:[68,5,1949],t:7,e:"ui-section",a:{label:[{t:2,r:"name",p:[68,24,1968]}],nowrap:0},f:[{p:[69,7,1993],t:7,e:"div",a:{"class":"content"},f:[{t:2,x:{r:["@index","adata.areas"],s:"Math.round(_1[_0].charge)"},p:[69,28,2014]}," %"]}," ",{p:[70,7,2072],t:7,e:"div",a:{"class":"content"},f:[{t:2,rx:{r:"adata.areas",m:[{t:30,n:"@index"},"load"]},p:[70,28,2093]}]}," ",{p:[71,7,2135],t:7,e:"div",a:{"class":"content"},f:[{p:[71,28,2156],t:7,e:"span",a:{"class":[{t:2,x:{r:["chargingState","charging"],s:"_0(_1)"},p:[71,41,2169]}]},f:[{t:2,x:{r:["chargingMode","charging"],s:"_0(_1)"},p:[71,70,2198]}]}]}," ",{p:[72,7,2245],t:7,e:"div",a:{"class":"content"},f:[{p:[72,28,2266],t:7,e:"span",a:{"class":[{t:2,x:{r:["channelState","eqp"],s:"_0(_1)"},p:[72,41,2279]}]},f:[{t:2,x:{r:["channelPower","eqp"],s:"_0(_1)"},p:[72,64,2302]}," [",{p:[72,87,2325],t:7,e:"span",f:[{t:2,x:{r:["channelMode","eqp"],s:"_0(_1)"},p:[72,93,2331]}]},"]"]}]}," ",{p:[73,7,2380],t:7,e:"div",a:{"class":"content"},f:[{p:[73,28,2401],t:7,e:"span",a:{"class":[{t:2,x:{r:["channelState","lgt"],s:"_0(_1)"},p:[73,41,2414]}]},f:[{t:2,x:{r:["channelPower","lgt"],s:"_0(_1)"},p:[73,64,2437]}," [",{p:[73,87,2460],t:7,e:"span",f:[{t:2,x:{r:["channelMode","lgt"],s:"_0(_1)"},p:[73,93,2466]}]},"]"]}]}," ",{p:[74,7,2515],t:7,e:"div",a:{"class":"content"},f:[{p:[74,28,2536],t:7,e:"span",a:{"class":[{t:2,x:{r:["channelState","env"],s:"_0(_1)"},p:[74,41,2549]}]},f:[{t:2,x:{r:["channelPower","env"],s:"_0(_1)"},p:[74,64,2572]}," [",{p:[74,87,2595],t:7,e:"span",f:[{t:2,x:{r:["channelMode","env"],s:"_0(_1)"},p:[74,93,2601]}]},"]"]}]}]}],n:52,r:"data.areas",p:[67,3,1923]}]}]},e.exports=a.extend(r.exports)},{205:205}],293:[function(t,e,n){var a=t(205),r={exports:{}};!function(t){"use strict";t.exports={computed:{readableFrequency:function(){return Math.round(this.get("adata.frequency"))/10}}}}(r),r.exports.template={v:3,t:[" ",{p:[11,1,177],t:7,e:"ui-display",a:{title:"Settings"},f:[{t:4,f:[{p:[13,5,236],t:7,e:"ui-section",a:{label:"Power"},f:[{p:[14,7,270],t:7,e:"ui-button",a:{icon:[{t:2,x:{r:["data.listening"],s:'_0?"power-off":"close"'},p:[14,24,287]}],style:[{t:2,x:{r:["data.listening"],s:'_0?"selected":null'},p:[14,75,338]}],action:"listen"},f:[{t:2,x:{r:["data.listening"],s:'_0?"On":"Off"'},p:[16,9,413]}]}]}],n:50,r:"data.headset",p:[12,3,210]},{t:4,n:51,f:[{p:[19,5,494],t:7,e:"ui-section",a:{label:"Microphone"},f:[{p:[20,7,533],t:7,e:"ui-button",a:{icon:[{t:2,x:{r:["data.broadcasting"],s:'_0?"power-off":"close"'},p:[20,24,550]}],style:[{t:2,x:{r:["data.broadcasting"],s:'_0?"selected":null'},p:[20,78,604]}],action:"broadcast"},f:[{t:2,x:{r:["data.broadcasting"],s:'_0?"Engaged":"Disengaged"'},p:[22,9,685]}]}]}," ",{p:[24,5,769],t:7,e:"ui-section",a:{label:"Speaker"},f:[{p:[25,7,805],t:7,e:"ui-button",a:{icon:[{t:2,x:{r:["data.listening"],s:'_0?"power-off":"close"'},p:[25,24,822]}],style:[{t:2,x:{r:["data.listening"],s:'_0?"selected":null'},p:[25,75,873]}],action:"listen"},f:[{t:2,x:{r:["data.listening"],s:'_0?"Engaged":"Disengaged"'},p:[27,9,948]}]}]}],r:"data.headset"}," ",{t:4,f:[{p:[31,5,1064],t:7,e:"ui-section",a:{label:"High Volume"},f:[{p:[32,7,1104],t:7,e:"ui-button",a:{icon:[{t:2,x:{r:["data.useCommand"],s:'_0?"power-off":"close"'},p:[32,24,1121]}],style:[{t:2,x:{r:["data.useCommand"],s:'_0?"selected":null'},p:[32,76,1173]}],action:"command"},f:[{t:2,x:{r:["data.useCommand"],s:'_0?"On":"Off"'},p:[34,9,1250]}]}]}],n:50,r:"data.command",p:[30,3,1038]}]}," ",{p:[38,1,1342],t:7,e:"ui-display",a:{title:"Channel"},f:[{p:[39,3,1374],t:7,e:"ui-section",a:{label:"Frequency"},f:[{t:4,f:[{p:[41,7,1439],t:7,e:"span",f:[{t:2,r:"readableFrequency",p:[41,13,1445]}]}],n:50,r:"data.freqlock",p:[40,5,1410]},{t:4,n:51,f:[{p:[43,7,1495],t:7,e:"ui-button",a:{icon:"fast-backward",state:[{t:2,x:{r:["data.frequency","data.minFrequency"],s:'_0==_1?"disabled":null'},p:[43,46,1534]}],action:"frequency",params:'{"adjust": -1}'}}," ",{p:[44,7,1646],t:7,e:"ui-button",a:{icon:"backward",state:[{t:2,x:{r:["data.frequency","data.minFrequency"],s:'_0==_1?"disabled":null'},p:[44,41,1680]}],action:"frequency",params:'{"adjust": -.2}'}}," ",{p:[45,7,1793],t:7,e:"ui-button",a:{icon:"pencil",action:"frequency",params:'{"tune": "input"}'},f:[{t:2,r:"readableFrequency",p:[45,78,1864]}]}," ",{p:[46,7,1905],t:7,e:"ui-button",a:{icon:"forward",state:[{t:2,x:{r:["data.frequency","data.maxFrequency"],s:'_0==_1?"disabled":null'},p:[46,40,1938]}],action:"frequency",params:'{"adjust": .2}'}}," ",{p:[47,7,2050],t:7,e:"ui-button",a:{icon:"fast-forward",state:[{t:2,x:{r:["data.frequency","data.maxFrequency"],s:'_0==_1?"disabled":null'},p:[47,45,2088]}],action:"frequency",params:'{"adjust": 1}'}}],r:"data.freqlock"}]}," ",{t:4,f:[{p:[51,5,2262],t:7,e:"ui-section",a:{label:"Subspace Transmission"},f:[{p:[52,7,2312],t:7,e:"ui-button",a:{icon:[{t:2,x:{r:["data.subspace"],s:'_0?"power-off":"close"'},p:[52,24,2329]}],style:[{t:2,x:{r:["data.subspace"],s:'_0?"selected":null'},p:[52,74,2379]}],action:"subspace"},f:[{t:2,x:{r:["data.subspace"],s:'_0?"Active":"Inactive"'},p:[53,29,2447]}]}]}],n:50,r:"data.subspaceSwitchable",p:[50,3,2225]}," ",{t:4,f:[{p:[57,5,2578],t:7,e:"ui-section",a:{label:"Channels"},f:[{t:4,f:[{p:[59,9,2656],t:7,e:"ui-button",a:{icon:[{t:2,x:{r:["."],s:'_0?"check-square-o":"square-o"'},p:[59,26,2673]}],style:[{t:2,x:{r:["."],s:'_0?"selected":null'},p:[60,18,2730]}],action:"channel",params:['{"channel": "',{t:2,r:"channel",p:[61,49,2806]},'"}']},f:[{t:2,r:"channel",p:[62,11,2833]}]},{p:[62,34,2856],t:7,e:"br"}],n:52,i:"channel",r:"data.channels",p:[58,7,2615]}]}],n:50,x:{r:["data.subspace","data.channels"],s:"_0&&_1"},p:[56,3,2534]}]}]},e.exports=a.extend(r.exports)},{205:205}],294:[function(t,e,n){var a=t(205),r={exports:{}};r.exports.template={v:3,t:[{t:4,f:[{p:[2,1,25],t:7,e:"ui-notice",f:[{p:[3,3,40],t:7,e:"span",f:["The grinder is currently processing and cannot be used."]}]}],n:50,r:"data.processing",p:[1,1,0]},{p:{button:[{p:[8,5,208],t:7,e:"ui-button",a:{icon:"eject",state:[{t:2,x:{r:["data.operating","data.contents"],s:'(_0==0)&&_1?null:"disabled"'},p:[8,36,239]}],action:"eject"},f:["Eject Contents"]}]},t:7,e:"ui-display",a:{title:"Processing Chamber",button:0},f:[" ",{p:[10,3,364],t:7,e:"ui-section",a:{label:"Grinding"},f:[{p:[11,5,399],t:7,e:"span",a:{"class":[{t:2,x:{r:["data.operating"],s:'_0?"average":"good"'},p:[11,18,412]}]},f:[{t:2,x:{r:["data.operating"],s:'_0?"Busy":"Ready"'},p:[11,59,453]}]}," ",{p:[12,2,500],t:7,e:"ui-button",a:{icon:"refresh",state:[{t:2,x:{r:["data.operating","data.contents"],s:'(_0==0)&&_1?null:"disabled"'},p:[12,35,533]}],action:"grind"},f:["Activate"]}]}," ",{p:[14,3,653],t:7,e:"ui-section",a:{label:"Contents"},f:[{t:4,f:[{t:4,f:[{p:[17,9,755],t:7,e:"span",a:{"class":"highlight"},t0:"fade",f:["The ",{t:2,r:"name",p:[17,56,802]}]},{p:[17,71,817],t:7,e:"br"}],n:52,r:"adata.contentslist",p:[16,7,717]},{t:4,n:51,f:[{p:[19,9,848],t:7,e:"span",f:["No Contents"]}],r:"adata.contentslist"}],n:50,r:"data.contents",p:[15,5,688]},{t:4,n:51,f:[{p:[22,7,911],t:7,e:"span",f:["No Contents"]}],r:"data.contents"}]}]}," ",{p:{button:[{p:[28,5,1047],t:7,e:"ui-button",a:{icon:"eject",state:[{t:2,x:{r:["data.operating","data.isBeakerLoaded"],s:'(_0==0)&&_1?null:"disabled"'},p:[28,36,1078]}],action:"detach"},f:["Detach"]}]},t:7,e:"ui-display",a:{title:"Container",button:0},f:[" ",{p:[30,3,1202],t:7,e:"ui-section",a:{label:"Reagents"},f:[{t:4,f:[{p:[32,7,1272],t:7,e:"span",f:[{t:2,x:{r:["adata.beakerCurrentVolume"],s:"Math.round(_0)"},p:[32,13,1278]},"/",{t:2,r:"data.beakerMaxVolume",p:[32,55,1320]}," Units"]}," ",{p:[33,7,1365],t:7,e:"br"}," ",{t:4,f:[{p:[35,9,1418],t:7,e:"span",a:{"class":"highlight"},t0:"fade",f:[{t:2,x:{r:["volume"],s:"Math.fixed(_0,2)"},p:[35,52,1461]}," units of ",{t:2,r:"name",p:[35,87,1496]}]},{p:[35,102,1511],t:7,e:"br"}],n:52,r:"adata.beakerContents",p:[34,7,1378]},{t:4,n:51,f:[{p:[37,9,1542],t:7,e:"span",a:{"class":"bad"},f:["Container Empty"]}],r:"adata.beakerContents"}],n:50,r:"data.isBeakerLoaded",p:[31,5,1237]},{t:4,n:51,f:[{p:[40,7,1621],t:7,e:"span",a:{"class":"average"},f:["No Container"]}],r:"data.isBeakerLoaded"}]}]}]},e.exports=a.extend(r.exports)},{205:205}],295:[function(t,e,n){var a=t(205),r={exports:{}};r.exports.template={v:3,t:[" "," ",{t:4,f:[{p:[5,2,123],t:7,e:"dirsel"}],n:50,x:{r:["data.mode"],s:"_0>=0"},p:[4,1,98]},{t:4,f:[{p:[8,2,187],t:7,e:"colorsel"}],n:50,x:{r:["data.mode"],s:"_0==-2||_0==0"},p:[7,1,143]},{p:[10,1,209],t:7,e:"ui-display",a:{title:"Utilities"},f:[{p:[11,2,242],t:7,e:"ui-section",f:[{p:[12,3,258],t:7,e:"ui-button",a:{icon:[{t:2,x:{r:["data.mode"],s:'_0>=0?"check-square-o":"square-o"'},p:[12,20,275]}],state:[{t:2,x:{r:["data.mode"],s:'_0>=0?"selected":null'},p:[12,79,334]}],action:"mode",params:['{"mode": ',{t:2,r:"data.screen",p:[13,35,409]},"}"]},f:["Lay Pipes"]}]}," ",{p:[15,2,467],t:7,e:"ui-section",f:[{p:[16,3,483],t:7,e:"ui-button",a:{icon:[{t:2,x:{r:["data.mode"],s:'_0==-1?"check-square-o":"square-o"'},p:[16,20,500]}],state:[{t:2,x:{r:["data.mode"],s:'_0==-1?"selected":null'},p:[16,80,560]}],action:"mode",params:'{"mode": -1}'},f:["Eat Pipes"]}]}," ",{p:[19,2,681],t:7,e:"ui-section",f:[{p:[20,3,697],t:7,e:"ui-button",a:{icon:[{t:2,x:{r:["data.mode"],s:'_0==-2?"check-square-o":"square-o"'},p:[20,20,714]}],state:[{t:2,x:{r:["data.mode"],s:'_0==-2?"selected":null'},p:[20,80,774]}],action:"mode",params:'{"mode": -2}'},f:["Paint Pipes"]}]}]}," ",{p:[24,1,911],t:7,e:"ui-display",a:{title:"Category"},f:[{p:[25,2,943],t:7,e:"ui-section",f:[{p:[26,3,959],t:7,e:"ui-button",a:{icon:[{t:2,x:{r:["data.screen"],s:'_0==0?"check-square-o":"square-o"'},p:[26,20,976]}],state:[{t:2,x:{r:["data.screen"],s:'_0==0?"selected":null'},p:[26,81,1037]}],action:"screen",params:'{"screen": 0}'},f:["Atmospherics"]}," ",{p:[28,3,1150],t:7,e:"ui-button",a:{icon:[{t:2,x:{r:["data.screen"],s:'_0==2?"check-square-o":"square-o"'},p:[28,20,1167]}],state:[{t:2,x:{r:["data.screen"],s:'_0==2?"selected":null'},p:[28,81,1228]}],action:"screen",params:'{"screen": 2}'},f:["Disposals"]}]}," ",{t:4,f:[{p:[32,3,1381],t:7,e:"ui-section",a:{label:"Piping Layer"},f:[{p:[33,4,1419],t:7,e:"ui-button",a:{state:[{t:2,x:{r:["data.piping_layer"],s:'_0==1?"selected":null'},p:[33,22,1437]}],action:"piping_layer",params:'{"piping_layer": 1}'},f:["1"]}," ",{p:[35,4,1559],t:7,e:"ui-button",a:{state:[{t:2,x:{r:["data.piping_layer"],s:'_0==2?"selected":null'},p:[35,22,1577]}],action:"piping_layer",params:'{"piping_layer": 2}'},f:["2"]}," ",{p:[37,4,1699],t:7,e:"ui-button",a:{state:[{t:2,x:{r:["data.piping_layer"],s:'_0==3?"selected":null'},p:[37,22,1717]}],action:"piping_layer",params:'{"piping_layer": 3}'},f:["3"]}]}],n:50,x:{r:["data.screen"],s:"_0==0"},p:[31,2,1353]}]}," ",{t:4,f:[{p:[43,2,1906],t:7,e:"ui-display",a:{title:[{t:2,r:"cat_name",p:[43,21,1925]}]},f:[{t:4,f:[{p:[45,4,1965],t:7,e:"ui-section",f:[{p:[46,5,1983],t:7,e:"ui-button",a:{state:[{t:2,x:{r:["selected"],s:'_0?"selected":null'},p:[46,23,2001]}],action:"pipe_type",params:['{"pipe_type": ',{t:2,r:"pipe_index",p:[47,28,2082]},', "category": ',{t:2,r:"cat_name",p:[47,56,2110]},"}"]},f:[{t:2,r:"pipe_name",p:[47,71,2125]}]}]}],n:52,r:"recipes",p:[44,3,1943]}]}],n:52,r:"data.categories",p:[42,1,1878]}]},r.exports.components=r.exports.components||{};var i={colorsel:t(296),dirsel:t(297)};for(var o in i)i.hasOwnProperty(o)&&(r.exports.components[o]=i[o]);e.exports=a.extend(r.exports)},{205:205,296:296,297:297}],296:[function(t,e,n){var a=t(205),r={exports:{}};r.exports.template={v:3,t:[{p:[1,1,0],t:7,e:"ui-display",a:{title:"Color"},f:[{t:4,f:[{p:[3,3,60],t:7,e:"ui-button",a:{state:[{t:2,x:{r:["selected"],s:'_0?"selected":null'},p:[3,21,78]}],action:"color",params:['{"paint_color": ',{t:2,r:"color_name",p:[4,28,155]},"}"]},f:[{t:2,r:"color_name",p:[4,45,172]}]}],n:52,r:"data.paint_colors",p:[2,2,29]}]}]},e.exports=a.extend(r.exports)},{205:205}],297:[function(t,e,n){var a=t(205),r={exports:{}};r.exports.template={v:3,t:[{p:[1,1,0],t:7,e:"ui-display",a:{title:"Direction"},f:[{t:4,f:[{p:[3,3,64],t:7,e:"ui-section",f:[{t:4,f:[{p:[5,5,105],t:7,e:"ui-button",a:{state:[{t:2,x:{r:["selected"],s:'_0?"selected":null'},p:[5,23,123]}],action:"setdir",params:['{"dir": ',{t:2,r:"dir",p:[6,22,195]},', "flipped": ',{t:2,r:"flipped",p:[6,42,215]},"}"]},f:[{p:[6,56,229],t:7,e:"img",a:{src:["pipe.",{t:2,r:"dir",p:[6,71,244]},".",{t:2,r:"icon_state",p:[6,79,252]},".png"],title:[{t:2,r:"dir_name",p:[6,106,279]}]}}]}],n:52,r:"previews",p:[4,4,81]}]}],n:52,r:"data.preview_rows",p:[2,2,33]}]}]},e.exports=a.extend(r.exports)},{205:205}],298:[function(t,e,n){var a=t(205),r={exports:{}};r.exports.template={v:3,t:[{t:4,f:[{p:[2,3,23],t:7,e:"ui-notice",f:[{t:2,r:"data.notice",p:[3,5,40]}]}],n:50,r:"data.notice",p:[1,1,0]},{p:[6,1,82],t:7,e:"ui-display",a:{title:"Satellite Network Control",button:0},f:[{t:4,f:[{p:[8,4,168],t:7,e:"ui-section",a:{candystripe:0,nowrap:0},f:[{p:[9,9,209],t:7,e:"div",a:{"class":"content"},f:["#",{t:2,r:"id",p:[9,31,231]}]}," ",{p:[10,9,253],t:7,e:"div",a:{"class":"content"},f:[{t:2,r:"mode",p:[10,30,274]}]}," ",{p:[11,9,298],t:7,e:"div",a:{"class":"content"},f:[{p:[12,11,331],t:7,e:"ui-button",a:{action:"toggle",params:['{"id": "',{t:2,r:"id",p:[12,54,374]},'"}']},f:[{t:2,x:{r:["active"],s:'_0?"Deactivate":"Activate"'},p:[12,64,384]}]}]}]}],n:52,r:"data.satellites",p:[7,2,138]}]}," ",{t:4,f:[{p:[18,1,528],t:7,e:"ui-display",a:{title:"Station Shield Coverage" },f:[{p:[19,3,576],t:7,e:"ui-bar",a:{min:"0",max:[{t:2,r:"data.meteor_shield_coverage_max",p:[19,24,597]}],value:[{t:2,r:"data.meteor_shield_coverage",p:[19,68,641]}]},f:[{t:2,x:{r:["data.meteor_shield_coverage","data.meteor_shield_coverage_max"],s:"100*_0/_1"},p:[19,101,674]}," %"]}," ",{p:[20,1,758],t:7,e:"ui-display",f:[]}]}],n:50,r:"data.meteor_shield",p:[17,1,500]}]},e.exports=a.extend(r.exports)},{205:205}],299:[function(t,e,n){var a=t(205),r={exports:{}};r.exports.template={v:3,t:[{t:4,f:[{p:[2,3,26],t:7,e:"ui-button",a:{icon:[{t:2,x:{r:["enabled"],s:'_0?"check-square-o":"square-o"'},p:[2,20,43]}],style:[{t:2,x:{r:["enabled"],s:'_0?"selected":null'},p:[2,72,95]}],action:"toggle_filter",params:['{"id_tag": "',{t:2,r:"id_tag",p:[3,48,176]},'", "val": ',{t:2,r:"gas_id",p:[3,68,196]},"}"]},f:[{t:2,r:"gas_name",p:[3,81,209]}]}],n:52,r:"filter_types",p:[1,1,0]}]},e.exports=a.extend(r.exports)},{205:205}],300:[function(t,e,n){var a=t(205),r={exports:{}};r.exports.template={v:3,t:[" "," "," ",{p:[5,1,200],t:7,e:"ui-tabs",a:{tabs:[{t:2,r:"data.tabs",p:[5,16,215]}]},f:[{p:[6,2,233],t:7,e:"tab",a:{name:"Status"},f:[{p:[7,3,256],t:7,e:"status"}]}," ",{p:[9,2,277],t:7,e:"tab",a:{name:"Templates"},f:[{p:[10,3,303],t:7,e:"templates"}]}," ",{p:[12,2,327],t:7,e:"tab",a:{name:"Modification"},f:[{t:4,f:[{p:[14,3,381],t:7,e:"modification"}],n:50,r:"data.selected",p:[13,3,356]}," ",{t:4,f:[{p:[17,3,437],t:7,e:"span",a:{"class":"bad"},f:["No shuttle selected."]}],n:50,x:{r:["data.selected"],s:"!_0"},p:[16,3,411]}]}]}]},r.exports.components=r.exports.components||{};var i={modification:t(301),templates:t(303),status:t(302)};for(var o in i)i.hasOwnProperty(o)&&(r.exports.components[o]=i[o]);e.exports=a.extend(r.exports)},{205:205,301:301,302:302,303:303}],301:[function(t,e,n){var a=t(205),r={exports:{}};r.exports.template={v:3,t:[{p:[1,1,0],t:7,e:"ui-display",a:{title:["Selected: ",{t:2,r:"data.selected.name",p:[1,30,29]}]},f:[{t:4,f:[{p:[3,5,96],t:7,e:"ui-section",a:{label:"Description"},f:[{t:2,r:"data.selected.description",p:[3,37,128]}]}],n:50,r:"data.selected.description",p:[2,3,57]}," ",{t:4,f:[{p:[6,5,224],t:7,e:"ui-section",a:{label:"Admin Notes"},f:[{t:2,r:"data.selected.admin_notes",p:[6,37,256]}]}],n:50,r:"data.selected.admin_notes",p:[5,3,185]}]}," ",{t:4,f:[{p:[11,3,361],t:7,e:"ui-display",a:{title:["Existing Shuttle: ",{t:2,r:"data.existing_shuttle.name",p:[11,40,398]}]},f:["Status: ",{t:2,r:"data.existing_shuttle.status",p:[12,13,444]}," ",{t:4,f:["(",{t:2,r:"data.existing_shuttle.timeleft",p:[14,8,526]},")"],n:50,r:"data.existing_shuttle.timer",p:[13,5,482]}," ",{p:[16,5,580],t:7,e:"ui-button",a:{action:"jump_to",params:['{"type": "mobile", "id": "',{t:2,r:"data.existing_shuttle.id",p:[17,41,649]},'"}']},f:["Jump To"]}]}],n:50,r:"data.existing_shuttle",p:[10,1,328]},{t:4,f:[{p:[24,3,778],t:7,e:"ui-display",a:{title:"Existing Shuttle: None"}}],n:50,x:{r:["data.existing_shuttle"],s:"!_0"},p:[23,1,744]},{p:[27,1,847],t:7,e:"ui-button",a:{action:"preview",params:['{"shuttle_id": "',{t:2,r:"data.selected.shuttle_id",p:[28,27,902]},'"}']},f:["Preview"]}," ",{p:[31,1,961],t:7,e:"ui-button",a:{action:"load",params:['{"shuttle_id": "',{t:2,r:"data.selected.shuttle_id",p:[32,27,1013]},'"}'],style:"danger"},f:["Load"]}," ",{p:[37,1,1089],t:7,e:"ui-display",a:{title:"Status"},f:[]}]},e.exports=a.extend(r.exports)},{205:205}],302:[function(t,e,n){var a=t(205),r={exports:{}};r.exports.template={v:3,t:[{t:4,f:[{p:[2,3,27],t:7,e:"ui-section",a:{label:[{t:2,r:"name",p:[2,22,46]}," (",{t:2,r:"id",p:[2,32,56]},")"]},f:[{t:2,r:"status",p:[3,5,71]}," ",{t:4,f:["(",{t:2,r:"timeleft",p:[5,8,109]},")"],n:50,r:"timer",p:[4,5,87]}," ",{p:[7,5,141],t:7,e:"ui-button",a:{action:"jump_to",params:['{"type": "mobile", "id": "',{t:2,r:"id",p:[7,67,203]},'"}']},f:["Jump To"]}," ",{p:[10,5,252],t:7,e:"ui-button",a:{action:"fast_travel",params:['{"id": "',{t:2,r:"id",p:[10,53,300]},'"}'],state:[{t:2,x:{r:["can_fast_travel"],s:'_0?null:"disabled"'},p:[10,70,317]}]},f:["Fast Travel"]}]}],n:52,r:"data.shuttles",p:[1,1,0]}]},e.exports=a.extend(r.exports)},{205:205}],303:[function(t,e,n){var a=t(205),r={exports:{}};r.exports.template={v:3,t:[{p:[1,1,0],t:7,e:"ui-tabs",a:{tabs:[{t:2,r:"data.templates_tabs",p:[1,16,15]}]},f:[{t:4,f:[{p:[3,5,74],t:7,e:"tab",a:{name:[{t:2,r:"port_id",p:[3,16,85]}]},f:[{t:4,f:[{p:[5,9,135],t:7,e:"ui-display",a:{title:[{t:2,r:"name",p:[5,28,154]}]},f:[{t:4,f:[{p:[7,13,209],t:7,e:"ui-section",a:{label:"Description"},f:[{t:2,r:"description",p:[7,45,241]}]}],n:50,r:"description",p:[6,11,176]}," ",{t:4,f:[{p:[10,13,333],t:7,e:"ui-section",a:{label:"Admin Notes"},f:[{t:2,r:"admin_notes",p:[10,45,365]}]}],n:50,r:"admin_notes",p:[9,11,300]}," ",{p:[13,11,426],t:7,e:"ui-button",a:{action:"select_template",params:['{"shuttle_id": "',{t:2,r:"shuttle_id",p:[14,37,499]},'"}'],state:[{t:2,x:{r:["data.selected.shuttle_id","shuttle_id"],s:'_0==_1?"selected":null'},p:[15,20,537]}]},f:[{t:2,x:{r:["data.selected.shuttle_id","shuttle_id"],s:'_0==_1?"Selected":"Select"'},p:[17,13,630]}]}]}],n:52,r:"templates",p:[4,7,106]}]}],n:52,r:"data.templates",p:[2,3,44]}]}]},e.exports=a.extend(r.exports)},{205:205}],304:[function(t,e,n){var a=t(205),r={exports:{}};r.exports.template={v:3,t:[{p:[1,1,0],t:7,e:"ui-display",a:{title:"Occupant"},f:[{p:[2,3,33],t:7,e:"ui-section",a:{label:"Occupant"},f:[{p:[3,3,66],t:7,e:"span",f:[{t:2,x:{r:["data.occupant.name"],s:'_0?_0:"No Occupant"'},p:[3,9,72]}]}]}," ",{t:4,f:[{p:[6,5,186],t:7,e:"ui-section",a:{label:"State"},f:[{p:[7,7,220],t:7,e:"span",a:{"class":[{t:2,r:"data.occupant.statstate",p:[7,20,233]}]},f:[{t:2,r:"data.occupant.stat",p:[7,49,262]}]}]}," ",{p:[9,5,315],t:7,e:"ui-section",a:{label:"Health"},f:[{p:[10,7,350],t:7,e:"ui-bar",a:{min:[{t:2,r:"data.occupant.minHealth",p:[10,20,363]}],max:[{t:2,r:"data.occupant.maxHealth",p:[10,54,397]}],value:[{t:2,r:"data.occupant.health",p:[10,90,433]}],state:[{t:2,x:{r:["data.occupant.health"],s:'_0>=0?"good":"average"'},p:[11,16,475]}]},f:[{t:2,x:{r:["adata.occupant.health"],s:"Math.round(_0)"},p:[11,68,527]}]}]}," ",{t:4,f:[{p:[14,7,764],t:7,e:"ui-section",a:{label:[{t:2,r:"label",p:[14,26,783]}]},f:[{p:[15,9,804],t:7,e:"ui-bar",a:{min:"0",max:[{t:2,r:"data.occupant.maxHealth",p:[15,30,825]}],value:[{t:2,rx:{r:"data.occupant",m:[{t:30,n:"type"}]},p:[15,66,861]}],state:"bad"},f:[{t:2,x:{r:["type","adata.occupant"],s:"Math.round(_1[_0])"},p:[15,103,898]}]}]}],n:52,x:{r:[],s:'[{label:"Brute",type:"bruteLoss"},{label:"Respiratory",type:"oxyLoss"},{label:"Toxin",type:"toxLoss"},{label:"Burn",type:"fireLoss"}]'},p:[13,5,598]}," ",{p:[18,5,985],t:7,e:"ui-section",a:{label:"Cells"},f:[{p:[19,9,1021],t:7,e:"span",a:{"class":[{t:2,x:{r:["data.occupant.cloneLoss"],s:'_0?"bad":"good"'},p:[19,22,1034]}]},f:[{t:2,x:{r:["data.occupant.cloneLoss"],s:'_0?"Damaged":"Healthy"'},p:[19,68,1080]}]}]}," ",{p:[21,5,1163],t:7,e:"ui-section",a:{label:"Brain"},f:[{p:[22,9,1199],t:7,e:"span",a:{"class":[{t:2,x:{r:["data.occupant.brainLoss"],s:'_0?"bad":"good"'},p:[22,22,1212]}]},f:[{t:2,x:{r:["data.occupant.brainLoss"],s:'_0?"Abnormal":"Healthy"'},p:[22,68,1258]}]}]}," ",{p:[24,5,1342],t:7,e:"ui-section",a:{label:"Bloodstream"},f:[{t:4,f:[{p:[26,11,1429],t:7,e:"span",a:{"class":"highlight"},t0:"fade",f:[{t:2,x:{r:["volume"],s:"Math.fixed(_0,1)"},p:[26,54,1472]}," units of ",{t:2,r:"name",p:[26,89,1507]}]},{p:[26,104,1522],t:7,e:"br"}],n:52,r:"adata.occupant.reagents",p:[25,9,1384]},{t:4,n:51,f:[{p:[28,11,1557],t:7,e:"span",a:{"class":"good"},f:["Pure"]}],r:"adata.occupant.reagents"}]}],n:50,r:"data.occupied",p:[5,3,159]}]}," ",{p:[33,1,1653],t:7,e:"ui-display",a:{title:"Controls"},f:[{p:[34,2,1685],t:7,e:"ui-section",a:{label:"Door"},f:[{p:[35,5,1716],t:7,e:"ui-button",a:{icon:[{t:2,x:{r:["data.open"],s:'_0?"unlock":"lock"'},p:[35,22,1733]}],action:"door"},f:[{t:2,x:{r:["data.open"],s:'_0?"Open":"Closed"'},p:[35,71,1782]}]}]}," ",{p:[37,3,1847],t:7,e:"ui-section",a:{label:"Inject"},f:[{t:4,f:[{p:[39,7,1908],t:7,e:"ui-button",a:{icon:"flask",state:[{t:2,x:{r:["data.occupied","allowed"],s:'_0&&_1?null:"disabled"'},p:[39,38,1939]}],action:"inject",params:['{"chem": "',{t:2,r:"id",p:[39,122,2023]},'"}']},f:[{t:2,r:"name",p:[39,132,2033]}]},{p:[39,152,2053],t:7,e:"br"}],n:52,r:"data.chems",p:[38,5,1880]}]}]}]},e.exports=a.extend(r.exports)},{205:205}],305:[function(t,e,n){var a=t(205),r={exports:{}};r.exports.template={v:3,t:[{t:4,f:[{p:[2,3,25],t:7,e:"ui-section",a:{label:[{t:2,r:"name",p:[2,22,44]}],labelcolor:[{t:2,r:"htmlcolor",p:[2,44,66]}],candystripe:0,right:0},f:[{p:[3,5,105],t:7,e:"ui-section",a:{label:"Status"},f:[{p:[3,32,132],t:7,e:"span",a:{"class":[{t:2,x:{r:["status"],s:'_0=="Dead"?"bad bold":_0=="Unconscious"?"average bold":"good"'},p:[3,45,145]}]},f:[{t:2,r:"status",p:[3,132,232]}]}]}," ",{p:[4,5,268],t:7,e:"ui-section",a:{label:"Jelly"},f:[{t:2,r:"exoticblood",p:[4,31,294]}]}," ",{p:[5,5,328],t:7,e:"ui-section",a:{label:"Location"},f:[{t:2,r:"area",p:[5,34,357]}]}," ",{p:[7,5,386],t:7,e:"ui-button",a:{state:[{t:2,r:"swap_button_state",p:[8,14,411]}],action:"swap",params:['{"ref": "',{t:2,r:"ref",p:[9,38,472]},'"}']},f:[{t:2,x:{r:["is_current"],s:'_0?"You Are Here":"Swap"'},p:[10,7,491]}]}]}],n:52,r:"data.bodies",p:[1,1,0]}]},e.exports=a.extend(r.exports)},{205:205}],306:[function(t,e,n){var a=t(205),r={exports:{}};r.exports.template={v:3,t:[{p:{button:[{t:4,f:[{p:[4,23,82],t:7,e:"ui-button",a:{icon:[{t:2,x:{r:["data.drying"],s:'_0?"stop":"tint"'},p:[4,40,99]}],action:"Dry"},f:[{t:2,x:{r:["data.drying"],s:'_0?"Stop drying":"Dry"'},p:[4,88,147]}]}],n:50,r:"data.isdryer",p:[4,3,62]}]},t:7,e:"ui-display",a:{title:"Storage",button:0},f:[" ",{t:4,f:[{p:[7,3,258],t:7,e:"ui-notice",f:[{p:[8,5,275],t:7,e:"span",f:["Unfortunately, this ",{t:2,r:"data.name",p:[8,31,301]}," is empty."]}]}],n:50,x:{r:["data.contents.length"],s:"_0==0"},p:[6,1,221]},{t:4,n:51,f:[{p:[11,1,359],t:7,e:"div",a:{"class":"display tabular"},f:[{p:[12,2,391],t:7,e:"section",a:{"class":"candystripe"},f:[{p:[13,4,425],t:7,e:"section",a:{"class":"cell bold"},f:["Item"]}," ",{p:[16,4,482],t:7,e:"section",a:{"class":"cell bold"},f:["Quantity"]}," ",{p:[19,4,543],t:7,e:"section",a:{"class":"cell bold",align:"center"},f:[{t:4,f:[{t:2,r:"data.verb",p:[20,22,608]}],n:50,r:"data.verb",p:[20,5,591]},{t:4,n:51,f:["Dispense"],r:"data.verb"}]}]}," ",{t:4,f:[{p:[24,3,703],t:7,e:"section",a:{"class":"candystripe"},f:[{p:[25,4,737],t:7,e:"section",a:{"class":"cell"},f:[{t:2,r:"name",p:[26,5,765]}]}," ",{p:[28,4,793],t:7,e:"section",a:{"class":"cell",align:"right"},f:[{t:2,r:"amount",p:[29,5,835]}]}," ",{p:[31,4,865],t:7,e:"section",a:{"class":"table",alight:"right"},f:[{p:[32,5,909],t:7,e:"section",a:{"class":"cell"}}," ",{p:[33,5,947],t:7,e:"section",a:{"class":"cell"},f:[{p:[34,6,976],t:7,e:"ui-button",a:{grid:0,action:"Release",state:[{t:2,x:{r:["amount"],s:'(_0>=1)?null:"disabled"'},p:[34,45,1015]}],params:['{ "name" : ',{t:2,r:"name",p:[34,102,1072]},', "amount" : 1 }']},f:["One"]}]}," ",{p:[38,5,1151],t:7,e:"section",a:{"class":"cell"},f:[{p:[39,6,1180],t:7,e:"ui-button",a:{grid:0,action:"Release",state:[{t:2,x:{r:["amount"],s:'(_0>1)?null:"disabled"'},p:[39,45,1219]}],params:['{ "name" : ',{t:2,r:"name",p:[39,101,1275]}," }"]},f:["Many"]}]}]}]}],n:52,r:"data.contents",p:[23,2,676]}]}],x:{r:["data.contents.length"],s:"_0==0"}}]}]},e.exports=a.extend(r.exports)},{205:205}],307:[function(t,e,n){var a=t(205),r={exports:{}};!function(t){"use strict";t.exports={computed:{capacityPercentState:function(){var t=this.get("data.capacityPercent");return t>50?"good":t>15?"average":"bad"},inputState:function(){return this.get("data.capacityPercent")>=100?"good":this.get("data.inputting")?"average":"bad"},outputState:function(){return this.get("data.outputting")?"good":this.get("data.charge")>0?"average":"bad"}}}}(r),r.exports.template={v:3,t:[" ",{p:[24,1,663],t:7,e:"ui-display",a:{title:"Storage"},f:[{p:[25,3,695],t:7,e:"ui-section",a:{label:"Stored Energy"},f:[{p:[26,5,735],t:7,e:"ui-bar",a:{min:"0",max:"100",value:[{t:2,r:"data.capacityPercent",p:[26,38,768]}],state:[{t:2,r:"capacityPercentState",p:[26,71,801]}]},f:[{t:2,x:{r:["adata.capacityPercent"],s:"Math.fixed(_0)"},p:[26,97,827]},"%"]}]}]}," ",{p:[29,1,908],t:7,e:"ui-display",a:{title:"Input"},f:[{p:[30,3,938],t:7,e:"ui-section",a:{label:"Charge Mode"},f:[{p:[31,5,976],t:7,e:"ui-button",a:{icon:[{t:2,x:{r:["data.inputAttempt"],s:'_0?"refresh":"close"'},p:[31,22,993]}],style:[{t:2,x:{r:["data.inputAttempt"],s:'_0?"selected":null'},p:[31,74,1045]}],action:"tryinput"},f:[{t:2,x:{r:["data.inputAttempt"],s:'_0?"Auto":"Off"'},p:[32,25,1113]}]},"   [",{p:[34,6,1182],t:7,e:"span",a:{"class":[{t:2,r:"inputState",p:[34,19,1195]}]},f:[{t:2,x:{r:["data.capacityPercent","data.inputting"],s:'_0>=100?"Fully Charged":_1?"Charging":"Not Charging"'},p:[34,35,1211]}]},"]"]}," ",{p:[36,3,1335],t:7,e:"ui-section",a:{label:"Target Input"},f:[{p:[37,5,1374],t:7,e:"ui-bar",a:{min:"0",max:[{t:2,r:"data.inputLevelMax",p:[37,26,1395]}],value:[{t:2,r:"data.inputLevel",p:[37,57,1426]}]},f:[{t:2,r:"adata.inputLevel_text",p:[37,78,1447]}]}]}," ",{p:[39,3,1501],t:7,e:"ui-section",a:{label:"Adjust Input"},f:[{p:[40,5,1540],t:7,e:"ui-button",a:{icon:"fast-backward",state:[{t:2,x:{r:["data.inputLevel"],s:'_0==0?"disabled":null'},p:[40,44,1579]}],action:"input",params:'{"target": "min"}'}}," ",{p:[41,5,1674],t:7,e:"ui-button",a:{icon:"backward",state:[{t:2,x:{r:["data.inputLevel"],s:'_0==0?"disabled":null'},p:[41,39,1708]}],action:"input",params:'{"adjust": -10000}'}}," ",{p:[42,5,1804],t:7,e:"ui-button",a:{icon:"pencil",action:"input",params:'{"target": "input"}'},f:["Set"]}," ",{p:[43,5,1894],t:7,e:"ui-button",a:{icon:"forward",state:[{t:2,x:{r:["data.inputLevel","data.inputLevelMax"],s:'_0==_1?"disabled":null'},p:[43,38,1927]}],action:"input",params:'{"adjust": 10000}'}}," ",{p:[44,5,2039],t:7,e:"ui-button",a:{icon:"fast-forward",state:[{t:2,x:{r:["data.inputLevel","data.inputLevelMax"],s:'_0==_1?"disabled":null'},p:[44,43,2077]}],action:"input",params:'{"target": "max"}'}}]}," ",{p:[46,3,2204],t:7,e:"ui-section",a:{label:"Available"},f:[{p:[47,3,2238],t:7,e:"span",f:[{t:2,r:"adata.inputAvailable",p:[47,9,2244]}]}]}]}," ",{p:[50,1,2308],t:7,e:"ui-display",a:{title:"Output"},f:[{p:[51,3,2339],t:7,e:"ui-section",a:{label:"Output Mode"},f:[{p:[52,5,2377],t:7,e:"ui-button",a:{icon:[{t:2,x:{r:["data.outputAttempt"],s:'_0?"power-off":"close"'},p:[52,22,2394]}],style:[{t:2,x:{r:["data.outputAttempt"],s:'_0?"selected":null'},p:[52,77,2449]}],action:"tryoutput"},f:[{t:2,x:{r:["data.outputAttempt"],s:'_0?"On":"Off"'},p:[53,26,2519]}]},"   [",{p:[55,6,2587],t:7,e:"span",a:{"class":[{t:2,r:"outputState",p:[55,19,2600]}]},f:[{t:2,x:{r:["data.outputting","data.charge"],s:'_0?"Sending":_1>0?"Not Sending":"No Charge"'},p:[55,36,2617]}]},"]"]}," ",{p:[57,3,2724],t:7,e:"ui-section",a:{label:"Target Output"},f:[{p:[58,5,2764],t:7,e:"ui-bar",a:{min:"0",max:[{t:2,r:"data.outputLevelMax",p:[58,26,2785]}],value:[{t:2,r:"data.outputLevel",p:[58,58,2817]}]},f:[{t:2,r:"adata.outputLevel_text",p:[58,80,2839]}]}]}," ",{p:[60,3,2894],t:7,e:"ui-section",a:{label:"Adjust Output"},f:[{p:[61,5,2934],t:7,e:"ui-button",a:{icon:"fast-backward",state:[{t:2,x:{r:["data.outputLevel"],s:'_0==0?"disabled":null'},p:[61,44,2973]}],action:"output",params:'{"target": "min"}'}}," ",{p:[62,5,3070],t:7,e:"ui-button",a:{icon:"backward",state:[{t:2,x:{r:["data.outputLevel"],s:'_0==0?"disabled":null'},p:[62,39,3104]}],action:"output",params:'{"adjust": -10000}'}}," ",{p:[63,5,3202],t:7,e:"ui-button",a:{icon:"pencil",action:"output",params:'{"target": "input"}'},f:["Set"]}," ",{p:[64,5,3293],t:7,e:"ui-button",a:{icon:"forward",state:[{t:2,x:{r:["data.outputLevel","data.outputLevelMax"],s:'_0==_1?"disabled":null'},p:[64,38,3326]}],action:"output",params:'{"adjust": 10000}'}}," ",{p:[65,5,3441],t:7,e:"ui-button",a:{icon:"fast-forward",state:[{t:2,x:{r:["data.outputLevel","data.outputLevelMax"],s:'_0==_1?"disabled":null'},p:[65,43,3479]}],action:"output",params:'{"target": "max"}'}}]}," ",{p:[67,3,3609],t:7,e:"ui-section",a:{label:"Outputting"},f:[{p:[68,3,3644],t:7,e:"span",f:[{t:2,r:"adata.outputUsed",p:[68,9,3650]}]}]}]}]},e.exports=a.extend(r.exports)},{205:205}],308:[function(t,e,n){var a=t(205),r={exports:{}};r.exports.template={v:3,t:["\ufeff",{t:4,f:[" ",{p:[2,2,33],t:7,e:"ui-display",a:{title:"Dispersal Tank"},f:[{p:[3,2,72],t:7,e:"ui-section",a:{label:"Power"},f:[{p:[4,6,105],t:7,e:"ui-button",a:{icon:[{t:2,x:{r:["data.active"],s:'_0?"power-off":"close"'},p:[4,23,122]}],style:[{t:2,x:{r:["data.active"],s:'_0?"selected":null'},p:[5,11,174]}],state:[{t:2,x:{r:["data.isTankLoaded"],s:'_0?null:"disabled"'},p:[6,11,222]}],action:"power"},f:[{t:2,x:{r:["data.active"],s:'_0?"On":"Off"'},p:[7,19,284]}]}]}," ",{p:[10,2,349],t:7,e:"ui-section",a:{label:"Smoke Radius Setting"},f:[{p:[11,4,395],t:7,e:"div",a:{"class":"content",style:"float:left"},f:[{p:[12,5,441],t:7,e:"ui-button",a:{icon:"plus",state:[{t:2,x:{r:["data.setting"],s:'_0==3?"selected":null'},p:[12,35,471]}],action:"setting",params:'{"amount": 3}'},f:["3"]}," ",{p:[13,5,573],t:7,e:"ui-button",a:{icon:"plus",state:[{t:2,x:{r:["data.setting"],s:'_0==6?"selected":null'},p:[13,35,603]}],action:"setting",params:'{"amount": 6}'},f:["6"]}," ",{p:[14,5,705],t:7,e:"ui-button",a:{icon:"plus",state:[{t:2,x:{r:["data.setting"],s:'_0==9?"selected":null'},p:[14,35,735]}],action:"setting",params:'{"amount": 9}'},f:["9"]}," ",{p:[15,5,837],t:7,e:"ui-button",a:{icon:"plus",state:[{t:2,x:{r:["data.setting"],s:'_0==12?"selected":null'},p:[15,35,867]}],action:"setting",params:'{"amount": 12}'},f:["12"]}," ",{p:[16,5,972],t:7,e:"ui-button",a:{icon:"plus",state:[{t:2,x:{r:["data.setting"],s:'_0==15?"selected":null'},p:[16,35,1002]}],action:"setting",params:'{"amount": 15}'},f:["15"]}]}]}," ",{p:[19,5,1139],t:7,e:"ui-section",a:{label:"Contents"},f:[{t:4,f:[{p:[21,10,1212],t:7,e:"span",f:[{t:2,x:{r:["adata.TankCurrentVolume"],s:"Math.round(_0)"},p:[21,16,1218]},"/",{t:2,r:"data.TankMaxVolume",p:[21,56,1258]}," Units"]}," ",{p:[22,10,1304],t:7,e:"br"}," ",{p:[23,5,1315],t:7,e:"br"}," ",{t:4,f:[{p:[25,13,1374],t:7,e:"span",a:{"class":"highlight"},t0:"fade",f:[{t:2,x:{r:["volume"],s:"Math.fixed(_0,2)"},p:[25,56,1417]}," units of ",{t:2,r:"name",p:[25,91,1452]}]},{p:[25,106,1467],t:7,e:"br"}],n:52,r:"adata.TankContents",p:[24,11,1332]}],n:50,r:"data.isTankLoaded",p:[20,7,1176]},{t:4,n:51,f:[{p:[28,12,1519],t:7,e:"span",a:{"class":"bad"},f:["Tank Empty"]}],r:"data.isTankLoaded"}," ",{p:[30,4,1571],t:7,e:"ui-button",a:{icon:[{t:2,x:{r:["data.isTankLoaded"],s:'_0?"Eject":"Close"'},p:[30,21,1588]}],style:[{t:2,x:{r:["data.isTankLoaded"],s:'_0?"selected":null'},p:[31,12,1643]}],state:[{t:2,x:{r:["data.isTankLoaded"],s:'_0?null:"disabled"'},p:[32,12,1698]}],action:"purge"},f:[{t:2,x:{r:["data.isTankLoaded"],s:'_0?"Purge Contents":"No chemicals detected"'},p:[33,20,1761]}]}]}]}],n:50,x:{r:["data.screen"],s:'_0=="home"'},p:[1,2,1]}]},e.exports=a.extend(r.exports)},{205:205}],309:[function(t,e,n){var a=t(205),r={exports:{}};r.exports.template={v:3,t:[{p:[1,1,0],t:7,e:"ui-display",a:{title:"Status"},f:[{p:[2,3,31],t:7,e:"ui-section",a:{label:"Generated Power"},f:[{t:2,x:{r:["adata.generated"],s:"Math.round(_0)"},p:[3,5,73]},"W"]}," ",{p:[5,3,126],t:7,e:"ui-section",a:{label:"Orientation"},f:[{p:[6,5,164],t:7,e:"span",f:[{t:2,x:{r:["adata.angle"],s:"Math.round(_0)"},p:[6,11,170]},"° (",{t:2,r:"data.direction",p:[6,45,204]},")"]}]}," ",{p:[8,3,251],t:7,e:"ui-section",a:{label:"Adjust Angle"},f:[{p:[9,5,290],t:7,e:"ui-button",a:{icon:"step-backward",action:"angle",params:'{"adjust": -15}'},f:["15°"]}," ",{p:[10,5,387],t:7,e:"ui-button",a:{icon:"backward",action:"angle",params:'{"adjust": -5}'},f:["5°"]}," ",{p:[11,5,477],t:7,e:"ui-button",a:{icon:"forward",action:"angle",params:'{"adjust": 5}'},f:["5°"]}," ",{p:[12,5,565],t:7,e:"ui-button",a:{icon:"step-forward",action:"angle",params:'{"adjust": 15}'},f:["15°"]}]}]}," ",{p:[15,1,687],t:7,e:"ui-display",a:{title:"Tracking"},f:[{p:[16,3,720],t:7,e:"ui-section",a:{label:"Tracker Mode"},f:[{p:[17,5,759],t:7,e:"ui-button",a:{icon:"close",state:[{t:2,x:{r:["data.tracking_state"],s:'_0==0?"selected":null'},p:[17,36,790]}],action:"tracking",params:'{"mode": 0}'},f:["Off"]}," ",{p:[19,5,907],t:7,e:"ui-button",a:{icon:"clock-o",state:[{t:2,x:{r:["data.tracking_state"],s:'_0==1?"selected":null'},p:[19,38,940]}],action:"tracking",params:'{"mode": 1}'},f:["Timed"]}," ",{p:[21,5,1059],t:7,e:"ui-button",a:{icon:"refresh",state:[{t:2,x:{r:["data.connected_tracker","data.tracking_state"],s:'_0?_1==2?"selected":null:"disabled"'},p:[21,38,1092]}],action:"tracking",params:'{"mode": 2}'},f:["Auto"]}]}," ",{p:[24,3,1262],t:7,e:"ui-section",a:{label:"Tracking Rate"},f:[{p:[25,3,1300],t:7,e:"span",f:[{t:2,x:{r:["adata.tracking_rate"],s:"Math.round(_0)"},p:[25,9,1306]},"°/h (",{t:2,r:"data.rotating_way",p:[25,53,1350]},")"]}]}," ",{p:[27,3,1399],t:7,e:"ui-section",a:{label:"Adjust Rate"},f:[{p:[28,5,1437],t:7,e:"ui-button",a:{icon:"fast-backward",action:"rate",params:'{"adjust": -180}'},f:["180°"]}," ",{p:[29,5,1535],t:7,e:"ui-button",a:{icon:"step-backward",action:"rate",params:'{"adjust": -30}'},f:["30°"]}," ",{p:[30,5,1631],t:7,e:"ui-button",a:{icon:"backward",action:"rate",params:'{"adjust": -5}'},f:["5°"]}," ",{p:[31,5,1720],t:7,e:"ui-button",a:{icon:"forward",action:"rate",params:'{"adjust": 5}'},f:["5°"]}," ",{p:[32,5,1807],t:7,e:"ui-button",a:{icon:"step-forward",action:"rate",params:'{"adjust": 30}'},f:["30°"]}," ",{p:[33,5,1901],t:7,e:"ui-button",a:{icon:"fast-forward",action:"rate",params:'{"adjust": 180}'},f:["180°"]}]}]}," ",{p:{button:[{p:[38,5,2088],t:7,e:"ui-button",a:{icon:"refresh",action:"refresh"},f:["Refresh"]}]},t:7,e:"ui-display",a:{title:"Devices",button:0},f:[" ",{p:[40,2,2169],t:7,e:"ui-section",a:{label:"Solar Tracker"},f:[{p:[41,5,2209],t:7,e:"span",a:{"class":[{t:2,x:{r:["data.connected_tracker"],s:'_0?"good":"bad"'},p:[41,18,2222]}]},f:[{t:2,x:{r:["data.connected_tracker"],s:'_0?"":"Not "'},p:[41,63,2267]},"Found"]}]}," ",{p:[43,2,2338],t:7,e:"ui-section",a:{label:"Solar Panels"},f:[{p:[44,3,2375],t:7,e:"span",a:{"class":[{t:2,x:{r:["data.connected_panels"],s:'_0?"good":"bad"'},p:[44,16,2388]}]},f:[{t:2,x:{r:["adata.connected_panels"],s:"Math.round(_0)"},p:[44,60,2432]}," Panels Connected"]}]}]}]},e.exports=a.extend(r.exports)},{205:205}],310:[function(t,e,n){var a=t(205),r={exports:{}};r.exports.template={v:3,t:[{p:{button:[{t:4,f:[{p:[4,7,87],t:7,e:"ui-button",a:{icon:"eject",state:[{t:2,x:{r:["data.hasPowercell"],s:'_0?null:"disabled"'},p:[4,38,118]}],action:"eject"},f:["Eject"]}],n:50,r:"data.open",p:[3,5,62]}]},t:7,e:"ui-display",a:{title:"Power",button:0},f:[" ",{p:[7,3,226],t:7,e:"ui-section",a:{label:"Power"},f:[{p:[8,5,258],t:7,e:"ui-button",a:{icon:[{t:2,x:{r:["data.on"],s:'_0?"power-off":"close"'},p:[8,22,275]}],style:[{t:2,x:{r:["data.on"],s:'_0?"selected":null'},p:[9,14,326]}],state:[{t:2,x:{r:["data.hasPowercell"],s:'_0?null:"disabled"'},p:[9,54,366]}],action:"power"},f:[{t:2,x:{r:["data.on"],s:'_0?"On":"Off"'},p:[10,22,431]}]}]}," ",{p:[12,3,490],t:7,e:"ui-section",a:{label:"Cell"},f:[{t:4,f:[{p:[14,7,554],t:7,e:"ui-bar",a:{min:"0",max:"100",value:[{t:2,r:"data.powerLevel",p:[14,40,587]}]},f:[{t:2,x:{r:["adata.powerLevel"],s:"Math.fixed(_0)"},p:[14,61,608]},"%"]}],n:50,r:"data.hasPowercell",p:[13,5,521]},{t:4,n:51,f:[{p:[16,4,667],t:7,e:"span",a:{"class":"bad"},f:["No Cell"]}],r:"data.hasPowercell"}]}]}," ",{p:[20,1,744],t:7,e:"ui-display",a:{title:"Thermostat"},f:[{p:[21,3,779],t:7,e:"ui-section",a:{label:"Current Temperature"},f:[{p:[22,3,823],t:7,e:"span",f:[{t:2,x:{r:["adata.currentTemp"],s:"Math.round(_0)"},p:[22,9,829]},"°C"]}]}," ",{p:[24,2,894],t:7,e:"ui-section",a:{label:"Target Temperature"},f:[{p:[25,3,937],t:7,e:"span",f:[{t:2,x:{r:["adata.targetTemp"],s:"Math.round(_0)"},p:[25,9,943]},"°C"]}]}," ",{t:4,f:[{p:[28,5,1031],t:7,e:"ui-section",a:{label:"Adjust Target"},f:[{p:[29,7,1073],t:7,e:"ui-button",a:{icon:"fast-backward",state:[{t:2,x:{r:["data.targetTemp","data.minTemp"],s:'_0>_1?null:"disabled"'},p:[29,46,1112]}],action:"target",params:'{"adjust": -20}'}}," ",{p:[30,7,1218],t:7,e:"ui-button",a:{icon:"backward",state:[{t:2,x:{r:["data.targetTemp","data.minTemp"],s:'_0>_1?null:"disabled"'},p:[30,41,1252]}],action:"target",params:'{"adjust": -5}'}}," ",{p:[31,7,1357],t:7,e:"ui-button",a:{icon:"pencil",action:"target",params:'{"target": "input"}'},f:["Set"]}," ",{p:[32,7,1450],t:7,e:"ui-button",a:{icon:"forward",state:[{t:2,x:{r:["data.targetTemp","data.maxTemp"],s:'_0<_1?null:"disabled"'},p:[32,40,1483]}],action:"target",params:'{"adjust": 5}'}}," ",{p:[33,7,1587],t:7,e:"ui-button",a:{icon:"fast-forward",state:[{t:2,x:{r:["data.targetTemp","data.maxTemp"],s:'_0<_1?null:"disabled"'},p:[33,45,1625]}],action:"target",params:'{"adjust": 20}'}}]}],n:50,r:"data.open",p:[27,3,1008]}," ",{p:[36,3,1754],t:7,e:"ui-section",a:{label:"Mode"},f:[{t:4,f:[{p:[38,7,1808],t:7,e:"ui-button",a:{icon:"long-arrow-up",state:[{t:2,x:{r:["data.mode"],s:'_0=="heat"?"selected":null'},p:[38,46,1847]}],action:"mode",params:'{"mode": "heat"}'},f:["Heat"]}," ",{p:[39,7,1956],t:7,e:"ui-button",a:{icon:"long-arrow-down",state:[{t:2,x:{r:["data.mode"],s:'_0=="cool"?"selected":null'},p:[39,48,1997]}],action:"mode",params:'{"mode": "cool"}'},f:["Cool"]}," ",{p:[40,7,2106],t:7,e:"ui-button",a:{icon:"arrows-v",state:[{t:2,x:{r:["data.mode"],s:'_0=="auto"?"selected":null'},p:[40,41,2140]}],action:"mode",params:'{"mode": "auto"}'},f:["Auto"]}],n:50,r:"data.open",p:[37,3,1783]},{t:4,n:51,f:[{p:[42,4,2258],t:7,e:"span",f:[{t:2,x:{r:["text","data.mode"],s:"_0.titleCase(_1)"},p:[42,10,2264]}]}],r:"data.open"}]}]}]},e.exports=a.extend(r.exports)},{205:205}],311:[function(t,e,n){var a=t(205),r={exports:{}};r.exports.template={v:3,t:[{t:4,f:[{p:{button:[{p:[4,8,97],t:7,e:"ui-button",a:{action:"jump",params:['{"name" : ',{t:2,r:"name",p:[4,51,140]},"}"]},f:["Jump"]}," ",{p:[7,9,195],t:7,e:"ui-button",a:{action:"spawn",params:['{"name" : ',{t:2,r:"name",p:[7,53,239]},"}"]},f:["Spawn"]}]},t:7,e:"ui-display",a:{title:[{t:2,r:"name",p:[2,22,46]}],button:0},f:[" ",{p:[11,3,308],t:7,e:"ui-section",a:{label:"Description"},f:[{p:[12,5,346],t:7,e:"span",f:[{t:3,r:"desc",p:[12,11,352]}]}]}," ",{p:[14,3,390],t:7,e:"ui-section",a:{label:"Spawners left"},f:[{p:[15,5,430],t:7,e:"span",f:[{t:2,r:"amount_left",p:[15,11,436]}]}]}]}],n:52,r:"data.spawners",p:[1,1,0]}]},e.exports=a.extend(r.exports)},{205:205}],312:[function(t,e,n){var a=t(205),r={exports:{}};r.exports.template={v:3,t:[{t:4,f:[{p:[2,3,31],t:7,e:"ui-display",a:{title:[{t:2,r:"class",p:[2,22,50]}," Alarms"]},f:[{p:[3,5,74],t:7,e:"ul",f:[{t:4,f:[{p:[5,9,107],t:7,e:"li",f:[{t:2,r:".",p:[5,13,111]}]}],n:52,r:".",p:[4,7,86]},{t:4,n:51,f:[{p:[7,9,147],t:7,e:"li",f:["System Nominal"]}],r:"."}]}]}],n:52,i:"class",r:"data.alarms",p:[1,1,0]}]},e.exports=a.extend(r.exports)},{205:205}],313:[function(t,e,n){var a=t(205),r={exports:{}};r.exports.template={v:3,t:[{t:4,f:[{p:[2,3,42],t:7,e:"ui-notice",f:[{p:[3,5,59],t:7,e:"span",f:["Biological entity detected in contents. Please remove."]}]}],n:50,x:{r:["data.occupied","data.safeties"],s:"_0&&_1"},p:[1,1,0]},{t:4,f:[{p:[7,3,179],t:7,e:"ui-notice",f:[{p:[8,5,196],t:7,e:"span",f:["Contents are being disinfected. Please wait."]}]}],n:50,r:"data.uv_active",p:[6,1,153]},{t:4,n:51,f:[{p:{button:[{t:4,f:[{p:[13,25,369],t:7,e:"ui-button",a:{icon:[{t:2,x:{r:["data.locked"],s:'_0?"unlock":"lock"'},p:[13,42,386]}],action:"lock"},f:[{t:2,x:{r:["data.locked"],s:'_0?"Unlock":"Lock"'},p:[13,93,437]}]}],n:50,x:{r:["data.open"],s:"!_0"},p:[13,7,351]}," ",{t:4,f:[{p:[14,27,519],t:7,e:"ui-button",a:{icon:[{t:2,x:{r:["data.open"],s:'_0?"sign-out":"sign-in"'},p:[14,44,536]}],action:"door"},f:[{t:2,x:{r:["data.open"],s:'_0?"Close":"Open"'},p:[14,98,590]}]}],n:50,x:{r:["data.locked"],s:"!_0"},p:[14,7,499]}]},t:7,e:"ui-display",a:{title:"Storage",button:0},f:[" ",{t:4,f:[{p:[17,7,692],t:7,e:"ui-notice",f:[{p:[18,9,713],t:7,e:"span",f:["Unit Locked"]}]}],n:50,r:"data.locked",p:[16,5,665]},{t:4,n:51,f:[{t:4,n:50,x:{r:["data.open"],s:"_0"},f:[{p:[21,9,793],t:7,e:"ui-section",a:{label:"Helmet"},f:[{p:[22,11,832],t:7,e:"ui-button",a:{icon:[{t:2,x:{r:["data.helmet"],s:'_0?"square":"square-o"'},p:[22,28,849]}],state:[{t:2,x:{r:["data.helmet"],s:'_0?null:"disabled"'},p:[22,75,896]}],action:"dispense",params:'{"item": "helmet"}'},f:[{t:2,x:{r:["data.helmet"],s:'_0||"Empty"'},p:[23,59,992]}]}]}," ",{p:[25,9,1063],t:7,e:"ui-section",a:{label:"Suit"},f:[{p:[26,11,1100],t:7,e:"ui-button",a:{icon:[{t:2,x:{r:["data.suit"],s:'_0?"square":"square-o"'},p:[26,28,1117]}],state:[{t:2,x:{r:["data.suit"],s:'_0?null:"disabled"'},p:[26,74,1163]}],action:"dispense",params:'{"item": "suit"}'},f:[{t:2,x:{r:["data.suit"],s:'_0||"Empty"'},p:[27,57,1255]}]}]}," ",{p:[29,9,1324],t:7,e:"ui-section",a:{label:"Mask"},f:[{p:[30,11,1361],t:7,e:"ui-button",a:{icon:[{t:2,x:{r:["data.mask"],s:'_0?"square":"square-o"'},p:[30,28,1378]}],state:[{t:2,x:{r:["data.mask"],s:'_0?null:"disabled"'},p:[30,74,1424]}],action:"dispense",params:'{"item": "mask"}'},f:[{t:2,x:{r:["data.mask"],s:'_0||"Empty"'},p:[31,57,1516]}]}]}," ",{p:[33,9,1585],t:7,e:"ui-section",a:{label:"Storage"},f:[{p:[34,11,1625],t:7,e:"ui-button",a:{icon:[{t:2,x:{r:["data.storage"],s:'_0?"square":"square-o"'},p:[34,28,1642]}],state:[{t:2,x:{r:["data.storage"],s:'_0?null:"disabled"'},p:[34,77,1691]}],action:"dispense",params:'{"item": "storage"}'},f:[{t:2,x:{r:["data.storage"],s:'_0||"Empty"'},p:[35,60,1789]}]}]}]},{t:4,n:50,x:{r:["data.open"],s:"!(_0)"},f:[" ",{p:[38,7,1873],t:7,e:"ui-button",a:{icon:"recycle",state:[{t:2,x:{r:["data.occupied","data.safeties"],s:'_0&&_1?"disabled":null'},p:[38,40,1906]}],action:"uv"},f:["Disinfect"]}]}],r:"data.locked"}]}],r:"data.uv_active"}]},e.exports=a.extend(r.exports)},{205:205}],314:[function(t,e,n){var a=t(205),r={exports:{}};r.exports.template={v:3,t:[{p:[1,1,0],t:7,e:"ui-display",f:[{p:[2,5,18],t:7,e:"ui-section",a:{label:"Dispense"},f:[{p:[3,9,57],t:7,e:"ui-button",a:{icon:[{t:2,x:{r:["data.plasma"],s:'_0?"square":"square-o"'},p:[3,26,74]}],state:[{t:2,x:{r:["data.plasma"],s:'_0?null:"disabled"'},p:[3,74,122]}],action:"plasma"},f:["Plasma (",{t:2,x:{r:["adata.plasma"],s:"Math.round(_0)"},p:[4,37,196]},")"]}," ",{p:[5,9,247],t:7,e:"ui-button",a:{icon:[{t:2,x:{r:["data.oxygen"],s:'_0?"square":"square-o"'},p:[5,26,264]}],state:[{t:2,x:{r:["data.oxygen"],s:'_0?null:"disabled"'},p:[5,74,312]}],action:"oxygen"},f:["Oxygen (",{t:2,x:{r:["adata.oxygen"],s:"Math.round(_0)"},p:[6,37,386]},")"]}]}]}]},e.exports=a.extend(r.exports)},{205:205}],315:[function(t,e,n){var a=t(205),r={exports:{}};!function(t){"use strict";t.exports={computed:{tankPressureState:function(){var t=this.get("data.tankPressure");return t>=200?"good":t>=100?"average":"bad"}}}}(r),r.exports.template={v:3,t:[" ",{p:[14,1,295],t:7,e:"ui-notice",f:[{p:[15,3,310],t:7,e:"span",f:["The regulator ",{t:2,x:{r:["data.connected"],s:'_0?"is":"is not"'},p:[15,23,330]}," connected to a mask."]}]}," ",{p:[17,1,409],t:7,e:"ui-display",f:[{p:[18,3,425],t:7,e:"ui-section",a:{label:"Tank Pressure"},f:[{p:[19,7,467],t:7,e:"ui-bar",a:{min:"0",max:"1013",value:[{t:2,r:"data.tankPressure",p:[19,41,501]}],state:[{t:2,r:"tankPressureState",p:[20,16,540]}]},f:[{t:2,x:{r:["adata.tankPressure"],s:"Math.round(_0)"},p:[20,39,563]}," kPa"]}]}," ",{p:[22,3,631],t:7,e:"ui-section",a:{label:"Release Pressure"},f:[{p:[23,5,674],t:7,e:"ui-bar",a:{min:[{t:2,r:"data.minReleasePressure",p:[23,18,687]}],max:[{t:2,r:"data.maxReleasePressure",p:[23,52,721]}],value:[{t:2,r:"data.releasePressure",p:[24,14,764]}]},f:[{t:2,x:{r:["adata.releasePressure"],s:"Math.round(_0)"},p:[24,40,790]}," kPa"]}]}," ",{p:[26,3,861],t:7,e:"ui-section",a:{label:"Pressure Regulator"},f:[{p:[27,5,906],t:7,e:"ui-button",a:{icon:"refresh",state:[{t:2,x:{r:["data.releasePressure","data.defaultReleasePressure"],s:'_0!=_1?null:"disabled"'},p:[27,38,939]}],action:"pressure", -params:'{"pressure": "reset"}'},f:["Reset"]}," ",{p:[29,5,1095],t:7,e:"ui-button",a:{icon:"minus",state:[{t:2,x:{r:["data.releasePressure","data.minReleasePressure"],s:'_0>_1?null:"disabled"'},p:[29,36,1126]}],action:"pressure",params:'{"pressure": "min"}'},f:["Min"]}," ",{p:[31,5,1273],t:7,e:"ui-button",a:{icon:"pencil",action:"pressure",params:'{"pressure": "input"}'},f:["Set"]}," ",{p:[32,5,1368],t:7,e:"ui-button",a:{icon:"plus",state:[{t:2,x:{r:["data.releasePressure","data.maxReleasePressure"],s:'_0<_1?null:"disabled"'},p:[32,35,1398]}],action:"pressure",params:'{"pressure": "max"}'},f:["Max"]}]}]}]},e.exports=a.extend(r.exports)},{205:205}],316:[function(t,e,n){var a=t(205),r={exports:{}};r.exports.template={v:3,t:[{p:[1,1,0],t:7,e:"ui-display",a:{title:"Status"},f:[{p:[2,5,33],t:7,e:"ui-section",a:{label:"Temperature"},f:[{p:[3,9,75],t:7,e:"span",f:[{t:2,x:{r:["adata.temperature"],s:"Math.fixed(_0,2)"},p:[3,15,81]}," K"]}]}," ",{p:[5,5,151],t:7,e:"ui-section",a:{label:"Pressure"},f:[{p:[6,9,190],t:7,e:"span",f:[{t:2,x:{r:["adata.pressure"],s:"Math.fixed(_0,2)"},p:[6,15,196]}," kPa"]}]}]}," ",{p:[9,1,276],t:7,e:"ui-display",a:{title:"Controls"},f:[{p:[10,5,311],t:7,e:"ui-section",a:{label:"Power"},f:[{p:[11,9,347],t:7,e:"ui-button",a:{icon:[{t:2,x:{r:["data.on"],s:'_0?"power-off":"close"'},p:[11,26,364]}],style:[{t:2,x:{r:["data.on"],s:'_0?"selected":null'},p:[11,70,408]}],action:"power"},f:[{t:2,x:{r:["data.on"],s:'_0?"On":"Off"'},p:[12,28,469]}]}]}," ",{p:[14,5,531],t:7,e:"ui-section",a:{label:"Target Temperature"},f:[{p:[15,9,580],t:7,e:"ui-button",a:{icon:"fast-backward",style:[{t:2,x:{r:["data.target","data.min"],s:'_0==_1?"disabled":null'},p:[15,48,619]}],action:"target",params:'{"adjust": -20}'}}," ",{p:[17,9,733],t:7,e:"ui-button",a:{icon:"backward",style:[{t:2,x:{r:["data.target","data.min"],s:'_0==_1?"disabled":null'},p:[17,43,767]}],action:"target",params:'{"adjust": -5}'}}," ",{p:[19,9,880],t:7,e:"ui-button",a:{icon:"pencil",action:"target",params:'{"target": "input"}'},f:[{t:2,x:{r:["adata.target"],s:"Math.fixed(_0,2)"},p:[19,79,950]}]}," ",{p:[20,9,1003],t:7,e:"ui-button",a:{icon:"forward",style:[{t:2,x:{r:["data.target","data.max"],s:'_0==_1?"disabled":null'},p:[20,42,1036]}],action:"target",params:'{"adjust": 5}'}}," ",{p:[22,9,1148],t:7,e:"ui-button",a:{icon:"fast-forward",style:[{t:2,x:{r:["data.target","data.max"],s:'_0==_1?"disabled":null'},p:[22,47,1186]}],action:"target",params:'{"adjust": 20}'}}]}]}]},e.exports=a.extend(r.exports)},{205:205}],317:[function(t,e,n){var a=t(205),r={exports:{}};!function(t){"use strict";t.exports={data:{powerState:function(t){switch(t){case 1:return"good";default:return"bad"}}}}}(r),r.exports.template={v:3,t:[" ",{p:[13,1,173],t:7,e:"ui-notice",f:[{p:[14,2,187],t:7,e:"ui-section",a:{label:"Reconnect"},f:[{p:[15,3,221],t:7,e:"div",a:{style:"float:right"},f:[{p:[16,4,251],t:7,e:"ui-button",a:{icon:"refresh",action:"reconnect",state:[{t:2,r:"data.connected",p:[16,56,303]}]},f:["Reconnect"]}]}]}]}," ",{p:[20,1,386],t:7,e:"ui-display",a:{title:"Turbine Controller"},f:[{p:[21,2,428],t:7,e:"ui-section",a:{label:"Status"},f:[{t:4,f:[{p:[23,4,484],t:7,e:"span",a:{"class":[{t:2,x:{r:["powerState","data.online"],s:"_0(_1)"},p:[23,17,497]}]},f:[{t:2,x:{r:["data.online","data.compressor_broke","data.turbine_broke"],s:'_0&&!(_1||_2)?"Online":"Offline"'},p:[23,46,526]}]}],n:50,r:"data.working",p:[22,3,459]},{t:4,n:51,f:[{p:[25,4,638],t:7,e:"span",a:{"class":"bad"},f:["Broken"]}],r:"data.working"}," ",{p:[27,3,684],t:7,e:"div",a:{style:"float:right"},f:[{p:[28,4,714],t:7,e:"ui-button",a:{icon:"power-off",action:"power",state:[{t:2,r:"data.working",p:[28,54,764]}],style:[{t:2,x:{r:["data.online"],s:'_0?"selected":""'},p:[28,79,789]}]},f:["On"]}," ",{p:[29,4,843],t:7,e:"ui-button",a:{icon:"close",action:"power",state:[{t:2,r:"data.working",p:[29,50,889]}],style:[{t:2,x:{r:["data.online"],s:'_0?"":"selected"'},p:[29,75,914]}]},f:["Off"]}]}," ",{t:4,f:[{p:[32,4,1012],t:7,e:"br"}," [ ",{p:[33,6,1023],t:7,e:"span",a:{"class":"bad"},f:["Compressor is inoperable"]}," ]"],n:50,r:"data.compressor_broke",p:[31,3,978]}," ",{t:4,f:[{p:[36,4,1120],t:7,e:"br"}," [ ",{p:[37,6,1131],t:7,e:"span",a:{"class":"bad"},f:["Turbine is inoperable"]}," ]"],n:50,r:"data.turbine_broke",p:[35,3,1089]}]}]}," ",{p:[41,1,1223],t:7,e:"ui-display",a:{title:"Status"},f:[{p:[42,2,1253],t:7,e:"ui-section",a:{label:"Turbine Speed"},f:[{p:[43,3,1291],t:7,e:"span",f:[{t:2,x:{r:["data.working","data.rpm"],s:'_0?_1:"--"'},p:[43,9,1297]}," RPM"]}]}," ",{p:[45,2,1361],t:7,e:"ui-section",a:{label:"Internal Temp"},f:[{p:[46,3,1399],t:7,e:"span",f:[{t:2,x:{r:["data.working","data.temp"],s:'_0?_1:"--"'},p:[46,9,1405]}," K"]}]}," ",{p:[48,2,1468],t:7,e:"ui-section",a:{label:"Generated Power"},f:[{p:[49,3,1508],t:7,e:"span",f:[{t:2,x:{r:["data.working","data.power"],s:'_0?_1:"--"'},p:[49,9,1514]}]}]}]}]},e.exports=a.extend(r.exports)},{205:205}],318:[function(t,e,n){var a=t(205),r={exports:{}};!function(t){"use strict";t.exports={data:{},oninit:function(){this.on({hover:function(t){var e=this.get("data.telecrystals");e>=t.context.params.cost&&this.set("hovered",t.context.params)},unhover:function(t){this.set("hovered")}})}}}(r),r.exports.template={v:3,t:[" ",{p:{button:[{t:4,f:[{p:[23,7,482],t:7,e:"ui-button",a:{icon:"lock",action:"lock"},f:["Lock"]}],n:50,r:"data.lockable",p:[22,5,453]}]},t:7,e:"ui-display",a:{title:"Uplink",button:0},f:[" ",{p:[26,3,568],t:7,e:"ui-section",a:{label:"Telecrystals",right:0},f:[{p:[27,5,613],t:7,e:"span",a:{"class":[{t:2,x:{r:["data.telecrystals"],s:'_0>0?"good":"bad"'},p:[27,18,626]}]},f:[{t:2,r:"data.telecrystals",p:[27,62,670]}," TC"]}]}]}," ",{t:4,f:[{p:[31,3,764],t:7,e:"ui-display",f:[{p:[32,2,779],t:7,e:"ui-button",a:{action:"select",params:['{"category": "',{t:2,r:"name",p:[32,51,828]},'"}']},f:[{t:2,r:"name",p:[32,63,840]}]}," ",{t:4,f:[{p:[34,4,883],t:7,e:"ui-section",a:{label:[{t:2,r:"name",p:[34,23,902]}],candystripe:0,right:0},f:[{p:[35,3,934],t:7,e:"ui-button",a:{tooltip:[{t:2,r:"name",p:[35,23,954]},": ",{t:2,r:"desc",p:[35,33,964]}],"tooltip-side":"left",state:[{t:2,x:{r:["data.telecrystals","hovered.cost","cost","hovered.item","name"],s:'_0<_2||(_0-_1<_2&&_3!=_4)?"disabled":null'},p:[36,12,1006]}],action:"buy",params:['{"category": "',{t:2,r:"category",p:[37,40,1165]},'", "item": ',{t:2,r:"name",p:[37,63,1188]},', "cost": ',{t:2,r:"cost",p:[37,81,1206]},"}"]},v:{hover:"hover",unhover:"unhover"},f:[{t:2,r:"cost",p:[38,43,1260]}," TC"]}]}],n:52,r:"items",p:[33,2,863]}]}],n:52,r:"data.categories",p:[30,1,735]}]},e.exports=a.extend(r.exports)},{205:205}],319:[function(t,e,n){var a=t(205),r={exports:{}};r.exports.template={v:3,t:[{p:[1,1,0],t:7,e:"ui-display",a:{title:"Products"},f:[{t:4,f:[{p:[3,2,58],t:7,e:"ui-section",a:{label:[{t:2,r:"name",p:[3,21,77]}],labelcolor:[{t:2,r:"color",p:[3,43,99]}],candystripe:0,right:0},f:[{p:[4,3,132],t:7,e:"span",f:[{p:[4,9,138],t:7,e:"b",f:[{t:2,r:"amount",p:[4,12,141]}]}]}," ",{p:[5,3,166],t:7,e:"ui-button",a:{state:[{t:2,x:{r:["amount"],s:'(_0>0)?null:"disabled"'},p:[5,22,185]}],icon:[{t:2,x:{r:["amount"],s:'(_0>0)?"cart-arrow-down":"ban"'},p:[5,66,229]}],action:"vend",params:['{"key": ',{t:2,r:"key",p:[5,142,305]},"}"]},f:[{t:2,x:{r:["amount"],s:'(_0>0)?"Vend":"Sold Out"'},p:[5,152,315]}]}]}],n:52,r:"data.products",p:[2,2,32]}]}," ",{t:4,f:[{p:[10,2,434],t:7,e:"ui-display",a:{title:"Coin Slot"},f:[{p:[11,3,468],t:7,e:"ui-section",a:{label:"Coin"},f:[{p:[12,3,497],t:7,e:"span",a:{"class":[{t:2,x:{r:["data.coin"],s:'_0?"bold":null'},p:[12,16,510]}]},f:[{t:2,x:{r:["data.coin"],s:'_0?_0:"No Coin"'},p:[12,47,541]}]}," ",{p:[13,4,590],t:7,e:"ui-button",a:{icon:"arrow-circle-up",state:[{t:2,x:{r:["data.coin","data.canvend"],s:'_0&&_1?null:"disabled"'},p:[13,45,631]}],action:"eject"},f:["Eject Coin"]}]}]}],n:50,r:"data.coinslot",p:[9,1,410]}]},e.exports=a.extend(r.exports)},{205:205}],320:[function(t,e,n){var a=t(205),r={exports:{}};!function(t){"use strict";t.exports={data:{healthState:function(t){var e=this.get("data.vr_avatar.maxhealth");return t>e/1.5?"good":t>e/3?"average":"bad"}}}}(r),r.exports.template={v:3,t:[" ",{p:[14,1,292],t:7,e:"ui-display",f:[{t:4,f:[{p:[16,3,333],t:7,e:"ui-display",a:{title:"Virtual Avatar"},f:[{p:[17,4,373],t:7,e:"ui-section",a:{label:"Name"},f:[{t:2,r:"data.vr_avatar.name",p:[18,5,404]}]}," ",{p:[20,4,450],t:7,e:"ui-section",a:{label:"Status"},f:[{t:2,r:"data.vr_avatar.status",p:[21,5,483]}]}," ",{p:[23,4,531],t:7,e:"ui-section",a:{label:"Health"},f:[{p:[24,5,564],t:7,e:"ui-bar",a:{min:"0",max:[{t:2,r:"adata.vr_avatar.maxhealth",p:[24,26,585]}],value:[{t:2,r:"adata.vr_avatar.health",p:[24,64,623]}],state:[{t:2,x:{r:["healthState","adata.vr_avatar.health"],s:"_0(_1)"},p:[24,99,658]}]},f:[{t:2,x:{r:["adata.vr_avatar.health"],s:"Math.round(_0)"},p:[24,140,699]},"/",{t:2,r:"adata.vr_avatar.maxhealth",p:[24,179,738]}]}]}]}],n:50,r:"data.vr_avatar",p:[15,2,307]},{t:4,n:51,f:[{p:[28,3,826],t:7,e:"ui-display",a:{title:"Virtual Avatar"},f:["No Virtual Avatar detected"]}],r:"data.vr_avatar"}," ",{p:[32,2,922],t:7,e:"ui-display",a:{title:"VR Commands"},f:[{p:[33,3,958],t:7,e:"ui-button",a:{icon:[{t:2,x:{r:["data.toggle_open"],s:'_0?"times":"plus"'},p:[33,20,975]}],action:"toggle_open"},f:[{t:2,x:{r:["data.toggle_open"],s:'_0?"Close":"Open"'},p:[34,4,1042]}," the VR Sleeper"]}," ",{t:4,f:[{p:[37,4,1144],t:7,e:"ui-button",a:{icon:"signal",action:"vr_connect"},f:["Connect to VR"]}],n:50,r:"data.isoccupant",p:[36,3,1116]}," ",{t:4,f:[{p:[42,4,1267],t:7,e:"ui-button",a:{icon:"ban",action:"delete_avatar"},f:["Delete Virtual Avatar"]}],n:50,r:"data.vr_avatar",p:[41,3,1240]}]}]}]},e.exports=a.extend(r.exports)},{205:205}],321:[function(t,e,n){var a=t(205),r={exports:{}};r.exports.template={v:3,t:[{p:[1,1,0],t:7,e:"ui-display",f:[{t:4,f:[{p:[3,5,42],t:7,e:"ui-section",a:{label:[{t:2,r:"color",p:[3,24,61]},{t:2,x:{r:["wire"],s:'_0?" ("+_0+")":""'},p:[3,33,70]}],labelcolor:[{t:2,r:"color",p:[3,80,117]}],candystripe:0,right:0},f:[{p:[4,7,154],t:7,e:"ui-button",a:{action:"cut",params:['{"wire":"',{t:2,r:"color",p:[4,48,195]},'"}']},f:[{t:2,x:{r:["cut"],s:'_0?"Mend":"Cut"'},p:[4,61,208]}]}," ",{p:[5,7,252],t:7,e:"ui-button",a:{action:"pulse",params:['{"wire":"',{t:2,r:"color",p:[5,50,295]},'"}']},f:["Pulse"]}," ",{p:[6,7,333],t:7,e:"ui-button",a:{action:"attach",params:['{"wire":"',{t:2,r:"color",p:[6,51,377]},'"}']},f:[{t:2,x:{r:["attached"],s:'_0?"Detach":"Attach"'},p:[6,64,390]}]}]}],n:52,r:"data.wires",p:[2,3,16]}]}," ",{t:4,f:[{p:[11,3,508],t:7,e:"ui-display",f:[{t:4,f:[{p:[13,7,555],t:7,e:"ui-section",f:[{t:2,r:".",p:[13,19,567]}]}],n:52,r:"data.status",p:[12,5,526]}]}],n:50,r:"data.status",p:[10,1,485]}]},e.exports=a.extend(r.exports)},{205:205}],322:[function(t,e,n){(function(e){"use strict";var n=t(205),a=e.interopRequireDefault(n);t(194),t(1),t(190),t(193);var r=t(323),i=e.interopRequireDefault(r),o=t(324),s=t(191),p=t(192),u=e.interopRequireDefault(p);a["default"].DEBUG=/minified/.test(function(){}),Object.assign(Math,t(328)),window.initialize=function(e){window.tgui=window.tgui||new i["default"]({el:"#container",data:function(){var n=JSON.parse(e);return{constants:t(325),text:t(329),config:n.config,data:n.data,adata:n.data}}})};var c=document.getElementById("data"),l=c.textContent,d=c.getAttribute("data-ref");"{}"!==l&&(window.initialize(l),c.remove()),(0,o.act)(d,"tgui:initialize"),(0,s.loadCSS)("font-awesome.min.css");var f=new u["default"]("FontAwesome");f.check("").then(function(){return document.body.classList.add("icons")})["catch"](function(){return document.body.classList.add("no-icons")})}).call(this,t("babel/external-helpers"))},{1:1,190:190,191:191,192:192,193:193,194:194,205:205,323:323,324:324,325:325,328:328,329:329,"babel/external-helpers":"babel/external-helpers"}],323:[function(t,e,n){var a=t(205),r={exports:{}};!function(e){"use strict";var n=t(324),a=t(326);e.exports={components:{"ui-bar":t(206),"ui-button":t(207),"ui-display":t(208),"ui-input":t(209),"ui-linegraph":t(210),"ui-notice":t(211),"ui-section":t(213),"ui-subdisplay":t(214),"ui-tabs":t(215)},events:{enter:t(203).enter,space:t(203).space},transitions:{fade:t(204)},onconfig:function(){var e=this.get("config.interface"),n={ai_airlock:t(219),airalarm:t(220),"airalarm/back":t(221),"airalarm/modes":t(222),"airalarm/scrubbers":t(223),"airalarm/status":t(224),"airalarm/thresholds":t(225),"airalarm/vents":t(226),airlock_electronics:t(227),apc:t(228),atmos_alert:t(229),atmos_control:t(230),atmos_filter:t(231),atmos_mixer:t(232),atmos_pump:t(233),brig_timer:t(234),bsa:t(235),canister:t(236),cargo:t(237),cellular_emporium:t(238),chem_dispenser:t(239),chem_heater:t(240),chem_master:t(241),clockwork_slab:t(242),codex_gigas:t(243),computer_fabricator:t(244),crayon:t(245),cryo:t(246),disposal_unit:t(247),dna_vault:t(248),dogborg_sleeper:t(249),eightball:t(250),emergency_shuttle_console:t(251),engraved_message:t(252),error:t(253),"exofab - Copia":t(254),exonet_node:t(255),firealarm:t(256),gps:t(257),gulag_console:t(258),gulag_item_reclaimer:t(259),holodeck:t(260),implantchair:t(261),intellicard:t(262),keycard_auth:t(263),labor_claim_console:t(264),language_menu:t(265),launchpad_remote:t(266),mech_bay_power_console:t(267),mulebot:t(268),ntnet_relay:t(269),ntos_ai_restorer:t(270),ntos_card:t(271),ntos_configuration:t(272),ntos_file_manager:t(273),ntos_main:t(274),ntos_net_chat:t(275),ntos_net_dos:t(276),ntos_net_downloader:t(277),ntos_net_monitor:t(278),ntos_net_transfer:t(279),ntos_power_monitor:t(280),ntos_revelation:t(281),ntos_station_alert:t(282),ntos_supermatter_monitor:t(283),ntosheader:t(284),nuclear_bomb:t(285),operating_computer:t(286),ore_redemption_machine:t(287),pandemic:t(288),personal_crafting:t(289),portable_pump:t(290),portable_scrubber:t(291),power_monitor:t(292),radio:t(293),reagentgrinder:t(294),rpd:t(295),"rpd/colorsel":t(296),"rpd/dirsel":t(297),sat_control:t(298),scrubbing_types:t(299),shuttle_manipulator:t(300),"shuttle_manipulator/modification":t(301),"shuttle_manipulator/status":t(302),"shuttle_manipulator/templates":t(303),sleeper:t(304),slime_swap_body:t(305),smartvend:t(306),smes:t(307),smoke_machine:t(308),solar_control:t(309),space_heater:t(310),spawners_menu:t(311),station_alert:t(312),suit_storage_unit:t(313),tank_dispenser:t(314),tanks:t(315),thermomachine:t(316),turbine_computer:t(317),uplink:t(318),vending:t(319),vr_sleeper:t(320),wires:t(321)};e in n?this.components["interface"]=n[e]:this.components["interface"]=n.error},oninit:function(){this.observe("config.style",function(t,e,n){t&&document.body.classList.add(t),e&&document.body.classList.remove(e)})},oncomplete:function(){if(this.get("config.locked")){var t=(0,a.lock)(window.screenLeft,window.screenTop),e=t.x,r=t.y;(0,n.winset)(this.get("config.window"),"pos",e+","+r)}(0,n.winset)("mapwindow.map","focus",!0)}}}(r),r.exports.template={v:3,t:[" "," "," "," ",{p:[56,1,1874],t:7,e:"titlebar",f:[{t:3,r:"config.title",p:[56,11,1884]}]}," ",{p:[57,1,1915],t:7,e:"main",f:[{p:[58,3,1925],t:7,e:"warnings"}," ",{p:[59,3,1940],t:7,e:"interface"}]}," ",{t:4,f:[{p:[62,3,1990],t:7,e:"resize"}],n:50,r:"config.titlebar",p:[61,1,1963]}]},r.exports.components=r.exports.components||{};var i={warnings:t(218),titlebar:t(217),resize:t(212)};for(var o in i)i.hasOwnProperty(o)&&(r.exports.components[o]=i[o]);e.exports=a.extend(r.exports)},{203:203,204:204,205:205,206:206,207:207,208:208,209:209,210:210,211:211,212:212,213:213,214:214,215:215,217:217,218:218,219:219,220:220,221:221,222:222,223:223,224:224,225:225,226:226,227:227,228:228,229:229,230:230,231:231,232:232,233:233,234:234,235:235,236:236,237:237,238:238,239:239,240:240,241:241,242:242,243:243,244:244,245:245,246:246,247:247,248:248,249:249,250:250,251:251,252:252,253:253,254:254,255:255,256:256,257:257,258:258,259:259,260:260,261:261,262:262,263:263,264:264,265:265,266:266,267:267,268:268,269:269,270:270,271:271,272:272,273:273,274:274,275:275,276:276,277:277,278:278,279:279,280:280,281:281,282:282,283:283,284:284,285:285,286:286,287:287,288:288,289:289,290:290,291:291,292:292,293:293,294:294,295:295,296:296,297:297,298:298,299:299,300:300,301:301,302:302,303:303,304:304,305:305,306:306,307:307,308:308,309:309,310:310,311:311,312:312,313:313,314:314,315:315,316:316,317:317,318:318,319:319,320:320,321:321,324:324,326:326}],324:[function(t,e,n){"use strict";function a(){var t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:"";return"byond://"+e+"?"+Object.keys(t).map(function(e){return o(e)+"="+o(t[e])}).join("&")}function r(t,e){var n=arguments.length>2&&void 0!==arguments[2]?arguments[2]:{};window.location.href=a(Object.assign({src:t,action:e},n))}function i(t,e,n){var r;window.location.href=a((r={},r[t+"."+e]=n,r),"winset")}n.__esModule=!0,n.href=a,n.act=r,n.winset=i;var o=encodeURIComponent},{}],325:[function(t,e,n){"use strict";n.__esModule=!0;n.UI_INTERACTIVE=2,n.UI_UPDATE=1,n.UI_DISABLED=0,n.UI_CLOSE=-1},{}],326:[function(t,e,n){"use strict";function a(t,e){return 0>t?t=0:t+window.innerWidth>window.screen.availWidth&&(t=window.screen.availWidth-window.innerWidth),0>e?e=0:e+window.innerHeight>window.screen.availHeight&&(e=window.screen.availHeight-window.innerHeight),{x:t,y:e}}function r(t){if(t.preventDefault(),this.get("drag")){if(this.get("x")){var e=t.screenX-this.get("x")+window.screenLeft,n=t.screenY-this.get("y")+window.screenTop;if(this.get("config.locked")){var r=a(e,n);e=r.x,n=r.y}(0,s.winset)(this.get("config.window"),"pos",e+","+n)}this.set({x:t.screenX,y:t.screenY})}}function i(t,e){return t=Math.clamp(100,window.screen.width,t),e=Math.clamp(100,window.screen.height,e),{x:t,y:e}}function o(t){if(t.preventDefault(),this.get("resize")){if(this.get("x")){var e=t.screenX-this.get("x")+window.innerWidth,n=t.screenY-this.get("y")+window.innerHeight,a=i(e,n);e=a.x,n=a.y,(0,s.winset)(this.get("config.window"),"size",e+","+n)}this.set({x:t.screenX,y:t.screenY})}}n.__esModule=!0,n.lock=a,n.drag=r,n.sane=i,n.resize=o;var s=t(324)},{324:324}],327:[function(t,e,n){"use strict";function a(t,e){for(var n=t,a=Array.isArray(n),i=0,n=a?n:n[Symbol.iterator]();;){var o;if(a){if(i>=n.length)break;o=n[i++]}else{if(i=n.next(),i.done)break;o=i.value}var s=o;s.textContent.toLowerCase().includes(e)?(s.style.display="",r(s,e)):s.style.display="none"}}function r(t,e){for(var n=t.queryAll("section"),a=t.query("header").textContent.toLowerCase().includes(e),r=n,i=Array.isArray(r),o=0,r=i?r:r[Symbol.iterator]();;){var s;if(i){if(o>=r.length)break;s=r[o++]}else{if(o=r.next(),o.done)break;s=o.value}var p=s;a||p.textContent.toLowerCase().includes(e)?p.style.display="":p.style.display="none"}}n.__esModule=!0,n.filterMulti=a,n.filter=r},{}],328:[function(t,e,n){"use strict";function a(t,e,n){return Math.max(t,Math.min(n,e))}function r(t){var e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:1;return+(Math.round(t+"e"+e)+"e-"+e)}n.__esModule=!0,n.clamp=a,n.fixed=r},{}],329:[function(t,e,n){"use strict";function a(t){return t[0].toUpperCase()+t.slice(1).toLowerCase()}function r(t){return t.replace(/\w\S*/g,a)}function i(t,e){for(t=""+t;t.length1){for(var p=Array(o),u=0;o>u;u++)p[u]=arguments[u+3];n.children=p}return{$$typeof:t,type:e,key:void 0===a?null:""+a,ref:null,props:n,_owner:null}}}(),e.asyncIterator=function(t){if("function"==typeof Symbol){if(Symbol.asyncIterator){var e=t[Symbol.asyncIterator];if(null!=e)return e.call(t)}if(Symbol.iterator)return t[Symbol.iterator]()}throw new TypeError("Object is not async iterable")},e.asyncGenerator=function(){function t(t){this.value=t}function e(e){function n(t,e){return new Promise(function(n,r){var s={key:t,arg:e,resolve:n,reject:r,next:null};o?o=o.next=s:(i=o=s,a(t,e))})}function a(n,i){try{var o=e[n](i),s=o.value;s instanceof t?Promise.resolve(s.value).then(function(t){a("next",t)},function(t){a("throw",t)}):r(o.done?"return":"normal",o.value)}catch(p){r("throw",p)}}function r(t,e){switch(t){case"return":i.resolve({value:e,done:!0});break;case"throw":i.reject(e);break;default:i.resolve({value:e,done:!1})}i=i.next,i?a(i.key,i.arg):o=null}var i,o;this._invoke=n,"function"!=typeof e["return"]&&(this["return"]=void 0)}return"function"==typeof Symbol&&Symbol.asyncIterator&&(e.prototype[Symbol.asyncIterator]=function(){return this}),e.prototype.next=function(t){return this._invoke("next",t)},e.prototype["throw"]=function(t){return this._invoke("throw",t)},e.prototype["return"]=function(t){return this._invoke("return",t)},{wrap:function(t){return function(){return new e(t.apply(this,arguments))}},await:function(e){return new t(e)}}}(),e.asyncGeneratorDelegate=function(t,e){function n(n,a){return r=!0,a=new Promise(function(e){e(t[n](a))}),{done:!1,value:e(a)}}var a={},r=!1;return"function"==typeof Symbol&&Symbol.iterator&&(a[Symbol.iterator]=function(){return this}),a.next=function(t){return r?(r=!1,t):n("next",t)},"function"==typeof t["throw"]&&(a["throw"]=function(t){if(r)throw r=!1,t;return n("throw",t)}),"function"==typeof t["return"]&&(a["return"]=function(t){return n("return",t)}),a},e.asyncToGenerator=function(t){return function(){var e=t.apply(this,arguments);return new Promise(function(t,n){function a(r,i){try{var o=e[r](i),s=o.value}catch(p){return void n(p)}return o.done?void t(s):Promise.resolve(s).then(function(t){a("next",t)},function(t){a("throw",t)})}return a("next")})}},e.classCallCheck=function(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")},e.createClass=function(){function t(t,e){for(var n=0;n=0||Object.prototype.hasOwnProperty.call(t,a)&&(n[a]=t[a]);return n},e.possibleConstructorReturn=function(t,e){if(!t)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return!e||"object"!=typeof e&&"function"!=typeof e?t:e},e.selfGlobal=void 0===t?self:t,e.set=function a(t,e,n,r){var i=Object.getOwnPropertyDescriptor(t,e);if(void 0===i){var o=Object.getPrototypeOf(t);null!==o&&a(o,e,n,r)}else if("value"in i&&i.writable)i.value=n;else{var s=i.set;void 0!==s&&s.call(r,n)}return n},e.slicedToArray=function(){function t(t,e){var n=[],a=!0,r=!1,i=void 0;try{for(var o,s=t[Symbol.iterator]();!(a=(o=s.next()).done)&&(n.push(o.value),!e||n.length!==e);a=!0);}catch(p){r=!0,i=p}finally{try{!a&&s["return"]&&s["return"]()}finally{if(r)throw i}}return n}return function(e,n){if(Array.isArray(e))return e;if(Symbol.iterator in Object(e))return t(e,n);throw new TypeError("Invalid attempt to destructure non-iterable instance")}}(),e.slicedToArrayLoose=function(t,e){if(Array.isArray(t))return t;if(Symbol.iterator in Object(t)){for(var n,a=[],r=t[Symbol.iterator]();!(n=r.next()).done&&(a.push(n.value),!e||a.length!==e););return a}throw new TypeError("Invalid attempt to destructure non-iterable instance")},e.taggedTemplateLiteral=function(t,e){return Object.freeze(Object.defineProperties(t,{raw:{value:Object.freeze(e)}}))},e.taggedTemplateLiteralLoose=function(t,e){return t.raw=e,t},e.temporalRef=function(t,e,n){if(t===n)throw new ReferenceError(e+" is not defined - temporal dead zone");return t},e.temporalUndefined={},e.toArray=function(t){return Array.isArray(t)?t:Array.from(t)},e.toConsumableArray=function(t){if(Array.isArray(t)){for(var e=0,n=Array(t.length);e_1?null:"disabled"'},p:[29,36,1126]}],action:"pressure",params:'{"pressure": "min"}'},f:["Min"]}," ",{p:[31,5,1273],t:7,e:"ui-button",a:{icon:"pencil",action:"pressure",params:'{"pressure": "input"}'},f:["Set"]}," ",{p:[32,5,1368],t:7,e:"ui-button",a:{icon:"plus",state:[{t:2,x:{r:["data.releasePressure","data.maxReleasePressure"],s:'_0<_1?null:"disabled"'},p:[32,35,1398]}],action:"pressure",params:'{"pressure": "max"}'},f:["Max"]}]}]}]},e.exports=a.extend(r.exports)},{205:205}],316:[function(t,e,n){var a=t(205),r={exports:{}};r.exports.template={v:3,t:[{p:[1,1,0],t:7,e:"ui-display",a:{title:"Status"},f:[{p:[2,5,33],t:7,e:"ui-section",a:{label:"Temperature"},f:[{p:[3,9,75],t:7,e:"span",f:[{t:2,x:{r:["adata.temperature"],s:"Math.fixed(_0,2)"},p:[3,15,81]}," K"]}]}," ",{p:[5,5,151],t:7,e:"ui-section",a:{label:"Pressure"},f:[{p:[6,9,190],t:7,e:"span",f:[{t:2,x:{r:["adata.pressure"],s:"Math.fixed(_0,2)"},p:[6,15,196]}," kPa"]}]}]}," ",{p:[9,1,276],t:7,e:"ui-display",a:{title:"Controls"},f:[{p:[10,5,311],t:7,e:"ui-section",a:{label:"Power"},f:[{p:[11,9,347],t:7,e:"ui-button",a:{icon:[{t:2,x:{r:["data.on"],s:'_0?"power-off":"close"'},p:[11,26,364]}],style:[{t:2,x:{r:["data.on"],s:'_0?"selected":null'},p:[11,70,408]}],action:"power"},f:[{t:2,x:{r:["data.on"],s:'_0?"On":"Off"'},p:[12,28,469]}]}]}," ",{p:[14,5,531],t:7,e:"ui-section",a:{label:"Target Temperature"},f:[{p:[15,9,580],t:7,e:"ui-button",a:{icon:"fast-backward",style:[{t:2,x:{r:["data.target","data.min"],s:'_0==_1?"disabled":null'},p:[15,48,619]}],action:"target",params:'{"adjust": -20}'}}," ",{p:[17,9,733],t:7,e:"ui-button",a:{icon:"backward",style:[{t:2,x:{r:["data.target","data.min"],s:'_0==_1?"disabled":null'},p:[17,43,767]}],action:"target",params:'{"adjust": -5}'}}," ",{p:[19,9,880],t:7,e:"ui-button",a:{icon:"pencil",action:"target",params:'{"target": "input"}'},f:[{t:2,x:{r:["adata.target"],s:"Math.fixed(_0,2)"},p:[19,79,950]}]}," ",{p:[20,9,1003],t:7,e:"ui-button",a:{icon:"forward",style:[{t:2,x:{r:["data.target","data.max"],s:'_0==_1?"disabled":null'},p:[20,42,1036]}],action:"target",params:'{"adjust": 5}'}}," ",{p:[22,9,1148],t:7,e:"ui-button",a:{icon:"fast-forward",style:[{t:2,x:{r:["data.target","data.max"],s:'_0==_1?"disabled":null'},p:[22,47,1186]}],action:"target",params:'{"adjust": 20}'}}]}]}]},e.exports=a.extend(r.exports)},{205:205}],317:[function(t,e,n){var a=t(205),r={exports:{}};!function(t){"use strict";t.exports={data:{powerState:function(t){switch(t){case 1:return"good";default:return"bad"}}}}}(r),r.exports.template={v:3,t:[" ",{p:[13,1,173],t:7,e:"ui-notice",f:[{p:[14,2,187],t:7,e:"ui-section",a:{label:"Reconnect"},f:[{p:[15,3,221],t:7,e:"div",a:{style:"float:right"},f:[{p:[16,4,251],t:7,e:"ui-button",a:{icon:"refresh",action:"reconnect"},f:["Reconnect"]}]}]}]}," ",{p:[20,1,359],t:7,e:"ui-display",a:{title:"Turbine Controller"},f:[{p:[21,2,401],t:7,e:"ui-section",a:{label:"Status"},f:[{t:4,f:[{p:[23,4,456],t:7,e:"span",a:{"class":"bad"},f:["Broken"]}],n:50,r:"data.broken",p:[22,3,432]},{t:4,n:51,f:[{p:[25,4,504],t:7,e:"span",a:{"class":[{t:2,x:{r:["powerState","data.online"],s:"_0(_1)"},p:[25,17,517]}]},f:[{t:2,x:{r:["data.online","data.compressor_broke","data.turbine_broke"],s:'_0&&!(_1||_2)?"Online":"Offline"'},p:[25,46,546]}]}],r:"data.broken"}," ",{p:[27,3,656],t:7,e:"div",a:{style:"float:right"},f:[{p:[28,4,686],t:7,e:"ui-button",a:{icon:"power-off",action:"power-on",state:[{t:2,r:"data.broken",p:[28,57,739]}],style:[{t:2,x:{r:["data.online"],s:'_0?"selected":""'},p:[28,81,763]}]},f:["On"]}," ",{p:[29,4,817],t:7,e:"ui-button",a:{icon:"close",action:"power-off",state:[{t:2,r:"data.broken",p:[29,54,867]}],style:[{t:2,x:{r:["data.online"],s:'_0?"":"selected"'},p:[29,78,891]}]},f:["Off"]}]}," ",{t:4,f:[{p:[32,4,989],t:7,e:"br"}," [ ",{p:[33,6,1e3],t:7,e:"span",a:{"class":"bad"},f:["Compressor is inoperable"]}," ]"],n:50,r:"data.compressor_broke",p:[31,3,955]}," ",{t:4,f:[{p:[36,4,1097],t:7,e:"br"}," [ ",{p:[37,6,1108],t:7,e:"span",a:{"class":"bad"},f:["Turbine is inoperable"]}," ]"],n:50,r:"data.turbine_broke",p:[35,3,1066]}]}]}," ",{p:[41,1,1200],t:7,e:"ui-display",a:{title:"Status"},f:[{p:[42,2,1230],t:7,e:"ui-section",a:{label:"Turbine Speed"},f:[{p:[43,3,1268],t:7,e:"span",f:[{t:2,x:{r:["data.broken","data.rpm"],s:'_0?"--":_1'},p:[43,9,1274]}," RPM"]}]}," ",{p:[45,2,1337],t:7,e:"ui-section",a:{label:"Internal Temp"},f:[{p:[46,3,1375],t:7,e:"span",f:[{t:2,x:{r:["data.broken","data.temp"],s:'_0?"--":_1'},p:[46,9,1381]}," K"]}]}," ",{p:[48,2,1443],t:7,e:"ui-section",a:{label:"Generated Power"},f:[{p:[49,3,1483],t:7,e:"span",f:[{t:2,x:{r:["data.broken","data.power"],s:'_0?"--":_1'},p:[49,9,1489]}]}]}]}]},e.exports=a.extend(r.exports)},{205:205}],318:[function(t,e,n){var a=t(205),r={exports:{}};!function(t){"use strict";t.exports={data:{},oninit:function(){this.on({hover:function(t){var e=this.get("data.telecrystals");e>=t.context.params.cost&&this.set("hovered",t.context.params)},unhover:function(t){this.set("hovered")}})}}}(r),r.exports.template={v:3,t:[" ",{p:{button:[{t:4,f:[{p:[23,7,482],t:7,e:"ui-button",a:{icon:"lock",action:"lock"},f:["Lock"]}],n:50,r:"data.lockable",p:[22,5,453]}]},t:7,e:"ui-display",a:{title:"Uplink",button:0},f:[" ",{p:[26,3,568],t:7,e:"ui-section",a:{label:"Telecrystals",right:0},f:[{p:[27,5,613],t:7,e:"span",a:{"class":[{t:2,x:{r:["data.telecrystals"],s:'_0>0?"good":"bad"'},p:[27,18,626]}]},f:[{t:2,r:"data.telecrystals",p:[27,62,670]}," TC"]}]}]}," ",{t:4,f:[{p:[31,3,764],t:7,e:"ui-display",f:[{p:[32,2,779],t:7,e:"ui-button",a:{action:"select",params:['{"category": "',{t:2,r:"name",p:[32,51,828]},'"}']},f:[{t:2,r:"name",p:[32,63,840]}]}," ",{t:4,f:[{p:[34,4,883],t:7,e:"ui-section",a:{label:[{t:2,r:"name",p:[34,23,902]}],candystripe:0,right:0},f:[{p:[35,3,934],t:7,e:"ui-button",a:{tooltip:[{t:2,r:"name",p:[35,23,954]},": ",{t:2,r:"desc",p:[35,33,964]}],"tooltip-side":"left",state:[{t:2,x:{r:["data.telecrystals","hovered.cost","cost","hovered.item","name"],s:'_0<_2||(_0-_1<_2&&_3!=_4)?"disabled":null'},p:[36,12,1006]}],action:"buy",params:['{"category": "',{t:2,r:"category",p:[37,40,1165]},'", "item": ',{t:2,r:"name",p:[37,63,1188]},', "cost": ',{t:2,r:"cost",p:[37,81,1206]},"}"]},v:{hover:"hover",unhover:"unhover"},f:[{t:2,r:"cost",p:[38,43,1260]}," TC"]}]}],n:52,r:"items",p:[33,2,863]}]}],n:52,r:"data.categories",p:[30,1,735]}]},e.exports=a.extend(r.exports)},{205:205}],319:[function(t,e,n){var a=t(205),r={exports:{}};r.exports.template={v:3,t:[{p:[1,1,0],t:7,e:"ui-display",a:{title:"Products"},f:[{t:4,f:[{p:[3,2,58],t:7,e:"ui-section",a:{label:[{t:2,r:"name",p:[3,21,77]}],labelcolor:[{t:2,r:"color",p:[3,43,99]}],candystripe:0,right:0},f:[{p:[4,3,132],t:7,e:"span",f:[{p:[4,9,138],t:7,e:"b",f:[{t:2,r:"amount",p:[4,12,141]}]}]}," ",{p:[5,3,166],t:7,e:"ui-button",a:{state:[{t:2,x:{r:["amount"],s:'(_0>0)?null:"disabled"'},p:[5,22,185]}],icon:[{t:2,x:{r:["amount"],s:'(_0>0)?"cart-arrow-down":"ban"'},p:[5,66,229]}],action:"vend",params:['{"key": ',{t:2,r:"key",p:[5,142,305]},"}"]},f:[{t:2,x:{r:["amount"],s:'(_0>0)?"Vend":"Sold Out"'},p:[5,152,315]}]}]}],n:52,r:"data.products",p:[2,2,32]}]}," ",{t:4,f:[{p:[10,2,434],t:7,e:"ui-display",a:{title:"Coin Slot"},f:[{p:[11,3,468],t:7,e:"ui-section",a:{label:"Coin"},f:[{p:[12,3,497],t:7,e:"span",a:{"class":[{t:2,x:{r:["data.coin"],s:'_0?"bold":null'},p:[12,16,510]}]},f:[{t:2,x:{r:["data.coin"],s:'_0?_0:"No Coin"'},p:[12,47,541]}]}," ",{p:[13,4,590],t:7,e:"ui-button",a:{icon:"arrow-circle-up",state:[{t:2,x:{r:["data.coin","data.canvend"],s:'_0&&_1?null:"disabled"'},p:[13,45,631]}],action:"eject"},f:["Eject Coin"]}]}]}],n:50,r:"data.coinslot",p:[9,1,410]}]},e.exports=a.extend(r.exports)},{205:205}],320:[function(t,e,n){var a=t(205),r={exports:{}};!function(t){"use strict";t.exports={data:{healthState:function(t){var e=this.get("data.vr_avatar.maxhealth");return t>e/1.5?"good":t>e/3?"average":"bad"}}}}(r),r.exports.template={v:3,t:[" ",{p:[14,1,292],t:7,e:"ui-display",f:[{t:4,f:[{p:[16,3,333],t:7,e:"ui-display",a:{title:"Virtual Avatar"},f:[{p:[17,4,373],t:7,e:"ui-section",a:{label:"Name"},f:[{t:2,r:"data.vr_avatar.name",p:[18,5,404]}]}," ",{p:[20,4,450],t:7,e:"ui-section",a:{label:"Status"},f:[{t:2,r:"data.vr_avatar.status",p:[21,5,483]}]}," ",{p:[23,4,531],t:7,e:"ui-section",a:{label:"Health"},f:[{p:[24,5,564],t:7,e:"ui-bar",a:{min:"0",max:[{t:2,r:"adata.vr_avatar.maxhealth",p:[24,26,585]}],value:[{t:2,r:"adata.vr_avatar.health",p:[24,64,623]}],state:[{t:2,x:{r:["healthState","adata.vr_avatar.health"],s:"_0(_1)"},p:[24,99,658]}]},f:[{t:2,x:{r:["adata.vr_avatar.health"],s:"Math.round(_0)"},p:[24,140,699]},"/",{t:2,r:"adata.vr_avatar.maxhealth",p:[24,179,738]}]}]}]}],n:50,r:"data.vr_avatar",p:[15,2,307]},{t:4,n:51,f:[{p:[28,3,826],t:7,e:"ui-display",a:{title:"Virtual Avatar"},f:["No Virtual Avatar detected"]}],r:"data.vr_avatar"}," ",{p:[32,2,922],t:7,e:"ui-display",a:{title:"VR Commands"},f:[{p:[33,3,958],t:7,e:"ui-button",a:{icon:[{t:2,x:{r:["data.toggle_open"],s:'_0?"times":"plus"'},p:[33,20,975]}],action:"toggle_open"},f:[{t:2,x:{r:["data.toggle_open"],s:'_0?"Close":"Open"'},p:[34,4,1042]}," the VR Sleeper"]}," ",{t:4,f:[{p:[37,4,1144],t:7,e:"ui-button",a:{icon:"signal",action:"vr_connect"},f:["Connect to VR"]}],n:50,r:"data.isoccupant",p:[36,3,1116]}," ",{t:4,f:[{p:[42,4,1267],t:7,e:"ui-button",a:{icon:"ban",action:"delete_avatar"},f:["Delete Virtual Avatar"]}],n:50,r:"data.vr_avatar",p:[41,3,1240]}]}]}]},e.exports=a.extend(r.exports)},{205:205}],321:[function(t,e,n){var a=t(205),r={exports:{}};r.exports.template={v:3,t:[{p:[1,1,0],t:7,e:"ui-display",f:[{t:4,f:[{p:[3,5,42],t:7,e:"ui-section",a:{label:[{t:2,r:"color",p:[3,24,61]},{t:2,x:{r:["wire"],s:'_0?" ("+_0+")":""'},p:[3,33,70]}],labelcolor:[{t:2,r:"color",p:[3,80,117]}],candystripe:0,right:0},f:[{p:[4,7,154],t:7,e:"ui-button",a:{action:"cut",params:['{"wire":"',{t:2,r:"color",p:[4,48,195]},'"}']},f:[{t:2,x:{r:["cut"],s:'_0?"Mend":"Cut"'},p:[4,61,208]}]}," ",{p:[5,7,252],t:7,e:"ui-button",a:{action:"pulse",params:['{"wire":"',{t:2,r:"color",p:[5,50,295]},'"}']},f:["Pulse"]}," ",{p:[6,7,333],t:7,e:"ui-button",a:{action:"attach",params:['{"wire":"',{t:2,r:"color",p:[6,51,377]},'"}']},f:[{t:2,x:{r:["attached"],s:'_0?"Detach":"Attach"'},p:[6,64,390]}]}]}],n:52,r:"data.wires",p:[2,3,16]}]}," ",{t:4,f:[{p:[11,3,508],t:7,e:"ui-display",f:[{t:4,f:[{p:[13,7,555],t:7,e:"ui-section",f:[{t:2,r:".",p:[13,19,567]}]}],n:52,r:"data.status",p:[12,5,526]}]}],n:50,r:"data.status",p:[10,1,485]}]},e.exports=a.extend(r.exports)},{205:205}],322:[function(t,e,n){(function(e){"use strict";var n=t(205),a=e.interopRequireDefault(n);t(194),t(1),t(190),t(193);var r=t(323),i=e.interopRequireDefault(r),o=t(324),s=t(191),p=t(192),u=e.interopRequireDefault(p);a["default"].DEBUG=/minified/.test(function(){}),Object.assign(Math,t(328)),window.initialize=function(e){window.tgui=window.tgui||new i["default"]({el:"#container",data:function(){var n=JSON.parse(e);return{constants:t(325),text:t(329),config:n.config,data:n.data,adata:n.data}}})};var c=document.getElementById("data"),l=c.textContent,d=c.getAttribute("data-ref");"{}"!==l&&(window.initialize(l),c.remove()),(0,o.act)(d,"tgui:initialize"),(0,s.loadCSS)("font-awesome.min.css");var f=new u["default"]("FontAwesome");f.check("").then(function(){return document.body.classList.add("icons")})["catch"](function(){return document.body.classList.add("no-icons")})}).call(this,t("babel/external-helpers"))},{1:1,190:190,191:191,192:192,193:193,194:194,205:205,323:323,324:324,325:325,328:328,329:329,"babel/external-helpers":"babel/external-helpers"}],323:[function(t,e,n){var a=t(205),r={exports:{}};!function(e){"use strict";var n=t(324),a=t(326);e.exports={components:{"ui-bar":t(206),"ui-button":t(207),"ui-display":t(208),"ui-input":t(209),"ui-linegraph":t(210),"ui-notice":t(211),"ui-section":t(213),"ui-subdisplay":t(214),"ui-tabs":t(215)},events:{enter:t(203).enter,space:t(203).space},transitions:{fade:t(204)},onconfig:function(){var e=this.get("config.interface"),n={ai_airlock:t(219),airalarm:t(220),"airalarm/back":t(221),"airalarm/modes":t(222),"airalarm/scrubbers":t(223),"airalarm/status":t(224),"airalarm/thresholds":t(225),"airalarm/vents":t(226),airlock_electronics:t(227),apc:t(228),atmos_alert:t(229),atmos_control:t(230),atmos_filter:t(231),atmos_mixer:t(232),atmos_pump:t(233),brig_timer:t(234),bsa:t(235),canister:t(236),cargo:t(237),cellular_emporium:t(238),chem_dispenser:t(239),chem_heater:t(240),chem_master:t(241),clockwork_slab:t(242),codex_gigas:t(243),computer_fabricator:t(244),crayon:t(245),cryo:t(246),disposal_unit:t(247),dna_vault:t(248),dogborg_sleeper:t(249),eightball:t(250),emergency_shuttle_console:t(251),engraved_message:t(252),error:t(253),"exofab - Copia":t(254),exonet_node:t(255),firealarm:t(256),gps:t(257),gulag_console:t(258),gulag_item_reclaimer:t(259),holodeck:t(260),implantchair:t(261),intellicard:t(262),keycard_auth:t(263),labor_claim_console:t(264),language_menu:t(265),launchpad_remote:t(266),mech_bay_power_console:t(267),mulebot:t(268),ntnet_relay:t(269),ntos_ai_restorer:t(270),ntos_card:t(271),ntos_configuration:t(272),ntos_file_manager:t(273),ntos_main:t(274),ntos_net_chat:t(275),ntos_net_dos:t(276),ntos_net_downloader:t(277),ntos_net_monitor:t(278),ntos_net_transfer:t(279),ntos_power_monitor:t(280),ntos_revelation:t(281),ntos_station_alert:t(282),ntos_supermatter_monitor:t(283),ntosheader:t(284),nuclear_bomb:t(285),operating_computer:t(286),ore_redemption_machine:t(287),pandemic:t(288),personal_crafting:t(289),portable_pump:t(290),portable_scrubber:t(291),power_monitor:t(292),radio:t(293),reagentgrinder:t(294),rpd:t(295),"rpd/colorsel":t(296),"rpd/dirsel":t(297),sat_control:t(298),scrubbing_types:t(299),shuttle_manipulator:t(300),"shuttle_manipulator/modification":t(301),"shuttle_manipulator/status":t(302),"shuttle_manipulator/templates":t(303),sleeper:t(304),slime_swap_body:t(305),smartvend:t(306),smes:t(307),smoke_machine:t(308),solar_control:t(309),space_heater:t(310),spawners_menu:t(311),station_alert:t(312),suit_storage_unit:t(313),tank_dispenser:t(314),tanks:t(315),thermomachine:t(316),turbine_computer:t(317),uplink:t(318),vending:t(319),vr_sleeper:t(320),wires:t(321)};e in n?this.components["interface"]=n[e]:this.components["interface"]=n.error},oninit:function(){this.observe("config.style",function(t,e,n){t&&document.body.classList.add(t),e&&document.body.classList.remove(e)})},oncomplete:function(){if(this.get("config.locked")){var t=(0,a.lock)(window.screenLeft,window.screenTop),e=t.x,r=t.y;(0,n.winset)(this.get("config.window"),"pos",e+","+r)}(0,n.winset)("mapwindow.map","focus",!0)}}}(r),r.exports.template={v:3,t:[" "," "," "," ",{p:[56,1,1874],t:7,e:"titlebar",f:[{t:3,r:"config.title",p:[56,11,1884]}]}," ",{p:[57,1,1915],t:7,e:"main",f:[{p:[58,3,1925],t:7,e:"warnings"}," ",{p:[59,3,1940],t:7,e:"interface"}]}," ",{t:4,f:[{p:[62,3,1990],t:7,e:"resize"}],n:50,r:"config.titlebar",p:[61,1,1963]}]},r.exports.components=r.exports.components||{};var i={warnings:t(218),titlebar:t(217),resize:t(212)};for(var o in i)i.hasOwnProperty(o)&&(r.exports.components[o]=i[o]);e.exports=a.extend(r.exports)},{203:203,204:204,205:205,206:206,207:207,208:208,209:209,210:210,211:211,212:212,213:213,214:214,215:215,217:217,218:218,219:219,220:220,221:221,222:222,223:223,224:224,225:225,226:226,227:227,228:228,229:229,230:230,231:231,232:232,233:233,234:234,235:235,236:236,237:237,238:238,239:239,240:240,241:241,242:242,243:243,244:244,245:245,246:246,247:247,248:248,249:249,250:250,251:251,252:252,253:253,254:254,255:255,256:256,257:257,258:258,259:259,260:260,261:261,262:262,263:263,264:264,265:265,266:266,267:267,268:268,269:269,270:270,271:271,272:272,273:273,274:274,275:275,276:276,277:277,278:278,279:279,280:280,281:281,282:282,283:283,284:284,285:285,286:286,287:287,288:288,289:289,290:290,291:291,292:292,293:293,294:294,295:295,296:296,297:297,298:298,299:299,300:300,301:301,302:302,303:303,304:304,305:305,306:306,307:307,308:308,309:309,310:310,311:311,312:312,313:313,314:314,315:315,316:316,317:317,318:318,319:319,320:320,321:321,324:324,326:326}],324:[function(t,e,n){"use strict";function a(){var t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:"";return"byond://"+e+"?"+Object.keys(t).map(function(e){return o(e)+"="+o(t[e])}).join("&")}function r(t,e){var n=arguments.length>2&&void 0!==arguments[2]?arguments[2]:{};window.location.href=a(Object.assign({src:t,action:e},n))}function i(t,e,n){var r;window.location.href=a((r={},r[t+"."+e]=n,r),"winset")}n.__esModule=!0,n.href=a,n.act=r,n.winset=i;var o=encodeURIComponent},{}],325:[function(t,e,n){"use strict";n.__esModule=!0;n.UI_INTERACTIVE=2,n.UI_UPDATE=1,n.UI_DISABLED=0,n.UI_CLOSE=-1},{}],326:[function(t,e,n){"use strict";function a(t,e){return 0>t?t=0:t+window.innerWidth>window.screen.availWidth&&(t=window.screen.availWidth-window.innerWidth),0>e?e=0:e+window.innerHeight>window.screen.availHeight&&(e=window.screen.availHeight-window.innerHeight),{x:t,y:e}}function r(t){if(t.preventDefault(),this.get("drag")){if(this.get("x")){var e=t.screenX-this.get("x")+window.screenLeft,n=t.screenY-this.get("y")+window.screenTop;if(this.get("config.locked")){var r=a(e,n);e=r.x,n=r.y}(0,s.winset)(this.get("config.window"),"pos",e+","+n)}this.set({x:t.screenX,y:t.screenY})}}function i(t,e){return t=Math.clamp(100,window.screen.width,t),e=Math.clamp(100,window.screen.height,e),{x:t,y:e}}function o(t){if(t.preventDefault(),this.get("resize")){if(this.get("x")){var e=t.screenX-this.get("x")+window.innerWidth,n=t.screenY-this.get("y")+window.innerHeight,a=i(e,n);e=a.x,n=a.y,(0,s.winset)(this.get("config.window"),"size",e+","+n)}this.set({x:t.screenX,y:t.screenY})}}n.__esModule=!0,n.lock=a,n.drag=r,n.sane=i,n.resize=o;var s=t(324)},{324:324}],327:[function(t,e,n){"use strict";function a(t,e){for(var n=t,a=Array.isArray(n),i=0,n=a?n:n[Symbol.iterator]();;){var o;if(a){if(i>=n.length)break;o=n[i++]}else{if(i=n.next(),i.done)break;o=i.value}var s=o;s.textContent.toLowerCase().includes(e)?(s.style.display="",r(s,e)):s.style.display="none"}}function r(t,e){for(var n=t.queryAll("section"),a=t.query("header").textContent.toLowerCase().includes(e),r=n,i=Array.isArray(r),o=0,r=i?r:r[Symbol.iterator]();;){var s;if(i){if(o>=r.length)break;s=r[o++]}else{if(o=r.next(),o.done)break;s=o.value}var p=s;a||p.textContent.toLowerCase().includes(e)?p.style.display="":p.style.display="none"}}n.__esModule=!0,n.filterMulti=a,n.filter=r},{}],328:[function(t,e,n){"use strict";function a(t,e,n){return Math.max(t,Math.min(n,e))}function r(t){var e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:1;return+(Math.round(t+"e"+e)+"e-"+e)}n.__esModule=!0,n.clamp=a,n.fixed=r},{}],329:[function(t,e,n){"use strict";function a(t){return t[0].toUpperCase()+t.slice(1).toLowerCase()}function r(t){return t.replace(/\w\S*/g,a)}function i(t,e){for(t=""+t;t.length1){for(var p=Array(o),u=0;o>u;u++)p[u]=arguments[u+3];n.children=p}return{$$typeof:t,type:e,key:void 0===a?null:""+a,ref:null,props:n,_owner:null}}}(),e.asyncIterator=function(t){if("function"==typeof Symbol){if(Symbol.asyncIterator){var e=t[Symbol.asyncIterator];if(null!=e)return e.call(t)}if(Symbol.iterator)return t[Symbol.iterator]()}throw new TypeError("Object is not async iterable")},e.asyncGenerator=function(){function t(t){this.value=t}function e(e){function n(t,e){return new Promise(function(n,r){var s={key:t,arg:e,resolve:n,reject:r,next:null};o?o=o.next=s:(i=o=s,a(t,e))})}function a(n,i){try{var o=e[n](i),s=o.value;s instanceof t?Promise.resolve(s.value).then(function(t){a("next",t)},function(t){a("throw",t)}):r(o.done?"return":"normal",o.value)}catch(p){r("throw",p)}}function r(t,e){switch(t){case"return":i.resolve({value:e,done:!0});break;case"throw":i.reject(e);break;default:i.resolve({value:e,done:!1})}i=i.next,i?a(i.key,i.arg):o=null}var i,o;this._invoke=n,"function"!=typeof e["return"]&&(this["return"]=void 0)}return"function"==typeof Symbol&&Symbol.asyncIterator&&(e.prototype[Symbol.asyncIterator]=function(){return this}),e.prototype.next=function(t){return this._invoke("next",t)},e.prototype["throw"]=function(t){return this._invoke("throw",t)},e.prototype["return"]=function(t){return this._invoke("return",t)},{wrap:function(t){return function(){return new e(t.apply(this,arguments))}},await:function(e){return new t(e)}}}(),e.asyncGeneratorDelegate=function(t,e){function n(n,a){return r=!0,a=new Promise(function(e){e(t[n](a))}),{done:!1,value:e(a)}}var a={},r=!1;return"function"==typeof Symbol&&Symbol.iterator&&(a[Symbol.iterator]=function(){return this}),a.next=function(t){return r?(r=!1,t):n("next",t)},"function"==typeof t["throw"]&&(a["throw"]=function(t){if(r)throw r=!1,t;return n("throw",t)}),"function"==typeof t["return"]&&(a["return"]=function(t){return n("return",t)}),a},e.asyncToGenerator=function(t){return function(){var e=t.apply(this,arguments);return new Promise(function(t,n){function a(r,i){try{var o=e[r](i),s=o.value}catch(p){return void n(p)}return o.done?void t(s):Promise.resolve(s).then(function(t){a("next",t)},function(t){a("throw",t)})}return a("next")})}},e.classCallCheck=function(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")},e.createClass=function(){function t(t,e){for(var n=0;n=0||Object.prototype.hasOwnProperty.call(t,a)&&(n[a]=t[a]);return n},e.possibleConstructorReturn=function(t,e){if(!t)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return!e||"object"!=typeof e&&"function"!=typeof e?t:e},e.selfGlobal=void 0===t?self:t,e.set=function a(t,e,n,r){var i=Object.getOwnPropertyDescriptor(t,e);if(void 0===i){var o=Object.getPrototypeOf(t);null!==o&&a(o,e,n,r)}else if("value"in i&&i.writable)i.value=n;else{var s=i.set;void 0!==s&&s.call(r,n)}return n},e.slicedToArray=function(){function t(t,e){var n=[],a=!0,r=!1,i=void 0;try{for(var o,s=t[Symbol.iterator]();!(a=(o=s.next()).done)&&(n.push(o.value),!e||n.length!==e);a=!0);}catch(p){r=!0,i=p}finally{try{!a&&s["return"]&&s["return"]()}finally{if(r)throw i}}return n}return function(e,n){if(Array.isArray(e))return e;if(Symbol.iterator in Object(e))return t(e,n);throw new TypeError("Invalid attempt to destructure non-iterable instance")}}(),e.slicedToArrayLoose=function(t,e){if(Array.isArray(t))return t;if(Symbol.iterator in Object(t)){for(var n,a=[],r=t[Symbol.iterator]();!(n=r.next()).done&&(a.push(n.value),!e||a.length!==e););return a}throw new TypeError("Invalid attempt to destructure non-iterable instance")},e.taggedTemplateLiteral=function(t,e){return Object.freeze(Object.defineProperties(t,{raw:{value:Object.freeze(e)}}))},e.taggedTemplateLiteralLoose=function(t,e){return t.raw=e,t},e.temporalRef=function(t,e,n){if(t===n)throw new ReferenceError(e+" is not defined - temporal dead zone");return t},e.temporalUndefined={},e.toArray=function(t){return Array.isArray(t)?t:Array.from(t)},e.toConsumableArray=function(t){if(Array.isArray(t)){for(var e=0,n=Array(t.length);e Date: Sun, 3 Dec 2017 06:14:14 -0600 Subject: [PATCH 21/66] Update plushes.dm --- code/game/objects/items/plushes.dm | 4 ---- 1 file changed, 4 deletions(-) diff --git a/code/game/objects/items/plushes.dm b/code/game/objects/items/plushes.dm index 29e3b59d3f..8bd5d570e2 100644 --- a/code/game/objects/items/plushes.dm +++ b/code/game/objects/items/plushes.dm @@ -503,9 +503,5 @@ icon_state = "plushie_slime" item_state = "plushie_slime" attack_verb = list("blorbled", "slimed", "absorbed") -<<<<<<< HEAD - squeak_override = list('sound/effects/blobattack.ogg' = 1) -======= squeak_override = list('sound/effects/blobattack.ogg' = 1) gender = FEMALE //given all the jokes and drawings, I'm not sure the xenobiologists would make a slimeboy ->>>>>>> 502905f... Plushie relationships! (#33184) From 96a064258fac9937f54c87573756bd251be9cc33 Mon Sep 17 00:00:00 2001 From: checkraisefold Date: Sun, 3 Dec 2017 10:41:04 -0800 Subject: [PATCH 22/66] Spellcheck (#33214) --- code/modules/integrated_electronics/subtypes/manipulation.dm | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/code/modules/integrated_electronics/subtypes/manipulation.dm b/code/modules/integrated_electronics/subtypes/manipulation.dm index bc22204a2d..813b77d6c2 100644 --- a/code/modules/integrated_electronics/subtypes/manipulation.dm +++ b/code/modules/integrated_electronics/subtypes/manipulation.dm @@ -6,8 +6,8 @@ desc = "This somewhat complicated system allows one to slot in a gun, direct it towards a position, and remotely fire it." extended_desc = "The firing mechanism can slot in any energy weapon. \ The first and second inputs need to be numbers. They are coordinates for the gun to fire at, relative to the machine itself. \ - The 'fire' activator will cause the mechanism to attempt to fire the weapon at the coordinates, if possible. Mode is switch between\ - letal(TRUE) or stun(FALSE) modes.It uses internal battery of weapon." + The 'fire' activator will cause the mechanism to attempt to fire the weapon at the coordinates, if possible. Mode is switch between \ + lethal (TRUE) or stun (FALSE) modes.It uses internal battery of weapon." complexity = 20 w_class = WEIGHT_CLASS_SMALL size = 3 From b1e15a0da21e75b9a212d1ff150fa8050c59fed6 Mon Sep 17 00:00:00 2001 From: jammer312 Date: Sun, 3 Dec 2017 21:44:58 +0300 Subject: [PATCH 24/66] Crash to timers and INFINITY check to beams. (#33219) * beams * timers * >= instead of != * whooops --- code/controllers/subsystem/timer.dm | 3 +++ code/datums/beam.dm | 3 ++- 2 files changed, 5 insertions(+), 1 deletion(-) diff --git a/code/controllers/subsystem/timer.dm b/code/controllers/subsystem/timer.dm index eca88d5126..3a2ca82bcd 100644 --- a/code/controllers/subsystem/timer.dm +++ b/code/controllers/subsystem/timer.dm @@ -357,6 +357,9 @@ SUBSYSTEM_DEF(timer) wait = max(wait, 0) + if(wait >= INFINITY) + CRASH("Attempted to create timer with INFINITY delay") + var/hash if (flags & TIMER_UNIQUE) diff --git a/code/datums/beam.dm b/code/datums/beam.dm index 252a305af2..c1a75c8b7e 100644 --- a/code/datums/beam.dm +++ b/code/datums/beam.dm @@ -29,7 +29,8 @@ icon = beam_icon icon_state = beam_icon_state beam_type = btype - addtimer(CALLBACK(src,.proc/End), time) + if(time < INFINITY) + addtimer(CALLBACK(src,.proc/End), time) /datum/beam/proc/Start() Draw() From 5621507b4a0f96fb2dc43851ab53177acb697133 Mon Sep 17 00:00:00 2001 From: Ashe Higgs Date: Sun, 3 Dec 2017 13:53:58 -0500 Subject: [PATCH 26/66] Adds emergency lights, built into light fixtures --- .../gamemodes/malfunction/Malf_Modules.dm | 27 ++++ code/modules/power/apc.dm | 10 ++ code/modules/power/cell.dm | 14 ++ code/modules/power/lighting.dm | 125 +++++++++++++++++- .../research/designs/autolathe_designs.dm | 8 ++ icons/mob/actions/actions_AI.dmi | Bin 8198 -> 8853 bytes tgui/src/interfaces/apc.ract | 9 ++ 7 files changed, 187 insertions(+), 6 deletions(-) diff --git a/code/game/gamemodes/malfunction/Malf_Modules.dm b/code/game/gamemodes/malfunction/Malf_Modules.dm index 9be9e59cab..1c17893a28 100644 --- a/code/game/gamemodes/malfunction/Malf_Modules.dm +++ b/code/game/gamemodes/malfunction/Malf_Modules.dm @@ -734,6 +734,33 @@ GLOBAL_LIST_INIT(blacklisted_malf_machines, typecacheof(list( owner.playsound_local(owner, "sparks", 50, 0) +//Disable Emergency Lights +/datum/AI_Module/small/emergency_lights + module_name = "Disable Emergency Lights" + mod_pick_name = "disable_emergency_lights" + description = "Cuts emergency lights across the entire station. If power is lost to light fixtures, they will not attempt to fall back on emergency power reserves." + cost = 10 + one_purchase = TRUE + power_type = /datum/action/innate/ai/emergency_lights + unlock_text = "You hook into the powernet and locate the connections between light fixtures and their fallbacks." + unlock_sound = "sparks" + +/datum/action/innate/ai/emergency_lights + name = "Disable Emergency Lights" + desc = "Disables all emergency lighting. Note that emergency lights can be restored through reboot at an APC." + button_icon_state = "emergency_lights" + uses = 1 + +/datum/action/innate/ai/emergency_lights/Activate() + for(var/obj/machinery/light/L in GLOB.machines) + if(L.z in GLOB.station_z_levels) + L.no_emergency = TRUE + INVOKE_ASYNC(L, /obj/machinery/light/.proc/update, FALSE) + CHECK_TICK + to_chat(owner, "Emergency light connections severed.") + owner.playsound_local(owner, 'sound/effects/light_flicker.ogg', 50, FALSE) + + //Reactivate Camera Network: Reactivates up to 30 cameras across the station. /datum/AI_Module/small/reactivate_cameras module_name = "Reactivate Camera Network" diff --git a/code/modules/power/apc.dm b/code/modules/power/apc.dm index 815da3fbdb..7f3b428978 100644 --- a/code/modules/power/apc.dm +++ b/code/modules/power/apc.dm @@ -89,6 +89,7 @@ var/auto_name = 0 var/failure_timer = 0 var/force_update = 0 + var/emergency_lights = FALSE var/update_state = -1 var/update_overlay = -1 var/icon_update_needed = FALSE @@ -760,6 +761,7 @@ "coverLocked" = coverlocked, "siliconUser" = user.has_unlimited_silicon_privilege || user.using_power_flow_console(), "malfStatus" = get_malf_status(user), + "emergencyLights" = !emergency_lights, "powerChannels" = list( list( @@ -899,6 +901,14 @@ failure_timer = 0 update_icon() update() + if("emergency_lighting") + emergency_lights = !emergency_lights + for(var/area/A in area.related) + for(var/obj/machinery/light/L in A) + if(!initial(L.no_emergency)) //If there was an override set on creation, keep that override + L.no_emergency = emergency_lights + INVOKE_ASYNC(L, /obj/machinery/light/.proc/update, FALSE) + CHECK_TICK return 1 /obj/machinery/power/apc/proc/toggle_breaker() diff --git a/code/modules/power/cell.dm b/code/modules/power/cell.dm index c8e58791e2..acbebea458 100644 --- a/code/modules/power/cell.dm +++ b/code/modules/power/cell.dm @@ -343,3 +343,17 @@ /obj/item/stock_parts/cell/beam_rifle/emp_act(severity) charge = Clamp((charge-(10000/severity)),0,maxcharge) + +/obj/item/stock_parts/cell/emergency_light + name = "miniature power cell" + desc = "A tiny power cell with a very low power capacity. Used in light fixtures to power them in the event of an outage." + maxcharge = 120 //Emergency lights use 0.2 W per tick, meaning ~10 minutes of emergency power from a cell + materials = list(MAT_GLASS = 20) + rating = 1 + w_class = WEIGHT_CLASS_TINY + +/obj/item/stock_parts/cell/emergency_light/Initialize() + . = ..() + var/area/A = get_area(src) + if(!A.lightswitch || !A.light_power) + charge = 0 //For naturally depowered areas, we start with no power diff --git a/code/modules/power/lighting.dm b/code/modules/power/lighting.dm index 98fb2ed233..635a17056d 100644 --- a/code/modules/power/lighting.dm +++ b/code/modules/power/lighting.dm @@ -49,12 +49,22 @@ var/fixture_type = "tube" var/sheets_refunded = 2 var/obj/machinery/light/newlight = null + var/obj/item/stock_parts/cell/cell -/obj/structure/light_construct/New(loc, ndir, building) - ..() + var/cell_connectors = TRUE + +/obj/structure/light_construct/Initialize(mapload, ndir, building) + . = ..() if(building) setDir(ndir) +/obj/structure/light_construct/Destroy() + QDEL_NULL(cell) + return ..() + +/obj/structure/light_construct/get_cell() + return cell + /obj/structure/light_construct/examine(mob/user) ..() switch(src.stage) @@ -64,9 +74,38 @@ to_chat(user, "It's wired.") if(3) to_chat(user, "The casing is closed.") + if(cell_connectors) + if(cell) + to_chat(user, "You see [cell] inside the casing.") + else + to_chat(user, "The casing has no power cell for backup power.") + else + to_chat(user, "This casing doesn't support power cells for backup power.") + return /obj/structure/light_construct/attackby(obj/item/W, mob/user, params) add_fingerprint(user) + if(istype(W, /obj/item/stock_parts/cell)) + if(!cell_connectors) + to_chat(user, "This [name] can't support a power cell!") + return + if(W.flags_1 & NODROP_1) + to_chat(user, "[W] is stuck to your hand!") + return + user.dropItemToGround(W) + if(cell) + user.visible_message("[user] swaps [W] out for [src]'s cell.", \ + "You swap [src]'s power cells.") + cell.forceMove(drop_location()) + user.put_in_hands(cell) + else + user.visible_message("[user] hooks up [W] to [src].", \ + "You add [W] to [src].") + playsound(src, 'sound/machines/click.ogg', 50, TRUE) + W.forceMove(src) + cell = W + add_fingerprint(user) + return switch(stage) if(1) if(istype(W, /obj/item/wrench)) @@ -124,6 +163,10 @@ newlight = new /obj/machinery/light/small/built(loc) newlight.setDir(dir) transfer_fingerprints_to(newlight) + if(cell) + newlight.cell = cell + cell.forceMove(newlight) + cell = null qdel(src) return return ..() @@ -173,6 +216,11 @@ var/rigged = 0 // true if rigged to explode + var/obj/item/stock_parts/cell/cell + var/start_with_cell = TRUE // if true, this fixture generates a very weak cell at roundstart + var/emergency_mode = FALSE // if true, the light is in emergency mode + var/no_emergency = FALSE // if true, this light cannot ever have an emergency mode + // the smaller bulb light fixture /obj/machinery/light/small @@ -192,8 +240,14 @@ /obj/machinery/light/built icon_state = "tube-empty" + start_with_cell = FALSE +<<<<<<< HEAD /obj/machinery/light/built/New() +======= +/obj/machinery/light/built/Initialize() + . = ..() +>>>>>>> fe816da... Adds emergency lights, built into light fixtures (#33213) status = LIGHT_EMPTY update(0) ..() @@ -208,8 +262,15 @@ // create a new lighting fixture +<<<<<<< HEAD /obj/machinery/light/New() ..() +======= +/obj/machinery/light/Initialize() + . = ..() + if(start_with_cell && !no_emergency) + cell = new/obj/item/stock_parts/cell/emergency_light(src) +>>>>>>> fe816da... Adds emergency lights, built into light fixtures (#33213) spawn(2) switch(fitting) if("tube") @@ -228,13 +289,17 @@ if(A) on = FALSE // A.update_lights() + QDEL_NULL(cell) return ..() /obj/machinery/light/update_icon() switch(status) // set icon_states if(LIGHT_OK) - icon_state = "[base_state][on]" + if(emergency_mode) + icon_state = "[base_state]_emergency" + else + icon_state = "[base_state][on]" if(LIGHT_EMPTY) icon_state = "[base_state]-empty" on = FALSE @@ -249,7 +314,7 @@ // update the icon_state and luminosity of the light depending on its state /obj/machinery/light/proc/update(trigger = 1) - update_icon() + emergency_mode = FALSE if(on) if(!light || light.light_range != brightness) switchcount++ @@ -261,10 +326,15 @@ burn_out() else use_power = ACTIVE_POWER_USE - set_light(brightness) + set_light(brightness, 1, "#FFFFFF") + else if(has_emergency_power() && !turned_off()) + use_power = IDLE_POWER_USE + emergency_mode = TRUE + process() //Force a process tick to update the light immediately else use_power = IDLE_POWER_USE set_light(0) + update_icon() active_power_usage = (brightness * 10) if(on != on_gs) @@ -276,6 +346,12 @@ removeStaticPower(static_power_used, STATIC_LIGHT) +/obj/machinery/light/process() + if(has_power() && cell) + cell.charge = min(cell.maxcharge, cell.charge + 0.2) //Recharge emergency power automatically while not using it + if(emergency_mode && !use_emergency_power(0.2)) + update(FALSE) //Disables emergency mode and sets the color to normal + /obj/machinery/light/proc/burn_out() if(status == LIGHT_OK) status = LIGHT_BURNED @@ -289,6 +365,9 @@ on = (s && status == LIGHT_OK) update() +/obj/machinery/light/get_cell() + return cell + // examine verb /obj/machinery/light/examine(mob/user) ..() @@ -301,6 +380,8 @@ to_chat(user, "The [fitting] is burnt out.") if(LIGHT_BROKEN) to_chat(user, "The [fitting] has been smashed.") + if(cell) + to_chat(user, "Its backup power charge meter reads [(cell.charge / cell.maxcharge) * 100]%.") @@ -384,6 +465,10 @@ drop_light_tube() new /obj/item/stack/cable_coil(loc, 1, "red") transfer_fingerprints_to(newlight) + if(cell) + newlight.cell = cell + cell.forceMove(newlight) + cell = null qdel(src) /obj/machinery/light/attacked_by(obj/item/I, mob/living/user) @@ -415,6 +500,11 @@ if(BURN) playsound(src.loc, 'sound/items/welder.ogg', 100, 1) +// returns if the light has power /but/ is manually turned off +// if a light is turned off, it won't activate emergency power +/obj/machinery/light/proc/turned_off() + var/area/A = get_area(src) + return !A.lightswitch && A.power_light // returns whether this light has power // true if area has power and lightswitch is on @@ -422,6 +512,27 @@ var/area/A = get_area(src) return A.lightswitch && A.power_light +// returns whether this light has emergency power +// can also return if it has access to a certain amount of that power +/obj/machinery/light/proc/has_emergency_power(pwr) + if(no_emergency || !cell) + return FALSE + if(pwr ? cell.charge >= pwr : cell.charge) + return status == LIGHT_OK + +// attempts to use power from the installed emergency cell, returns true if it does and false if it doesn't +/obj/machinery/light/proc/use_emergency_power(pwr = 0.2) + if(!has_emergency_power(pwr)) + return FALSE + if(cell.charge > 300) //it's meant to handle 120 W, ya doofus + visible_message("[src] short-circuits from too powerful of a power cell!") + burn_out() + return FALSE + cell.use(pwr) + set_light(brightness * 0.25, max(0.5, 0.75 * (cell.charge / cell.maxcharge)), "#FF3232") //RGB: 255, 50, 50 + return TRUE + + /obj/machinery/light/proc/flicker(var/amount = rand(10, 20)) set waitfor = 0 if(flickering) @@ -441,7 +552,9 @@ // ai attack - make lights flicker, because why not /obj/machinery/light/attack_ai(mob/user) - src.flicker(1) + no_emergency = !no_emergency + to_chat(user, "Emergency lights for this fixture have been [no_emergency ? "disabled" : "enabled"].") + update(FALSE) return // attack with hand - remove tube/bulb diff --git a/code/modules/research/designs/autolathe_designs.dm b/code/modules/research/designs/autolathe_designs.dm index 03424346e8..77150a44d8 100644 --- a/code/modules/research/designs/autolathe_designs.dm +++ b/code/modules/research/designs/autolathe_designs.dm @@ -799,3 +799,11 @@ materials = list(MAT_METAL = 300, MAT_GLASS = 200) build_path = /obj/item/device/slime_scanner category = list("initial", "Misc") + +/datum/design/miniature_power_cell + name = "Light Fixture Battery" + id = "miniature_power_cell" + build_type = AUTOLATHE + materials = list(MAT_GLASS = 20) + build_path = /obj/item/stock_parts/cell/emergency_light + category = list("initial", "Electronics") diff --git a/icons/mob/actions/actions_AI.dmi b/icons/mob/actions/actions_AI.dmi index c6e4e1dae721a5f603f3164a4fea2830b789e566..2ddc7923cc3e56b3df04a1d90612c3f5c2265117 100644 GIT binary patch literal 8853 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 LdZ$<`ZyEYOOr4{T literal 8198 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 b=MB3xxf=^%FEIgjun+hkuO?S3V;cNFF}mC} diff --git a/tgui/src/interfaces/apc.ract b/tgui/src/interfaces/apc.ract index 686d20755a..fb1d7d2799 100644 --- a/tgui/src/interfaces/apc.ract +++ b/tgui/src/interfaces/apc.ract @@ -121,6 +121,15 @@ {{/if}} {{/if}} + + + {{#if data.locked && !data.siliconUser}} + {{data.emergencyLights ? "Enabled" : "Disabled"}} + {{else}} + {{data.emergencyLights ? "Enabled" : "Disabled"}} + {{/if}} + + {{#if data.locked && !data.siliconUser}} From 29ba71765c27116481e56efa36c141e1aadc5a99 Mon Sep 17 00:00:00 2001 From: MoreRobustThanYou Date: Sun, 3 Dec 2017 13:55:03 -0500 Subject: [PATCH 27/66] Datumizes saymodes --- code/__DEFINES/is_helpers.dm | 2 + code/__DEFINES/say.dm | 8 +- code/controllers/subsystem/radio.dm | 7 ++ code/datums/saymode.dm | 112 ++++++++++++++++++ code/game/gamemodes/blob/blobs/blob_mobs.dm | 7 -- .../gamemodes/changeling/powers/linglink.dm | 2 +- .../gamemodes/miniantags/bot_swarm/swarmer.dm | 7 -- code/modules/mob/living/brain/say.dm | 2 +- code/modules/mob/living/living.dm | 13 +- code/modules/mob/living/say.dm | 82 ++----------- code/modules/mob/living/silicon/ai/say.dm | 9 -- code/modules/mob/living/silicon/say.dm | 11 -- .../simple_animal/friendly/drone/say.dm | 8 -- code/modules/mob/say.dm | 85 +++++++++++++ tgstation.dme | 1 + 15 files changed, 240 insertions(+), 116 deletions(-) create mode 100644 code/datums/saymode.dm diff --git a/code/__DEFINES/is_helpers.dm b/code/__DEFINES/is_helpers.dm index 1e5e994636..77425e14dd 100644 --- a/code/__DEFINES/is_helpers.dm +++ b/code/__DEFINES/is_helpers.dm @@ -189,3 +189,5 @@ GLOBAL_LIST_INIT(glass_sheet_types, typecacheof(list( /obj/item/stack/sheet/plasmarglass))) #define is_glass_sheet(O) (is_type_in_typecache(O, GLOB.glass_sheet_types)) + +#define isblobmonster(O) (istype(O, /mob/living/simple_animal/hostile/blob)) \ No newline at end of file diff --git a/code/__DEFINES/say.dm b/code/__DEFINES/say.dm index d30eb36132..74a1669686 100644 --- a/code/__DEFINES/say.dm +++ b/code/__DEFINES/say.dm @@ -49,4 +49,10 @@ #define LOGCHAT "chat" #define LOGASAY "adminsay" #define LOGCOMMENT "comment" -#define LOGOOC "ooc" \ No newline at end of file +#define LOGOOC "ooc" + + +#define LINGHIVE_NONE 0 +#define LINGHIVE_OUTSIDER 1 +#define LINGHIVE_LING 2 +#define LINGHIVE_LINK 3 \ No newline at end of file diff --git a/code/controllers/subsystem/radio.dm b/code/controllers/subsystem/radio.dm index de605cb554..43803aa647 100644 --- a/code/controllers/subsystem/radio.dm +++ b/code/controllers/subsystem/radio.dm @@ -3,6 +3,13 @@ SUBSYSTEM_DEF(radio) flags = SS_NO_FIRE|SS_NO_INIT var/list/datum/radio_frequency/frequencies = list() + var/list/saymodes = list() + +/datum/controller/subsystem/radio/PreInit(timeofday) + for(var/_SM in subtypesof(/datum/saymode)) + var/datum/saymode/SM = new _SM() + saymodes[SM.key] = SM + return ..() /datum/controller/subsystem/radio/proc/add_object(obj/device, new_frequency as num, filter = null as text|null) var/f_text = num2text(new_frequency) diff --git a/code/datums/saymode.dm b/code/datums/saymode.dm new file mode 100644 index 0000000000..6aa1c48d8a --- /dev/null +++ b/code/datums/saymode.dm @@ -0,0 +1,112 @@ +/datum/saymode + var/key + var/mode + +//Return FALSE if you have handled the message. Otherwise, return TRUE and saycode will continue doing saycode things. +//user = whoever said the message +//message = the message +//language = the language. +/datum/saymode/proc/handle_message(mob/living/user, message, datum/language/language) + return TRUE + + +/datum/saymode/changeling + key = "g" + mode = MODE_CHANGELING + +/datum/saymode/changeling/handle_message(mob/living/user, message, datum/language/language) + switch(user.lingcheck()) + if(LINGHIVE_LINK) + var/msg = "[user.mind]: [message]" + for(var/_M in GLOB.mob_list) + var/mob/M = _M + if(M in GLOB.dead_mob_list) + var/link = FOLLOW_LINK(M, user) + to_chat(M, "[link] [msg]") + else + switch(M.lingcheck()) + if(LINGHIVE_LINK, LINGHIVE_LING) + to_chat(M, msg) + if(LINGHIVE_OUTSIDER) + if(prob(40)) + to_chat(M, "We can faintly sense an outsider trying to communicate through the hivemind...") + if(LINGHIVE_LING) + var/datum/antagonist/changeling/changeling = user.mind.has_antag_datum(/datum/antagonist/changeling) + var/msg = "[changeling.changelingID]: [message]" + log_talk(src,"[changeling.changelingID]/[user.key] : [message]",LOGSAY) + for(var/_M in GLOB.mob_list) + var/mob/M = _M + if(M in GLOB.dead_mob_list) + var/link = FOLLOW_LINK(M, user) + to_chat(M, "[link] [msg]") + else + switch(M.lingcheck()) + if(LINGHIVE_LINK) + to_chat(M, msg) + if(LINGHIVE_LING) + to_chat(M, msg) + if(LINGHIVE_OUTSIDER) + if(prob(40)) + to_chat(M, "We can faintly sense another of our kind trying to communicate through the hivemind...") + if(LINGHIVE_OUTSIDER) + to_chat(user, "Our senses have not evolved enough to be able to communicate this way...") + return FALSE + + +/datum/saymode/xeno + key = "a" + mode = MODE_ALIEN + +/datum/saymode/xeno/handle_message(mob/living/user, message, datum/language/language) + if(user.hivecheck()) + user.alien_talk(message) + return FALSE + + +/datum/saymode/vocalcords + key = "x" + mode = MODE_VOCALCORDS + +/datum/saymode/vocalcords/handle_message(mob/living/user, message, datum/language/language) + if(iscarbon(user)) + var/mob/living/carbon/C = user + var/obj/item/organ/vocal_cords/V = C.getorganslot(ORGAN_SLOT_VOICE) + if(V && V.can_speak_with()) + V.handle_speech(message) //message + V.speak_with(message) //action + return FALSE + + +/datum/saymode/binary //everything that uses .b (silicons, drones, blobbernauts/spores, swarmers) + key = "b" + mode = MODE_BINARY + +/datum/saymode/binary/handle_message(mob/living/user, message, datum/language/language) + if(isswarmer(user)) + var/mob/living/simple_animal/hostile/swarmer/S = user + S.swarmer_chat(message) + return FALSE + if(isblobmonster(user)) + var/mob/living/simple_animal/hostile/blob/B = user + B.blob_chat(message) + return FALSE + if(isdrone(user)) + var/mob/living/simple_animal/drone/D = user + D.drone_chat(message) + return FALSE + if(user.binarycheck()) + user.robot_talk(message) + return FALSE + return FALSE + + +/datum/saymode/holopad + key = "h" + mode = MODE_HOLOPAD + +/datum/saymode/holopad/handle_message(mob/living/user, message, datum/language/language) + if(isAI(user)) + var/mob/living/silicon/ai/AI = user + AI.holopad_talk(message, language) + return FALSE + return FALSE \ No newline at end of file diff --git a/code/game/gamemodes/blob/blobs/blob_mobs.dm b/code/game/gamemodes/blob/blobs/blob_mobs.dm index 5572bbd9d8..c5c813ecfc 100644 --- a/code/game/gamemodes/blob/blobs/blob_mobs.dm +++ b/code/game/gamemodes/blob/blobs/blob_mobs.dm @@ -56,13 +56,6 @@ return 1 return ..() -/mob/living/simple_animal/hostile/blob/handle_inherent_channels(message, message_mode) - if(message_mode == MODE_BINARY) - blob_chat(message) - return 1 - else - ..() - /mob/living/simple_animal/hostile/blob/proc/blob_chat(msg) var/spanned_message = say_quote(msg, get_spans()) var/rendered = "\[Blob Telepathy\] [real_name] [spanned_message]" diff --git a/code/game/gamemodes/changeling/powers/linglink.dm b/code/game/gamemodes/changeling/powers/linglink.dm index d6ceb4edd0..cd7c944137 100644 --- a/code/game/gamemodes/changeling/powers/linglink.dm +++ b/code/game/gamemodes/changeling/powers/linglink.dm @@ -50,7 +50,7 @@ to_chat(target, "A migraine throbs behind your eyes, you hear yourself screaming - but your mouth has not opened!") for(var/mi in GLOB.mob_list) var/mob/M = mi - if(M.lingcheck() == 2) + if(M.lingcheck() == LINGHIVE_LING) to_chat(M, "We can sense a foreign presence in the hivemind...") target.mind.linglink = 1 target.say(":g AAAAARRRRGGGGGHHHHH!!") diff --git a/code/game/gamemodes/miniantags/bot_swarm/swarmer.dm b/code/game/gamemodes/miniantags/bot_swarm/swarmer.dm index 7005b26b12..e59fc2c9b7 100644 --- a/code/game/gamemodes/miniantags/bot_swarm/swarmer.dm +++ b/code/game/gamemodes/miniantags/bot_swarm/swarmer.dm @@ -121,13 +121,6 @@ if(statpanel("Status")) stat("Resources:",resources) -/mob/living/simple_animal/hostile/swarmer/handle_inherent_channels(message, message_mode) - if(message_mode == MODE_BINARY) - swarmer_chat(message) - return ITALICS | REDUCE_RANGE - else - . = ..() - /mob/living/simple_animal/hostile/swarmer/get_spans() return ..() | SPAN_ROBOT diff --git a/code/modules/mob/living/brain/say.dm b/code/modules/mob/living/brain/say.dm index 0cfbf5d170..0f8e9e60bd 100644 --- a/code/modules/mob/living/brain/say.dm +++ b/code/modules/mob/living/brain/say.dm @@ -21,7 +21,7 @@ return ITALICS | REDUCE_RANGE /mob/living/brain/lingcheck() - return 0 + return LINGHIVE_NONE /mob/living/brain/treat_message(message) message = capitalize(message) diff --git a/code/modules/mob/living/living.dm b/code/modules/mob/living/living.dm index 5a58c67c6b..8849d52f22 100644 --- a/code/modules/mob/living/living.dm +++ b/code/modules/mob/living/living.dm @@ -1022,4 +1022,15 @@ /mob/living/proc/add_abilities_to_panel() for(var/obj/effect/proc_holder/A in abilities) - statpanel("[A.panel]",A.get_panel_text(),A) \ No newline at end of file + statpanel("[A.panel]",A.get_panel_text(),A) + +/mob/living/lingcheck() + if(mind) + var/datum/antagonist/changeling/changeling = mind.has_antag_datum(/datum/antagonist/changeling) + if(changeling) + if(changeling.changeling_speak) + return LINGHIVE_LING + return LINGHIVE_OUTSIDER + if(mind && mind.linglink) + return LINGHIVE_LINK + return LINGHIVE_NONE diff --git a/code/modules/mob/living/say.dm b/code/modules/mob/living/say.dm index a2fdb9d2b0..739b4e3584 100644 --- a/code/modules/mob/living/say.dm +++ b/code/modules/mob/living/say.dm @@ -72,6 +72,7 @@ GLOBAL_LIST_INIT(department_radio_keys, list( /mob/living/say(message, bubble_type,var/list/spans = list(), sanitize = TRUE, datum/language/language = null, ignore_spam = FALSE) var/static/list/crit_allowed_modes = list(MODE_WHISPER = TRUE, MODE_CHANGELING = TRUE, MODE_ALIEN = TRUE) var/static/list/unconscious_allowed_modes = list(MODE_CHANGELING = TRUE, MODE_ALIEN = TRUE) + var/key = get_key(message) var/static/list/one_character_prefix = list(MODE_HEADSET = TRUE, MODE_ROBOT = TRUE, MODE_WHISPER = TRUE) @@ -134,8 +135,11 @@ GLOBAL_LIST_INIT(department_radio_keys, list( // AIs use inherent channels for the holopad. Most inherent channels // ignore the language argument however. - if(handle_inherent_channels(message, message_mode, language)) //Hiveminds, binary chat & holopad. - return + var/datum/saymode/SM = SSradio.saymodes[key] + if(key && SM) + if(!SM.handle_message(src, message, language)) + return + if(!can_speak_vocal(message)) to_chat(src, "You find yourself unable to speak!") @@ -264,7 +268,7 @@ GLOBAL_LIST_INIT(department_radio_keys, list( INVOKE_ASYNC(GLOBAL_PROC, /.proc/flick_overlay, I, speech_bubble_recipients, 30) /mob/proc/binarycheck() - return 0 + return FALSE /mob/living/can_speak(message) //For use outside of Say() if(can_speak_basic(message) && can_speak_vocal(message)) @@ -307,6 +311,11 @@ GLOBAL_LIST_INIT(department_radio_keys, list( var/key_symbol = lowertext(copytext(message, 2, 3)) return GLOB.department_radio_keys[key_symbol] +/mob/living/proc/get_key(message) + var/key = copytext(message, 1, 2) + if(key in GLOB.department_radio_prefixes) + return lowertext(copytext(message, 2, 3)) + /mob/living/proc/get_message_language(message) if(copytext(message, 1, 2) == ",") var/key = copytext(message, 2, 3) @@ -316,60 +325,6 @@ GLOBAL_LIST_INIT(department_radio_keys, list( return LD return null -/mob/living/proc/handle_inherent_channels(message, message_mode) - if(message_mode == MODE_CHANGELING) - switch(lingcheck()) - if(3) - var/msg = "[src.mind]: [message]" - for(var/_M in GLOB.mob_list) - var/mob/M = _M - if(M in GLOB.dead_mob_list) - var/link = FOLLOW_LINK(M, src) - to_chat(M, "[link] [msg]") - else - switch(M.lingcheck()) - if(3) - to_chat(M, msg) - if(2) - to_chat(M, msg) - if(1) - if(prob(40)) - to_chat(M, "We can faintly sense an outsider trying to communicate through the hivemind...") - if(2) - var/datum/antagonist/changeling/changeling = mind.has_antag_datum(/datum/antagonist/changeling) - var/msg = "[changeling.changelingID]: [message]" - log_talk(src,"[changeling.changelingID]/[key] : [message]",LOGSAY) - for(var/_M in GLOB.mob_list) - var/mob/M = _M - if(M in GLOB.dead_mob_list) - var/link = FOLLOW_LINK(M, src) - to_chat(M, "[link] [msg]") - else - switch(M.lingcheck()) - if(3) - to_chat(M, msg) - if(2) - to_chat(M, msg) - if(1) - if(prob(40)) - to_chat(M, "We can faintly sense another of our kind trying to communicate through the hivemind...") - if(1) - to_chat(src, "Our senses have not evolved enough to be able to communicate this way...") - return TRUE - if(message_mode == MODE_ALIEN) - if(hivecheck()) - alien_talk(message) - return TRUE - if(message_mode == MODE_VOCALCORDS) - if(iscarbon(src)) - var/mob/living/carbon/C = src - var/obj/item/organ/vocal_cords/V = C.getorganslot(ORGAN_SLOT_VOICE) - if(V && V.can_speak_with()) - V.handle_speech(message) //message - V.speak_with(message) //action - return TRUE - return FALSE - /mob/living/proc/treat_message(message) if(getBrainLoss() >= 60) message = derpspeech(message, stuttering) @@ -408,22 +363,9 @@ GLOBAL_LIST_INIT(department_radio_keys, list( return ITALICS | REDUCE_RANGE if(MODE_BINARY) - if(binarycheck()) - robot_talk(message) return ITALICS | REDUCE_RANGE //Does not return 0 since this is only reached by humans, not borgs or AIs. return 0 -/mob/living/lingcheck() //1 is ling w/ no hivemind. 2 is ling w/hivemind. 3 is ling victim being linked into hivemind. - if(mind) - var/datum/antagonist/changeling/changeling = mind.has_antag_datum(/datum/antagonist/changeling) - if(changeling) - if(changeling.changeling_speak) - return 2 - return 1 - if(mind && mind.linglink) - return 3 - return 0 - /mob/living/say_mod(input, message_mode) if(message_mode == MODE_WHISPER) . = verb_whisper diff --git a/code/modules/mob/living/silicon/ai/say.dm b/code/modules/mob/living/silicon/ai/say.dm index 13f0609c0d..b55fa2a663 100644 --- a/code/modules/mob/living/silicon/ai/say.dm +++ b/code/modules/mob/living/silicon/ai/say.dm @@ -31,15 +31,6 @@ else return ..() -/mob/living/silicon/ai/handle_inherent_channels(message, message_mode, language) - . = ..() - if(.) - return . - - if(message_mode == MODE_HOLOPAD) - holopad_talk(message, language) - return 1 - //For holopads only. Usable by AI. /mob/living/silicon/ai/proc/holopad_talk(message, language) diff --git a/code/modules/mob/living/silicon/say.dm b/code/modules/mob/living/silicon/say.dm index f3e7baa0d9..f10ac43858 100644 --- a/code/modules/mob/living/silicon/say.dm +++ b/code/modules/mob/living/silicon/say.dm @@ -57,14 +57,3 @@ return MODE_ROBOT else return . - -/mob/living/silicon/handle_inherent_channels(message, message_mode) - . = ..() - if(.) - return . - - if(message_mode == MODE_BINARY) - if(binarycheck()) - robot_talk(message) - return 1 - return 0 diff --git a/code/modules/mob/living/simple_animal/friendly/drone/say.dm b/code/modules/mob/living/simple_animal/friendly/drone/say.dm index fb0c0c0614..16bf370f02 100644 --- a/code/modules/mob/living/simple_animal/friendly/drone/say.dm +++ b/code/modules/mob/living/simple_animal/friendly/drone/say.dm @@ -3,14 +3,6 @@ ///////////// //Drone speach -/mob/living/simple_animal/drone/handle_inherent_channels(message, message_mode) - if(message_mode == MODE_BINARY) - drone_chat(message) - return 1 - else - ..() - - /mob/living/simple_animal/drone/get_spans() return ..() | SPAN_ROBOT diff --git a/code/modules/mob/say.dm b/code/modules/mob/say.dm index a396072b4f..fd17800d5a 100644 --- a/code/modules/mob/say.dm +++ b/code/modules/mob/say.dm @@ -1,3 +1,4 @@ +<<<<<<< HEAD //Speech verbs. /mob/verb/say_verb(message as text) set name = "Say" @@ -81,3 +82,87 @@ /mob/proc/lingcheck() return 0 +======= +//Speech verbs. +/mob/verb/say_verb(message as text) + set name = "Say" + set category = "IC" + if(GLOB.say_disabled) //This is here to try to identify lag problems + to_chat(usr, "Speech is currently admin-disabled.") + return + usr.say(message) + + +/mob/verb/whisper_verb(message as text) + set name = "Whisper" + set category = "IC" + if(GLOB.say_disabled) //This is here to try to identify lag problems + to_chat(usr, "Speech is currently admin-disabled.") + return + whisper(message) + +/mob/proc/whisper(message, datum/language/language=null) + say(message, language) //only living mobs actually whisper, everything else just talks + +/mob/verb/me_verb(message as text) + set name = "Me" + set category = "IC" + + if(GLOB.say_disabled) //This is here to try to identify lag problems + to_chat(usr, "Speech is currently admin-disabled.") + return + + message = trim(copytext(sanitize(message), 1, MAX_MESSAGE_LEN)) + + usr.emote("me",1,message) + +/mob/proc/say_dead(var/message) + var/name = real_name + var/alt_name = "" + + if(GLOB.say_disabled) //This is here to try to identify lag problems + to_chat(usr, "Speech is currently admin-disabled.") + return + + if(jobban_isbanned(src, "OOC")) + to_chat(src, "You have been banned from deadchat.") + return + + if (src.client) + if(src.client.prefs.muted & MUTE_DEADCHAT) + to_chat(src, "You cannot talk in deadchat (muted).") + return + + if(src.client.handle_spam_prevention(message,MUTE_DEADCHAT)) + return + + var/mob/dead/observer/O = src + if(isobserver(src) && O.deadchat_name) + name = "[O.deadchat_name]" + else + if(mind && mind.name) + name = "[mind.name]" + else + name = real_name + if(name != real_name) + alt_name = " (died as [real_name])" + + var/K + + if(key) + K = src.key + + message = src.say_quote(message, get_spans()) + var/rendered = "DEAD: [name][alt_name] [message]" + + deadchat_broadcast(rendered, follow_target = src, speaker_key = K) + +/mob/proc/emote(var/act) + return + +/mob/proc/hivecheck() + return 0 + +/mob/proc/lingcheck() + return LINGHIVE_NONE +>>>>>>> 36414ac... Datumizes saymodes (#33013) diff --git a/tgstation.dme b/tgstation.dme index 34227a9a18..132b4689dc 100755 --- a/tgstation.dme +++ b/tgstation.dme @@ -308,6 +308,7 @@ #include "code\datums\recipe.dm" #include "code\datums\riding.dm" #include "code\datums\ruins.dm" +#include "code\datums\saymode.dm" #include "code\datums\shuttles.dm" #include "code\datums\soullink.dm" #include "code\datums\spawners_menu.dm" From 0df9db51f34514569c811209c3ffc3585db75b00 Mon Sep 17 00:00:00 2001 From: ExcessiveUseOfCobblestone <11748095+ExcessiveUseOfCobblestone@users.noreply.github.com> Date: Sun, 3 Dec 2017 14:16:34 -0500 Subject: [PATCH 28/66] Being buckled to a bed now saves you from "the floor is lava" (#33204) * Update floor_is_lava.dm * Switcheroo * ))))))))))))) --- code/datums/weather/weather_types/floor_is_lava.dm | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/code/datums/weather/weather_types/floor_is_lava.dm b/code/datums/weather/weather_types/floor_is_lava.dm index 52f82abec9..cf9fa0da86 100644 --- a/code/datums/weather/weather_types/floor_is_lava.dm +++ b/code/datums/weather/weather_types/floor_is_lava.dm @@ -20,10 +20,11 @@ overlay_layer = ABOVE_OPEN_TURF_LAYER //Covers floors only immunity_type = "lava" + /datum/weather/floor_is_lava/weather_act(mob/living/L) - for(var/obj/structure/O in L.loc) - if(O.density) + for(var/obj/structure/O in L.loc) + if(O.density || (L in O.buckled_mobs && istype(O, /obj/structure/bed))) return if(L.loc.density) return From a575e2668dd521b3e47afe5e980f170d5cb875c0 Mon Sep 17 00:00:00 2001 From: Robustin Date: Sun, 3 Dec 2017 14:15:42 -0500 Subject: [PATCH 30/66] Plasma statues get fixed (#33224) * Plasma statues fix * Actually a fix * brackets --- code/game/objects/structures/statues.dm | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/code/game/objects/structures/statues.dm b/code/game/objects/structures/statues.dm index b89dca9d4f..67b42c128c 100644 --- a/code/game/objects/structures/statues.dm +++ b/code/game/objects/structures/statues.dm @@ -177,8 +177,8 @@ else return ..() -/obj/structure/statue/plasma/proc/PlasmaBurn() - atmos_spawn_air("plasma=400;TEMP=1000") +/obj/structure/statue/plasma/proc/PlasmaBurn(exposed_temperature) + atmos_spawn_air("plasma=[oreAmount*10];TEMP=[exposed_temperature]") deconstruct(FALSE) /obj/structure/statue/plasma/proc/ignite(exposed_temperature) From c0547bea4baaa4309a749244e0235e2a22df0c57 Mon Sep 17 00:00:00 2001 From: Leo Date: Sun, 3 Dec 2017 20:06:30 -0200 Subject: [PATCH 32/66] Merge pull request #33217 from tgstation/Cyberboss-patch-3 Makes ahelp timestamps consistent with logs --- code/modules/admin/verbs/adminhelp.dm | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/code/modules/admin/verbs/adminhelp.dm b/code/modules/admin/verbs/adminhelp.dm index 99e21c2da2..2d57ee0965 100644 --- a/code/modules/admin/verbs/adminhelp.dm +++ b/code/modules/admin/verbs/adminhelp.dm @@ -214,7 +214,7 @@ GLOBAL_DATUM_INIT(ahelp_tickets, /datum/admin_help_tickets, new) if(heard_by_no_admins && usr && usr.ckey != initiator_ckey) heard_by_no_admins = FALSE send2irc(initiator_ckey, "Ticket #[id]: Answered by [key_name(usr)]") - _interactions += "[gameTimestamp()]: [formatted_message]" + _interactions += "[time_stamp()]: [formatted_message]" //Removes the ahelp verb and returns it after 2 minutes /datum/admin_help/proc/TimeoutVerb() From 73956e0e88af9a5dd2379e32c4cba6eb8253344a Mon Sep 17 00:00:00 2001 From: CitadelStationBot Date: Sun, 3 Dec 2017 17:20:42 -0600 Subject: [PATCH 34/66] Automatic changelog generation for PR #4171 [ci skip] --- html/changelogs/AutoChangeLog-pr-4171.yml | 4 ++++ 1 file changed, 4 insertions(+) create mode 100644 html/changelogs/AutoChangeLog-pr-4171.yml diff --git a/html/changelogs/AutoChangeLog-pr-4171.yml b/html/changelogs/AutoChangeLog-pr-4171.yml new file mode 100644 index 0000000000..612f5ad379 --- /dev/null +++ b/html/changelogs/AutoChangeLog-pr-4171.yml @@ -0,0 +1,4 @@ +author: "psykzz" +delete-after: True +changes: + - bugfix: "Fixing the broken turbine computer" From bf94dfd2815131ce6af4e41c44f1666f9d2e770a Mon Sep 17 00:00:00 2001 From: CitadelStationBot Date: Sun, 3 Dec 2017 17:21:31 -0600 Subject: [PATCH 35/66] Automatic changelog generation for PR #4191 [ci skip] --- html/changelogs/AutoChangeLog-pr-4191.yml | 5 +++++ 1 file changed, 5 insertions(+) create mode 100644 html/changelogs/AutoChangeLog-pr-4191.yml diff --git a/html/changelogs/AutoChangeLog-pr-4191.yml b/html/changelogs/AutoChangeLog-pr-4191.yml new file mode 100644 index 0000000000..5904f70b86 --- /dev/null +++ b/html/changelogs/AutoChangeLog-pr-4191.yml @@ -0,0 +1,5 @@ +author: "BeeSting12" +delete-after: True +changes: + - spellcheck: "Occupand ---> Occupant on opened cryogenic pods." + - spellcheck: "Cyrogenic ---> Cryogenic on opened cryogenic pods." From 3128e8d3b437bfa8161afed3106c2bba081f6c9d Mon Sep 17 00:00:00 2001 From: CitadelStationBot Date: Sun, 3 Dec 2017 17:23:32 -0600 Subject: [PATCH 36/66] Automatic changelog generation for PR #4196 [ci skip] --- html/changelogs/AutoChangeLog-pr-4196.yml | 4 ++++ 1 file changed, 4 insertions(+) create mode 100644 html/changelogs/AutoChangeLog-pr-4196.yml diff --git a/html/changelogs/AutoChangeLog-pr-4196.yml b/html/changelogs/AutoChangeLog-pr-4196.yml new file mode 100644 index 0000000000..49ab9fdbd9 --- /dev/null +++ b/html/changelogs/AutoChangeLog-pr-4196.yml @@ -0,0 +1,4 @@ +author: "zennerx" +delete-after: True +changes: + - spellcheck: "fixed some typos in the weapon firing mechanism description" From 4d29723302d039b259d3566752acfb3e7dfc5c05 Mon Sep 17 00:00:00 2001 From: deathride58 Date: Sun, 3 Dec 2017 18:25:54 -0500 Subject: [PATCH 37/66] Update lighting.dm --- code/modules/power/lighting.dm | 9 --------- 1 file changed, 9 deletions(-) diff --git a/code/modules/power/lighting.dm b/code/modules/power/lighting.dm index 635a17056d..9f12e25bd2 100644 --- a/code/modules/power/lighting.dm +++ b/code/modules/power/lighting.dm @@ -242,12 +242,8 @@ icon_state = "tube-empty" start_with_cell = FALSE -<<<<<<< HEAD -/obj/machinery/light/built/New() -======= /obj/machinery/light/built/Initialize() . = ..() ->>>>>>> fe816da... Adds emergency lights, built into light fixtures (#33213) status = LIGHT_EMPTY update(0) ..() @@ -262,15 +258,10 @@ // create a new lighting fixture -<<<<<<< HEAD -/obj/machinery/light/New() - ..() -======= /obj/machinery/light/Initialize() . = ..() if(start_with_cell && !no_emergency) cell = new/obj/item/stock_parts/cell/emergency_light(src) ->>>>>>> fe816da... Adds emergency lights, built into light fixtures (#33213) spawn(2) switch(fitting) if("tube") From 222346bf30fe30c90f020a12fe1b7525032dec05 Mon Sep 17 00:00:00 2001 From: deathride58 Date: Sun, 3 Dec 2017 18:29:08 -0500 Subject: [PATCH 38/66] Update say.dm --- code/modules/mob/say.dm | 86 ----------------------------------------- 1 file changed, 86 deletions(-) diff --git a/code/modules/mob/say.dm b/code/modules/mob/say.dm index fd17800d5a..7ffa7f8ed0 100644 --- a/code/modules/mob/say.dm +++ b/code/modules/mob/say.dm @@ -1,88 +1,3 @@ -<<<<<<< HEAD -//Speech verbs. -/mob/verb/say_verb(message as text) - set name = "Say" - set category = "IC" - if(GLOB.say_disabled) //This is here to try to identify lag problems - to_chat(usr, "Speech is currently admin-disabled.") - return - usr.say(message) - - -/mob/verb/whisper_verb(message as text) - set name = "Whisper" - set category = "IC" - if(GLOB.say_disabled) //This is here to try to identify lag problems - to_chat(usr, "Speech is currently admin-disabled.") - return - whisper(message) - -/mob/proc/whisper(message, datum/language/language=null) - say(message, language) //only living mobs actually whisper, everything else just talks - -/mob/verb/me_verb(message as message) - set name = "Me" - set category = "IC" - - if(GLOB.say_disabled) //This is here to try to identify lag problems - to_chat(usr, "Speech is currently admin-disabled.") - return - - var/list/replace_chars = list("\n"=" ","\t"=" ") - message = copytext(sanitize(message, replace_chars), 1, (MAX_MESSAGE_LEN*2)) - - usr.emote("me",1,message) - -/mob/proc/say_dead(var/message) - var/name = real_name - var/alt_name = "" - - if(GLOB.say_disabled) //This is here to try to identify lag problems - to_chat(usr, "Speech is currently admin-disabled.") - return - - if(jobban_isbanned(src, "OOC")) - to_chat(src, "You have been banned from deadchat.") - return - - if (src.client) - if(src.client.prefs.muted & MUTE_DEADCHAT) - to_chat(src, "You cannot talk in deadchat (muted).") - return - - if(src.client.handle_spam_prevention(message,MUTE_DEADCHAT)) - return - - var/mob/dead/observer/O = src - if(isobserver(src) && O.deadchat_name) - name = "[O.deadchat_name]" - else - if(mind && mind.name) - name = "[mind.name]" - else - name = real_name - if(name != real_name) - alt_name = " (died as [real_name])" - - var/K - - if(key) - K = src.key - - message = src.say_quote(message, get_spans()) - var/rendered = "DEAD: [name][alt_name] [message]" - - deadchat_broadcast(rendered, follow_target = src, speaker_key = K) - -/mob/proc/emote(var/act) - return - -/mob/proc/hivecheck() - return 0 - -/mob/proc/lingcheck() - return 0 -======= //Speech verbs. /mob/verb/say_verb(message as text) set name = "Say" @@ -165,4 +80,3 @@ /mob/proc/lingcheck() return LINGHIVE_NONE ->>>>>>> 36414ac... Datumizes saymodes (#33013) From 7e28ac775c5cfde5dd272d85747be939db5c2f34 Mon Sep 17 00:00:00 2001 From: CitadelStationBot Date: Sun, 3 Dec 2017 17:29:44 -0600 Subject: [PATCH 39/66] Automatic changelog generation for PR #4200 [ci skip] --- html/changelogs/AutoChangeLog-pr-4200.yml | 4 ++++ 1 file changed, 4 insertions(+) create mode 100644 html/changelogs/AutoChangeLog-pr-4200.yml diff --git a/html/changelogs/AutoChangeLog-pr-4200.yml b/html/changelogs/AutoChangeLog-pr-4200.yml new file mode 100644 index 0000000000..a2321590c7 --- /dev/null +++ b/html/changelogs/AutoChangeLog-pr-4200.yml @@ -0,0 +1,4 @@ +author: "CitadelStationBot" +delete-after: True +changes: + - bugfix: "You can now lay (buckle!) yourself to a bed to avoid being burnt to a crisp during \"the floor is lava\" event." From 1297cf907eb91ba1b0b24404a15bae01f895f7a9 Mon Sep 17 00:00:00 2001 From: CitadelStationBot Date: Sun, 3 Dec 2017 17:30:04 -0600 Subject: [PATCH 40/66] Automatic changelog generation for PR #4201 [ci skip] --- html/changelogs/AutoChangeLog-pr-4201.yml | 4 ++++ 1 file changed, 4 insertions(+) create mode 100644 html/changelogs/AutoChangeLog-pr-4201.yml diff --git a/html/changelogs/AutoChangeLog-pr-4201.yml b/html/changelogs/AutoChangeLog-pr-4201.yml new file mode 100644 index 0000000000..127a8b26ed --- /dev/null +++ b/html/changelogs/AutoChangeLog-pr-4201.yml @@ -0,0 +1,4 @@ +author: "Robustin" +delete-after: True +changes: + - tweak: "Igniting plasma statues no longer ignores ignition temperature and only creates as much plasma as was used in its creation." From 2393b7759baceca13d0d85c247dfcd4d785f0300 Mon Sep 17 00:00:00 2001 From: Jordan Brown Date: Sat, 2 Dec 2017 18:12:44 -0500 Subject: [PATCH 41/66] People jitter when revived by defibs --- code/game/objects/items/defib.dm | 1 + 1 file changed, 1 insertion(+) diff --git a/code/game/objects/items/defib.dm b/code/game/objects/items/defib.dm index c3ccd1a144..358ffd3e10 100644 --- a/code/game/objects/items/defib.dm +++ b/code/game/objects/items/defib.dm @@ -545,6 +545,7 @@ H.set_heartattack(FALSE) H.revive() H.emote("gasp") + H.Jitter(100) if(tplus > tloss) H.setBrainLoss( max(0, min(99, ((tlimit - tplus) / tlimit * 100)))) add_logs(user, H, "revived", defib) From 985c8ea86ba23410a65850f21519e3bbf275e37d Mon Sep 17 00:00:00 2001 From: LetterJay Date: Mon, 4 Dec 2017 02:14:16 -0600 Subject: [PATCH 43/66] donation --- code/citadel/custom_loadout/custom_items.dm | 1 + 1 file changed, 1 insertion(+) diff --git a/code/citadel/custom_loadout/custom_items.dm b/code/citadel/custom_loadout/custom_items.dm index 529a643347..dcc8934173 100644 --- a/code/citadel/custom_loadout/custom_items.dm +++ b/code/citadel/custom_loadout/custom_items.dm @@ -110,6 +110,7 @@ icon = 'icons/obj/custom.dmi' icon_state = "festive-w" item_state = "festive-i" + icon = 'icons/obj/custom.dmi' w_class = WEIGHT_CLASS_SMALL body_parts_covered = CHEST|GROIN|LEGS|ARMS From 4f8323a7355e9794612c46a31e3e753b9b189af3 Mon Sep 17 00:00:00 2001 From: QualityVan Date: Mon, 4 Dec 2017 05:50:36 -0500 Subject: [PATCH 44/66] Fixes missing eyes being absent (#33203) --- .../mob/living/carbon/human/species.dm | 21 ++++++++++++------- 1 file changed, 13 insertions(+), 8 deletions(-) diff --git a/code/modules/mob/living/carbon/human/species.dm b/code/modules/mob/living/carbon/human/species.dm index e374bb9187..5072880c01 100644 --- a/code/modules/mob/living/carbon/human/species.dm +++ b/code/modules/mob/living/carbon/human/species.dm @@ -453,9 +453,9 @@ GLOBAL_LIST_EMPTY(roundstart_races) var/obj/item/bodypart/head/HD = H.get_bodypart("head") - if(!(H.disabilities & HUSK)) + if(HD && !(H.disabilities & HUSK)) // lipstick - if(H.lip_style && (LIPS in species_traits) && HD) + if(H.lip_style && (LIPS in species_traits)) var/mutable_appearance/lip_overlay = mutable_appearance('icons/mob/human_face.dmi', "lips_[H.lip_style]", -BODY_LAYER) lip_overlay.color = H.lip_color if(OFFSET_FACE in H.dna.species.offset_features) @@ -464,13 +464,18 @@ GLOBAL_LIST_EMPTY(roundstart_races) standing += lip_overlay // eyes - if((EYECOLOR in species_traits) && HD) - var/mutable_appearance/eye_overlay = mutable_appearance('icons/mob/human_face.dmi', "eyes", -BODY_LAYER) + var/has_eyes = H.getorganslot(ORGAN_SLOT_EYES) + var/mutable_appearance/eye_overlay + if(!has_eyes) + eye_overlay = mutable_appearance('icons/mob/human_face.dmi', "eyes_missing", -BODY_LAYER) + else + eye_overlay = mutable_appearance('icons/mob/human_face.dmi', "eyes", -BODY_LAYER) + if((EYECOLOR in species_traits) && has_eyes) eye_overlay.color = "#" + H.eye_color - if(OFFSET_FACE in H.dna.species.offset_features) - eye_overlay.pixel_x += H.dna.species.offset_features[OFFSET_FACE][1] - eye_overlay.pixel_y += H.dna.species.offset_features[OFFSET_FACE][2] - standing += eye_overlay + if(OFFSET_FACE in H.dna.species.offset_features) + eye_overlay.pixel_x += H.dna.species.offset_features[OFFSET_FACE][1] + eye_overlay.pixel_y += H.dna.species.offset_features[OFFSET_FACE][2] + standing += eye_overlay //Underwear, Undershirts & Socks if(!(NO_UNDERWEAR in species_traits)) From 00279c71f09588a77d92a451ef23cfd95bc407f5 Mon Sep 17 00:00:00 2001 From: ACCount Date: Mon, 4 Dec 2017 13:53:02 +0300 Subject: [PATCH 46/66] IC fixes (#33215) --- .../integrated_electronics/core/assemblies.dm | 4 ---- .../subtypes/manipulation.dm | 15 +++++++++------ .../integrated_electronics/subtypes/output.dm | 6 +++++- 3 files changed, 14 insertions(+), 11 deletions(-) diff --git a/code/modules/integrated_electronics/core/assemblies.dm b/code/modules/integrated_electronics/core/assemblies.dm index 5d457dfeed..a7ed8e7c11 100644 --- a/code/modules/integrated_electronics/core/assemblies.dm +++ b/code/modules/integrated_electronics/core/assemblies.dm @@ -196,10 +196,6 @@ for(var/I in assembly_components) var/obj/item/integrated_circuit/IC = I IC.external_examine(user) - if(istype(IC, /obj/item/integrated_circuit/output/screen)) - var/obj/item/integrated_circuit/output/screen/S - if(S.stuff_to_display) - to_chat(user, "There's a little screen labeled '[S]', which displays '[S.stuff_to_display]'.") if(opened) interact(user) diff --git a/code/modules/integrated_electronics/subtypes/manipulation.dm b/code/modules/integrated_electronics/subtypes/manipulation.dm index 813b77d6c2..62f15d927b 100644 --- a/code/modules/integrated_electronics/subtypes/manipulation.dm +++ b/code/modules/integrated_electronics/subtypes/manipulation.dm @@ -302,15 +302,15 @@ var/max_items = 10 /obj/item/integrated_circuit/manipulation/grabber/do_work() - var/turf/T = get_turf(src) + var/atom/movable/acting_object = get_object() + var/turf/T = get_turf(acting_object) var/obj/item/AM = get_pin_data_as_type(IC_INPUT, 1, /obj/item) if(AM) - var/turf/P = get_turf(AM) var/mode = get_pin_data(IC_INPUT, 2) if(mode == 1) - if(P.Adjacent(T)) - if((contents.len < max_items) && AM && (AM.w_class <= max_w_class)) + if(AM.Adjacent(acting_object) && isturf(AM.loc)) + if((contents.len < max_items) && (!max_w_class || AM.w_class <= max_w_class)) AM.forceMove(src) if(mode == 0) if(contents.len) @@ -372,11 +372,14 @@ var/target_y_rel = round(get_pin_data(IC_INPUT, 2)) var/obj/item/A = get_pin_data_as_type(IC_INPUT, 3, /obj/item) - if(!A || A.anchored || (A.w_class > max_w_class)) + if(!A || A.anchored || A.throwing) + return + + if(max_w_class && (A.w_class > max_w_class)) return var/atom/movable/acting_object = get_object() - if(!A.Adjacent(acting_object) && !(A in acting_object.GetAllContents())) + if(!(A.Adjacent(acting_object) && isturf(A.loc)) && !(A in acting_object.GetAllContents())) return var/turf/T = get_turf(acting_object) diff --git a/code/modules/integrated_electronics/subtypes/output.dm b/code/modules/integrated_electronics/subtypes/output.dm index 7cb2479ec9..7f61968c04 100644 --- a/code/modules/integrated_electronics/subtypes/output.dm +++ b/code/modules/integrated_electronics/subtypes/output.dm @@ -17,7 +17,11 @@ stuff_to_display = null /obj/item/integrated_circuit/output/screen/any_examine(mob/user) - to_chat(user, "There is a little screen labeled '[name]', which displays [!isnull(stuff_to_display) ? "'[stuff_to_display]'" : "nothing"].") + var/shown_label = "" + if(displayed_name && displayed_name != name) + shown_label = " labeled '[displayed_name]'" + + to_chat(user, "There is \a [src][shown_label], which displays [!isnull(stuff_to_display) ? "'[stuff_to_display]'" : "nothing"].") /obj/item/integrated_circuit/output/screen/do_work() var/datum/integrated_io/I = inputs[1] From 3689b3d5fd7e885147b3e344beb0a528443a64e6 Mon Sep 17 00:00:00 2001 From: Ashe Higgs Date: Mon, 4 Dec 2017 05:54:32 -0500 Subject: [PATCH 48/66] Mechs now require fuel to repair (#33225) --- code/game/mecha/mecha_defense.dm | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) diff --git a/code/game/mecha/mecha_defense.dm b/code/game/mecha/mecha_defense.dm index 590c19b504..065415cba9 100644 --- a/code/game/mecha/mecha_defense.dm +++ b/code/game/mecha/mecha_defense.dm @@ -242,15 +242,17 @@ user.changeNext_move(CLICK_CD_MELEE) var/obj/item/weldingtool/WT = W if(obj_integrityYou repair the damaged gas tank.") else - user.visible_message("[user] repairs some damage to [name].") + user.visible_message("[user] repairs some damage to [name].", "You repair some damage to [src].") obj_integrity += min(10, max_integrity-obj_integrity) + if(obj_integrity == max_integrity) + to_chat(user, "It looks to be fully repaired now.") else - to_chat(user, "The welder must be on for this task!") + to_chat(user, "[WT] needs to be on for this task!") return 1 else to_chat(user, "The [name] is at full integrity!") From 1cc3e3371464ae0c7258de587c8df55382fab3e4 Mon Sep 17 00:00:00 2001 From: AnturK Date: Mon, 4 Dec 2017 12:14:08 +0100 Subject: [PATCH 50/66] Holorecord disks. --- code/datums/holocall.dm | 128 ++++++++++++ code/game/machinery/hologram.dm | 195 +++++++++++++++++- .../research/designs/autolathe_designs.dm | 19 ++ icons/obj/module.dmi | Bin 15674 -> 16071 bytes 4 files changed, 339 insertions(+), 3 deletions(-) diff --git a/code/datums/holocall.dm b/code/datums/holocall.dm index abad0dba1d..75abc87080 100644 --- a/code/datums/holocall.dm +++ b/code/datums/holocall.dm @@ -1,5 +1,14 @@ #define HOLOPAD_MAX_DIAL_TIME 200 +#define HOLORECORD_DELAY "delay" +#define HOLORECORD_SAY "say" +#define HOLORECORD_SOUND "sound" +#define HOLORECORD_LANGUAGE "lang" +#define HOLORECORD_PRESET "preset" +#define HOLORECORD_RENAME "rename" + +#define HOLORECORD_MAX_LENGTH 200 + /mob/camera/aiEye/remote/holo/setLoc() . = ..() var/obj/machinery/holopad/H = origin @@ -184,3 +193,122 @@ /datum/action/innate/end_holocall/Activate() hcall.Disconnect(hcall.calling_holopad) + + +//RECORDS +/datum/holorecord + var/caller_name = "Unknown" //Caller name + var/image/caller_image + var/list/entries = list() + var/language = /datum/language/common //Initial language, can be changed by HOLORECORD_LANGUAGE entries + +/obj/item/disk/holodisk + name = "holorecord disk" + desc = "Stores recorder holocalls." + icon_state = "holodisk" + var/datum/holorecord/record + //Preset variables + var/preset_image_type + var/preset_record_text + +/obj/item/disk/holodisk/Initialize(mapload) + . = ..() + if(preset_record_text) + build_record() + +/obj/item/disk/holodisk/Destroy() + QDEL_NULL(record) + return ..() + +/obj/item/disk/holodisk/proc/build_record() + record = new + var/list/lines = splittext(preset_record_text,"\n") + for(var/line in lines) + var/prepared_line = trim(line) + if(!length(prepared_line)) + continue + var/splitpoint = findtext(prepared_line," ") + if(!splitpoint) + continue + var/command = copytext(prepared_line,1,splitpoint) + var/value = copytext(prepared_line,splitpoint+1) + switch(command) + if("DELAY") + var/delay_value = text2num(value) + if(!delay_value) + continue + record.entries += list(list(HOLORECORD_DELAY,delay_value)) + if("NAME") + if(!record.caller_name) + record.caller_name = value + else + record.entries += list(list(HOLORECORD_RENAME,value)) + if("SAY") + record.entries += list(list(HOLORECORD_SAY,value)) + if("SOUND") + record.entries += list(list(HOLORECORD_SOUND,value)) + if("LANGUAGE") + var/lang_type = text2path(value) + if(ispath(lang_type,/datum/language)) + record.entries += list(list(HOLORECORD_LANGUAGE,lang_type)) + if("PRESET") + var/preset_type = text2path(value) + if(ispath(preset_type,/datum/preset_holoimage)) + record.entries += list(list(HOLORECORD_PRESET,preset_type)) + if(!preset_image_type) + record.caller_image = image('icons/mob/animal.dmi',"old") + else + var/datum/preset_holoimage/H = new preset_image_type + record.caller_image = H.build_image() + +//These build caller image from outfit and some additional data, for use by mappers for ruin holorecords +/datum/preset_holoimage + var/nonhuman_mobtype //Fill this if you just want something nonhuman + var/outfit_type + var/species_type = /datum/species/human + +/datum/preset_holoimage/proc/build_image() + if(nonhuman_mobtype) + var/mob/living/L = nonhuman_mobtype + . = image(initial(L.icon),initial(L.icon_state)) + else + var/mob/living/carbon/human/dummy/mannequin = generate_or_wait_for_human_dummy("HOLODISK_PRESET") + if(species_type) + mannequin.set_species(species_type) + if(outfit_type) + mannequin.equipOutfit(outfit_type,TRUE) + mannequin.setDir(SOUTH) + COMPILE_OVERLAYS(mannequin) + . = getFlatIcon(mannequin) + unset_busy_human_dummy("HOLODISK_PRESET") + +/obj/item/disk/holodisk/example + preset_image_type = /datum/preset_holoimage/clown + preset_record_text = {" + NAME Clown + DELAY 10 + SAY Why did the chaplain cross the maint ? + DELAY 20 + SAY He wanted to get to the other side! + SOUND clownstep + DELAY 30 + LANGUAGE /datum/language/narsie + SAY Helped him get there! + DELAY 10 + SAY ALSO IM SECRETLY A GORILLA + DELAY 10 + PRESET /datum/preset_holoimage/gorilla + NAME Gorilla + LANGUAGE /datum/language/common + SAY OOGA + DELAY 20"} + +/datum/preset_holoimage/engineer + outfit_type = /datum/outfit/job/engineer/gloved/rig + +/datum/preset_holoimage/gorilla + nonhuman_mobtype = /mob/living/simple_animal/hostile/gorilla + +/datum/preset_holoimage/clown + outfit_type = /datum/outfit/job/clown + diff --git a/code/game/machinery/hologram.dm b/code/game/machinery/hologram.dm index afc463a60e..d6d8c93ed1 100644 --- a/code/game/machinery/hologram.dm +++ b/code/game/machinery/hologram.dm @@ -47,6 +47,12 @@ Possible to do for anyone motivated enough: var/temp = "" var/list/holo_calls //array of /datum/holocalls var/datum/holocall/outgoing_call //do not modify the datums only check and call the public procs + var/obj/item/disk/holodisk/disk //Record disk + var/replay_mode = FALSE //currently replaying a recording + var/record_mode = FALSE //currently recording + var/record_start = 0 //recording start time + var/record_user //user that inititiated the recording + var/obj/effect/overlay/holo_pad_hologram/replay_holo //replay hologram var/static/force_answer_call = FALSE //Calls will be automatically answered after a couple rings, here for debugging var/static/list/holopads = list() @@ -64,6 +70,14 @@ Possible to do for anyone motivated enough: for (var/I in masters) clear_holo(I) + + if(replay_mode) + replay_stop() + if(record_mode) + record_stop() + + QDEL_NULL(disk) + holopads -= src return ..() @@ -72,6 +86,10 @@ Possible to do for anyone motivated enough: stat &= ~NOPOWER else stat |= NOPOWER + if(replay_mode) + replay_stop() + if(record_mode) + record_stop() if(outgoing_call) outgoing_call.ConnectionFailure(src) @@ -101,6 +119,18 @@ Possible to do for anyone motivated enough: if(default_deconstruction_crowbar(P)) return + + if(istype(P,/obj/item/disk/holodisk)) + if(disk) + to_chat(user,"There's already a disk inside [src]") + return + if (!user.transferItemToLoc(P,src)) + return + to_chat(user,"You insert [P] into [src]") + disk = P + updateDialog() + return + return ..() /obj/machinery/holopad/AltClick(mob/living/carbon/human/user) @@ -122,6 +152,17 @@ Possible to do for anyone motivated enough: else dat = "Request an AI's presence.
" dat += "Call another holopad.
" + if(disk) + if(disk.record) + //Replay + dat += "Replay disk recording.
" + //Clear + dat += "Clear disk recording.
" + else + //Record + dat += "Start new recording.
" + //Eject + dat += "Eject disk.
" if(LAZYLEN(holo_calls)) dat += "=====================================================
" @@ -145,7 +186,7 @@ Possible to do for anyone motivated enough: dat += "Disconnect call from [HC.user].
" - var/datum/browser/popup = new(user, "holopad", name, 300, 130) + var/datum/browser/popup = new(user, "holopad", name, 300, 150) popup.set_content(dat) popup.set_title_image(user.browse_rsc_icon(src.icon, src.icon_state)) popup.open() @@ -215,6 +256,22 @@ Possible to do for anyone motivated enough: temp = "" if(outgoing_call) outgoing_call.Disconnect() + + else if(href_list["disk_eject"]) + if(disk && !replay_mode) + disk.forceMove(drop_location()) + disk = null + + else if(href_list["replay_stop"]) + replay_stop() + else if(href_list["replay_start"]) + replay_start() + else if(href_list["record_start"]) + record_start(usr) + else if(href_list["record_stop"]) + record_stop() + else if(href_list["record_clear"]) + record_clear() updateDialog() @@ -269,6 +326,7 @@ Possible to do for anyone motivated enough: else playsound(src, 'sound/machines/twobeep.ogg', 100) //bring, bring! + /obj/machinery/holopad/proc/activate_holo(mob/living/user) var/mob/living/silicon/ai/AI = user if(!istype(AI)) @@ -321,15 +379,24 @@ For the other part of the code, check silicon say.dm. Particularly robot talk.*/ if(outgoing_call && speaker == outgoing_call.user) outgoing_call.hologram.say(raw_message) + if(record_mode && speaker == record_user) + record_message(speaker,raw_message,message_language) + /obj/machinery/holopad/proc/SetLightsAndPower() var/total_users = masters.len + LAZYLEN(holo_calls) use_power = total_users > 0 ? ACTIVE_POWER_USE : IDLE_POWER_USE active_power_usage = HOLOPAD_PASSIVE_POWER_USAGE + (HOLOGRAM_POWER_USAGE * total_users) - if(total_users) + if(total_users || replay_mode) set_light(2) - icon_state = "holopad1" else set_light(0) + update_icon() + +/obj/machinery/holopad/update_icon() + var/total_users = masters.len + LAZYLEN(holo_calls) + if(total_users || replay_mode) + icon_state = "holopad1" + else icon_state = "holopad0" /obj/machinery/holopad/proc/set_holo(mob/living/user, var/obj/effect/overlay/holo_pad_hologram/h) @@ -365,6 +432,128 @@ For the other part of the code, check silicon say.dm. Particularly robot talk.*/ clear_holo(user) return TRUE +// RECORDED MESSAGES + +/obj/machinery/holopad/proc/setup_replay_holo(datum/holorecord/record) + var/obj/effect/overlay/holo_pad_hologram/Hologram = new(loc)//Spawn a blank effect at the location. + Hologram.add_overlay(record.caller_image) + Hologram.alpha = 170 + Hologram.add_atom_colour("#77abff", FIXED_COLOUR_PRIORITY) + Hologram.dir = SOUTH //for now + Hologram.grant_all_languages(omnitongue=TRUE) + var/datum/language_holder/holder = Hologram.get_language_holder() + holder.selected_default_language = record.language + Hologram.mouse_opacity = MOUSE_OPACITY_TRANSPARENT//So you can't click on it. + Hologram.layer = FLY_LAYER//Above all the other objects/mobs. Or the vast majority of them. + Hologram.anchored = TRUE//So space wind cannot drag it. + Hologram.name = "[record.caller_name] (Hologram)"//If someone decides to right click. + Hologram.set_light(2) //hologram lighting + visible_message("A holographic image of [record.caller_name] flickers to life before your eyes!") + return Hologram + +/obj/machinery/holopad/proc/replay_start() + if(!replay_mode) + replay_mode = TRUE + replay_holo = setup_replay_holo(disk.record) + temp = "Replaying...
" + temp += "End replay." + SetLightsAndPower() + replay_entry(1) + return + +/obj/machinery/holopad/proc/replay_stop() + if(replay_mode) + replay_mode = FALSE + temp = null + QDEL_NULL(replay_holo) + SetLightsAndPower() + updateDialog() + +/obj/machinery/holopad/proc/record_start(mob/living/user) + if(!user || !disk || disk.record) + return + disk.record = new + record_mode = TRUE + record_start = world.time + record_user = user + disk.record.caller_image = get_record_icon(user) + temp = "Recording...
" + temp += "End recording." + +/obj/machinery/holopad/proc/get_record_icon(mob/living/user) + var/olddir = user.dir + user.setDir(SOUTH) + . = getFlatIcon(user) + user.setDir(olddir) + +/obj/machinery/holopad/proc/record_message(mob/living/speaker,message,language) + if(!record_mode) + return + //make this command so you can have multiple languages in single record + if(!disk.record.caller_name && istype(speaker)) + disk.record.caller_name = speaker.name + if(!disk.record.language) + disk.record.language = language + else if(language != disk.record.language) + disk.record.entries += list(list(HOLORECORD_LANGUAGE,language)) + + var/current_delay = 0 + for(var/E in disk.record.entries) + var/list/entry = E + if(entry[1] != HOLORECORD_DELAY) + continue + current_delay += entry[2] + + var/time_delta = world.time - record_start - current_delay + + if(time_delta >= 1) + disk.record.entries += list(list(HOLORECORD_DELAY,time_delta)) + disk.record.entries += list(list(HOLORECORD_SAY,message)) + if(disk.record.entries.len >= HOLORECORD_MAX_LENGTH) + record_stop() + +/obj/machinery/holopad/proc/replay_entry(entry_number) + if(!replay_mode) + return + if(disk.record.entries.len < entry_number) + replay_stop() + return + var/list/entry = disk.record.entries[entry_number] + var/command = entry[1] + switch(command) + if(HOLORECORD_SAY) + var/message = entry[2] + if(replay_holo) + replay_holo.say(message) + if(HOLORECORD_SOUND) + playsound(src,entry[2],50,1) + if(HOLORECORD_DELAY) + addtimer(CALLBACK(src,.proc/replay_entry,entry_number+1),entry[2]) + return + if(HOLORECORD_LANGUAGE) + var/datum/language_holder/holder = replay_holo.get_language_holder() + holder.selected_default_language = entry[2] + if(HOLORECORD_PRESET) + var/preset_type = entry[2] + var/datum/preset_holoimage/H = new preset_type + replay_holo.cut_overlays() + replay_holo.add_overlay(H.build_image()) + if(HOLORECORD_RENAME) + replay_holo.name = entry[2] + " (Hologram)" + .(entry_number+1) + +/obj/machinery/holopad/proc/record_stop() + if(record_mode) + record_mode = FALSE + temp = null + record_user = null + updateDialog() + +/obj/machinery/holopad/proc/record_clear() + if(disk && disk.record) + QDEL_NULL(disk.record) + updateDialog() + /obj/effect/overlay/holo_pad_hologram var/mob/living/Impersonation var/datum/holocall/HC diff --git a/code/modules/research/designs/autolathe_designs.dm b/code/modules/research/designs/autolathe_designs.dm index 03424346e8..1c0c12a02b 100644 --- a/code/modules/research/designs/autolathe_designs.dm +++ b/code/modules/research/designs/autolathe_designs.dm @@ -799,3 +799,22 @@ materials = list(MAT_METAL = 300, MAT_GLASS = 200) build_path = /obj/item/device/slime_scanner category = list("initial", "Misc") +<<<<<<< HEAD +======= + +/datum/design/miniature_power_cell + name = "Light Fixture Battery" + id = "miniature_power_cell" + build_type = AUTOLATHE + materials = list(MAT_GLASS = 20) + build_path = /obj/item/stock_parts/cell/emergency_light + category = list("initial", "Electronics") + +/datum/design/holodisk + name = "Holodisk" + id = "holodisk" + build_type = AUTOLATHE + materials = list(MAT_METAL = 1000) + build_path = /obj/item/disk/holodisk + category = list("initial", "Misc") +>>>>>>> 78fe2bc... Holorecord disks. (#32868) diff --git a/icons/obj/module.dmi b/icons/obj/module.dmi index c24f7c4c16c4fefddbb43a5faaa71c469fb45556..f5bd612c225e248c35ce085aae9c27cdddeb944b 100644 GIT binary patch literal 16071 zcmcJ$by!@@vo1O~1P>%=fItESf_w1b!9$P)hu{H1a2p0la0$WPg1ZNI*MZ7`2u-z5c@NHxSi{(LgPp(nFpWIxm+HV#V=m z^iM7WzMsiKM^%2e>0`Q;f(A#dYuzr?o-wfs z@O7ZpLb6Bqa8wWnl;`zSrA$=MMQca}(h}_@_TR~ z%1|*t^dg=t0q^r<&}*q!)(XQLI&&Ose=5$0?2@NnJ0JYya3eP?-ceY=>LPtFv{7av z$$0j{&nR1n&c6V~r6s9{k5?MrZz0jG%PZLs@eyoBHF#Ib`{U+?#k2F+4n>JDB}4Nh z){9YknT}~na++mNMb6)6Qlq_Ub-OMV8ttiyOgNLuFN#5hSv}b5& z*wjAI?Qz^A)3R~qzK}Xu8=$yQESn9Qa2Bf)mw;-Ke`5NeKLzIS6t?X(1H%jAgBkNK zO<1lqyi8KB$)&S@x<2j#Ea}f2W{?1eUypgDq)80IDYF=G%jF0(NHAv^u~~5g z>_{=lF+1xb-ne67n*N-q_fBpzH^(PbH3XF|mwL(idF+eYLN+%yoAPa}Q~H7kY2G4C zL)w}z9GedXpRAtt)2n~D$}p45Oiz_oR;CaUq2lLvy|6Q|Z%*88cBhGSRB|F}tl^#0 ztCuoo<$QT`&s&Bn8+xykv?@NFe+-H%lw!DaAEVEy^IaGfSDCJSYJ zaY23?gizRq$39&~Fz1I_eEj%%FxYrC&k5%?zVYmuz)18QgY)JDzr}3}=cARC^Snjk zDPq5ZrBuI478;Kw&mY4lN-?L<`Q!b@*ie>DCUouyMxbp=QNzth3|V?lRcg5Sv32|* zl)fGjNS#%{JS2avKxa!ZEfqR1{LpUubeCA34L-Uq`IhkJ`8$l`j|o(ZW1%k>6qzXI z^~$QhtMxWNdUwkJ!bB%YLbuqC>lD#|YMRD=K&_8^KX)8J*|d~G1%0_k9M3ieRnlL@ z^BIfw1t)%VdP*_5v@~)PEHSRUPV^%trc;@AV~E)5WSPqNTcF=+UU}fg_BNmA*~Zs8 z{iaH4*jDi}=u`QE>ggGJR;Yzt^T1#-R!7_8x!H-wh;h6nXLU|d!TO2G$=<$dEJVO_ z5fxSsw(=vBQiOQG-e#Fjh$O5tWR@tl{dTXScRH^+Z=><&b9@86K`hpzCH1ov59vs=wxV}Ty@QQo(J z09w0SKnCxM$bgymmcDN++#`yMcubvAd8WQbs`x&@voafQHLf!-I%;vgRWO-T!K$1j z?)~`DqpJcrzri1y2)#n9@ZZ%uYVKI;+XLg$`?hiO~yqsGDeMyfr+Ut zl20~b)&HE|ls=a-H~#|F;KxX*u_C(A+AqW9mLx~p+T4Wxs)6zJ`>jU`{aOvc z_W+I{kJDZXw3Az8Jqnwbmp4honfdnWc)P+&b8c$UhCj$tDwng$ z|AD#(fDwxVOy~q$WMQE6zUF>q(Zir3wQs1U4GX8a!G2zS97(^HzI}YoUkqkc{*egK z{QNwv@MnngxHttQ(HJaZhN6evLC9E|JW70Dn#g9WOWZtT*C|!}&}^351uTr1HWZT| zI*BFn)Hq%Hd*_!tj^Dz~zfc*>N5-kc)x2|6RnKkgq3V&~5z;I{-SBHC1zE6(U80o~ zlAJH8&GRk;6ld`YhIQ|s?{u5Qv$46Usot9B=;nWZc1A$9WJGxXW5+S+Ynz~M_u|Hr zTKogd!^1-Z@XclmV0O~Hj~f4;0|N#@auuS_dNt|KD8@b}aK&En5S-8GJJvl%f2p67 z!%Fp%eK;~i>H~GkTx;_;Hdl1O5NKOaEwu|a2%!%u8R^5da_PN^xIg+VhBs)z^)%Z_ zC6Aez#44u>b9M`Uv?09hR(CE3)+;VMMSqs#f0Bnxe|7ag&vq(k4J1aweNW&y@|+9k z-V{(jDoE>1-=tboQw62~Rso+~L1 zN#?*6R%<-hW`dDEt1VEXE~Q9ELivseYXN+ecJ(X_&}v7ZIrs~tXhz5xGCZ8{98hPX ziRM9NQn>^wPa)4+g#ba`(k~E!&+)V2^&)52%0ARC?_@JTuLD8f$a$^CX!$v+##s&8 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 literal 15674 zcmcJ$1ymeu*Dcscu;7H?kc0$?-~`uT!685(xFom+*T%h(kOcPtfuO;)8z;ECyK6Vn z(DYQ^?_2+TYwo?X=FZH|TD^*{?yh?3sq^f!&)%mZ)m7z*2xtjFAP|wlTbXwt5QZf1 zdW44q?CJVgd;$Vta(ip(y2^ZVG5>7s} zw^QQY7%_8vG(v7pk?<_|OX4RrXz>2)*}X_c-^xHH3BL!=Q!e-V$Lmnhb7IHQ6rX>r zXcyHoeeYUR=6_wRmF8Ay6~D(q#KbN2M!UEvxx^v3<>kZgg2nGjqq+ifx>ivFIzlJ% zWYz(nz8DHJN5B1o|K^iVVvzE9y~$m|NTHeOXq)V}y;D;+RI@_0WGeyex=WA3cWs6K z^U_Q{fx&+3FPc|FojSbN2xWiX#AS=?hyo)1R2==cAJ1f2aBvrFT&>7))mSWo?eIij zuJA|41-)7bti&>7AP)af56)U@eZ67~5uoQj`#PMr|11W_hupdHxIoX-&-{u-+5N4Y zx{XBux`RwQZSpc1od&NxV8dmHhG z2rihPWSt?-TAcAj{h-Q*6%WaEqk2Axcj)j))Wv-CH>3G;Tf+0@`uV4)=ZUbl;!z5Q zd0AG7K_+R~B=rNjMWMGFw%2b4yHpv*cfS?G__(=LCZPn%8oa4E^_i}o3@yI8?9o05 z_;1aoZNJm|ieK6zYK?-_K%hq;1sN$V&-B95Dr_+_9&i1+dKd1INu_U=&gF)#1sjqlO0-_Qc1 zwl*2IloNAdeiLTUBfQ-=gzBW&(@${N@Pcf~upVHy)kI(r1g+?Gg6>HbS~iAtCHn{tNmw`h*WUY>TDBHgkbAsQ~rqo-Fu00BVLl7A>L>5VYyin~^9rj*(Zn2qh|>;Mg*eVFWd}@XS=?{PE7%%#|=h zg!4(NseH}YN)nx*E)FEGa(+5Bv_8%hrL~i`4X&m=Q~HUs^yd}tMF!o6>IAv1dEL_A z@v2=ulv+2BK-ie1$vB_3zqd80k7}4E&cV)yeO^1xpskxrM*01?1|0V$ij=d&GpdXv zhUAkzI+Ib2E-Vb(3x~p#D2Njh655pL*ZSftP8UBI2TMcO^UI_+wzqlR_9jAV^cyQ^ zmuri~Kz6_8q)&@6vm?LJHTM2V!GZ-o6dW0Oh#Xc}a8cvcdTS%XG zo%iTNtM0H5EDFf|p3p_4h_nbQXFAg&y+MNM$P?G01@V5W+<17d#`Xi$-|uXVQ1rO3 zPf>O0GdUNBus;*_83d{I{{83A3C;t5E}<( zllE%o%PS7(?PsG^Nd_=;!MU|ZQKbI?XvNSdP?>UEb1`ua(D`QDv}%KC-#dT)P!UZ%Iw@&V@d<|YkGeHHEPvr%I%d_ViZu)04Y zAE{>W=jP`dZqNF?Rzs--kDJfyf&Ya(Pac7KVj0$z%*EH#(!1!5S(r?yw@T}lY?QEd zYYk*IcyvE}ry~oj=HsihRJ*Ue_Y?qv;y#{wu(X3Q_Ls!w+MPlkdA+OgK9?D^yB! zDNu$B_D?H3pqn#Deuk@?oAb$vRAXafvX~D)6FL`zAjmgh)Ub8s zgv!&lz%=%c*;aP;vx!3OGBA4*2vsgdB{&_j688k{qvO(8#es+e36Kr+=Ao32mk7a;xG}0}gVcFiV zgP4W|98&$-+Opti+<78SOcW3>O35!52=O)6(V_Ya#;qdzwzoSY$DY>h+-K+KURx=a z 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 From 2587b99a6921cb53d61a409113205b8d699aa1b3 Mon Sep 17 00:00:00 2001 From: AnturK Date: Mon, 4 Dec 2017 12:28:11 +0100 Subject: [PATCH 51/66] Adds quiet argument to playsound. (#33185) * Adds quiet argument to playsound. * argument name change --- code/game/sound.dm | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/code/game/sound.dm b/code/game/sound.dm index b150c1c148..231a346f2e 100644 --- a/code/game/sound.dm +++ b/code/game/sound.dm @@ -1,4 +1,4 @@ -/proc/playsound(atom/source, soundin, vol as num, vary, extrarange as num, falloff, frequency = null, channel = 0, pressure_affected = TRUE) +/proc/playsound(atom/source, soundin, vol as num, vary, extrarange as num, falloff, frequency = null, channel = 0, pressure_affected = TRUE, ignore_walls = TRUE) if(isarea(source)) throw EXCEPTION("playsound(): source is an area") return @@ -11,7 +11,10 @@ // Looping through the player list has the added bonus of working for mobs inside containers var/sound/S = sound(get_sfx(soundin)) var/maxdistance = (world.view + extrarange) * 3 - for(var/P in GLOB.player_list) + var/list/listeners = GLOB.player_list + if(!ignore_walls) //these sounds don't carry through walls + listeners = listeners & hearers(maxdistance,turf_source) + for(var/P in listeners) var/mob/M = P if(!M || !M.client) continue From e36f4a5b2253bf926692215175497ca7ed76ff45 Mon Sep 17 00:00:00 2001 From: Jordan Brown Date: Mon, 4 Dec 2017 06:29:39 -0500 Subject: [PATCH 53/66] SendSignal optimization --- code/datums/components/README.md | 2 +- code/datums/components/_component.dm | 12 +++++++++--- 2 files changed, 10 insertions(+), 4 deletions(-) diff --git a/code/datums/components/README.md b/code/datums/components/README.md index 476d820bc2..574e628741 100644 --- a/code/datums/components/README.md +++ b/code/datums/components/README.md @@ -34,7 +34,7 @@ Stands have a lot of procs which mimic mob procs. Rather than inserting hooks fo * Lazy associated list of type -> component/list of components. 1. `/datum/component/var/enabled` (protected, boolean) * If the component is enabled. If not, it will not react to signals - * `TRUE` by default + * `FALSE` by default, set to `TRUE` when a signal is registered 1. `/datum/component/var/dupe_mode` (protected, enum) * How duplicate component types are handled when added to the datum. * `COMPONENT_DUPE_HIGHLANDER` (default): Old component will be deleted, new component will first have `/datum/component/proc/InheritComponent(datum/component/old, FALSE)` on it diff --git a/code/datums/components/_component.dm b/code/datums/components/_component.dm index 39980b4f9d..8437d0a7dd 100644 --- a/code/datums/components/_component.dm +++ b/code/datums/components/_component.dm @@ -1,5 +1,5 @@ /datum/component - var/enabled = TRUE + var/enabled = FALSE var/dupe_mode = COMPONENT_DUPE_HIGHLANDER var/dupe_type var/list/signal_procs @@ -133,6 +133,8 @@ if(!istype(proc_or_callback, /datum/callback)) //if it wasnt a callback before, it is now proc_or_callback = CALLBACK(src, proc_or_callback) procs[sig_type] = proc_or_callback + + enabled = TRUE /datum/component/proc/InheritComponent(datum/component/C, i_am_original) return @@ -172,8 +174,7 @@ var/datum/component/C = target if(!C.enabled) return NONE - var/list/sps = C.signal_procs - var/datum/callback/CB = LAZYACCESS(sps, sigtype) + var/datum/callback/CB = C.signal_procs[sigtype] if(!CB) return NONE . = CB.InvokeAsync(arglist(arguments)) @@ -185,9 +186,14 @@ for(var/I in target) var/datum/component/C = I if(!C.enabled) +<<<<<<< HEAD continue var/list/sps = C.signal_procs var/datum/callback/CB = LAZYACCESS(sps, sigtype) +======= + continue + var/datum/callback/CB = C.signal_procs[sigtype] +>>>>>>> 4e01bba... SendSignal optimization (#33220) if(!CB) continue var/retval = CB.InvokeAsync(arglist(arguments)) From 77ef9b08164f1e6118942857ff3377b528260f19 Mon Sep 17 00:00:00 2001 From: CitadelStationBot Date: Mon, 4 Dec 2017 15:07:28 -0600 Subject: [PATCH 54/66] Automatic changelog generation for PR #4207 [ci skip] --- html/changelogs/AutoChangeLog-pr-4207.yml | 4 ++++ 1 file changed, 4 insertions(+) create mode 100644 html/changelogs/AutoChangeLog-pr-4207.yml diff --git a/html/changelogs/AutoChangeLog-pr-4207.yml b/html/changelogs/AutoChangeLog-pr-4207.yml new file mode 100644 index 0000000000..692dca99ed --- /dev/null +++ b/html/changelogs/AutoChangeLog-pr-4207.yml @@ -0,0 +1,4 @@ +author: "Xhuis" +delete-after: True +changes: + - bugfix: "You now need fuel in your welder to repair mechs." From 7150e738e7587e267a9b10e97c58f57759cca9c0 Mon Sep 17 00:00:00 2001 From: deathride58 Date: Mon, 4 Dec 2017 16:08:49 -0500 Subject: [PATCH 55/66] Update autolathe_designs.dm --- code/modules/research/designs/autolathe_designs.dm | 11 ----------- 1 file changed, 11 deletions(-) diff --git a/code/modules/research/designs/autolathe_designs.dm b/code/modules/research/designs/autolathe_designs.dm index 1c0c12a02b..3aaebe55be 100644 --- a/code/modules/research/designs/autolathe_designs.dm +++ b/code/modules/research/designs/autolathe_designs.dm @@ -799,16 +799,6 @@ materials = list(MAT_METAL = 300, MAT_GLASS = 200) build_path = /obj/item/device/slime_scanner category = list("initial", "Misc") -<<<<<<< HEAD -======= - -/datum/design/miniature_power_cell - name = "Light Fixture Battery" - id = "miniature_power_cell" - build_type = AUTOLATHE - materials = list(MAT_GLASS = 20) - build_path = /obj/item/stock_parts/cell/emergency_light - category = list("initial", "Electronics") /datum/design/holodisk name = "Holodisk" @@ -817,4 +807,3 @@ materials = list(MAT_METAL = 1000) build_path = /obj/item/disk/holodisk category = list("initial", "Misc") ->>>>>>> 78fe2bc... Holorecord disks. (#32868) From 1998c3ff5ca95c522e3f5b591f72a37ad26b8f54 Mon Sep 17 00:00:00 2001 From: deathride58 Date: Mon, 4 Dec 2017 16:15:14 -0500 Subject: [PATCH 56/66] Update _component.dm --- code/datums/components/_component.dm | 6 ------ 1 file changed, 6 deletions(-) diff --git a/code/datums/components/_component.dm b/code/datums/components/_component.dm index 8437d0a7dd..0284d2c446 100644 --- a/code/datums/components/_component.dm +++ b/code/datums/components/_component.dm @@ -186,14 +186,8 @@ for(var/I in target) var/datum/component/C = I if(!C.enabled) -<<<<<<< HEAD - continue - var/list/sps = C.signal_procs - var/datum/callback/CB = LAZYACCESS(sps, sigtype) -======= continue var/datum/callback/CB = C.signal_procs[sigtype] ->>>>>>> 4e01bba... SendSignal optimization (#33220) if(!CB) continue var/retval = CB.InvokeAsync(arglist(arguments)) From 84fe88153ea396ffeff2441af68ee2ecb89d51e7 Mon Sep 17 00:00:00 2001 From: deathride58 Date: Mon, 4 Dec 2017 16:17:43 -0500 Subject: [PATCH 57/66] merges #4208 --- code/modules/power/lighting.dm | 1 - 1 file changed, 1 deletion(-) diff --git a/code/modules/power/lighting.dm b/code/modules/power/lighting.dm index 9f12e25bd2..920d2f5b52 100644 --- a/code/modules/power/lighting.dm +++ b/code/modules/power/lighting.dm @@ -321,7 +321,6 @@ else if(has_emergency_power() && !turned_off()) use_power = IDLE_POWER_USE emergency_mode = TRUE - process() //Force a process tick to update the light immediately else use_power = IDLE_POWER_USE set_light(0) From 9396424277becc0e0b9151108f1295ef605dd6ae Mon Sep 17 00:00:00 2001 From: CitadelStationBot Date: Mon, 4 Dec 2017 15:29:47 -0600 Subject: [PATCH 58/66] Automatic changelog generation for PR #4209 [ci skip] --- html/changelogs/AutoChangeLog-pr-4209.yml | 5 +++++ 1 file changed, 5 insertions(+) create mode 100644 html/changelogs/AutoChangeLog-pr-4209.yml diff --git a/html/changelogs/AutoChangeLog-pr-4209.yml b/html/changelogs/AutoChangeLog-pr-4209.yml new file mode 100644 index 0000000000..ee1613d170 --- /dev/null +++ b/html/changelogs/AutoChangeLog-pr-4209.yml @@ -0,0 +1,5 @@ +author: "CitadelStationBot" +delete-after: True +changes: + - rscadd: "You can now record and replay holopad messages using holodisks." + - rscadd: "Holodisks are printable in autolathes." From 6c01835eec54c2cd42006f28d81fe8c26114d03a Mon Sep 17 00:00:00 2001 From: CitadelStationBot Date: Mon, 4 Dec 2017 15:32:19 -0600 Subject: [PATCH 59/66] Automatic changelog generation for PR #4184 [ci skip] --- html/changelogs/AutoChangeLog-pr-4184.yml | 4 ++++ 1 file changed, 4 insertions(+) create mode 100644 html/changelogs/AutoChangeLog-pr-4184.yml diff --git a/html/changelogs/AutoChangeLog-pr-4184.yml b/html/changelogs/AutoChangeLog-pr-4184.yml new file mode 100644 index 0000000000..f97a70a206 --- /dev/null +++ b/html/changelogs/AutoChangeLog-pr-4184.yml @@ -0,0 +1,4 @@ +author: "CosmicScientist" +delete-after: True +changes: + - rscadd: "You can make plushies kiss one another!" From 1a40fe16bd7c42214c33b7ce893f3a37a126d5fe Mon Sep 17 00:00:00 2001 From: deathride58 Date: Mon, 4 Dec 2017 16:38:39 -0500 Subject: [PATCH 60/66] adds species_organic to cit races --- .../carbon/human/species_types/furrypeople.dm | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) diff --git a/code/modules/mob/living/carbon/human/species_types/furrypeople.dm b/code/modules/mob/living/carbon/human/species_types/furrypeople.dm index bff4d8554a..79bbee9db1 100644 --- a/code/modules/mob/living/carbon/human/species_types/furrypeople.dm +++ b/code/modules/mob/living/carbon/human/species_types/furrypeople.dm @@ -2,7 +2,7 @@ name = "Mammal" id = "mammal" default_color = "4B4B4B" - species_traits = list(MUTCOLORS,EYECOLOR,LIPS,HAIR) + species_traits = list(MUTCOLORS,EYECOLOR,LIPS,HAIR,SPECIES_ORGANIC) mutant_bodyparts = list("mam_tail", "mam_ears", "mam_body_markings", "snout", "taur") default_features = list("mcolor" = "FFF","mcolor2" = "FFF","mcolor3" = "FFF", "body_markings" = "None", "mam_tail" = "None", "mam_ears" = "None", "mam_body_markings" = "None", "taur" = "None") attack_verb = "claw" @@ -24,7 +24,7 @@ id = "avian" say_mod = "chirps" default_color = "BCAC9B" - species_traits = list(MUTCOLORS,EYECOLOR,LIPS,HAIR) + species_traits = list(MUTCOLORS,EYECOLOR,LIPS,HAIR,SPECIES_ORGANIC) mutant_bodyparts = list("snout", "wings", "taur", "mam_tail", "mam_body_markings", "taur") default_features = list("snout" = "Sharp", "wings" = "None", "taur" = "None", "mam_body_markings" = "Hawk") attack_verb = "peck" @@ -45,7 +45,7 @@ name = "Aquatic" id = "aquatic" default_color = "BCAC9B" - species_traits = list(MUTCOLORS,EYECOLOR,LIPS,HAIR) + species_traits = list(MUTCOLORS,EYECOLOR,LIPS,HAIR,SPECIES_ORGANIC) mutant_bodyparts = list("mam_tail", "mam_body_markings", "mam_ears", "taur") default_features = list("mcolor" = "FFF","mcolor2" = "FFF","mcolor3" = "FFF","mam_tail" = "shark", "mam_body_markings" = "None", "mam_ears" = "None") attack_verb = "bite" @@ -66,7 +66,7 @@ name = "Insect" id = "insect" default_color = "BCAC9B" - species_traits = list(MUTCOLORS,EYECOLOR,LIPS,HAIR) + species_traits = list(MUTCOLORS,EYECOLOR,LIPS,HAIR,SPECIES_ORGANIC) mutant_bodyparts = list("mam_body_markings", "mam_ears", "mam_tail", "taur") default_features = list("mcolor" = "FFF","mcolor2" = "FFF","mcolor3" = "FFF", "mam_body_markings" = "moth", "mam_tail" = "None", "mam_ears" = "None") attack_verb = "flutter" //wat? @@ -90,7 +90,7 @@ id = "xeno" say_mod = "hisses" default_color = "00FF00" - species_traits = list(MUTCOLORS,LIPS,DIGITIGRADE,PIERCEIMMUNE) + species_traits = list(MUTCOLORS,LIPS,DIGITIGRADE,PIERCEIMMUNE,SPECIES_ORGANIC) mutant_bodyparts = list("xenotail", "xenohead", "xenodorsal", "taur","mam_body_markings") default_features = list("xenotail"="xeno","xenohead"="standard","xenodorsal"="standard","mcolor" = "0F0","mcolor2" = "0F0","mcolor3" = "0F0","taur" = "None","mam_body_markings" = "xeno") heatmod = 1.3 @@ -220,7 +220,7 @@ name = "DataShark" id = "datashark" default_color = "BCAC9B" - species_traits = list(MUTCOLORS_PARTSONLY,EYECOLOR,LIPS,HAIR) + species_traits = list(MUTCOLORS_PARTSONLY,EYECOLOR,LIPS,HAIR,SPECIES_ORGANIC) mutant_bodyparts = list("mam_tail", "mam_body_markings") default_features = list("mam_tail" = "datashark", "mam_body_markings" = "None") attack_verb = "bite" @@ -234,7 +234,7 @@ name = "Guilmon" id = "guilmon" default_color = "4B4B4B" - species_traits = list(MUTCOLORS,EYECOLOR,LIPS,HAIR) + species_traits = list(MUTCOLORS,EYECOLOR,LIPS,HAIR,SPECIES_ORGANIC) mutant_bodyparts = list("mam_tail", "mam_ears", "mam_body_markings") default_features = list("mcolor" = "FFF", "mcolor2" = "FFF", "mcolor3" = "FFF", "mam_tail" = "guilmon", "mam_ears" = "guilmon", "mam_body_markings" = "guilmon") attack_verb = "claw" From 9cdaac3640914415aa4e555bfad361bb2fc307da Mon Sep 17 00:00:00 2001 From: deathride58 Date: Mon, 4 Dec 2017 16:53:49 -0500 Subject: [PATCH 61/66] updates tgui and adds the missing lighting.dmi --- icons/obj/lighting.dmi | Bin 82437 -> 86078 bytes tgui/assets/tgui.js | 34 +++++++++++++++++----------------- 2 files changed, 17 insertions(+), 17 deletions(-) diff --git a/icons/obj/lighting.dmi b/icons/obj/lighting.dmi index 75b12418404df411364020d5e65c1d68da1020d6..a17ac1c22ee12c8bdde8e8e9584f9cd2933059ad 100644 GIT binary patch literal 86078 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 literal 82437 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 z z&h0THJ5FvgNo#&R`d`e`9kpF}TV^)(+6^ydrCBc(P4BdiPZQD0uUj$S@+V&TRvouw zmiq2e%*Dg|XU%;pyPD}Z8zNv-7IpTqs=@iP$4$^l-A~a#>F%sR34H+=+?o7AogL-J ze6$N4u^(7>WMB+rN9!h=n}d%(3+OyLX+#s&xDwAX6*MOB5%04{_HSc1?M+AVy=K64 zUslB2EFeaQvh&(j?RcF6sjr!$9u@P{WiXcpOfh^J=8wW!GcA`e-$nM;^8-IThD}!| zCUY_tD>XnuAH(+(!894Fwt=(e zwcGuNtc=mgD03}r;TMT)-sfu<_S8hxr*N()zWge2SQ;2eimD-8Y2FR#!oBV!pC*xN z7!)13qG)K`XKa_+{*3DHeM`cRo7vyrKSO(K;}}1X{xDvCp?*Q^J3QP#5qLFBr1ny{ ziM(%1M#3yv1{(HjCsrhM+>Wc%@ynvGWXAom3pEif+3mpB)V`XPo1XVJhU^&b88?Le zD|?8*Wn^wJJoQS-&hV{|$5?^p=5LILK5Wz6N0?GT27Rd!uX^JX(+aQ6R)YG=nF^DaQbtG z?fQu-;Q+P%@*Awm!PW+|a3U$g#!s?`DXlW5>Rg`OGr;Qg5ti%FQXxF`C+rN4PZ=s9 zrm)KgB8)z^Yj_(*Wu`{8P+4K}&3KNvQ~C*-D!CzQ^fETr#go?kwZ$EsyGXzo=Y5k* zIrS9@Z8)73EJHRJ52&P%!4G-Y>C^j3EyvVg)c!&-gIOTl=F4Vmp)1XiJqfv;y}%hI zw%~d*m8Adqipz2_FX_)#Zv0PCYZ>`?As zHWI7&JT>lEHdcn1A)O6ESt9`lS9i6Ef%f6#CS_O@4Sl%k@`lXi%U+iv(l`UsW`xv` zexffHiJTFB{g$_k$|$5XC<+p1N*{Xd9I*Cp;DFlZwW4&wrk%t{r?4^qY#GxyWxSBk z^ggiM8dIkHLWaNubU*z%Y;{KHJm2B6Y1pZf4Lh%;=+199P~@eP%aG(yh&Jmaz5`RL zVlYgfj;3Wj>o5(fO*xu8`&#|cGQrH-ZX7i^PdYMp+n=)SgA~Zrs(A7poyc(QB@x^~ z24`HMb3BH&Jkz_wJF>#x7=h9!62KVax4b=oecehzS9N#d1Va1s*=7f0(8VZsGvAq% ztkJDG^sEHCzZ^7EV$HX3%ExyeS(@ajJg3Nl+{zdZn7xEW46Lr_vV)_w{3{PXa~^k0 zn&h|dWN}lh@Tj0{%$ZAl9sVLNzd!e334b+&jk{3I6^!p(smOqv_zK>dz$N0#zAd== z3-A^2`)OB>+wloE`5M*Cy;${XiSZO^lP;gWL6AOAX^SHW#8;=<{@ z&}8CGdhLmX)<1t1QmkH`V>pm1ZV?HKxnE#>DIfkfHFqs-dwCyTZ(oU!{ zUyww|t`VbFA(K`f1^eZ-qihum`e+j-QV|C$YagfqOyWU4V)amYY2u-Ddbr;O)4Pee zxjS1z&W2q5*r>*BxGJi5K0e&Qs*@(Vjq5IyM5w)9T;K)O|h-6r5SP1Qi z@A-?dGnT23`_xt&QOEXTc{tnG+ohJ2DWQa|04%!6(#+ z2tF?RFzfrPnJlD?RgZR_VQ6)5C{6{hRlKU5b1dkXu~rpjxP%y19Vpj4_~Quf9}AM{ zZLC3ueh(6G^7)tE)!IUVQ!BsCGhF)?9rvRNP2Yyl~^m&F>M)((g=zuGvN;JW{fuMO* zh^};U3RuqF0ddIji53 z!fNS{4S1v*BM{+#CJ*{boHcWrOSlB}hQ(G@xqRtsf4-&wt$|LWB-%y;$-klI->T*B z?=(SWByq2;@8M!taV0E-ZL-R|B^=tGlubr6YM-lNdRAew*5__ys4S}hf^&hFAb0UoiB5ADnWm#M0VVl)03u&UHJv$ zo6GJaKm;|a;RmhgzO_TxED&LW;f;9@usG0p1@8D_t7}_VFH|pPebft$JdJoCP zCbxR82akdhvWj;7!1NI0lDcwq(Xzxo92a*{7lK0$w|WOC<~@7hYPz>eXk7R@+#Sac|E4W8;_CY zkgD2rA1T1Ib97t{?dSxks@~=wnFPrP>WCXhxOwb7_s$Wj+l!@;ft!lsT`htcz$twW8!;6cBw4}Jc0z* zREqW6+gI7J<(u`1(ra1Ge2azPQ9K_>_(ZoJx~yU{%DJIC(%qjSN3(2SKpcL~`sIQX zZvL#(H)(O&l>tz*<=Khb$#}6eD=INKI3hcoYoY1j*{s$t{6f6&yqSsNV|f_^@n#m# zXggv`HEo^Ke>$=eIW_p=m27|OSv-B7|LeqKT1yO^6c)2KqMmji((o1P+^_+ggh zJvb;`e1yjoA6s*QYp7Tm|2sa4a)&?Sx#C7e-2U6Ywo(y^C}8RjGnuc1dpr?G`Sx9Ukr~Grn}~V3@4tI6zh5R94PSc~`OSIkxvT2v&X9LHv~cn0%#iuT~1~ zPoa{VjNav|)b|EisJ(lh7x{6vTfk5MMdZClqYf3k5Rya>ifrI1bMhBr74Xo|{Ibb< zrBeJLcyD&bq6hnl2ub5{&XksOCW0XfW2LE?%h1sJnj1ys!|BGP@OB(Q+uJ%0+qZhU zH7zpZxHHaKwQJKYS%DG>uZpJYl?qY%mB;engiwVG#MVMSQb)DRcB3cxYP4AZiSVJ? zr2|6(w8Y<30;J$OBvIl$r15fA8`U`2#rreVS~s1QBdJlqG!SH{^F9bOoghr1=-rR4 zu6(K;jbLxfl0P%{@0IT|YR2IzmpgYnHI!b5TI`4C#&_>Lr8Nr1O|jxtkw18v3qcqI zkvo@WOUe~Of4=zW)_k~Xhk%H_5jc#4fDFBD*NO=|Djm&ODy1kgDgDCBAnhuh`(+NU zsYfM}EoEu;;ZPp;w9tkTxc_Qkmb_THHv~EYHdJZ!&6h9kJKcUh4$*|;2M(+EWP&Vl zF@D~UtDdYg`U(4y2$7!PJdl?%#YS>pN?8*LjUMD6_3)g+E}gc?;`+E!Y8_~UD|fyA!(>|GH}VY35=RY766@l;h1m_0&;wc*OSe6Fal z$`Wwuj$4pK2Hvn_ygxm4Cm zFCsYBs|hQ;&5-)%ZZTB&6pNI%F&HsF<{ql?rXq-!E|0;RZ{y*D^0NcpL%4`5Da>_( z!K}#NGkd-{^C42wAO|%np0?4UU6fS0SvZvC<9?g6CC5d~gf}))jj~(w=%I;Gt6=VR zrH%Q}^vt##%)#?;K}MQe+ojK zqsotDY3VUfeMvALqQ#A&@zl5EG2n?`U*G_OXU~#==wt~RsbtJsNQuBEY%1bDZ$1%b zskrVTm7E^ws0k0$6Fg&RWRRn!hL!%?V8x#q4v)bJZCs1c^Oy9arc*zx4D&`(fIf&6 zJXQli8ixfLHIdow6{?Hg<1gj2?mal1hrDmF?aE(f@{gLrU~BbHFz$r=6*490Q*(p@ zkra4520o;8@X9)5r@;=gj|rIcQhpHjzU=>d>qwkl3MGUZ1uTaB1)+I*CG+-w9sKVj zJnE+&r9a1i{r)`}g2MSpHlyv~!)1`({a2~Sqm}<$VA9}WG&LoK3n1l^24kzCk7>ol<9QR{feZ$jsPj3|Mmc;M*|zBgI%FN4O#Pnswt23arWogDuVPm zrhfS5R_j;q9x>}ky^}YX1p=GFg`6_7Tr5&%SY5a$k^iVcC#!uw`0yu@*(drbg8V8* z8r)r}f90)ib|DF-JN}izXDpO|rIyH6zSXK9zfFU|q zDJck%5_Mm<)8H2$QvSVK)Fz`ndQu%Hr)uim3-tep4U`~!%zw43+(hbZZOtI6^&+IS z0rm`V&Hsdunwol+;&&+r`xkIeYKPIVAVzhgha$rPF?fquwA}wggJzH&O2oe-Q{F}C z@2M+=0Iy<{;7e)$hu9BPnTWFV4FCK84w(-@_Foy$7Xt+|pRj>O{5`6C; z!O%7pkmJy@{3{I*{40`5Mi4k^a<3vPGY6UfVf#ke;a`c$xyuOu2Vq#KI8SJ#){R8? z|B7FEx6V8{`jTV;93|W7TWc2kU;Br7{~OK`aVBCB+`)DQeCNC5WZ$H__bcsz&w#PT z%g6sy%?J$y&vrf~4jHO_HgrU2zD^9+a7`d9Hg$&6m9g{czK~*$Zd6Wa&qysG0(lC^Rh;j{l(G zY23o}Qo13@i7)=0eou3n;(ur=5c&Tf@=hx7(#)v&#lSqn3+(@aK+YxF2+Hh{1+GRQ z-{O`~{!cxq3q^Z#O;@{_pAnR@PS?-$wY~nJ;Gt4FnBey(>sy6xB%ehSP_^OG zrojILXSoJLGb6vW>!`&U{6Y@7nfBH{|shNRrRGP%wwE9lJ-CMtf5=J zrmwI69iD-~$M4Pz0wAlXXuW(XtXXEOdG7N6`fAQ~p8N*vGs1r%=;wh$YyUrB4R3z)pckUAQLohC$B{@kDQ zeDs#8Lij(F<3AwB{)CfiKNj;itNzSM`sS{3-@paa#X~KG`c~jqlhNb2tFD^la`{=u zd7On)ymBqWbI8+O>PcKv`?IAW`di&SCy>0*onRFW0igHy0cf;86gGXgM!`dnK-wk#^0Nq-G618)>XZ@q2eKSmX?+0$oxF3W9h^nN6Fy^PJ zc82*D)75(ZokSN=Dp0u?Y(zX7gd}n{!*BULh0+fe0h!cMUw2fugQswDKy_z4G>Hlo z<7I+Rf7j)4l%cbG)>x77&JAQxF^QbKJnWh|wQVlxbC27J8>+W>4xd)3Pr#JePgTyg zsXsT#461ljcp=nNHkUEaoN`?PPY1$ki)K@`lml?&+zaSu#T`WPa-S2&hKYhwk@(fr zzVpR$t*kd%1Xe~MD*cIibTOc!rw=r}!Ou&mj*hG6<#Iq&$+;KN7ipieNPnUXT)Qt- z`K%ms5Mk}kcxKo%hKU)D3mVY@1k5ganuDLn)T1gYy8gEzf#9^KZK8%GTV*pyd~G*; zlwFsD9^{0wC0(M1P)BXj6(jWDPE5EWzkK;}fEFe)Upk79M`hh z>GeQ|!mpe`{*PpwCd3wr@Q6WV&bON0tcGF$`rw2Ki>YA9&sf?vXZCoxb1iwV!arG0 zmd1T2ir(bP-RzA8)^gz^;EIz8wsv10R5{l;J?ZW;!{hFfKjE+UCp82)Tmn|6;U3Tj zyKY>LYU}BRfBEu!vGL*T*ekqUB-=dL)}oXMm0$h?IONK8ItY0CQSlS+oz@)lP7N}v z*~f=zUnHhPLCl>W-eZv88!?Et?jCeJSh9(qT6sf>n49LTIrB{z;8qQv8zC;U-#@7BOL zTWt2Tn)mpBYXQUxR}y)^q8r+9d0Qsq7tz>K@gZ_k@XEq>pvH;u$mPtaixHH9U(c}n zuJw_Sh%BbP{#RLy4DM35yd)$fEKYf#HCNJLhD-jm2o_nOViqvYOMregX>rV<5h3aI zw}S>Az*UF=kZRY%3Ug(K*F+;k$l;1(cA#E6m$|H;O&lkK@Mz3sVsh<|wp3kNw())?7Oeyx;*gLiE$K zGYf&NC-Z$P9Jq5|O0OHD#7)R)y0~@;u3(lgK23uX&KwxQe`ydia@b!TaNa?E+f4sl z_>n9GvFh;D7fJhexVIvr6Q1wz2Spv$xb?7BI1ggzH&`PrG_E~6b(DNJ0-Fj!Kp6+m z{v`*0=)g_Q#`b=AEvLjMBsy(MxcRr<)cOm(MqP|SjZ(0 ze+0QRa4KiHVMGo&Tav@SUg6bp%`G{;P}Ilt`!w`=1~nA zfktx~8hOblTBMiGWdZl9&F^jZX*`}&N8ELkmECAO$YT(|v)qM0l6h{}IFH3;H7(eV zFo329LHb7yDn8@4I5NTR9ZyZ<7XHPT)+?GbS<|sDX?9Xc*zkaDG zSWltKm=LlVcA}x7&A-vnL7@K?WV^l*T1M5W&8g{e7<~kp&ytu*Y8$fL0PjE`i@!KCpZYv-&azvwOpq}xpaMiiTv3XCqa7; zDHPhIPl0a*fhK+BLajHfPBbXALCiU@)2+cK$Er3$@VM=@*~in59bnW~f3xs?i|Wl_ zTJR4x#UiH5NKDnf-RW}6*B!hk)f>$gO0y%VF1z;U@cA-U2)O*9ZNrPl7wgM@i5 z>Hqn;$74F}EcSud267JR-;jxIRg$kR4czn+5%EF9OxPU&Fvi0!==Fw0G>YI0XuYFD zSZ|Q~Qtw0kMQ2aam#>4W%LNzQ5&^}V`eD}qRK(V%{95QY?+N5z0v%POkL?+RLHgGPb{dsC&l%XBLPI4L zWY=?8FHF_q^)+JpJFUb2b!gZgAZ%M_)I$+$kQ01oLBt@FpZ4(4;DL!c-3Vs&=c*a^ z0F-hUSl!Vl7XbVl->kFgSD6lDkqZG*xfT;Ix2qD9PT+R4GuB#B>h{fi*1#jgOz426 zmq`hKQRO9ea{-BV5oDLgzi>cj12Sj#*2n$OlEXC9Xly8gQukA|n-m=Fj4h2LP6r+q zTX;|kx6zl-mo4nk2#<^v_CcENC3ufS!eoe2hGE8DTdbpBEP@y6b6o3)x$N>`FM&~o zs6^8RWT zr`N;>9_@zbv>$$6j=t|!g#eM>m0cx7U*qi;4%1;0WWv>F_c4ZZdAzn*4Sp96m-lC* zyw<(S26v7bX*EXrV2vD{d4r;5-S#Cq+V=&QT_qp#gR+Mh(dUg57nM4$yga5TOxbXq z=@Sa%V!tPg>cbI~;FyPhM|^A$gsNu}EZ4JGl0loI9d!{v*239#jt5<9%l&gx-Vg!r z!rsdnbQ0@)@H9{X#~HQ?lNJHvZQA(^#-t;IcxAZHSGpht1&!y4ekuge($$Rvr+$gP z{BQ879vq=A=$rS63R+u@r(BSsGL$>$ndiwUU2xAeUY~;C3H-=M%@0>bPA3&D@vQ8X1&qXdTYSD5(LPY;`T#!E; z-M@=TlbN2~D6?ac)z-df@_tVzFE3wE{{uGf)|35qC|Q^|!*}DIIsPfSg2kcE3U@yL zEe=U|KPPcG2s}#x1dqP^s|?{lt_k;E8M-gFX3-MNIUUmun3D0v(E_G>-_CyoDbjvw zSf@)ijKzk|geVgqeCWfg%O@EZeX{g;O@tVjEDTs%R+i`!$9oQK&?V0d1#%wZ*l_%@3W)V@WD3D8nS0>gA1FU6tqIsKgzcfb(LM zNsHIprjE%S3?lTs=$z%>9h=Fju6GCD&+q3(g9vr*a=4eDBsmQaVCij|tJ%}>^_{tP zl9}XE%S+)Qpkjq6IpYOl^)0m1O8olu3jnIxE{&AJ0HOM}o~y=8GD{oD7Xd)03y~8d z7bfhCX4O7E?;$q^JO3?Bqanud`H#omI5J4TW7klgq@=T~tYu#s&+v&D^SZ2u7&ep` zkLH3HU0Cx|sWu*%6OiM~M?o2H-hODYaS%|H+C) zi@+uC4!YrkloE`av>6JX54wE}<|A*AT=);M{kLHuub((Nqx(zWfATv~hhux>i4!uu zxTN>5f=u0l_CM}3JP}Vrb5Wh)eR#C8yj}S7=Wuw0Q~=KNmu9z4ESNu^Xe+RZ1*>p+ zHT$zT@7vs)Z82xsACadNYR1j!>fqzHA4eNKQDD7@Lg1BD-LBfzXhy1*?LQ%hoEhWy zp1ej+?iwePK399?fH!joCNb#6XAL=JHYa$}6mzlnSQQJ;MF_0Rlyu=f$)23JK$k8E zs5#Mux^2+kzi+_F5I+;RJl(BZ+|OuW_>mD^uZe>&{xQ0Bp#ki&!sF@^1SOmk8{~-`KO;kKCTt;Z;9UuTeXorq)7ld@ zo6**|mqRvueEc+mqN4X^iS(_leol)NS$1Hwg%g+xc39Jvz`4fAVKP)f6bIp8hj=+7 zbFjZVOYP`tu7n%;{$f8cKv}ISRYkFiT#$Ut&L#Lz+_n9*q49Tum`!OO_#eHL%()Wu zTq*#-g`-bij!C++S?NMU!jgev%OoTCv<4|9hbuVyL^trdnY(tx~!6I&6G+YdzC31b4!wKF=S|yx7Rh%!fnA^^4n;d^^E=$5} z>tbMR=JC5;XSeU^8A;8Eur7XO;5KV8y35{>M0A3FvpB*e`w3+AgF5fFx7T|^c^R;D zHUfhL!;WukuWpr(oHQ%5U=5nz-`6ddSHD8>!XyAV^>L-eZ)cu+uS8$Gr}}c|_C*8< zK#9zSD)l%QLQlv{@$Ky^MDXIEK9bDRxy#j=$g9>OpCp%Eb&m;3$*@5$+bMWWZ0?aY zICRN*dp#M(4K^o=+nH!Toty5LR7PrMkP>-Db@dz4lQQFkJC5D5bS=$BN<0u)b7cN9 z4I_O*&CbCgM7k87iU2@TQgeRomq~Ip+)l?aqF(!u`|aw4;Y4_#S=u&Zd1*i^fnSB$ z(5ZzUh?aZN+@7-L2JixJB8?f>=%M~NM7Ve?z&Bqf$0^G-u_k;hd5Lx9>wvwX$8O)X zK+7ChHP}~nO$EV-c%;#RV$h$l4c8Z6&~BJw3E5SABt1DsSfo@W|H=gXy{}vt`Y5sI zYAhJ6auZS3Imc`98uwupv2z1`RZW(ThleN8Mnl#p6StLGs%UNX?NX>9HK%X|+_49<&JC?E{dnAc=+ zEU>~K$rFF}jg6fZR0~=!G;;*x%45lfiLQm8b$i23#5f6PrV1X$F1SoDM{n=5W`C_C zYaN`ivKiGzrGET)<%>JfMw8w_V{BJZd5!W6h7z4{fA3uyap~~k4!693sK^vKVK$aG z&Q?q3RqX98FAgFuVGSx$4i;l5gq$c3F{sa0ayTPS1SJHU(uFQF2kTl)or{F{)MNOY z4YBz!SC`$CY98E||Wv{~FUYyWxnMD)bCwk(GcB0~)fF zK`igsWCY-UQ{0Iq_Gjg|9)?cbL=@t#iDB|G7z7~9SyA9@AGBvMcv>6jDN$CJPa9He=c7AGlrL1#X^_6?+CR=cF4?g+tJrpw92{!F-j)g>qQ8sW2&f|WJ<`JPl3vaU3;Q3Hx_LEi zhS0W60K1$AJQb}t1G0IHKvr3)1Dg&tg!LIFX4;KR$FI^F8dzVO{$w847Z%b!=|vp; zg-7kcOQ%<0PKG&4fZb-rWV8n{g2nw@_L_KA@?DWdlEXSYFyt2zt7z3dM=y=z6ICd- zY{8eAl$I8c&(HMQ2@j|R)a)5C-Ff(#B_#2KItUd$ASfpTfV3%cTyNADy3$n~KENDq z6*+$wsz&P}NzfAAde$)aW~hme7LHHdL&dE<3^wt^Y$y7k1ZXwQ_p->zx z`1V5m&GgUk^zF}SbQB5jhA}f@iA$$JC%K3liykO5TJ7PW0XCF{6@*+14F-j+MtSS< zyrF{f*A6#r<9yrJy7o}4rrwtJ(VUuPzbHkSo|02%>9EAE8DVKIGx-P z7)6A2BMOaSzp=W)3aR`6#t+e@S>p*2W^jA(0y;n<4&xR@<>BAFj;}H&o!{ma99x~=-B_*_V_7IMc zNlBq(N1uf>F<53!A@C13a|;=5kBWy z!SB(U%tZT{?yYAhE#jwMd-9g6@Bc#e8mMBLfs;1w-S~$~r>MwlVqtfBcX#)1jSx2>D!aruNywF zZ}^u*&bs7h<{sAYUc&T^hJF?54iI7>y)r{2{X6d}FF*;NEb>m;c3MVhV^u)qm~?9v z{0QKRTrQ1!8`>N?e?z6R`O|MaUEmU*`%FGs?DGx9?>F_wLsaqsT3AW}C?ZFq+V^co z8}*{48(;l@acx|(9v>X$^)j53MAJ$v2k+4=)RJg!F2eFSw}#A46Qt4e0wipwgJDC2 zO$nLzJF|k-$S!K&al@D&S3>k6WXySwNAk75L??jn_F(r8j<2pnZ=87cHe3hK!#n*@ zZ2gL8GN0fvRb2HO_HYro>M7#3*^j$FUxyCj<_E(^fq+2|0UbHaKM=SIw^ znSlDhpuX+q%R&!oDZo`yi>sv_06+zqUr%SgH9n~m)RXw`;K;Yqg0xAqk-HcL}mfpV6^%au-@*nzL~E@)fB%Vn0*C?r~*!; zSJ&O)YukP3rI$uw*&eNh>-T6Jt=&#P-VjA@G+$xsZBlm_FLN$;%hIqG@pq4}o_0D+ z6?ARcpZR&jmKHTA#1fufSq=Rfd+i!T3K)7CiF?}h=8N5QXp|!ZgRA#^LMCtkvFy<# z97^wZ>6`*N8d?wRsqDA{jGo{1UmbOj<=F3%@+8H`2`nU+Uo*R3mrD+XWW404a;vqN zTxrT%5&ZZr_Hg6=W=oIzhSCB1;acwGim~YN{Hvcq?98)G$54PeCL3iY#0?*5+bOW+ zJnW$48l&$`K=Go0Q|||1k-)TgZVi=D;x~{^VoN-#V?^iH3j<-zp^lNu1=|%phNJSp zZ9!0^I&spqK3T`h24asJS1#ofH}dnyL;ZYB)i=D9{=rom+Y1zT4pDh>L65PV?Zh9W zV4-v~tZSYk7N21_nm@Z>G`QXIM87hKVo;*Jg#Kj9atXXLr_Z`NoT{d)vlCokcy9#G z-BWju1+hF4nT4&r>fUS{B&erGk2JxB60bdVjGrqh7BC@O#T3@BA&FbVNsDhzR|Ik3 z207l0Hi1H%l9tuEGD(a>4URrsM4?~L(CNbO2=(A?fj76Jf;IO7UQLov_xK*P-fy(J zo|?V^Upw+vBsp#J#0P(Mp81*Lkrhip5#b<&iS$Zhqt{)C5CpjD@1BGPa8iD~)S;!t zz0>O=GZm9r7hU;+W9uTzL&Qv(YRRu*lZ|z>a(5$~lbgL|z0}KhUvRS|b<6@11K%ES z8r6P|dpLXb7zIkt2fG7H_94=(&J0AAV8v}9(Ak`)c`)s&mcSz*yDmFT^YL;@kS~m? z;X3rQ(DTA6s{P{&pVbRr2(h@@>oJE=SASx*3~8=t2vjjh+>Mzc-)T=I0s-7bTtX`c z1`Ax(6}qW*QjOOJR%9~Dt|#$I%=L6dnn@W~4;Jc~4prD(gF1^jaq8FfOfCK{R@LKF z7q&(~ZKpX3X^1oeKj{sUN>${t`6`AvWNNDShpu9PQEde;A4}PbuM<{AwYNkjGx2Hr=+Zb| z5$e5mXqXKdXgRMd1L9|nTFZZ}HGWl@lK?ZlWG?M`(=9D?ye^hNOpdc;N&Hy%&LzB* zo1N%=Q1Hj2BO2Pxvf6il2ysVjP_r7QRv4nXUdIW*gU2<1e?y4bmRpM-Ic#gfZjq<} z1ev2)lNY~)h01UL6f*!aO}Nh&-yH=8pl&aEeCEF`914x}LoHAtBe-)=455__R!mB? zl8z2wPD*qNlB~aZFr51xmKvuH-~@s2FvRRK_W6mt9e6WmVP#`uyL*vw`yNAGK_P-s zwrb=2bw15ms-%JCW#~y3=Gp27?7NG9pnZ`>>9j|7{8=rzhrdyLlQ0%Je&8)rFn^8n z1+3jM;bUO_#<$=IVNr`5&bcGe%k3d;#Q^5oQPgNgyooJ`#-yz&iuk=RVD^R@6EqNZ z@!M;wxJ@pY3`KAN7Ug@h?#Txa8}5!3><t$K=DvKE^~@e5aFy_hSk!xuW)x*3zs!jR_$UmFZMyntg7zitI>V~P;t2>5S&mBpQYj7ZCO9{0>bcAs}PQNl5ec*v}Cfqe!kKO6ULV*G?jI20$j(aOT zdtx{{b_7Dk@ATCwVIG<(4)0OzWPNsA5RCVqLyZynKYOuUK5@70i6|84uN;@gzwr|%aGl@vzA3OF z6{CGj`w@6C9Iu6j{jx!?mO~*G>V;FylqBCfAGstL{70*JgYM3%L$tOEf5N1h0+NK( zHUjA^hUVf)9-6u_MJjlemPhrwR}@kf(2ii7JTcL7zq$@g-g1YH`sCH&HJTT zeI!2|@Ul-#e0SZg#b24?J(flV{7ga~wy%b*Wg`hZ9amNcV8l2^jfOh`kS01d)`Jt{ z>)hW7n=2m`HuHzlr<=vzVh<)OI>L_pYH_K?|Ky$j3bMmx%jbs`mwL_y)s!PrCLn9r z@>a~S3FQnMHdt8ZwMgNLZ)kS3M-Ml4Lqqx9Q+4X_D8P{z#9mjJP%%9T6&btRn_VJc zc0Gidt3QwfJ7FbSO;zL+8M8Zj{x*FDsMEH0I&sb>}5C)+Cp0$ z>>0E?wf?;DEMZ0>f~Xd&0}Kqtqw+@fsW665Z!Kl%?hC_=Ln%X;WiZe_JKFsKLfe^2 zq9mdwZs>Qve%vpu53Eyq4tYJbmuNpAmC23SHTJxb<0HCJC82^2AqJB8;xGsC#mSAK z$=qnIRqxLrtAp?lr4Gl@e-?3bHRES3PDT!#Y&t(X!PdaE$M!OOzBjK~VKp{Dkx*y3Ak?+49dwUkz8*qP!Qn58v;U(ob3lrI!lBLP{V4U4nNlx()F(_s#F6X;PC zUwH4k#cG>MYcTm}+k@^Weo)(x*YQxF%MncBcqd+5dbu~+FMoaRCob@2amt0$=z+vq zZ-GYG52Td0(GgaXbqD3@6R0@h!rn{cf7XYjV>{X|CBF!>j$eLA&5eOR%6tiOF1%yT z(JYiXd}_@U@`*Gg+Umk_4}UjXZsCX{uySKh)k*tm4;F{#lIvPYJ7xUTQ0|Cs>a0Yj9B8*f^WVvY`y)rUUlEP4Cy`a zA?!o}6r25clg{50KV%{2K7^mWyAjs+?cuBs4#^JOggwdx1qEGKyT|vf8~&JkS{rws z$U#w5FLSbz4$l!O2vYK@ShcU4x$RyrVsUj#Qk2yp)_{+jHjgGx)sp@pCmy;?+H zIy}&pE&drgxFj=X5xyn2S^A&FUYr6YTiJ?)jQ)PRPY(>LX`N4{8EFP-4Tfw^5iwJ5 zSi#D_zY>a&H;zOnT8GfQ@PI3SzIO+7>x0_B!o0j#3JUQ}N8XrOq*e=lG^%{i>*wvw zv^xm>y_i*8q1;3PQjhT%y^F_=0r?OlOAhCzt+dAQWYge>w>BE8pevG9ghBG(%=2YB zOk=Zr{zg^CQWqx`h60(7N(k~lp#>(hF6kbr1|JRNP{tGjpr?{i?P}^}2mE^-^pavJ2}-CsEJAy|V&I6fz6n!&=+-t2crNRXe z@oEi-N}sNO*S}>|4MTZ(Zx(L8kGj7ooNMB@b4D?rK%T1{7KleBXGTX*NrLM)Z(m!| za)&!0&uoPM|M2wIacw$0^ z&G&cjegDbklbo~J?C#l_dFGj!TRW@S?9)>z%IF8vM~ zEF%5L?6QfxGdb(R6AB9SCI!0ib2Xu%GXJ=qqUT;dI!ZO&;(QP~?YdI**vs>57#I-4 z#m6`OI~28bV!KixkBv}ZBsbT^( zMFOk-C{z(g0C)^}@GgkrvEYy-OWZ5?y5had_}l-5C)8gZ1^z83{?s=Uo16P)5f^u9 zaI?FCv6&MRXz6e_-40cTCG3QCeZOOa!@|M<;M)Q+R0U=2xrd2BKN-mUm{DQdTWU@f z9fR_5JAFLSl4V#N0|a!wjpwb77x)L{7E?OY6@T&5>CC3R0&SKl?EhM4f!+6jlx-s5D>Yt>t3;PCnLK^FfvdZPd4 z{x*dC86XdQ{)mi%V$!S&wNN{sd!hBV4@ zS{yxPu;1<~#=}WJA2fXtpkOWJrmq1YT~&@xHeTw6LI?l%)4P4+rMKyY-xOch%7TB6 z>|b_sBKGk+n{| zZ!hFC3OE=t&-v9@ab>am>P!KS2LHB%5)%vnRo}jSw4Nz+eNEuBU1?o8!G(`vm0h~G zTG;^YX$O5}$qa_Vw9w#!txA;g&{nBasomWaqOvc~jVIK`af+K|$(nDy>g=>#f-b^L ztV%;UhImwV1vm|EOAUt8@r>Pv39G^z9T^7f2YRJCbIMvHg9|(Tdj)pi-Nqb0IyZF{ z7`(ml0GPzGE0Ou@pM^V`dY|n>UHCxyov?io+3YoMYuhf!PYDUI%!fLN`XII|O@jHwu6|Pt2x4q+(RyA*L zF$Et3q~>lgXyzz4k$ml0YwC6OCD!?%-m;wnj#XqS4#TzYwvmc?c{MsyQn;g`*X`km z9};MUu8*?0vE^Ua6DDZfy0X&MJGOh6)a`!s+gTQSf4$omG@2Ay`|8=u3L!&E@>(S4 zWFqG?7!hX0Ca;>cS-OXcW+?nS?^N04*IPW_a8VL?)mOlu9WJ-Ki^Lfv!{{Ly$}pX= z{wQ>OYSYbEeo~duxgZmTR#x2&j)HIbX87+5m)=JRIluroH9!CCT{*tnI$A}xcNi{6 z-CN4a62zwvIX-l2Dwt$<{yXG41&PY=hgyuHn92df=Oe-nKXy|BFWDu9f0cAvY(vNJ zR{FnIAc?`W1wU4m-u$5E3^oN=oPJ0rGuzN{(HvPY^c%9pmmksZEO|+fr=p0Gz`~Bk zR4&H0#iNR8GBPlTo6G@885p!-zKg=RIdE9=Vq)D8{y(i!g@Qam$@?6xxW>+}!;*e( zpP#_exw7B?0QdDJ1j|w)#Zdu6u+8ras_YAXhJWQ!=gOr>E+{oX)7mtMD)v9i&0w4l90FJdvMM#@C2i1`vx zNp-!mYKVcH`Z@VlZg9rJe^vbsuuG3BHonUj{a<-a@_ zAqdU2MKAO)$>bNps&GSCooj|!(oc-iUw4Nqzj(>c*myfL5w8bEYL76Kmp;bH{HM)$ z-bVeo+rWDH458thOZ=ZV_9aLet6R>@Z^G51=Os(}qS@=>FZvyn*!7_E^dl#LS|l=6 zgpoDAHryC{QHZLCVRv|T0aG4kMQSK=Chy+vBj0a>?>vfuCQy=%|3AwtIB*h&L@L3V z3wiUhc!ivV_XW$H$~QrYW1V_qkY0m162Pm|&>EHWJJ3GtPYgfkVXBway+?u-zl1sx z&beu881IUjK-u>&n9eu6K#^x=L<%^(-QWb{^wcg4?lumPCsN4f z&#=G%EN%iqO>rxMFL2J#J6wUL|E_0900F<d&U#=7fPz`*BB`p1@O@s=+eQU+qHLm0PHn=?F za6EA++;m~!44DUv(?0(Y8`+wweuX{ST=W6{W-SC_n%*(`PVWbjvlFuLu*#*_ae=I> zIoPLpH&P`~Gp{1?@86E|y!{L;^4^4}UGp2)IDNBA<&wGV=Q(hhsDk0u8Co>cOzEAC6BI zBPQvlc=J$P=9|FLbnCtH__%xF4is|JbqOrZBT6V3d=7c+@_)gX*@FX~CVvX5a@bp& zxX2<&4q=)*)&Ue-1&F+4M^Bp8zffTyNiX76%*bJhqv1$9Y>+>zOOsrbrbj?IUZ z2>P#b%QK$X3rojP9G6FjYzo3onnQl_gkn;tON!tC&WVjk>S3JrN0U?}Gl`Sm6o_?I zl~bvt--(K7_2W_+PhNs#K)z_=jisDn*-h$A{($Ps!j<2 z1G5UQoby>|rP=Buvfxa|jh(~3w#S2g(l^b#Z0NeCIF=okqkX{bVXsX@wkZ5XTT1`~ zR5lcOPrF^Gn4cD6+WbOYKGZH&`Gh;mBPfj^wdd>G@*IPDl2>LkA9P9r$PHG>h;D7V=8%lMEn7`3NEMOP7zLe`t(v-Dil4VP_v`{mxuIh^V96UU?ZSzl)ToNPH zCD_U;)sT0uWk+zTmvO6@=3~f*)7l<%uEy0{zVL}(un8`h7K#UHXnNs}%P;SW30Fj= zwPl6st}h=q{uNZd^k@o)jCWnB50-c9t>8}!6~i=rc|eBty-+w+^~56(&?LXxn2i0| z4IlQL8SaY&SN|JCnx*yA+qQgh*5{IM;y1fE7;mC#Y@Hr4f~g zb&_~=Z>Px=2eMxAjzlDMD#t~)mh(x;@U%jw2qiaNE}SDw2}p#? z>1^wL>Sh+VxJh98QrAjTk%iUxT=|7*_yTQN95~w*Bp(voT?m()j73!%BUXpe<8Dn= z1j>XFBQmbSqnN?`^<=S5Mx!6Qw%1t1u#nh*knK|Z)v+t~d*fO75N1&{NM>%~pn<$68A-uEp_BZQX0!{s2Ir_dZYjy9` zO4E}EHXE~zcgW^*WQ?+^9@2peX%)L(m8_t8ItA`W9z#S(ls!BnvJZtUKxsya%Ej88 z#~Sm?9FND(vr)m2`T8^l_=Rn$nep8F&U3dQ`w_PI+ccaaKMP7UnOGV~dg`)-Q7w2- z|FLFe|3Xd0Tk+aADzN8C1u`-EX7dzds>a1gIwa64fo9f#c4jxVsi*o7B7){&q4E=xHhgcWAZB*--B4^V~w--p4~43<8d-Q-o1B ze|Ual-rl-MiTnp8Q~IyvAA4OXF-C@?Bq*dM_4csV1Y4f03isj5y1_QQ zuVQy~#WBI6WpqA8ciKm?Y~>3b2x`;T8XCTNrz?%L=|Eyct$8B#nG@tLj~eG4ayhOjC-s+$RaWnuyEP;+H^RrZcA*WH zYjJl~^l}YpUIkw7-wn!Y*z3O+GCo>eG(v@;X0E^|SPBK5$o;Q%ZQm#`d-7h_sfBUG z55A@zlnI`DEv|hsUiQ_!lC6)O&lhI>W1IcEyvO^EuB@1b3j1KmK}kzy|M;19?9IbL zO|E=r=Hly0bM|2GB<&S#Y=>gf0F zDeOwe&+#~NVsF=7IMwcTU1IVJw0zX(AK-B=))4{pQ9xyB;`orB9Ick;X1+v8;Ux&$ zJ*{E)JqM8QGDe$0av<9iK9Gy?;CZ#XrlmI_$9ZMG%QbLeMkB8-)*AL)8kQESmk$nQuR4^s7?=yNianYmt_KZa#(T9i}rMgabz z;Wd!R|4cT1vkJ?PiM=ZMhkH#+IM)jh?!*31yfBVep#MqWKcv+-tNZ>EGM~NjS z1G9XaKzK|dSV$KjyBn-od^!kK=P=}`09Dict z2Pz42h*wvUn0nJNBe<&Q8=g-$Zxz`m_m;be7Brf|v*1dhn2II%a`U1@I0n*m#LsWw zh+deL6G`QWj|L|y1izSfrahjCQpplS4x~&f_>uZqww6Ldsbm=JGW;tyFrxy*X3!}; ztTh&%yp;l()|H(l^a`U%KO)P16MXFCm%Jvdm|Tz=&)yT=2I7^jP1gq1+ zL@k**3e>SwIEd(ttzoi*qF^uH4UhFvC$#&leV+;L5UB3a+swrI`i`8xYSFiB52>tSF_h+AmM4tMqtx_#2J`3ZaXA7X)?tJu z-W%ITj05k-aFy!#iO6T13OCed1lM{ACfyyeFo5 zQ+;IqiGe0}=1xB|=;22@HVHdT{@UqcnT5iVOks{G zVzcjdsZ&GeQ_yI0hnJ~Kr-Fq{X-_P@OC)*P|4pXjd&K6TFamtokH16z1{>H-MT;zy zM=|A_VXOWYQ<;ZcaU{1xe5VVPf{GIQoN>XtP?ai3XZUPw%rB;iFFiM7VtJFjCh?P_ z;>L=rWShg=0^2VzQ}M2gu1dkL%uqAZgQ^}2B2Mw3K>rHNf!X+~4pwy{VB>L<^XI0_ zA93kE&sum02Tcd11xY%=cFx@i9q2<`;;n#*tX5Gj7Qo+M#%Pc~BFzLp?ygL-3U6S) zH|@~_m-er)(z$qshmbV9QV|w2&ATow^BB@32+Qb8|3y#4tUY6#XJoFN+9kkHe9GgU zo{Rh8dVYZv{FK-r04i!TNZAPar& zDs05%sx3}z>%Lo57@1${xwHyjS?FTtBNfiC{rPlE#-sdBfZCr}FaW+h7pHr?gC_Bza9^SzKzEqC8F!efb^u}DBF*POS|Q|drMnu^NWAn`(%VKd zTq4*$ka`hEU+(EF4qGGc%r7>IMyI9V2}N)B{QszD95qL0|DjZ(n z9puat6OJwNZ(k(b7`DN}j1VC`EH$M}6pffJp%S+{yJJWUI-4$D{y%?WGWFDOmj;@B z5i>+_tpqpDH^paZx{;9oHtO=&0m&|L0D~2zw_NDk^XT6dj1P5duHHHg>@Kej8CjpSY zCtv(mE|SpF%?mg4@D~g7RKw7wt_fd_A@i#(e(M&_74sEz14V`y>7tJfU^T;Z2pg75Zp~#PXqQCwl1E^L(IGLIH9OUG!>=9$6tRWk$sW zb@(B+OxL* zKe46ocS`!F42?7;jm|^FwXK)iQh*m`1|>s83DAg`u((hx@n4tBKh@(ucQa`>`9cZ_ zhsvh-BdA%{G0>3!O9)qpDR}}HnHcOT=7IspzHPa3qrOcCCg>1UUg|$&=Tg(T7aUozW(H%tGSqVwlWmtq<&| zec)&XH3SXC+aCe|(S`4Z8D;ObSm-FP21Q9b3EXrLlRV5x1sJV(v1to~Qn6x-;Qr?3 zMU#UwHj#1-(eU{rsvz3b8(i3RYc7uzj0hz*9c+SL;wm+s36gL@2m^<)%zc$8%;;$@ z*}qI7%l1S_EnT*Kve1qv9>DT^^;tQxo}rr9vx(V08ET(npWg%eb(-ID96BG&<1?$@ z^|{@TD1(Gmk0Z4|Z=i?0DTWE7ju=-tn;#o0V||{P=}(m(|ER&DT%Wo~^G*K!AzUAx z2pl`THM{V$cTM?0{wnL67j+yQ4O$j28=nZ_3ko4AfJw#lA$;sG)cyyqYBH6mJAp|P ze1KK>Ktjt{e{TRTU`oR0jzHUrpStl@Q=oUG*&juUXfJx>ZhE)ra{uR50-Hkgz-wND zi2$tcF=xP>9=e#_GwDNj1Mjs;rLJN_qg}0#!#Ok$JD37vjt#t?qxg*viFGj%p(96# z7wbDnLu-B$0|>wnl7@S+waPuWpCDDsPhVCU-t61X)ZLle1jZxxCb{ zsh8NsEKMHe|8W5*3Iu=()E z5#gJ-bw!o+hM~zaf@(%zE)%#BdVJ>o=U>no1+tp@l?tPvQX4vGXdDWvd;|pC=YRge1J%Uua@zjTPNqIkCHtp^GhU{A9RTz)CZvY{=W@GxIpYo7v(P#j|e*gV(5NZG@;c}6?QdA?3f+^i3 zWU**Ml`+|=+P|3_j-f+lP*r}paAGP*Q^L{wp_BxRa0AnZK0k@8o+wYp2JDVMg}2eK z@4K4hF=!DYZsHA%7-2b9BwmCgLmRKJUylsR{)Rb(m0k@K{#2l(<_+`ef-C<~*l2oR zekZ>*j3KywA=^Gc2*E}z|7t--{t|~@zanalps@uP4Rb(w+PybcfbgzMH2j%@cw1Ok_V=QK>>wLUTA zXgXP>qyXDu3&lQ<6P{klBhF$5dUT3su*Akd#WSMCOeGNoF`@{l?B^G+!oBZ4WiTgA zwd8lTIv#2MytaiYQ>SrdnRS;bDVJk7AUEHh_PO#=cM&soO<`yv2~8C%s=CWq&r8KC zTdi%O>^!kJy=~fqX1LI|d@+kcBDWJ7>x3&(pQR>VFrH=ppihUS_8vTsxP{R?w25Iq z!Sdw;=sa65;J!WE$nedbvMY1bq1WjoU`v}3uvbTUR!LC*f}xnz90DJMx`3KdFQSsl zkd0V~AW~tBmY8m_r;N>QTY&*~3@XuZKddrtzP&9`q*&?aLE%rot5-ymtH_;Vl7Pbt zq#QK&2o^!!#Gj+Fc@f)TsoQp}s0KWEzdJM_C(Y#Sb<;;D?>+bD){DlININF*)9EFs zpYN2<(`Kpm0(Di!Z8yupVUx}Ze8Zc(y9s5KGITu2p7(Y`jiH@lEBi)`dCWH$ljrEp zef@=db2!39=yS5_vVCnwh9$rc8{iu}hS*P2(QAfMG%=I)uA2RQIX0(yH8JgiZx&fK zrFvBV9Z^C*xrYfb0o4Nn;D9V&U(C$MhYi{3+LQqWm|~*B7xh^;Nen#S_6acu3n4Z4 zyH*Dp3OULLsV$5nj$$XQfW)L>6Fm9Ky?zA@=#lu#HK7NYsIh+-ljL;ZE|@%v;guZ1 z3L_KfqV5)ZI&WJ{(e)jXa$Zz93TCs;D(?}X-g3d<;ScN8y=?5*xdqomgD^+?};jXy2Sm;IR30t zp{y(x2onl1J+>kfu^!J@w%;G9WaxI8vS+xzRoIX5 zP4+~q+P73G?D&1#aPVNr@>2A3<@I4Cnk*AE^SvVY-Fe>MLnMu0YGE7EzY$M~E4;CJ zfw~y?1nM{tW(rx#GJ1g=q-mzwj-woUp6@ghVS9O$@WKdv^7mD*u&g45-&pLkxgxY1 z?<`JFg6?+K^-62ql7rOKkBMxIFjnHJ%b@hKQiVJXG>P;>de=RsxA`+ z2O)VF^b+9aI+8jD>VFL~=D14qmio6&R_f?=-AYq&r(zH_c<201OQ&H22D=Z?|E{#G zABKCSy3rMwqKPAUNw&8UX=)x0Mfv}yRuqP^tMMqR^ZfqB=;`-@OP?OP?)OhvdW#HJ z81)OET&j1t4?X{3dnvRhaDFNGNn%7C!=`>q*%RG@n}LhI z{H4dRv?URe_wqdZ^n0)iw3MN-yfcfq49v*o))eZ)Lw4#LIG+Q(T1OpxYS9Zvs?@$_ ze80|*ll7Jfmx!gTsD^!IyO(gSPh&p|GheUV{2n?k)fg)wX8E_^EI=KJfVNU6750Y> z-7lGS&$b;0{8VH{^Ol!ujll&Y(Sts5*u2k3RUkJA!*tc>A;98m$T`#SZw`QPtqmvI zZi0YsuTYlMVmW1?@rlOMZq08XZI!bk{KVf59-cRI&kPZ=#t^#ZKSLQMFUFy`LB?b8 zb2@aJX_Swaa16d|$`pKrFP~;=N=v;x$_Jw}LP6GA_Jc2}0XO!a_v!AAa8}urp$_gc zQlRx&2)fi%(YXX%ho$6UuAT*%?`G5q6u2OvpZ)7doaI_fQ^5*3nUXsl$e{W(L{#w^ zIh{IjDnUm}c&2So5TvQPCIQ>e+r&UpG^@;wmh}Qh820{izqJF5WPj{KGhE@EX_nOY z(Veg7JzJ&+JTj2uvLL4z+46r7B%vOjvCatG0Ts9I1m%X5u!c3*JDP%zvK8iA0D-C zK}k<3=G_xu9m$59;(y_>mGl4mGUn!0i ziJ-(`ic;B!p<~uCmRw{doj_g^2Vkgw=LK5i^Fadg6=$~it!satJ#Fm$u&7ccqiR$o z8g_~W+Xb^E6GXPnFi&2`LO=-na=(`LBweQFVL>MJ! zoEC@44Z@N!rJSV)lsWG;>!RYy7nNn=g;y@@YUq&5^IZ``*%BM+bxR)em0SG6sM_(O z0}P+?p>CVYGXiFWqRzwT23U>(aUa^ghOO$3hTL2Y_MkF`sGVQg9hU z%b7+mY1q9Lm}=CZ_D@r-S9&h?hkR)vim)svIY2(Fyh7Rf9f^`Bx!*1w^e@tO-hc7x z%8M-*KL6(lKqz+ezdPsQ$OZdXIpakUUdb3(giaI)%}VTTfr~#9XA?!xy!3 z!TTl^KNsD=x#Y)y2me`-@V)W`fW!A)|5DJ;~< zM$B5a)Ybohyn3T}K_cndagXbOC;ZRHp)D)=^pvR4b^0H6R1KpV-@p)XE4xN=r-rH* z7hLOBMBqD!fXR-_c3&ZEiJO(pfwCk`(PF;j(w)(I(PaNx^%Mjy|ap zRYu4d&;NEoRl2yZiQ^piujEY6iR;r)M0)8mfMmNZ$TBfB!tH- zW2WhTnXblZ*AI^rNhR_L8Px`PC1aL5fwL-0WqpeEQPOgE`YR|ukYPu0G?J~X!>`13 z4*DamwwzA&jiJo*yD`$|DbuTLN|mL;@}MW51)ULcVFaK@>#vOT&T^l~HZnalWh)PQ zgjVt0R8JUUVrPhX{gzh3ny2QEs`@QEtvTtEe%wj@T5O7pZseB=?1um4O1nZ!X9y6Idm3krt&vvz<)iKUkrFE4sI$(^g-DEGa5P>49QBk}>+q+A>tWhn+_ zVN1B}5+2yb24Iw@AjiBPIUbnyLdmq%Oot;)o!5oqG_XYu5d&HISrM@A7)Ao4Jyw-7 zXn8(c3U^W3II^|&Fo8w##6z87-2`jfD?v0x_wI&qpJfaAzDbXDws0zM+ayq+y1iSYF_>2 z@^k+Em_PovDs&Mo1z#mQp;r5Gy4l9-m^DoICa9PI#7oWl}RWR319>ajceQ9IWH9A z4@m(%qxCslP1=8}F-UU-8_x~EJvTpWe#K$|WDSbAqH)EnX$5~ci$@t}O(z&UfKsT| zRbp%yCak3JI++~BX>U!*ZVe~Rqs;Pt098W;rDG037EuM0didZ+bc_6C6 z0mlJS!dx^&Mn)1V@+q-w+rDYbwjbD3%GCxL8#OBMdG23w+6-(;)ZGCi#E6AIxNj1Qp%i$8Nz|hKuNa^PkEVb zM*1=%*!|6O=U+=9B%)Yv0iXCz;{SDV&s3W9c#O zKSC?R5vp3j#g7zzgzw>jeZKmL_6iG0JXO(xDtgMMl=gN%KhBdEx(_$z+OK^r5lCeL zBO(TDQ-VT?IH`>org^)z(q;kJ405sc2f_nlG&#wGp{8QvBGkExcjjGOza!K#<=J43 z{L+j$w1WF5)M4bqHW`&I3YgJ%^kNphgvelDnWsR&0$|>#aJ#i&vyM>^M$jj^g&i8G zu$yiF7oY40E`Y`Aj!Dyi3i;E}G-k(J{?p#4y^fY0gMj)7u1}Kt=aNVf4@Q7Ex5Ln* z9t~J{<$EY=X)#5q+_x&Ksr6eTNE;@*Mkc)Xs#As2(6{MO;MuB_N^q8@@l=3OGW1ZE zgy{(K{xeDvQ`+3FRFp)mY^*s9RT_0rUH&zByWZ=)x2dhZaIGP3EgF2!t^@#?Us*22 zO_SGRk|PpHT|3M@RQK>dAwaF}ndc3FhcOa7u$#i^WWB{{RUyT((=?YQBaJTKHkx6I;9pQ^JCFKTK}@uA|gJmyuel zreSN(92%w(0qTN#qq{~vOUl-(?S*29bq~{lCZE|vNex^-QI7Db+HMF@rh74L!#NqNNtt*ZD z_+s?B&&$|w73uo>Kd+PDpez02)pv zL8S{ykmsLs_xtqa{!_DJ#0I$X{0&i@FCRVP=*rbR6|TvgQeTtu>Z_dk=iu`Q#jXLN zD9aqexr=g&ByJI00{OB2?Mf&|DIk(oO^gA3i7i$ZtP)aP zNwtyep5z)kohidqEdO<|POt60TYjX8&v2T!6XUR|S8j~hs(j;DYYUB^U z_X5x$V z>mF>zaR{_7rtT|`d!k2Ew9{Ib50sp5ZhsS=Onp^ z1sdB8pTwkdnx$WWmTp$BBZojQJwaZCs0oF*HAm*#|{tr0?#WJ5wX98egX~so8&L85;fdYkl7{>Ro0R)XFM^zc6G=0PhM{Pw+z6Gtv!bdz=Rh_tjF*8-CZs?}s=Z8{sg7Szm>-K~CFZJql4~CLQS65(5 z4uhW>@>&Z(6soNOlm4XREW&7g1HTmB2l~OqU$`eVeq;P%hy>p#GU|4-S`v6D)OKQv zYNgH~%b!_Hy{F8coCg~J5d7mO6lDsR+I; z*71L*VNXa{CE)A6cd3XD?&6nbZ;7@k`p%}_n}o$)OC$6!f88zkCsc9TAHNKQ*26Z@ zi%0+a0?z-QmdgEKP^B}QZe_qLwJ^qT@}{1aQBi%PQTl8llz7%oEm-}lsVK~LgcQ$> zv<{ukk?K*nKpTS>ug*-Hr zyM8vl?-*#%#g-{{fy+}jC-2;*wS;;l4(1!K6T<|KN>INhKn*p8|0?M5VPhr-6~_A8 zo=UEhFLNcL&RU3^*dUB6av-Yr72x5)3l}~xl0n9zm!i;wkvVChAp48!zYjv_S*<&& zSNU^aQYauwGAnu%e|6&M8*#C7!`*73Hcl9HC9l5R%6)db7EStT3k4uMp-kvbVeVOE_K$BU-=TOODw}=F{_$15rC_o3a^#>7Z%IiLh~i+2RU|M z{RICDmDx0ImVP1!>kGlV6>l<#ArSQkZP21XknM0yiyx&fKB#*;W)7=B4h+W?f zf2}@>Y75FV_0%H`Cmp~32c8-(o|-=Op$Pxxb`bglMfX3Q-8uJ=?dBmNtk^(KNNe(& zHxZx)s->Jm6xmHnVj)&gWsK#k{&9>a^)|SssVfyDE*&RqN>xbLx8#_R zOc{S6a0*KLT~F1nfO@FTy>P>IhZVEjy9L;iLx(t=9874w4!Bs!uH;NA=D2=`ZmJh^ zmlm?ymcd2 zS2kqkdhOATe8}cn9sS}lFox$nYc`59y6R^FI=0b?P_rmXgFVp*`|I*NbSx(yeX9lQ z+}_W!OMNi7ZgU#lCrfn>AFlQcs5_9-IRe+UB{rNeh<2_!NzisdxYNtTMJvq zg|V$QBBl+10zElAv#hW*vw#CrnlP6C0epcG{ukfbX>veLnHYF+2tp>VNMOQ;w0=NLqe( zRp(+VV{YidY8Lc70&`;_jFT%2(oiUp)&LfVE-t0_R4I0pFjZ9$lsd=;qQo`W3u)r3 z(afva{DMY6Y~UiQ!VxTX+=^&eW5S-^(WEoF*O%Cb8WB~hEgt03<=yqSzpa~N4(2B; zf2YHJc9I&vTp0aZbP%c*uTz5mw7`>Rsib$$<5TM%c(FfHKV>^QLx+>!Iu%FbxlXz2 zo*`k$tOu*7y-8+OV5`52^5-~=_77K(a5F2yIEu(98(hTQsL?6@x;TNPZTczw6uY@9u%`8#7juJ6iV|MuU59>bo4wnYBDHuyU1sC6s3Qe>A{zSc)5u{>Qro z825F9LsO{(&?2{Tha*0H^zv(Y#XwPnnn-OvFB!WnXht|K^BS*8?^)eUWeQKtj9gk* zz2kK?LsoH?#jB|Z)8aju$w{)*t_ukKm!aTHd4Tx`$A|f>f8Xh|536PIU_@0(ug`OiPFJpntXv1YZ+Fq>>PaEl5e4?hF1_Xbe#K5c!JrOp`nL6|dyVxp!zv}%v%(i3IN|Xy zXwRLG4E?#OA-#7s>9nuR(G+^fCmY)kg+?;`7ttV;^|NZzM=>h@g}qIF5Qnr-79GTi z9Oi*7>2qo@o%bO)hYVSBdR;0_=S}JOa3h{~cS&>PZ(O!06sawolbDy&{QMafYBDH= zGQ$Ek?eBKJq&aQ%6A+qV;LEg~oBvj%v@T8b`~+@7V6NBPNUhS+}Qw2VeRlkvIkZ z9~a=aFm5IPwk^#uM~NI+1OiG6PS6PHS#N=`6e01SH2qF&Mdql9m|IWkE2odlcDQ1? zm<=(!F$Hj5@70$PrbzFFv=)oxmP+Tiz!&nRd?Q#H@1)z&blxK-e3D;97?m>PHKumF@W2;(pb$#s*MQkddgF8YKD+LkksbJ$ zb9kJ+_Oq$jP=0gl5z4&aSTRrCXI2~!LC0=Khtjz*Y;Qib{SoHgy?zbrt%Wx?Hs0K9 z$oH~JtH)rpOLkU5gcJa6_;tDrEugkS$CJJv!O%?UP{6g!K{qR2zZuzUp?DTBW`(Gs zV==Ft3l3WilH-tR{oTfFkccG3E|pA|LQS4ncGB0wM+D-sfG?$_eY-ZajrZG4Hp?X6 zzk1T!pUAfU3ZwlmAgG_rpucm&etBjNHt>~LMt{211Gt>Q90~@AB!2ugmd%E{iLFNM z1iGkCs4qOMb(U$MFwoAXo+FKnWmI+S50g)_`bx2l=i^vyWQkK4;%Y|WC%7N&F8Fp_ zSimwtS8xnbeIERT{3S4BUoctjFlT6)Yx^%4N}ZC%)Y2dCo!9FMY6xcOPh&W8o8el% z^jp)x{otsOg-INQ9x6+JNXM1TNf~5OLj@2R32B(YNdpoDO8-Af zZ4c~P?)2@Q$hj7;mQUM1&{#V{USyywd79Qq9mGw@HNPTE-~PEmXAH<(_U%NDB!H)< zXzCkLQi8eJy7U=Wk`i3FV*?pbh{C$<<=>63vIHZPZSC4|hvZq>ji7o9yHBRuxy-27 zBL+_a_1%$O9bp4s4t9M{Mzjj(tVkA$SaTOJD1@O=Oc!zCu@XlgPi`0Fb0 z)Rukf-ioF210D~0mmi@l`!r~pvy1*|w2k&l(ifkVyFh2BhuY55>?TO8D{|!$h7_o8 zrfX{GBQGF;@J*IT46`j3!0?zZXBYhheP%(b}#X z*$1D3-mCc!(dpAwL#}I%fp?$Iv}qKO6J_YK%#)!n!0MaRrPg^3G-v8baAR@ZyQx>` zt(2h6pL%tE<0WVt4+r=#B3dT`Xz{2-wPf`MgH7Utu*$CQa3FaV`JidAJZ12o#-bkH z;?hgd2r6Aq;AAm(Q!K$x3op(BELe)(z)30$F9NvH;S7I`b@y>r`Us8x`_nsue_ta~ zzQVK>`mbfn9Zk1C^8qVBrG?aIF8F9UAsO(N=H(XsPQ8SsC&Gar(VNd*Z%u3;(UcK+*08U zTI)WvZ~x6o9duSy7!oQp^N}=i2Jp&I0o+pyxT31kUm*pI+&A%XqYp-H5<*UUq~^yj z_5>XNcT&lnkf~q+Hp{iPx2>H&TTineCR&Bv1~c0#g!e92L}oCMh!a-;7mvZzmy8zo zrhXUZQ4^%b*Z+^Es{o7Qi}tg0NO!k%gLHRE3(_H=v7Z!C{Cb?kIrB# z&JBudwAkj2-2H8=tAc8Lnnbb)|1cwADO|oXK}O* zOY?_jet}lo^;=dBFvIpvdLsT07NaBlI8wh5@ImBV+S@eB^Y;8EcERl>#D*^fPu8?s z$g58oNG0jO8bX1?!<8jm9;4y81AAKirBR^*Htoe%3yf$Ah3n&1<<}XWQ77{qGd#>8 ziUSO~>^YP4ZsfoCgJte=CtZG&3<*wIll@RPc^8uP$Xrt{zBB&;wP}t!xW$N9@bU8) z;-~e3euW1MGsvGxr}0-f|09{d#{`yDSL$Cqu0`BP zJH`};V}_|+qi>@{I4a4e7;&PIYdo536={+0yGk2g-g~v7oOVXyC=taPSNld&(ys-V z-peVgSNBX{X%9%0+3?ncGj{(Ol`zGRUWJkv-0*j;2c~}||5$4;Y*{GJyV_xm<8SzF z;zMd^NeQXHtwv!`0JV@XSXk4SS?Q_${~Qo*KAZLAQ~$^^o%QMNcXvtEySOj|p-@P= zw*GaG7b>?@HeCGlYdfjq=x-3S=lS+9w6q>M#d`Zl=P#WBc1SlL)qJ}%TF&r+3|o#G z;~}dX?Y?K&QJc31!OX%dzlu6*>#Wc2xGo#S)B(8Ia-FunJjy2j*p}*+YE)^}Chgr2 z#_E8s0uPVv!%_|ZX^SXn-P(4Gy0y1-nGi&pbU0K5mwBO+iz6{!yYf}4nqY{W+_xjy zPo{H53*OhmOLij$-`&P)GOt8iX7Wuo!$Yr|=p5W)Jl-Me>9YoI6;5qe8D-`a+D%dg zMm={^{5;34)reAP9aTIuvFa~gmA_(=_P(=HR*vQ7oyk8quVkIJg;P+J|4eTren`5H z{;q4^Ik&BiBC?Q%G75qax73d1Sb>~8)+{gHepK*vGogJ7m}zBSHx ztK+QGMM$HYAwCDuM;7^w3!$dQfv=%CV^5YPJak99A z3_#*CX2wMM7<`Y?GJb07iVC?7nLh|i0!;DPcmXuU@vibc7;HbnfZBC!nGm28b@wXr z>z}bk-HQCn<1-{b<;R7VJTLs?x-BE?R4SQBdBvs-mpn?X>8_YKV^l-YeTt8A?bUb( zZBAbp64ldbw3yLLcBI}oaVJ;x1l)1`ykQ1826 zPy-mMokdLdrk2))6&dmhvG*Vp{bjVv8Yh;MF`d!d1~IW84%&L3;5)4j;SFChnx<9G zNqkTne(P$aW!s)U{Vec1!@V03uTSuNmmzHq&YL+| zqu|)7f}Z5$GS5vYRdnmxmgriH0_hxz`ly3Ce%l=Tqu%eK`t)xeAG@#9Kg~i#j~W{T zDio8Qd`?wey1oNDkH~gVtcLP9g5_=)tKLEqRiA+B?Yqu={$mqzB7!rF*K1#t(v z1I%CR?xxC*njt_D#h4|3c%2c`sD{5ImN&s6AMyTpRKWQI@X(8j^Cv!OEjifx(o(iA zAfgjd1us-jsbTiLHHN{!S3+Ej>pb$^X6DbWqv%9sla73k)aW|1a+5c3# z=ri<@5EJpDzT!#%cc;C3I&4Y4H2HjTpeLF+emTT8gqT(U4H(40{h;nCa_E&IBZpQvOC7+uWmMTz!fOAmIYDl z7Mjb)N3&FBrg6PrxeBz5WDFB0403`dU=Hzo#+8QV3P+;QD9wA;YXMu}_uf&AVU8hU zJ(_SL?7u%$mQzvDWGH7}45rkgm;=2TpNc4PIs68W7|`rL(gOMv(iY%3#qOC9*4S5t z+t(1Y(VkD@0=5Tw1k`B2?kKE{%XTZadu?J9Czg>WAD-fE9f5Usj^_07D!ks4d-UCc zEmgo4dy&Ioyb+SbY8>yE)QH5$MKz33xNk9<+=6Mr*pdRMsdV^cw)l-7BE?_5V)AdN z+1)5&ta~bDZG^1Fm&+7t(p71l&p$GLnc<>m9C5zdvl8N`QqeygeZQSP&m_sl^hS|{?F zC=C>QNsG-9bDVFN1gb$rg8=*yY;Z@Tc|-tHd5)u*;ZbRV0sEdJ&j{dQ!u5qcx@>tu zH?B0c;vJ3l^aVup&gxuBn2!DBxR9*3-kOT98-O5L(&jJ* z3V&*2W^o{34{Rx6QWo& zXuwn({6imL6S+s1Q&xSm1amF>g=t%1RDR(Qc%*mq!~by<5u3iV8u*gGoeGu!G3HL; zoZa8PT~H#~0C8ik#70ctyt!5flCg-nB$E;oGnNwPOzMQoIx{zj=@A-K>AqW~{7Bc~ zS&x=CXvo)!7+I=bfz$X!9K{qlsYqg%pDB1ODp6CsRK%vF+P> zX!U)r_5fD{-WuGvz85yGqyy{ObxXPC){eDUrtZY{W5*DSNV`zz46phxF03QU(@rok zlM>!zn_u>8Y+0X$@tFV6UiD@$PTBJ@@r#Q>&y0-Q&u|`oV!2GRvl1m8zW>(x8&_Dz z<8Qs~a8x~t^P9EyD<9i`Ikd$;?%&_(8)_WTF zuh3(Wj*d?29Kk>G9U(c32EZ|Ie+bQqE%r9QQ%4(1d;SSULGMZ<$5an41h??ufvczL zi+ksBHImWuGq!QBSp;zH?LvX;PtwBeQ6wZ`ZtL2Rhcpal_obEFrCOR+eq2R|T`l7A zk~SQo>uUV*k}@}xY=zoV_kIcdw!@|yHM-2>dMRW`{!9bH+oiMHPBa-Jy-ux3z!pH6 z2~f{?^IlJ1io>{XHgpp=fbBinB37IKiVG1GfwEoVtO{-|>iy#|^&8lblaFr9{fZG#KfX5)WP4pm z0BhNx6HD{k&)(_M8?%EMZ?5|z#*Yt?G=HxNWVQ+fS~*x(e7^Z;+x4HV_b71@_x`D~ z(=;&nvzZjf2Q!6agReeznu3CY2E8|Lx(}~%L3;o1g;=WJt9eOrlarI$n4A6$=&B=ZnpYFzQHwLwdwQERp38cdjs`0 zbe7tpbu%NDG>ku&G6QRFRs?}U)xg8Hh7u?;t87`at}pZJ)nu_87LC~DR1!8?7hwT? zj?L(LOWq=v_>#l#>^IKgf482=FCH3qEs&_cj(F`2E?jE#IDf7u9GSsYaCi02{~RRd zu+Q2kUk7EHkHt#LOhv7`5KKbF{k3=QUYi>IO8xN@1$Gy<^FaJBkF~!p!*832Bj_bx z;D}r$KrAU?pH-4CBo4|`>ZRY<(`wp#Tk^_gApG>ZS8v?Rl`wne^_ONtjl;LtO%LH# znadu!gJqVb)VKbyz>6?jjPju$N@95et315pHU5v{ z*Z(MfwYEmO)IjOq(iZ1xKa&Ovq(lAIBLQE}wU14+ny=dV*#z49hejGOo3At%W0$5p z!luc%^;U)c$A&c0!snk8QTFve#A9?Gle*b5W$MMmn;Ok_6Wdv%iGXN<7F3ME04We% zZcBc*F~phm<;Ii*bN39La(ju?l2{2jpB!yX5V(Vm<0+oiW!)Kx^R->x?yG7d^Zu@e z;&WW$KwMCkCXZlQvJC!&=;!ig^rkr&Mzk18zUBXb2mj@`Ga>Cn-U_2Hl!96EY(5SGCm|xxV0c@E ztp57Kvagg(5VICe`_v#>tp#Ca!2+&3l3*8pij#bt{gL#oUDq!KT{6`b=sl?l#k#Uzg zeWl;4q4{@I!}$#PH7NTQDvD^=lZ))Y3jCONj)%)0M&{s3853qvi7+!wtv(86wd$vA z>{&#uNTuc^(m5P=v3;)5B(3OVt!S=coy3F<<9SXPJUrgmBH0*gU;hw?0|UZGW~*>) z(lD{8bWQR)K&clGz)p_i5(=(#O-Yyf^UQgEdAbbuHT>D+{mDen2Gw$3XU~JJbny>I ztdsID$ZsuYbmF5!VNbS;x4SFcr-y{k9+x-W>y%=m_0Qr+ls^}yV#Hb&gJ!%prQURW zVwuQWhxt~yJ@Pt{EcZ}FJ(>uLl;@l4$}zTxLLj$jy0bxvaHc=gLuhy6i$^}pjJSdV*im~hWQ zWZbVa(}I&&Kgi=fD<;uP0K04z1326L^6Qv2v>&s|f3z>cum*97jFau^nB?xDqZ@M$QelvSnOHAOwkW@yY$xo02YIXX*lk-$2(qb=eQd{Hj(2@ zF9xp?pSvxor{Rj_b}cmg%v20T1;zWcD+_)y^R3u>piaNYEx5*uzMGiT0@Nyl<5P?Y zu(skGX4C;CVp$XS!=0RG)Kw8=RVg*MJ%#uWSc*jzkNZjvpPGXXFP!)9B~!C@w`+Yw z`Rq1s#vt02HlH72=|7258@K=cXTrXE9=b^=yen^QT|<_sQ5U};=OPfPZ+KQ@8AZ-t zG<}wx@Lv868}e9S1k=s`Mjp&zjfh$P719V$f3>Ng)dfEp^%vB|7jG+E79P>!1m45i zb3Au3M3B)cKf?Rb>xxqQGMTPS`#ygE>0h|mA#(4(Fl{JtVShViJXN`I1u6FO{bh6Q z`2_K(>GP?JDqSf4bH?;W%-K3w#KBLGLVF7SX#qq_{+yVU1P6esp!YC0|A@b@mDTok z*!fM0r7frz4uB0#DSyN2z~ zj-jc97;yDA4ytJIIfcG!5%NsuEJvkI6j`=^B7CpPHxoSwJaTcsubgki0w^fE5U87Z zh!?brQv1Z*O88BJdf!cnuQXcEcySRZFSai(QNc=+=<|x)2u@`D$iz^e#%=SyqoR82xwJ{wu<&@L>jV4dZ;Vwa<*?$Lb^~H?#>?g#-ceoX zkl&;fS+pWpRM*GPJv!WZaY@?Ee@cVRSk=*oI&QUnTjf%jB0dke*rQ zd4iTT1OmxEK6#9?(;({6m{+Bsurk}Qs#HR8E~X_1k!a+k70;hS>sWUnw-E_ES=jM9 zx(bOs`ztC;<(8`a(FxCkol*>7er7wQeGvaem;M_`z}dyJWlM(tc7Fzgf4c`-Z04JG>OYh9 zNu&`znPUA|Kyt`nbB2FYQSR1BP3Xm06E6`oSYJi^+{dnyO9D{6ag~74dC3g~4M0}> zx)9N&uk=;ERr&DxL#cqDI9CK6pbbZbs-fx^S!Mort|0NAV1Dm-Xx_mA!PvCS1?F;^-=dkFn_Fef z#_ZqWo3embEIOW~RwVt#YsNovXywQ(I3=r*`a>Lh$1~w|CxPqkoqs*ES#W`Puskuj z=X|ybj|mVJ6S^exUA#BiKRbGz^z8ink6&_-)9wCQsE7eYF{KY*+OM9B*3V96V;=?{ zb-&4ob(`wGk%z2BNKrk$JU>rs>fT?>NO4_w>{EDijpENY(h>CL@#XWgNKQTI)Skc~Nlcx0A z%c0zaiDt#E!k%wZc&rAE#rplj)fH1=e>2zAlh?7c{%Od4u`Z;AmWl5fj?O(ek3OUj z2ap3TO_^6Kl}g8BjM4|M3I*M{O6>J?w#6Fys2HKGSZkKb3mjeSgDD%Q`f|Kpzb}#I zLqUY#Dqw&Xx&v<2Ch}R;ooESkE>#>r2O;!dJWx2Yt3`rWUP%1AV`Et_DX z?LeX}X-xJ|Qs+)uTzOH1`NWfYFg?%X(C-*of;)v+>pcHZ1UxztPsqS7+@KW|!9;qA8t@cbNWB$_HYA8o>-cAQ{q% zyygq2Ge=%i$!WUt6t-5Ba7dwyqeo+c)gS+SS}oPE&+f7rAFWVL zRyCuWu}nfTTgf`++;&TSM-w1)Dkm95%2LGD~LFf@kZPp&Ts$vUn(-*f|G7ZUEN-3X<@YD3XZ^UXytoF0%ETh;cENbn?2_xFd>!kxW?GvRpmx8btZ+1+&SaH#R zCouajEnGbEq7N+%k+I_5BqTC7yz#j?0A1uDo39FuDj*+--}0Hh3FCqUIG2hQxX|NF zl87;ggE63rs7n^&PRtb{RCiTuHRbh0t=DK_hO=)AxtBIEwuCcIxC(}mv-Oql2&wyu zwC-OzehNP zHt%tWjCbgN{g)uECH!CuSvY6}hojF%=97V(xRhW3iwcV9Jt&8`*1*P!<7GAD2K=;S z%xGi#(RYxKf7-PC3@6=h4J288FJIz8MEQ_3keuupdrn&qZro!-X~4aadpH`{mKv%n zaWVb}hsam}nT6j z)1Nx{LJR_woEqiO>3SpG5alY>eFi6Kqd9YE3(=kg~5)idryE=ov3GD0{!f@Sizd z_}~vl1(PRe#4itQOqI|>7!{0MmyI|3$XS^18&=0s;tTX79(FH3#>Rl%Mn}m(D=4ci z`MC8b*_85?8ZYa|`(JpD5H1|Rh|cfcypo^Gs&{KVY>#0BUQn4T&hIjh>VM;ob&3xG zst5sXhwwLq>X>54Yo36F=bg|YW9r+8DZf|GH_*5?Xq+bC*ZA4jOc{($8UO^9a=&B& zEAKhv!sBJVz$wnmN;coSlAb$`Hm*{`Nq%y6o=l92|GR(eDGzx0P&c0)@7Fh(3qTZJ zM8>g}Zk@cq^##qADi912)ds_K=m7!{d#J+`8$@I7D;3hUEm0@t`&km$!R#P8;yt3` ze-To!(Kcm!FWHY_{vzQMFv6H*LfY~b`+j+dY)+!&flVzSTE@l%( z=1v}G68OxV^8XL)h5Du(a}~~edysH`iUscaAO&|m$bwd!fKs6uDX{J6ns@ZP&HPFQ z+3O4Nz2iMa$T9xVX}So19xIv`=><`_C0N#G8{*u|{JB}!Z{zc52Fos|L6PhI@Y#== z9Hf?DrF@FWhy= zFsdFiiQ4h{d+rmFyRv}zZ>GvR{6y~7BP>8pPsOrfJ8M<+k-# zjn}eR1~^n{isxdA`;eSS=n|InXZUbmGTHtS0g0oF+t6s-Xs?0|6qVmWKq^R*M2XuQ z2gie}FIv?XkJ)@d>WC=;6yk3o*mj0b#9{2h8Ndq|vkm&rkPBYe6vkj{;YaLw8Ri!VfDbEIA%)xB!hSE9D?(L=c~%0ovnDmJFFIW<)kp?HlhKQ|^m`p(oJCVBMb#&(2P zog`FXrF4WYooHOg1#a^V$>yxA!oj10&~g=q7NJx)fHOJ3W|_e2_AIYduPZay6=#9H z?h`=oiVs23;!Qk_$h=@#Y&)>1s6xF9zPnVEeo8_4ica$zH(N(b%l;0|;FqB{Zbf-T zkyESQ(3q%|eg!t2Q(M&({3xTQW9I9|MD<2pjKO$nS&54Tb6PYTka0g zz9^}?%9L}-LKEaymY9@_Uwy*k)}Bb9P5Q4{`7X5&h*&R@&h=vmVx#fSnZ9}1f8!fL za%Q#JgzUiQ$N@fNwt`uFK?OX%{;#H;5hdHVW{E#;_i_FYTk$Jv4SxJj8Z z9m2Zk9N9CRvibwtSUYaCm~-()&ZHZ=fdmU$*^GL-iyBHj{{OB@;OqZ9&l;VkfO&?0 z4fsD-RTX#BueimTwY;sjjxeeEp(aP7QIC&CN*ii?8HoB>Uv z`ql_djJDw}dhn3mKc7$+ZyewC!i!;FDawn`GRhKb9w+~~w6 zWb|8QG~0)Qmr6s#c%~P(v6FplDoG|Tkg7)3nb}h>$z>bNAL#7< zYlScQ%A75>d5JW~zVU6_F}~?SYy;DRr{DZoMEh!oH*t;4*mE?s@9lb+Hye_!g#X<6 z4I#urlUem=u_xdYKZy`vH2(}Z?0JL5BrU_Ql~8h))_~CJk`b6*H2DqDFD~4GG6Vn) z%0%=QYAC!eN{@u;&u3uz$*Q>S>`ig5IL>17Utx55PL}qUe=2V(a?DOT67G+A#eTvw z3I6src3?X-m&U0Hjd`}Lb)O4T^u6Bfr@}8Pe2bxcqauxrON&(P+hXlu^q}b+eUsYe zMU$-6juJ$B2?vQM*FS=6RdGDE+F8^^bzO#Da69*6rYe{4;T+aDbx=?zNl6vMD+tC2KENc6&DyaWsk-O%(HpT5k^y`ag4-yio3pXGoK3q9cA zMkO&*R){p`I4A8kwhhTO`UZ^S`OV#o`3l{Ssz|H_@>XblL;bmhHJvCs{GqNvmR=xl zIGJE=;FjbbxdN6vb|q|N*cQv6%qbqmV!$_bW4&*OgqR(!4{eg4St2O^vT`E$oB%@+ zot__B|7`!2Hy{V${CW%y2bG;bpsLQDv zikc;4eSNf0ZHay4;{$?k9xeQh<{jY{epnMoCD zfNmO))+<>Iw>U?=Nv*YoOXH$te}$H#U=!X&H>WWbjyt40_(J~Xh()7^E2Ly*>bI}n zy^(nDuQA7}1ij4lRCwS|qtzQ_W_;!4=V zkk-Qdjt3Dq{nD;t3WwR54P~ZYJ7KnY9I-pOtrIqZH6bj|8Bzp!(+v)4ePd-IKZKZF zSc|~MNNmyr1y(#ZdHW#mk4LLronNPLt((2|!d-p&yh1B!zfEtI$?J8!q<>+t=XI%+ zC31+bnA1&269J}!?DIOwAc_d64B#{D4-N8)`gJe~op@DL+;u5#-E{zbw!%w4ny}Q9 z0dT)KuU+<176wcHULGcX47>qZ+(<2iAyV}Ku7I{|K4pXvcskEq=RG8SYxo@38jac% zS1mQQ0^4w_ru+oq01%UCsDvTGm#M(@ERe1qweTppQvsI;H7>dXGGNJO=1Psr$3A<-hHXt%-UgRM6}u%<2mzi^Hou6H zIK4HUO&G6aGb>fU;TEC{vC%il-N+k~IYtP)laQ{f%*JfkNq4z#-V1Yjz3sX&B|1%r zXI=8OFSle%G>R+nEUC~^`n2s@1@u}84pLo3mu6bkH6VE!UU=g&&Blm*tecsw?s;Ek z$ChO>N%ov2FEwaROZj7}^mFfzp(mtIo-X>YO-gb5uX4PKtn2uAy2^itY!AizszR}W zrfwee2y&KHe;YyR4vh9M>;uXlMjf zS5GSgSgtlC!WX++TjbrVc(?Wc30Lk>LzMjQmmT%e)ABYe5vy7bwW`rl2WcVc-vF2G?Y2RTs_3ITZP4>>%_Y73h5J$Ey}cO-d!uBzf_zO6emxblis8Qx4~} ztOy~rf2a0CtbtSI(He$bSpeyX8H7jdZ&4=xk-sGxQeQYRy&uU+7vrGBKf|v=H$yA+ zr)%UTvn*txY%LhP9BM~%TYzyR6$?Gk1Fc)1cMhrz+S(@s?URo?l&O0i7!1EgTI}5hs zPxRoEA4v$7l#jr_N-!J&j4DSiY`vH*O@pW;#g8EGnb;2XZAl_La%mX8=PFAF#gC7J z8Dq*oN&~nF5O`pUm?&UNq928aRRH>QAs)IZzgynq`?k%@)*AQbl0knu#TQm#E*UYh z+2!GHsG;C&$@BE9<(ZHP+yxd>%9V0^cvXAZ48FIs-KgqMs@1k>ZO~83|4<*Pflk0I zMy6E^<)LzGtl2PBV2e5q?h^dR_=^ zRN?BXdq8lJ^N}R43p}V*tT{E!Bz%DE34mV#MulQ}uc_|$c5Mp=M z2YDEh;{DXHtFfSG`)T|7X9=Fuf@t(gj5g@B1yG-j5}6ya3C$fccCL&Z4xhDg0B>rv)$IxkxW>bpmG zu`|IL$_@TG4O*e`@fR#8RbLMy)M#;5=`U{~=J~JC9r-CS^weqZSL|p~6I;G}_&SUR z%H)l1OdLO-);;r-D6A8U>@$B=Rzj=Al{T0d>YXB@aj3I|GBcM5$)<7dnXc6M-G|>0 zb5@TkzDC48B%<=g3kmEe@;iM!-1tXU%H%Q5_huEZ^V`^CZQmgF8Kp2G)$`N)aXU6@ zU@bb-C_WCtY&r{^I8zwLk+rqAy%Et^a=E%1ri&Pcr{Pe18*9R6?9BI%OWP}b z790Ug4Pip4sx^l9DX5%;Gx}fJYkAZ7cePUaltY-7Ib(X8umZGL>c)O zeSg=v;s4J!x$Uv;b>i&RocA=9RPk?WY+MkI*{b-TByQy4@eNL!j}8`P@*1Z79S#*P zBKR_Uq2CBmYLhaU#WYX7@-5?hksHaABy22GAg!=>+V&Ukz@=qGkvO89j07mhx_@;= z*Q4KVabR=3?5}=oL$3XR_RryTaYhaa(AIv(EI%1%zYEGf#B-a|*LQHoz5~eg6gBx6 zosfYPX4DTkK}G#1<=f)PSRhTtaJv-Vdp!<~P_II;mD1d9qKM?Kn96eUU`*sO<<_$S z;a?>xD?xQj zGHxlMn@`n|G)r;xGsOu0yTY#~h}-btro;oeTcFx=1x^r0rgX&7Z=$#smC5gKuAY}; zDdj&+y;|~DUyJhI$ z&MW!T2l3J(evP!qj@54iEio-*rls1CrxpJ!md7GqJeOmYUPYySXWu(;o1eyOwlAE% zaV@5ZeXe8x~+oU5e$%1N8ZEBa?h&ON>ck#{?~YF;d>i zQ7K;w-dTwZ*YDIPbK+@8Zj*!D>zCfCB>T%U-YdiK= zbg2Lp52AJ)k%DD^Y=FS0ZBS1nAdI_b3Fr$DRKV>9QW+VTri=uHb7^G0C>ZU@ zR7oZcn@B@TthgO9bfc%K`M(n@v-O;EX{j@^>oG94_%XPkWi~&>P~F@?>d_@p^3iDc zSUd>{TH{E6aNDvSxg9Tm->>$i8#WY;!pk-e;ydeNi1mm)m;U^?OVcffOHFETvwbT1 zj^%rt7tfK<(<6*J(N(iZ#oQzdwQxsU?mYJt6&p_yySwD8d`SpnZdGNCYdJ~-7SKz- z8*Ul;pf2=478U!B$J6=nv2BwV_y?8?Lb({b!+1tu#(ka=E71h8SIV!$iqpCy1PDYGu-!`)39SGsXb++YqlM5&5{z->hPU)T0rtQV!!cc(XsdW z$GD^^UU}M{rTJ=~U`CsNO_RC}3K9^Iu1h2I8)MZvoToPD*wv=6(U;Yi+vNh@ztnQU zxFo2p>vd}0t!~%JI)OqIWq1x;84HbxL@J3@of-}BF_)PFk3ef67nDW^HSl#NqDa$< zzlyDn5}?*f-GWT~^x+ZhH`c4{;jIrWx}W~qlFKMKX1{$aw9+hK9lD&CRd4YX5+AjW z{o8N;qk6Pz@)eUL)an=0c(3Jz6j1m6O+BUmMF`a$=lu+F@474edsqok%SI&YR;76l zHp=`3>~#?yXkKI;-7aw-PndgZ=n}jxsu?Pjc!lc8V9x>B3)g-YY znbow%J*snCY3#`Y>RSA$)RW0Be=ZU7cc`HnMO~T3lrwp8A;0_?;ZRv*P0>ZKJk5Hm z`I4el3j3NqJ%l1o^Sz*DkfS=BTMl#`^cq2HD9V1ne#`ia*HXkn(Z1|fNOOi(T8Z+= z%+Xh^3xVBobv)Uvwy0j*Y-;ccIP`pJz*wj*~3!#aI z_c^$%A!NOcRvUU8&+ilJ$rcRLr%mdI6X&NYvt@o<^_C$aI5grF^TrP>b z;Jx^!kB=b8-P-!J2MqFqh+US|W_z0}maW)z=u+(BL5d4@7lGj8%Y$t`fuBh=pj2Rd zY8oJ?^~QXCOjxJn2bRWppE?q7XEK`mDT!cFs4rMf)1|^?#+Kfd*i2 z6jMlvM8#r~b4bVZ!mj5V&cUMt$KUDqda$oL=5w;~C7WaGl}1COS}1FXLB$U{dEEoWE~0cq;!*8zfnq!l52zrkoXF zbEfw18Sy~S^7g%Bx940pXh}&@KJ4ztc;49G+zq?p4@aTc<$yfE1={J0bIBW$0CEwb zDDW7k#i;d4WndG7N&w`gK>0CGo)cdoiK*>J(R}!KLXa1^swA`p+0eK*8l=Yh?Pcws z4D(}kA^jD01^rED$uG2GKKlLb<()`B6{Dp+Mv4u^_{r$5M8jf^KG6<`MB_8O?%K2O zuC04fQ18%4@7&E_5h&yf>J8FoMJr;!>!XYJ(==*Zr~Q1Wpx0kG_jzj@Ycy^Kg~o zRDB+AB|+bE^7&abJV|>{ZRO5KRB#@K#)PH92XOmOH2+M=P73P?9-HfJ&T8U*_>aH99Hc3y?eN z(XXc?pvPI7fOmm1etjM7ovvOPo9_rU(7G;=ept3cY;j+sN0gxf&CU_0ZQ7PBf=2ox zL?-a)0ZoxTQd)*{rl9?e?J04?{R?)k$~s+WD+F&O9gf=mZ47NwgR|g$*2X31vXW(f!3Wm9Ox9UPuP&T<~bA*+28VO5+IhjReExYvc0kd1;$V zNFo9l(491n*s=G*XSiy=KO3%eGO!g88_lGLP8p}U6H>e|G&@o^orQEVeDD5Y^;TN* zF~h?xzh>$A4#qa8R>bjnpk%>lX z-5CMez4WkHXNoJ&3UlteYb(UcXMe?Vn44zahI&$9rixI4WY9psmCoZo6YJ2CNoJMea5wjuLHUy=I3Ve z(5Z4wbAEIt(yv;|((!v+Gn7N@0rb6UA%yOLdx*6YMy{+Xv5T<+|c~dRjianzmOqBdbGTk}VE8Q@%cCJ0)dF_z>MgcwgBe zM_Idl@{BR!70%g@*29v+pT@>+%kIV=I!gptDCmfCmGxSCfrK(sNrjSF<1as?zT>%h z=%bf0MAJ&muWjqd!pfrgJZW^1W_t47?qo_4*rQ2_T@!Pe#PXO6a+cBWlO0jXM}?YO zq7t)zWghj=u^rJ)yBWwdM7GBY!m^<+sPBmQir@gL8V&Ql?+f$laK}cQ65mDri zIR|r(m4lB$o}pHsNRpl?ao^(8(clp`(Z+uru+VR+{-4_3Ix5QVeHVTZ=?>{m>FyMf zk`n0-kq`-Ki9u=U?nXgE5Ts*hL|Pi@4(S+Tm^lxh&-eSjXPtHaJU`a3)_$JZeee6a z?tSl=lq1hl8Lu}KC$89CXKH{M;K(Sg`vSl7XYLcEKCzUKmhDa=()hrUJID5I%~JP{ zwK)UbH=K{Ylp3?X1T(k>E+PK&L-cPp*b!mr>jZ8&GG-yLMvAZ8(R!sL)vF28%t^bv zm(Kz;FoB_TfuiN!_L>@EBO{}qzkcl*APyRqFK=@P+pb_DjLZdc@xOI?VAh4j?8BN>RXX2Lj`%k(Sc$jC_G&9i6EJ|xp6-L#Vta#*E{qo?D__j4rk z_Ge5Ssjjmlqdg@fhQ`-dSalG(;g_~MM;5~>dz#g;HN(SCng_Uq2N!qHOip!s5^Yjm7 z+Ip&LE18jzmw?@%d6BNKJEqT}oDK-tlyDvHN95}{SRIYrR^?)S9zDY)!CGPY7OfwT z#o*7hzNc5iYbV;#L-KX<7hz4@aqbZVT;bMfNZXuAeC1({OLj(y(ezF$>t&sM`E{B=tAw(!frCJAk( zMey-!S5xMP>jgos->EbRm{1uq30b?Z`nCseh8w&G+3gUIq7{Fs6cZ~kHR%_QHydRz z850*yohPR)6|~BF=dmc3qaUfRnrWuW&7Ct8Mfsv|XLYFAviq*BM*QJnrqiMhVkSJr z0l0k%Hy7!`f*MrT*`XV|2M(babrb>UJ!tu8baCOX+5M@ODw`u7#V4_JIf~TN15)o} z)qWI+B#s@6V{QjUot9hNeLCR*M5{lqD%c`k6<-7-r*ifrU~uVI5Dxdlug{36siW4` ztWVt0gU`z34+neCgF6j>+kva4!Ce-2GKy>OG*etn(XEX1e28x|4@&X$!ymz?jF3gu zo++wkGBoTj72lIGzWZ7}!zx`BI_3WE8GFL778xB?;!!nHVghgdy=wZTcg{;+v2r$a z!_9k-TeI#E$Ajt$^HhLFh;6%___w_o>NK}1Dhu1}f>jbz#(612Ed=#my@92t;i~57 z2rIWqZ|!e$b52j`hS!JojwmNFMdPR{o5^K6$1DSWG2gC+Th*6_Q2kJ7e4U3Eh@hpi zb-v4bxQs>>69UiYZE`prB)zERI5tUK58D_vUQTz{eTa{=OdklbI=5t{GA}4SeLRJ` z|L%(bjhNoMwOb5TkKY!U((Iv>+{MvpT#gh$$2z{4PsJZCEIh1s;_eWSRJ5*tmxK2y z^5tK^Fmlkh@>l&awZ);#c%)d3^NhDvyT`J9%hkC}cbS->5|aj_&Mt&FLpof>s<}5u z`ohfoTPXwg?W&L#uOrQF0DOWst!HsQc|+olTf_PaRP6D$jM^N=;vAsGNbjeSJ`wSj z{ZD^(5B>hOk*y=<#Y!GECC*Kh*PP|Ls;u*4SXOOQ$bRp3?P2pPt@hh!E`_CcX;tb} za@VX%ylFx5T`e@yM>}pObXu%Iusr`w#@jrvrY_1{i+u6ZrD!RBTM0V?60y)I4eWUzNaHZON%dp$L(1H zOia*kAunFM=y019?(7d`#f#5qBbCSpvW}H!rekxagM&FdxrDyuV;u=6}zDCJoxhi zPb$@Lwu-M&y3}+s>QgmZ)dNMUv^5Tx7AafRMbU8mS~gy-r{TJCbz9O=EaXr3X}!kG zVA%Bpva`Hv>09sX+0O<=O^w;yJpF!LY}r?&&FLGdKA6kDSg7YvaJ+#e=S%P)4m+UO z%{e3H99L!!Z*df}*E1F;IDn?SD3g@I_p<{}e)0ChrrLgw<-ks4E_r}e(1ws zdRfIJHbq9CIdckt@UG+ zm^0)chnzMvAlT(UO~|lXfU7;(8JF2DI3k-^6zlevO<8`nr#X{NC>5XUk3S z-_x4mzZ`9*X8#RTWQ}nRN1dJ-7^NV&C#?34F9L@N)S=rFezaiJLE_ z_(X6{Z)i6)+{R`R21-aJYcG$nqUR|Kan>B!MWz`P+w?TKfnCF6>9d{#qk{-k^VK^I z6+>%ILs759k$P3I?sdWyEX1nf2`YN6Ayb45*#`%!lp~(0z+!I5fXhd#d6YiY;?oyX zYa$fib{>XJgf;nw7S1K{U)yLjqvKE6RiT#Z84q33!#}R%+kSqx_OtQU9IWM}?{kC+ zsKYC?GImB^ort>`5~codtZSO+RtPE*dtGKV{NUuFu?T37n6htSwA%O0@(ky!JJcU> zzSS)pPj!?ckS^78=oEV!Bz;nbS~I(`#Sa?~ujAxd(CFXdSNohf6;fZVmcnlyvHf&v zKsmQovLc>UeQ6ZL9=8@-!e)Ervm^Nj@pNG+>Dl3z%Vl~FtKy;u4HayYXDYc17b;6T z$QX>Is5;jxbrpuWHa~B<01L4YEePyzQ5O=y@9qML4dt(5`?TuI@!Y3DnQ00L>RETN zTl|*f{Q1)vUb_F(73b|)Vcr=?A}QibOjDYkKB*zah)~ZjrU$s!aQx6kFYe+ZJ#76# zuMmx$y{V8;6$x*_?la>C!3}QqG%=#E$^hqKQ#bt{&_)yhCM&{QjHmZ8(;9Q^7JtRR zbhcID3&HUu2+HNM8r#x7#ye!iCE3>h+I^2~;7E;Aa6oZ|WAA>nLU{}Vio~d35{kN& zOfDv2mq1AN>qX6H@Q`oNo6L#15cXBfYbOrAq`}U!chj4H*@*QA_$v}O7mP#C>eKvE z{u~|uOg;d{1w+(d`NZi@xt|R>Uj~z7jvXX$?D^XM6ktloe&Cwv)?#gx=1w-)L`*@j z4RjhD`;^^AlTfBe*ZJlpu3kUxo670{8c-FVcFWnOM=LV= zOVd27Ic+knZGJWV^KB8{l5Eu##UID*r8W&d!>WmmtY@4zsWUU!^VnjSc-QtS4`l*> zeAt&tbO$nWwm3d2a)ais~v$sN*~{0`(8n+<$F z@jt$M&b)$OVyhF^e=p@Gt)?mg+Ko?z@w1$nUbW$e4$T!+-?PIbPP!oX>Z1V1Guf|Q z?^8hr@b!BoOt6X{fg-Pzb$z@l!l$p~bFuRX&Bck1!e1aMyOgn?ti;3;3 za?%DiT1`1nyFG+L2-xLIdk#`RxS!!}OYXmL$W~Eir35*HRjVgw@hkd78dfgyO zf18ICh`lL6yM0aZ;n+aPa_xx^KCTTruHVXih0;%Wmh2L%<2D8sA@iGws1X>9Leh(N z7w|c+>Gf){?^exfzUr;S3Jnn?t^G>bZ8CJ=4?w^WITa19-#eW-3C=2A;%a@R3Q2l!m`i7=WP+PWcXMtZDJz+g@(T+P0?t5Ty?9&Ak-W-86~B7CypLpM)X5n7tkaTbA~b`FNxsyM z6OQLEL+1fk_;GoTW77WiGP2eX8t*bPC%K~#aG!WdZU0)Q+&X+ z+4RX2jQt1ND^jZhoqGm{eZ9y1fj76VAX-(;oi9 zJkOSi6f*N_h2O|o?xt7|FV3JngIL17E8i0dy5iUxF4O@BiJ zLLBSBDxyq434L+M;s>Xo+^B-HrpuPGeY9~mQDl5<97z+}HAuoCJO!AKP7T!-x|G7& z}aeGQnT%wdr zbGHW_3dAlyf{Iw)2#k-5yRHDSbTZh0ik4RYc#$#@J$>AaxgTCrQ&Z#mh!j!T)LJ)z z9PY1+ctVA+BDq(nYbNn5qN4iTwT9f=!$kO`>n|YVYrU@q;-c4jp(9=+$SdA81b4_vH(h=1qP0t2-$bHU0H{7w*Eq>eC}B1S&`QU&S+6KfthZJ$kFP z?n{oa+=8rj@8=Wf0RWkuV-F0{0uH8SD6Tv6!=|!%FSxS#m*tBiqgoWz0mo!LFYDL( zAy01M z-0fSWRYHuS{0^4dsC#>ROUud>+}s2nv;n_-rY+k2B_h-LQD7BwK@CVA=}ak&?)-|H zm#w$Q0)EcCTgAPrxgym3-s6JYVAR>#SpOR}SvPJ5(23!+_Af{%v3o2?z zY*TVnCit&zsBzT1>Cm_ThVrUEN`^OhN?AEqN3s2IL7*@OX58s^oQ_KP5fPX4t*PVf zIVr-uFY3h3Z?mE~5)9Aw?e5ATqnUWt2#9~MW(5+|YGR$=W8<4ap!xvvh#Z_g4aC#) zq>nmC$lZ`5D1wCKioQ6PvB)Njpvheclyao^f*Zz*@DR&``MUdo4|F&;MDZ}n$aFa& z78Xp0a{QRTwOtxln6;2eNJuoU$4Whr-1n$#*v9}c8Ph(4qyO~xbH3F`_FMo^RK(y;X$XpI08ks8sC2yA0(TN9DJ|~8O!zd>6ludXhkihem0(A7K>g?zQ zx!YH1|91bQw6Ko!b>B|+*o4 zr5+J|8ilB`xW#?Ds2Q@u9(g?z&N((ejV9lS5)l~}-qgvvL`qr_@P1)~o^VetC}!g1m#tqIyysqL$;R;mrXf(cwlO|ViFK2o0-w>?d`>9W@1}t_1WbGpqEd5 zdc>ul|3?!3Ir&~;?*D=OA3u`MdG^ak`G;(G3Fd-IIrSCv?gkOIQ_zqy>rHLwUJWJ| z7Ud74ZH3JuBjlW29%~|D=f+ibLmY_rnd+YQf>Q-WgD4=3f)9_&UHVKQ2-Hj}YPW3} zIoebl*e?5*Vg>NKH4hu~PAs4T>MFcE4>v1Z?XPzbDa7iN`|sxn~1izm%WL$7@jGoq4K2aI|UZa9$jmx=|^3|?#fF` z6`nnNWc;Vu(z$y5$MZ(*f3#@j$pZ*~TVb`J;{dbm924 z3W0&L`rk}d+YvW!u7*_JzCA#@FsL;49JqO!8#cJmm=cK|1j(h2pbYqP`-IlhL|3=x zoEDSn@2358F_+h4%21E9t)QKm$;p+tJbDs~+w6v_2Umx!Hf!qww>O5Zx6Q6Z?TpAL zJ)9E4=}BRmUEmtL>uBaOYLL(NDz!)E)*`*dGOT@s2I!zh!pMOTsrWB_EdJW3{Z_kj zdRO?8%_c8S0x=FvGno$u9n!|gxd>u<0>pX?Mnq{#%!1n5u!fb}Lwfrdy;t9MPcOq^ zsF;!BGs`&nc~~ex?D``Q7^1@+_Pv-m*;M^q8vBu8C7)_-H*HT(%|)a`@O4U=N#b)! zgTD$9S0js@e;68ncWQDKT8V?p)qi~m)Y6zd1^~J^RmCT|JyI6S19Chsg9CCNx|1(5 zQM_=OG3+?C82?a;a*Yw9-+6ml3t%pO9RKb7x3csRjFI9Rdi13+@F@Jk7+_)Ie0|lA zRJd3Ucah%$A@@^#UH8&bNK=$E3eb}$9aV4D2VvcS)>YzEJ_2tecX6)9_>6!UyIgmU zQno?C6Go8QxoB`57yz{O^}{lR>(bg{kmj z>E&cA^yAxaFz{(QDvWA-VCrlnpaM^7ArZGn%5UHDd{NK%n4Fya{CCNIQ1pYFkxL-t z7Xjb~8&-IS@g&()oMYI`1BW{t)(s273hoS&drOz=rJzQIZ$P7;suKNdYnVD$9B6pYG!KTPX!V>qBZZCdYfw= zv4Z2DY3U+7XjGM380~lASdn9lESeEb9@|z0)IENks&|`XPnC@d^& zAH{`Eo(xobqa4b#-h; z4^omwkZ5{ZjwFVbel0tV5@py}hGii^dMw6f{oTq#T_^Oh&$YfVc|kN8r| zg8Ul{gKcNItx9dZ+|nR-Cy-B1Nlaw=oArZy(4`3r3bFQ?H&8&dWKxe*A(s{i^pRpF z#&`P2+f11}lrubeIz!~6MV|DBS8a$AP!mB>DaXyI)@uqhAlex zgUdIupFUw*rD1kdaI(R_3lsB)Aj*ja}2g(bJs+pqtda`nZsxafq z_E&e~S0Qt5&va^TTBW{yxXKJfk*}I~@>*_lCSb?0A-|+IcDkPTWMpE7>fLt%M#M+z zm85;Ahkw&LeKP~J?80aNaudY-6~nh

qa?h#oULz8hQ$Pwg~d)jA}MZR2A{J?Y14 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 diff --git a/tgui/assets/tgui.js b/tgui/assets/tgui.js index 16752bdaa9..096a7af3c9 100644 --- a/tgui/assets/tgui.js +++ b/tgui/assets/tgui.js @@ -1,17 +1,17 @@ -require=function t(e,n,a){function r(o,s){if(!n[o]){if(!e[o]){var p="function"==typeof require&&require;if(!s&&p)return p(o,!0);if(i)return i(o,!0);var u=Error("Cannot find module '"+o+"'");throw u.code="MODULE_NOT_FOUND",u}var c=n[o]={exports:{}};e[o][0].call(c.exports,function(t){var n=e[o][1][t];return r(n?n:t)},c,c.exports,t,e,n,a)}return n[o].exports}for(var i="function"==typeof require&&require,o=0;o2?u[2]:void 0,l=Math.min((void 0===c?o:r(c,o))-p,o-s),d=1;for(s>p&&p+l>s&&(d=-1,p+=l-1,s+=l-1);l-- >0;)p in n?n[s]=n[p]:delete n[s],s+=d,p+=d;return n}},{76:76,79:79,80:80}],6:[function(t,e,n){"use strict";var a=t(80),r=t(76),i=t(79);e.exports=[].fill||function(t){for(var e=a(this),n=i(e.length),o=arguments,s=o.length,p=r(s>1?o[1]:void 0,n),u=s>2?o[2]:void 0,c=void 0===u?n:r(u,n);c>p;)e[p++]=t;return e}},{76:76,79:79,80:80}],7:[function(t,e,n){var a=t(78),r=t(79),i=t(76);e.exports=function(t){return function(e,n,o){var s,p=a(e),u=r(p.length),c=i(o,u);if(t&&n!=n){for(;u>c;)if(s=p[c++],s!=s)return!0}else for(;u>c;c++)if((t||c in p)&&p[c]===n)return t||c;return!t&&-1}}},{76:76,78:78,79:79}],8:[function(t,e,n){var a=t(17),r=t(34),i=t(80),o=t(79),s=t(9);e.exports=function(t){var e=1==t,n=2==t,p=3==t,u=4==t,c=6==t,l=5==t||c;return function(d,f,h){for(var m,v,g=i(d),b=r(g),y=a(f,h,3),x=o(b.length),_=0,w=e?s(d,x):n?s(d,0):void 0;x>_;_++)if((l||_ in b)&&(m=b[_],v=y(m,_,g),t))if(e)w[_]=v;else if(v)switch(t){case 3:return!0;case 5:return m;case 6:return _;case 2:w.push(m)}else if(u)return!1;return c?-1:p||u?u:w}}},{17:17,34:34,79:79,80:80,9:9}],9:[function(t,e,n){var a=t(38),r=t(36),i=t(83)("species");e.exports=function(t,e){var n;return r(t)&&(n=t.constructor,"function"!=typeof n||n!==Array&&!r(n.prototype)||(n=void 0),a(n)&&(n=n[i],null===n&&(n=void 0))),new(void 0===n?Array:n)(e)}},{36:36,38:38,83:83}],10:[function(t,e,n){var a=t(11),r=t(83)("toStringTag"),i="Arguments"==a(function(){return arguments}());e.exports=function(t){var e,n,o;return void 0===t?"Undefined":null===t?"Null":"string"==typeof(n=(e=Object(t))[r])?n:i?a(e):"Object"==(o=a(e))&&"function"==typeof e.callee?"Arguments":o}},{11:11,83:83}],11:[function(t,e,n){var a={}.toString;e.exports=function(t){return a.call(t).slice(8,-1)}},{}],12:[function(t,e,n){"use strict";var a=t(46),r=t(31),i=t(60),o=t(17),s=t(69),p=t(18),u=t(27),c=t(42),l=t(44),d=t(82)("id"),f=t(30),h=t(38),m=t(65),v=t(19),g=Object.isExtensible||h,b=v?"_s":"size",y=0,x=function(t,e){if(!h(t))return"symbol"==typeof t?t:("string"==typeof t?"S":"P")+t;if(!f(t,d)){if(!g(t))return"F";if(!e)return"E";r(t,d,++y)}return"O"+t[d]},_=function(t,e){var n,a=x(e);if("F"!==a)return t._i[a];for(n=t._f;n;n=n.n)if(n.k==e)return n};e.exports={getConstructor:function(t,e,n,r){var c=t(function(t,i){s(t,c,e),t._i=a.create(null),t._f=void 0,t._l=void 0,t[b]=0,void 0!=i&&u(i,n,t[r],t)});return i(c.prototype,{clear:function(){for(var t=this,e=t._i,n=t._f;n;n=n.n)n.r=!0,n.p&&(n.p=n.p.n=void 0),delete e[n.i];t._f=t._l=void 0,t[b]=0},"delete":function(t){var e=this,n=_(e,t);if(n){var a=n.n,r=n.p;delete e._i[n.i],n.r=!0,r&&(r.n=a),a&&(a.p=r),e._f==n&&(e._f=a),e._l==n&&(e._l=r),e[b]--}return!!n},forEach:function(t){for(var e,n=o(t,arguments.length>1?arguments[1]:void 0,3);e=e?e.n:this._f;)for(n(e.v,e.k,this);e&&e.r;)e=e.p},has:function(t){return!!_(this,t)}}),v&&a.setDesc(c.prototype,"size",{get:function(){return p(this[b])}}),c},def:function(t,e,n){var a,r,i=_(t,e);return i?i.v=n:(t._l=i={i:r=x(e,!0),k:e,v:n,p:a=t._l,n:void 0,r:!1},t._f||(t._f=i),a&&(a.n=i),t[b]++,"F"!==r&&(t._i[r]=i)),t},getEntry:_,setStrong:function(t,e,n){c(t,e,function(t,e){this._t=t,this._k=e,this._l=void 0},function(){for(var t=this,e=t._k,n=t._l;n&&n.r;)n=n.p;return t._t&&(t._l=n=n?n.n:t._t._f)?"keys"==e?l(0,n.k):"values"==e?l(0,n.v):l(0,[n.k,n.v]):(t._t=void 0,l(1))},n?"entries":"values",!n,!0),m(e)}}},{17:17,18:18,19:19,27:27,30:30,31:31,38:38,42:42,44:44,46:46,60:60,65:65,69:69,82:82}],13:[function(t,e,n){var a=t(27),r=t(10);e.exports=function(t){return function(){if(r(this)!=t)throw TypeError(t+"#toJSON isn't generic");var e=[];return a(this,!1,e.push,e),e}}},{10:10,27:27}],14:[function(t,e,n){"use strict";var a=t(31),r=t(60),i=t(4),o=t(38),s=t(69),p=t(27),u=t(8),c=t(30),l=t(82)("weak"),d=Object.isExtensible||o,f=u(5),h=u(6),m=0,v=function(t){return t._l||(t._l=new g)},g=function(){this.a=[]},b=function(t,e){return f(t.a,function(t){return t[0]===e})};g.prototype={get:function(t){var e=b(this,t);return e?e[1]:void 0},has:function(t){return!!b(this,t)},set:function(t,e){var n=b(this,t);n?n[1]=e:this.a.push([t,e])},"delete":function(t){var e=h(this.a,function(e){return e[0]===t});return~e&&this.a.splice(e,1),!!~e}},e.exports={getConstructor:function(t,e,n,a){var i=t(function(t,r){s(t,i,e),t._i=m++,t._l=void 0,void 0!=r&&p(r,n,t[a],t)});return r(i.prototype,{"delete":function(t){return o(t)?d(t)?c(t,l)&&c(t[l],this._i)&&delete t[l][this._i]:v(this)["delete"](t):!1},has:function(t){return o(t)?d(t)?c(t,l)&&c(t[l],this._i):v(this).has(t):!1}}),i},def:function(t,e,n){return d(i(e))?(c(e,l)||a(e,l,{}),e[l][t._i]=n):v(t).set(e,n),t},frozenStore:v,WEAK:l}},{27:27,30:30,31:31,38:38,4:4,60:60,69:69,8:8,82:82}],15:[function(t,e,n){"use strict";var a=t(29),r=t(22),i=t(61),o=t(60),s=t(27),p=t(69),u=t(38),c=t(24),l=t(43),d=t(66);e.exports=function(t,e,n,f,h,m){var v=a[t],g=v,b=h?"set":"add",y=g&&g.prototype,x={},_=function(t){var e=y[t];i(y,t,"delete"==t?function(t){return m&&!u(t)?!1:e.call(this,0===t?0:t)}:"has"==t?function(t){return m&&!u(t)?!1:e.call(this,0===t?0:t)}:"get"==t?function(t){return m&&!u(t)?void 0:e.call(this,0===t?0:t)}:"add"==t?function(t){return e.call(this,0===t?0:t),this}:function(t,n){return e.call(this,0===t?0:t,n),this})};if("function"==typeof g&&(m||y.forEach&&!c(function(){(new g).entries().next()}))){var w,k=new g,E=k[b](m?{}:-0,1)!=k,S=c(function(){k.has(1)}),C=l(function(t){new g(t)});C||(g=e(function(e,n){p(e,g,t);var a=new v;return void 0!=n&&s(n,h,a[b],a),a}),g.prototype=y,y.constructor=g),m||k.forEach(function(t,e){w=1/e===-(1/0)}),(S||w)&&(_("delete"),_("has"),h&&_("get")),(w||E)&&_(b),m&&y.clear&&delete y.clear}else g=f.getConstructor(e,t,h,b),o(g.prototype,n);return d(g,t),x[t]=g,r(r.G+r.W+r.F*(g!=v),x),m||f.setStrong(g,t,h),g}},{22:22,24:24,27:27,29:29,38:38,43:43,60:60,61:61,66:66,69:69}],16:[function(t,e,n){var a=e.exports={version:"1.2.6"};"number"==typeof __e&&(__e=a)},{}],17:[function(t,e,n){var a=t(2);e.exports=function(t,e,n){if(a(t),void 0===e)return t;switch(n){case 1:return function(n){return t.call(e,n)};case 2:return function(n,a){return t.call(e,n,a)};case 3:return function(n,a,r){return t.call(e,n,a,r)}}return function(){return t.apply(e,arguments)}}},{2:2}],18:[function(t,e,n){e.exports=function(t){if(void 0==t)throw TypeError("Can't call method on "+t);return t}},{}],19:[function(t,e,n){e.exports=!t(24)(function(){return 7!=Object.defineProperty({},"a",{get:function(){return 7}}).a})},{24:24}],20:[function(t,e,n){var a=t(38),r=t(29).document,i=a(r)&&a(r.createElement);e.exports=function(t){return i?r.createElement(t):{}}},{29:29,38:38}],21:[function(t,e,n){var a=t(46);e.exports=function(t){var e=a.getKeys(t),n=a.getSymbols;if(n)for(var r,i=n(t),o=a.isEnum,s=0;i.length>s;)o.call(t,r=i[s++])&&e.push(r);return e}},{46:46}],22:[function(t,e,n){var a=t(29),r=t(16),i=t(31),o=t(61),s=t(17),p="prototype",u=function(t,e,n){var c,l,d,f,h=t&u.F,m=t&u.G,v=t&u.S,g=t&u.P,b=t&u.B,y=m?a:v?a[e]||(a[e]={}):(a[e]||{})[p],x=m?r:r[e]||(r[e]={}),_=x[p]||(x[p]={});m&&(n=e);for(c in n)l=!h&&y&&c in y,d=(l?y:n)[c],f=b&&l?s(d,a):g&&"function"==typeof d?s(Function.call,d):d,y&&!l&&o(y,c,d),x[c]!=d&&i(x,c,f),g&&_[c]!=d&&(_[c]=d)};a.core=r,u.F=1,u.G=2,u.S=4,u.P=8,u.B=16,u.W=32,e.exports=u},{16:16,17:17,29:29,31:31,61:61}],23:[function(t,e,n){var a=t(83)("match");e.exports=function(t){var e=/./;try{"/./"[t](e)}catch(n){try{return e[a]=!1,!"/./"[t](e)}catch(r){}}return!0}},{83:83}],24:[function(t,e,n){e.exports=function(t){try{return!!t()}catch(e){return!0}}},{}],25:[function(t,e,n){"use strict";var a=t(31),r=t(61),i=t(24),o=t(18),s=t(83);e.exports=function(t,e,n){var p=s(t),u=""[t];i(function(){var e={};return e[p]=function(){return 7},7!=""[t](e)})&&(r(String.prototype,t,n(o,p,u)),a(RegExp.prototype,p,2==e?function(t,e){return u.call(t,this,e)}:function(t){return u.call(t,this)}))}},{18:18,24:24,31:31,61:61,83:83}],26:[function(t,e,n){"use strict";var a=t(4);e.exports=function(){var t=a(this),e="";return t.global&&(e+="g"),t.ignoreCase&&(e+="i"),t.multiline&&(e+="m"),t.unicode&&(e+="u"),t.sticky&&(e+="y"),e}},{4:4}],27:[function(t,e,n){var a=t(17),r=t(40),i=t(35),o=t(4),s=t(79),p=t(84);e.exports=function(t,e,n,u){var c,l,d,f=p(t),h=a(n,u,e?2:1),m=0;if("function"!=typeof f)throw TypeError(t+" is not iterable!");if(i(f))for(c=s(t.length);c>m;m++)e?h(o(l=t[m])[0],l[1]):h(t[m]);else for(d=f.call(t);!(l=d.next()).done;)r(d,h,l.value,e)}},{17:17,35:35,4:4,40:40,79:79,84:84}],28:[function(t,e,n){var a=t(78),r=t(46).getNames,i={}.toString,o="object"==typeof window&&Object.getOwnPropertyNames?Object.getOwnPropertyNames(window):[],s=function(t){try{return r(t)}catch(e){return o.slice()}};e.exports.get=function(t){return o&&"[object Window]"==i.call(t)?s(t):r(a(t))}},{46:46,78:78}],29:[function(t,e,n){var a=e.exports="undefined"!=typeof window&&window.Math==Math?window:"undefined"!=typeof self&&self.Math==Math?self:Function("return this")();"number"==typeof __g&&(__g=a)},{}],30:[function(t,e,n){var a={}.hasOwnProperty;e.exports=function(t,e){return a.call(t,e)}},{}],31:[function(t,e,n){var a=t(46),r=t(59);e.exports=t(19)?function(t,e,n){return a.setDesc(t,e,r(1,n))}:function(t,e,n){return t[e]=n,t}},{19:19,46:46,59:59}],32:[function(t,e,n){e.exports=t(29).document&&document.documentElement},{29:29}],33:[function(t,e,n){e.exports=function(t,e,n){var a=void 0===n;switch(e.length){case 0:return a?t():t.call(n);case 1:return a?t(e[0]):t.call(n,e[0]);case 2:return a?t(e[0],e[1]):t.call(n,e[0],e[1]);case 3:return a?t(e[0],e[1],e[2]):t.call(n,e[0],e[1],e[2]);case 4:return a?t(e[0],e[1],e[2],e[3]):t.call(n,e[0],e[1],e[2],e[3])}return t.apply(n,e)}},{}],34:[function(t,e,n){var a=t(11);e.exports=Object("z").propertyIsEnumerable(0)?Object:function(t){return"String"==a(t)?t.split(""):Object(t)}},{11:11}],35:[function(t,e,n){var a=t(45),r=t(83)("iterator"),i=Array.prototype;e.exports=function(t){return void 0!==t&&(a.Array===t||i[r]===t)}},{45:45,83:83}],36:[function(t,e,n){var a=t(11);e.exports=Array.isArray||function(t){return"Array"==a(t)}},{11:11}],37:[function(t,e,n){var a=t(38),r=Math.floor;e.exports=function(t){return!a(t)&&isFinite(t)&&r(t)===t}},{38:38}],38:[function(t,e,n){e.exports=function(t){return"object"==typeof t?null!==t:"function"==typeof t}},{}],39:[function(t,e,n){var a=t(38),r=t(11),i=t(83)("match");e.exports=function(t){var e;return a(t)&&(void 0!==(e=t[i])?!!e:"RegExp"==r(t))}},{11:11,38:38,83:83}],40:[function(t,e,n){var a=t(4);e.exports=function(t,e,n,r){try{return r?e(a(n)[0],n[1]):e(n)}catch(i){var o=t["return"];throw void 0!==o&&a(o.call(t)),i}}},{4:4}],41:[function(t,e,n){"use strict";var a=t(46),r=t(59),i=t(66),o={};t(31)(o,t(83)("iterator"),function(){return this}),e.exports=function(t,e,n){t.prototype=a.create(o,{next:r(1,n)}),i(t,e+" Iterator")}},{31:31,46:46,59:59,66:66,83:83}],42:[function(t,e,n){"use strict";var a=t(48),r=t(22),i=t(61),o=t(31),s=t(30),p=t(45),u=t(41),c=t(66),l=t(46).getProto,d=t(83)("iterator"),f=!([].keys&&"next"in[].keys()),h="@@iterator",m="keys",v="values",g=function(){return this};e.exports=function(t,e,n,b,y,x,_){u(n,e,b);var w,k,E=function(t){if(!f&&t in A)return A[t];switch(t){case m:return function(){return new n(this,t)};case v:return function(){return new n(this,t)}}return function(){return new n(this,t)}},S=e+" Iterator",C=y==v,P=!1,A=t.prototype,O=A[d]||A[h]||y&&A[y],T=O||E(y);if(O){var j=l(T.call(new t));c(j,S,!0),!a&&s(A,h)&&o(j,d,g),C&&O.name!==v&&(P=!0,T=function(){return O.call(this)})}if(a&&!_||!f&&!P&&A[d]||o(A,d,T),p[e]=T,p[S]=g,y)if(w={values:C?T:E(v),keys:x?T:E(m),entries:C?E("entries"):T},_)for(k in w)k in A||i(A,k,w[k]);else r(r.P+r.F*(f||P),e,w);return w}},{22:22,30:30,31:31,41:41,45:45,46:46,48:48,61:61,66:66,83:83}],43:[function(t,e,n){var a=t(83)("iterator"),r=!1;try{var i=[7][a]();i["return"]=function(){r=!0},Array.from(i,function(){throw 2})}catch(o){}e.exports=function(t,e){if(!e&&!r)return!1;var n=!1;try{var i=[7],o=i[a]();o.next=function(){return{done:n=!0}},i[a]=function(){return o},t(i)}catch(s){}return n}},{83:83}],44:[function(t,e,n){e.exports=function(t,e){return{value:e,done:!!t}}},{}],45:[function(t,e,n){e.exports={}},{}],46:[function(t,e,n){var a=Object;e.exports={create:a.create,getProto:a.getPrototypeOf,isEnum:{}.propertyIsEnumerable,getDesc:a.getOwnPropertyDescriptor,setDesc:a.defineProperty,setDescs:a.defineProperties,getKeys:a.keys,getNames:a.getOwnPropertyNames,getSymbols:a.getOwnPropertySymbols,each:[].forEach}},{}],47:[function(t,e,n){var a=t(46),r=t(78);e.exports=function(t,e){for(var n,i=r(t),o=a.getKeys(i),s=o.length,p=0;s>p;)if(i[n=o[p++]]===e)return n}},{46:46,78:78}],48:[function(t,e,n){e.exports=!1},{}],49:[function(t,e,n){e.exports=Math.expm1||function(t){return 0==(t=+t)?t:t>-1e-6&&1e-6>t?t+t*t/2:Math.exp(t)-1}},{}],50:[function(t,e,n){e.exports=Math.log1p||function(t){return(t=+t)>-1e-8&&1e-8>t?t-t*t/2:Math.log(1+t)}},{}],51:[function(t,e,n){e.exports=Math.sign||function(t){return 0==(t=+t)||t!=t?t:0>t?-1:1}},{}],52:[function(t,e,n){var a,r,i,o=t(29),s=t(75).set,p=o.MutationObserver||o.WebKitMutationObserver,u=o.process,c=o.Promise,l="process"==t(11)(u),d=function(){var t,e,n;for(l&&(t=u.domain)&&(u.domain=null,t.exit());a;)e=a.domain,n=a.fn,e&&e.enter(),n(),e&&e.exit(),a=a.next;r=void 0,t&&t.enter()};if(l)i=function(){u.nextTick(d)};else if(p){var f=1,h=document.createTextNode("");new p(d).observe(h,{characterData:!0}),i=function(){h.data=f=-f}}else i=c&&c.resolve?function(){c.resolve().then(d)}:function(){s.call(o,d)};e.exports=function(t){var e={fn:t,next:void 0,domain:l&&u.domain};r&&(r.next=e),a||(a=e,i()),r=e}},{11:11,29:29,75:75}],53:[function(t,e,n){var a=t(46),r=t(80),i=t(34);e.exports=t(24)(function(){var t=Object.assign,e={},n={},a=Symbol(),r="abcdefghijklmnopqrst";return e[a]=7,r.split("").forEach(function(t){n[t]=t}),7!=t({},e)[a]||Object.keys(t({},n)).join("")!=r})?function(t,e){for(var n=r(t),o=arguments,s=o.length,p=1,u=a.getKeys,c=a.getSymbols,l=a.isEnum;s>p;)for(var d,f=i(o[p++]),h=c?u(f).concat(c(f)):u(f),m=h.length,v=0;m>v;)l.call(f,d=h[v++])&&(n[d]=f[d]);return n}:Object.assign},{24:24,34:34,46:46,80:80}],54:[function(t,e,n){var a=t(22),r=t(16),i=t(24);e.exports=function(t,e){var n=(r.Object||{})[t]||Object[t],o={};o[t]=e(n),a(a.S+a.F*i(function(){n(1)}),"Object",o)}},{16:16,22:22,24:24}],55:[function(t,e,n){var a=t(46),r=t(78),i=a.isEnum;e.exports=function(t){return function(e){for(var n,o=r(e),s=a.getKeys(o),p=s.length,u=0,c=[];p>u;)i.call(o,n=s[u++])&&c.push(t?[n,o[n]]:o[n]);return c}}},{46:46,78:78}],56:[function(t,e,n){var a=t(46),r=t(4),i=t(29).Reflect;e.exports=i&&i.ownKeys||function(t){var e=a.getNames(r(t)),n=a.getSymbols;return n?e.concat(n(t)):e}},{29:29,4:4,46:46}],57:[function(t,e,n){"use strict";var a=t(58),r=t(33),i=t(2);e.exports=function(){for(var t=i(this),e=arguments.length,n=Array(e),o=0,s=a._,p=!1;e>o;)(n[o]=arguments[o++])===s&&(p=!0);return function(){var a,i=this,o=arguments,u=o.length,c=0,l=0;if(!p&&!u)return r(t,n,i);if(a=n.slice(),p)for(;e>c;c++)a[c]===s&&(a[c]=o[l++]);for(;u>l;)a.push(o[l++]);return r(t,a,i)}}},{2:2,33:33,58:58}],58:[function(t,e,n){e.exports=t(29)},{29:29}],59:[function(t,e,n){e.exports=function(t,e){return{enumerable:!(1&t),configurable:!(2&t),writable:!(4&t),value:e}}},{}],60:[function(t,e,n){var a=t(61);e.exports=function(t,e){for(var n in e)a(t,n,e[n]);return t}},{61:61}],61:[function(t,e,n){var a=t(29),r=t(31),i=t(82)("src"),o="toString",s=Function[o],p=(""+s).split(o);t(16).inspectSource=function(t){return s.call(t)},(e.exports=function(t,e,n,o){"function"==typeof n&&(n.hasOwnProperty(i)||r(n,i,t[e]?""+t[e]:p.join(e+"")),n.hasOwnProperty("name")||r(n,"name",e)),t===a?t[e]=n:(o||delete t[e],r(t,e,n))})(Function.prototype,o,function(){return"function"==typeof this&&this[i]||s.call(this)})},{16:16,29:29,31:31,82:82}],62:[function(t,e,n){e.exports=function(t,e){var n=e===Object(e)?function(t){return e[t]}:e;return function(e){return(e+"").replace(t,n)}}},{}],63:[function(t,e,n){e.exports=Object.is||function(t,e){return t===e?0!==t||1/t===1/e:t!=t&&e!=e}},{}],64:[function(t,e,n){var a=t(46).getDesc,r=t(38),i=t(4),o=function(t,e){if(i(t),!r(e)&&null!==e)throw TypeError(e+": can't set as prototype!")};e.exports={set:Object.setPrototypeOf||("__proto__"in{}?function(e,n,r){try{r=t(17)(Function.call,a(Object.prototype,"__proto__").set,2),r(e,[]),n=!(e instanceof Array)}catch(i){n=!0}return function(t,e){return o(t,e),n?t.__proto__=e:r(t,e),t}}({},!1):void 0),check:o}},{17:17,38:38,4:4,46:46}],65:[function(t,e,n){"use strict";var a=t(29),r=t(46),i=t(19),o=t(83)("species");e.exports=function(t){var e=a[t];i&&e&&!e[o]&&r.setDesc(e,o,{configurable:!0,get:function(){return this}})}},{19:19,29:29,46:46,83:83}],66:[function(t,e,n){var a=t(46).setDesc,r=t(30),i=t(83)("toStringTag");e.exports=function(t,e,n){t&&!r(t=n?t:t.prototype,i)&&a(t,i,{configurable:!0,value:e})}},{30:30,46:46,83:83}],67:[function(t,e,n){var a=t(29),r="__core-js_shared__",i=a[r]||(a[r]={});e.exports=function(t){return i[t]||(i[t]={})}},{29:29}],68:[function(t,e,n){var a=t(4),r=t(2),i=t(83)("species");e.exports=function(t,e){var n,o=a(t).constructor;return void 0===o||void 0==(n=a(o)[i])?e:r(n)}},{2:2,4:4,83:83}],69:[function(t,e,n){e.exports=function(t,e,n){if(!(t instanceof e))throw TypeError(n+": use the 'new' operator!");return t}},{}],70:[function(t,e,n){var a=t(77),r=t(18);e.exports=function(t){return function(e,n){var i,o,s=r(e)+"",p=a(n),u=s.length;return 0>p||p>=u?t?"":void 0:(i=s.charCodeAt(p),55296>i||i>56319||p+1===u||(o=s.charCodeAt(p+1))<56320||o>57343?t?s.charAt(p):i:t?s.slice(p,p+2):(i-55296<<10)+(o-56320)+65536)}}},{18:18,77:77}],71:[function(t,e,n){var a=t(39),r=t(18);e.exports=function(t,e,n){if(a(e))throw TypeError("String#"+n+" doesn't accept regex!");return r(t)+""}},{18:18,39:39}],72:[function(t,e,n){var a=t(79),r=t(73),i=t(18);e.exports=function(t,e,n,o){var s=i(t)+"",p=s.length,u=void 0===n?" ":n+"",c=a(e);if(p>=c)return s;""==u&&(u=" ");var l=c-p,d=r.call(u,Math.ceil(l/u.length));return d.length>l&&(d=d.slice(0,l)),o?d+s:s+d}},{18:18,73:73,79:79}],73:[function(t,e,n){"use strict";var a=t(77),r=t(18);e.exports=function(t){var e=r(this)+"",n="",i=a(t);if(0>i||i==1/0)throw RangeError("Count can't be negative");for(;i>0;(i>>>=1)&&(e+=e))1&i&&(n+=e);return n}},{18:18,77:77}],74:[function(t,e,n){var a=t(22),r=t(18),i=t(24),o=" \n\x0B\f\r   ᠎              \u2028\u2029\ufeff",s="["+o+"]",p="​…",u=RegExp("^"+s+s+"*"),c=RegExp(s+s+"*$"),l=function(t,e){var n={};n[t]=e(d),a(a.P+a.F*i(function(){return!!o[t]()||p[t]()!=p}),"String",n)},d=l.trim=function(t,e){return t=r(t)+"",1&e&&(t=t.replace(u,"")),2&e&&(t=t.replace(c,"")),t};e.exports=l},{18:18,22:22,24:24}],75:[function(t,e,n){var a,r,i,o=t(17),s=t(33),p=t(32),u=t(20),c=t(29),l=c.process,d=c.setImmediate,f=c.clearImmediate,h=c.MessageChannel,m=0,v={},g="onreadystatechange",b=function(){var t=+this;if(v.hasOwnProperty(t)){var e=v[t];delete v[t],e()}},y=function(t){b.call(t.data)};d&&f||(d=function(t){for(var e=[],n=1;arguments.length>n;)e.push(arguments[n++]);return v[++m]=function(){s("function"==typeof t?t:Function(t),e)},a(m),m},f=function(t){delete v[t]},"process"==t(11)(l)?a=function(t){l.nextTick(o(b,t,1))}:h?(r=new h,i=r.port2,r.port1.onmessage=y,a=o(i.postMessage,i,1)):c.addEventListener&&"function"==typeof postMessage&&!c.importScripts?(a=function(t){c.postMessage(t+"","*")},c.addEventListener("message",y,!1)):a=g in u("script")?function(t){p.appendChild(u("script"))[g]=function(){p.removeChild(this),b.call(t)}}:function(t){setTimeout(o(b,t,1),0)}),e.exports={set:d,clear:f}},{11:11,17:17,20:20,29:29,32:32,33:33}],76:[function(t,e,n){var a=t(77),r=Math.max,i=Math.min;e.exports=function(t,e){return t=a(t),0>t?r(t+e,0):i(t,e)}},{77:77}],77:[function(t,e,n){var a=Math.ceil,r=Math.floor;e.exports=function(t){return isNaN(t=+t)?0:(t>0?r:a)(t)}},{}],78:[function(t,e,n){var a=t(34),r=t(18);e.exports=function(t){return a(r(t))}},{18:18,34:34}],79:[function(t,e,n){var a=t(77),r=Math.min;e.exports=function(t){return t>0?r(a(t),9007199254740991):0}},{77:77}],80:[function(t,e,n){var a=t(18);e.exports=function(t){return Object(a(t))}},{18:18}],81:[function(t,e,n){var a=t(38);e.exports=function(t,e){if(!a(t))return t;var n,r;if(e&&"function"==typeof(n=t.toString)&&!a(r=n.call(t)))return r;if("function"==typeof(n=t.valueOf)&&!a(r=n.call(t)))return r;if(!e&&"function"==typeof(n=t.toString)&&!a(r=n.call(t)))return r;throw TypeError("Can't convert object to primitive value")}},{38:38}],82:[function(t,e,n){var a=0,r=Math.random();e.exports=function(t){return"Symbol(".concat(void 0===t?"":t,")_",(++a+r).toString(36))}},{}],83:[function(t,e,n){var a=t(67)("wks"),r=t(82),i=t(29).Symbol;e.exports=function(t){return a[t]||(a[t]=i&&i[t]||(i||r)("Symbol."+t))}},{29:29,67:67,82:82}],84:[function(t,e,n){var a=t(10),r=t(83)("iterator"),i=t(45);e.exports=t(16).getIteratorMethod=function(t){return void 0!=t?t[r]||t["@@iterator"]||i[a(t)]:void 0}},{10:10,16:16,45:45,83:83}],85:[function(t,e,n){"use strict";var a,r=t(46),i=t(22),o=t(19),s=t(59),p=t(32),u=t(20),c=t(30),l=t(11),d=t(33),f=t(24),h=t(4),m=t(2),v=t(38),g=t(80),b=t(78),y=t(77),x=t(76),_=t(79),w=t(34),k=t(82)("__proto__"),E=t(8),S=t(7)(!1),C=Object.prototype,P=Array.prototype,A=P.slice,O=P.join,T=r.setDesc,j=r.getDesc,R=r.setDescs,M={};o||(a=!f(function(){return 7!=T(u("div"),"a",{get:function(){return 7}}).a}),r.setDesc=function(t,e,n){if(a)try{return T(t,e,n)}catch(r){}if("get"in n||"set"in n)throw TypeError("Accessors not supported!");return"value"in n&&(h(t)[e]=n.value),t},r.getDesc=function(t,e){if(a)try{return j(t,e)}catch(n){}return c(t,e)?s(!C.propertyIsEnumerable.call(t,e),t[e]):void 0},r.setDescs=R=function(t,e){h(t);for(var n,a=r.getKeys(e),i=a.length,o=0;i>o;)r.setDesc(t,n=a[o++],e[n]);return t}),i(i.S+i.F*!o,"Object",{getOwnPropertyDescriptor:r.getDesc,defineProperty:r.setDesc,defineProperties:R});var L="constructor,hasOwnProperty,isPrototypeOf,propertyIsEnumerable,toLocaleString,toString,valueOf".split(","),D=L.concat("length","prototype"),N=L.length,F=function(){var t,e=u("iframe"),n=N,a=">";for(e.style.display="none",p.appendChild(e),e.src="javascript:",t=e.contentWindow.document,t.open(),t.write("