Merge branch 'master' of https://github.com/tgstation/-tg-station into dragnet

Conflicts:
	icons/effects/effects.dmi
	icons/obj/items.dmi
This commit is contained in:
Cheridan
2015-06-22 22:57:53 -05:00
359 changed files with 4341 additions and 2639 deletions
@@ -79,7 +79,7 @@
"abA" = (/obj/structure/table,/obj/machinery/computer/libraryconsole/bookmanagement,/turf/simulated/floor/plasteel{icon_state = "floorgrime"},/area/security/prison)
"abB" = (/obj/structure/cable{icon_state = "0-2"; d2 = 2},/obj/machinery/power/solar{id = "forestarboard"; name = "Fore-Starboard Solar Array"},/turf/simulated/floor/plasteel/airless{icon_state = "solarpanel"},/area/solar/auxstarboard)
"abC" = (/obj/structure/cable,/obj/structure/lattice/catwalk,/turf/space,/area/solar/auxstarboard)
"abD" = (/obj/structure/stool/bed,/obj/item/clothing/suit/straight_jacket,/obj/item/clothing/glasses/sunglasses/blindfold,/obj/item/clothing/mask/muzzle,/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,/turf/simulated/floor/plasteel{icon_state = "dark"},/area/prison/solitary{name = "Prisoner Education Chamber"})
"abD" = (/obj/structure/stool/bed,/obj/item/clothing/suit/straight_jacket,/obj/item/clothing/glasses/sunglasses/blindfold,/obj/item/clothing/mask/muzzle,/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,/obj/effect/landmark{name = "revenantspawn"},/turf/simulated/floor/plasteel{icon_state = "dark"},/area/prison/solitary{name = "Prisoner Education Chamber"})
"abE" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden,/obj/machinery/light/small{dir = 8},/obj/machinery/sparker{dir = 2; id = "executionburn"; pixel_x = -25},/turf/simulated/floor/plasteel{tag = "icon-warndark (WEST)"; icon_state = "warndark"; dir = 8},/area/prison/solitary{name = "Prisoner Education Chamber"})
"abF" = (/obj/machinery/flasher{id = "justiceflash"; name = "mounted justice flash"; pixel_x = 28},/turf/simulated/floor/plasteel{tag = "icon-warndark (EAST)"; icon_state = "warndark"; dir = 4},/area/prison/solitary{name = "Prisoner Education Chamber"})
"abG" = (/turf/simulated/floor/plasteel{icon_state = "floorgrime"},/area/security/prison)
@@ -164,13 +164,13 @@
"adh" = (/obj/machinery/door/poddoor{density = 0; icon_state = "open"; id = "permacell1"; name = "Cell Shutters"; opacity = 0},/obj/machinery/door/airlock/glass{id_tag = "permabolt1"; name = "Cell 1"},/turf/simulated/floor/plasteel{icon_state = "floorgrime"},/area/security/prison)
"adi" = (/obj/machinery/light/small{dir = 4},/turf/simulated/floor/plating,/area/security/prison)
"adj" = (/obj/structure/cable/yellow{d1 = 2; d2 = 4; icon_state = "2-4"},/turf/simulated/floor/plasteel{icon_state = "white"},/area/security/prison)
"adk" = (/obj/structure/stool/bed,/obj/item/clothing/suit/straight_jacket,/obj/item/clothing/glasses/sunglasses/blindfold,/obj/item/clothing/mask/muzzle,/obj/machinery/camera{c_tag = "Prison Sanitatium"; dir = 4; network = list("SS13","Prison"); pixel_x = 0; pixel_y = 0},/turf/simulated/floor/plasteel{icon_state = "white"},/area/security/prison)
"adk" = (/obj/structure/stool/bed,/obj/item/clothing/suit/straight_jacket,/obj/item/clothing/glasses/sunglasses/blindfold,/obj/item/clothing/mask/muzzle,/obj/machinery/camera{c_tag = "Prison Sanitatium"; dir = 4; network = list("SS13","Prison"); pixel_x = 0; pixel_y = 0},/obj/effect/landmark{name = "revenantspawn"},/turf/simulated/floor/plasteel{icon_state = "white"},/area/security/prison)
"adl" = (/obj/machinery/atmospherics/unary/vent_scrubber{dir = 8; on = 1; scrub_N2O = 0; scrub_Toxins = 0},/turf/simulated/floor/plasteel{tag = "icon-warndark (NORTHEAST)"; icon_state = "warndark"; dir = 5},/area/prison/solitary{name = "Prisoner Education Chamber"})
"adm" = (/turf/simulated/floor/plating,/obj/structure/shuttle/engine/propulsion/burst{dir = 4},/turf/simulated/wall/shuttle{icon_state = "swall_f6"; dir = 2},/area/shuttle/pod_3)
"adn" = (/obj/structure/closet/emcloset,/obj/machinery/light/small{dir = 8},/turf/simulated/floor/plating,/area/crew_quarters/fitness{name = "\improper Recreation Area"})
"ado" = (/turf/simulated/wall/shuttle{icon_state = "swall12"; dir = 2},/area/shuttle/pod_3)
"adp" = (/turf/simulated/wall/shuttle{icon_state = "swall_s10"; dir = 2},/area/shuttle/pod_3)
"adq" = (/obj/structure/stool/bed,/obj/item/clothing/suit/straight_jacket,/obj/item/clothing/glasses/sunglasses/blindfold,/obj/item/clothing/mask/muzzle,/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/turf/simulated/floor/plasteel{icon_state = "white"},/area/security/prison)
"adq" = (/obj/structure/stool/bed,/obj/item/clothing/suit/straight_jacket,/obj/item/clothing/glasses/sunglasses/blindfold,/obj/item/clothing/mask/muzzle,/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/effect/landmark{name = "revenantspawn"},/turf/simulated/floor/plasteel{icon_state = "white"},/area/security/prison)
"adr" = (/obj/machinery/atmospherics/unary/vent_pump{dir = 8; on = 1},/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 5},/turf/simulated/floor/plasteel{dir = 2; icon_state = "darkred"; tag = "icon-darkblue"; temperature = 273.15},/area/prison/solitary{name = "Prisoner Education Chamber"})
"ads" = (/obj/structure/stool/bed,/obj/machinery/camera{c_tag = "Prison Cell 3"; network = list("SS13","Prison")},/turf/simulated/floor/plasteel{icon_state = "floorgrime"},/area/security/prison)
"adt" = (/obj/structure/stool,/obj/machinery/light/small{dir = 1},/obj/machinery/door_control{id = "permabolt3"; name = "Cell Bolt Control"; normaldoorcontrol = 1; pixel_x = 0; pixel_y = 25; req_access_txt = "0"; specialfunctions = 4},/turf/simulated/floor/plasteel{icon_state = "floorgrime"},/area/security/prison)
@@ -254,7 +254,7 @@
"aeT" = (/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/machinery/atmospherics/pipe/manifold/supply/hidden{dir = 1},/obj/structure/sign/pods{pixel_y = 30},/turf/simulated/floor/plasteel{dir = 2; icon_state = "redcorner"},/area/security/prison)
"aeU" = (/obj/machinery/door/firedoor,/obj/machinery/door/airlock/security{aiControlDisabled = 1; id_tag = "prisonereducation"; name = "Prisoner Education Chamber"; req_access = null; req_access_txt = "3"},/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,/turf/simulated/floor/plasteel{icon_state = "red"; dir = 1},/area/prison/solitary{name = "Prisoner Education Chamber"})
"aeV" = (/obj/machinery/door/firedoor,/obj/machinery/door/airlock/glass_security{name = "Insanity Ward"; req_access_txt = "2"},/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/simulated/floor/plasteel{icon_state = "red"; dir = 1},/area/security/prison)
"aeW" = (/obj/structure/closet/secure_closet{name = "contraband locker"; req_access_txt = "3"},/obj/effect/spawner/lootdrop/maintenance{lootcount = 3; name = "3maintenance loot spawner"},/obj/effect/spawner/lootdrop/armory_contraband{loot = list(/obj/item/weapon/gun/projectile/automatic/pistol = 5, /obj/item/weapon/gun/projectile/shotgun/combat = 5, /obj/item/weapon/gun/projectile/revolver/mateba, /obj/item/weapon/gun/projectile/automatic/pistol/deagle, /obj/item/weapon/storage/box/throwing_stars = 3)},/turf/simulated/floor/plasteel{tag = "icon-vault (WEST)"; icon_state = "vault"; dir = 8},/area/security/warden)
"aeW" = (/obj/structure/closet/secure_closet{name = "contraband locker"; req_access_txt = "3"},/obj/effect/spawner/lootdrop/maintenance{lootcount = 3; name = "3maintenance loot spawner"},/obj/effect/spawner/lootdrop/armory_contraband{loot = list(/obj/item/weapon/gun/projectile/automatic/pistol = 5, /obj/item/weapon/gun/projectile/shotgun/automatic/combat = 5, /obj/item/weapon/gun/projectile/revolver/mateba, /obj/item/weapon/gun/projectile/automatic/pistol/deagle, /obj/item/weapon/storage/box/throwing_stars = 3)},/turf/simulated/floor/plasteel{tag = "icon-vault (WEST)"; icon_state = "vault"; dir = 8},/area/security/warden)
"aeX" = (/obj/structure/grille,/obj/structure/window/reinforced/fulltile,/obj/machinery/atmospherics/pipe/simple/supply/hidden,/turf/simulated/floor/plating,/area/crew_quarters/fitness{name = "\improper Recreation Area"})
"aeY" = (/obj/machinery/atmospherics/unary/vent_pump{dir = 2; on = 1},/obj/machinery/light/small{dir = 1},/obj/item/weapon/storage/secure/safe{name = "armory safe A"; pixel_x = 6; pixel_y = 28},/turf/simulated/floor/plasteel{icon_state = "dark"},/area/security/warden)
"aeZ" = (/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 6},/turf/simulated/floor/plasteel{icon_state = "dark"},/area/security/warden)
@@ -1311,7 +1311,7 @@
"azk" = (/obj/structure/grille,/obj/structure/window/reinforced/fulltile,/obj/structure/cable/yellow{d2 = 2; icon_state = "0-2"},/obj/structure/cable/yellow{d2 = 8; icon_state = "0-8"},/obj/structure/cable/yellow{d2 = 4; icon_state = "0-4"},/turf/simulated/floor/plating,/area/construction/Storage{name = "Storage Wing"})
"azl" = (/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/structure/cable/yellow{d1 = 1; d2 = 8; icon_state = "1-8"},/obj/structure/cable/yellow{d1 = 1; d2 = 4; icon_state = "1-4"},/obj/machinery/door/window/brigdoor{id = "Cell 2"; name = "Cell 2"; req_access_txt = "2"},/turf/simulated/floor/plasteel{icon_state = "red"},/area/security/brig)
"azm" = (/obj/structure/grille,/obj/structure/window/reinforced/fulltile,/obj/structure/cable/yellow,/obj/machinery/door/poddoor/preopen{id = "briglockdown"; name = "brig shutters"},/turf/simulated/floor/plating,/area/security/brig)
"azn" = (/obj/structure/bodycontainer/morgue,/turf/simulated/floor/plasteel{icon_state = "dark"},/area/security/detectives_office)
"azn" = (/obj/structure/bodycontainer/morgue,/obj/effect/landmark{name = "revenantspawn"},/turf/simulated/floor/plasteel{icon_state = "dark"},/area/security/detectives_office)
"azo" = (/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/structure/cable/yellow{d1 = 1; d2 = 8; icon_state = "1-8"},/obj/structure/cable/yellow{d1 = 1; d2 = 4; icon_state = "1-4"},/obj/machinery/door/window/brigdoor{id = "Cell 3"; name = "Cell 3"; req_access_txt = "2"},/turf/simulated/floor/plasteel{icon_state = "red"},/area/security/brig)
"azp" = (/obj/structure/table,/obj/item/stack/sheet/metal{amount = 50},/obj/item/stack/sheet/metal{amount = 50},/obj/item/stack/sheet/metal{amount = 50},/obj/item/stack/sheet/glass{amount = 12},/obj/item/stack/sheet/glass{amount = 12},/obj/item/stack/sheet/glass{amount = 12},/obj/item/weapon/crowbar,/obj/item/weapon/grenade/chem_grenade/metalfoam,/obj/item/weapon/grenade/chem_grenade/metalfoam,/turf/simulated/floor/plasteel{icon_state = "bot"; dir = 1},/area/engine/engineering)
"azq" = (/obj/structure/grille,/obj/structure/window/reinforced/fulltile,/obj/machinery/door/poddoor/preopen{id = "Secure Gate"; name = "brig shutters"},/turf/simulated/floor/plating,/area/security/brig)
@@ -3212,7 +3212,7 @@
"bjN" = (/obj/item/device/radio/intercom{freerange = 0; frequency = 1459; name = "Station Intercom (General)"; pixel_x = 0; pixel_y = -29},/obj/structure/rack,/obj/item/device/assembly/signaler,/obj/item/device/assembly/signaler,/obj/item/device/assembly/timer,/turf/simulated/floor/plasteel{dir = 1; icon_state = "darkblue"; tag = "icon-darkbluecorners (WEST)"},/area/bridge)
"bjO" = (/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/simulated/floor/plasteel{dir = 2; icon_state = "darkblue"; tag = "icon-darkbluecorners (WEST)"},/area/bridge)
"bjP" = (/obj/machinery/light_switch{pixel_x = 8; pixel_y = -26},/turf/simulated/floor/plasteel{dir = 10; icon_state = "darkblue"},/area/bridge)
"bjQ" = (/obj/structure/closet/fireaxecabinet{pixel_y = -32},/obj/item/weapon/paper_bin{pixel_x = -2; pixel_y = 7},/obj/item/weapon/pen{pixel_y = 3},/obj/machinery/light_switch{pixel_x = 28; pixel_y = 0},/obj/structure/table/glass,/turf/simulated/floor/plasteel{icon_state = "dark"},/area/bridge)
"bjQ" = (/obj/structure/fireaxecabinet{pixel_y = -32},/obj/item/weapon/paper_bin{pixel_x = -2; pixel_y = 7},/obj/item/weapon/pen{pixel_y = 3},/obj/machinery/light_switch{pixel_x = 28; pixel_y = 0},/obj/structure/table/glass,/turf/simulated/floor/plasteel{icon_state = "dark"},/area/bridge)
"bjR" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden,/turf/simulated/floor/plasteel{dir = 6; icon_state = "darkblue"},/area/bridge)
"bjS" = (/turf/simulated/floor/plasteel{icon_state = "dark"},/area/engine/break_room)
"bjT" = (/obj/structure/table/wood,/obj/item/weapon/storage/photo_album{pixel_y = -4},/obj/item/device/camera{pixel_y = 4},/obj/item/device/radio/intercom{dir = 8; freerange = 1; name = "Station Intercom (Captain)"; pixel_x = -28},/turf/simulated/floor/fancy/carpet,/area/crew_quarters/captain{name = "\improper Captain's Quarters"})
@@ -3391,7 +3391,7 @@
"bnk" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 10},/turf/simulated/floor/plasteel{tag = "icon-darkbluecorners"; icon_state = "darkbluecorners"; temperature = 273.15},/area/bridge)
"bnl" = (/obj/machinery/door/airlock/command{name = "Command Desk"; req_access = null; req_access_txt = "19"},/turf/simulated/floor/plasteel{tag = "icon-vault"; icon_state = "vault"},/area/bridge)
"bnm" = (/obj/effect/landmark{name = "xeno_spawn"; pixel_x = -1},/obj/machinery/shower{tag = "icon-shower (EAST)"; icon_state = "shower"; dir = 4},/obj/machinery/door/window/westright{dir = 4},/obj/item/weapon/soap/deluxe,/obj/machinery/atmospherics/unary/vent_pump{dir = 4; on = 1},/turf/simulated/floor/plasteel{icon_state = "white"},/area/crew_quarters/captain{name = "\improper Captain's Quarters"})
"bnn" = (/obj/structure/mirror{pixel_y = 28},/obj/structure/sink{pixel_y = 17},/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 4},/turf/simulated/floor/plasteel{icon_state = "white"},/area/crew_quarters/captain{name = "\improper Captain's Quarters"})
"bnn" = (/obj/structure/mirror{pixel_y = 28},/obj/structure/sink{pixel_y = 17},/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 4},/obj/effect/landmark{name = "revenantspawn"},/turf/simulated/floor/plasteel{icon_state = "white"},/area/crew_quarters/captain{name = "\improper Captain's Quarters"})
"bno" = (/obj/structure/toilet{pixel_y = 13},/obj/machinery/light{dir = 2; icon_state = "tube1"},/obj/effect/landmark/start{name = "Captain"},/obj/machinery/light_switch{pixel_y = -25},/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 4},/turf/simulated/floor/plasteel{icon_state = "white"},/area/crew_quarters/captain{name = "\improper Captain's Quarters"})
"bnp" = (/obj/machinery/door/airlock/silver{name = "Bathroom"},/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 4},/turf/simulated/floor/plasteel{icon_state = "white"},/area/crew_quarters/captain{name = "\improper Captain's Quarters"})
"bnq" = (/obj/structure/disposalpipe/segment,/obj/machinery/atmospherics/pipe/manifold/supply/hidden{dir = 4},/turf/simulated/floor/wood,/area/crew_quarters/captain{name = "\improper Captain's Quarters"})
@@ -5104,7 +5104,7 @@
"bUh" = (/obj/machinery/computer/general_air_control/large_tank_control{frequency = 1441; input_tag = "tox_in"; name = "Toxin Supply Control"; output_tag = "tox_out"; sensors = list("tox_sensor" = "Tank")},/obj/machinery/atmospherics/pipe/simple/green/visible,/obj/structure/window/reinforced{dir = 4; pixel_x = 0},/turf/simulated/floor/plasteel{icon_state = "purplefull"},/area/atmos)
"bUi" = (/obj/structure/lattice,/turf/space,/area/hallway/secondary/entry{name = "Arrivals"})
"bUj" = (/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/atmospherics/pipe/simple/supply/hidden,/turf/simulated/floor/plating{icon_state = "warnplate"},/area/maintenance/maintcentral{name = "Central Maintenance"})
"bUk" = (/obj/structure/closet/fireaxecabinet{pixel_x = -32; pixel_y = 0},/obj/machinery/camera{c_tag = "Atmospherics - Port"; dir = 4; network = list("SS13")},/obj/machinery/light{dir = 8},/turf/simulated/floor/plasteel{dir = 8; icon_state = "caution"},/area/atmos)
"bUk" = (/obj/structure/fireaxecabinet{pixel_x = -32; pixel_y = 0},/obj/machinery/camera{c_tag = "Atmospherics - Port"; dir = 4; network = list("SS13")},/obj/machinery/light{dir = 8},/turf/simulated/floor/plasteel{dir = 8; icon_state = "caution"},/area/atmos)
"bUl" = (/obj/machinery/air_sensor{frequency = 1441; id_tag = "tox_sensor"},/turf/simulated/floor/engine{carbon_dioxide = 0; name = "plasma floor"; nitrogen = 0; oxygen = 0; toxins = 70000},/area/atmos)
"bUm" = (/obj/machinery/light/small{dir = 4},/turf/simulated/floor/engine{carbon_dioxide = 0; name = "plasma floor"; nitrogen = 0; oxygen = 0; toxins = 70000},/area/atmos)
"bUn" = (/obj/machinery/portable_atmospherics/canister/toxins,/turf/simulated/floor/engine{carbon_dioxide = 0; name = "plasma floor"; nitrogen = 0; oxygen = 0; toxins = 70000},/area/atmos)
@@ -5980,11 +5980,13 @@
"ckZ" = (/obj/structure/closet,/obj/item/stack/sheet/metal{amount = 34},/obj/item/weapon/extinguisher/mini,/obj/effect/spawner/lootdrop/maintenance,/turf/simulated/floor/plating,/area/maintenance/aft{name = "Aft Maintenance"})
"cla" = (/obj/structure/reagent_dispensers/fueltank,/obj/item/weapon/storage/toolbox/emergency,/obj/item/device/radio/intercom{name = "Station Intercom (General)"; pixel_y = -29},/turf/simulated/floor/plating,/area/maintenance/incinerator)
"clb" = (/obj/structure/reagent_dispensers/watertank,/obj/item/weapon/extinguisher,/obj/machinery/light/small,/obj/structure/extinguisher_cabinet{pixel_x = 0; pixel_y = -31},/turf/simulated/floor/plating,/area/maintenance/incinerator)
"clc" = (/obj/structure/bodycontainer/morgue,/obj/effect/landmark{name = "revenantspawn"},/turf/simulated/floor/plasteel{icon_state = "dark"},/area/medical/morgue)
"cld" = (/obj/machinery/door/airlock/glass{autoclose = 0; frequency = 1449; heat_proof = 1; icon_state = "door_locked"; id_tag = "incinerator_airlock_exterior"; locked = 1; name = "Incinerator Exterior Airlock"; req_access_txt = "12"},/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; pixel_y = 0; tag = ""},/turf/simulated/floor/engine,/area/maintenance/incinerator)
"cle" = (/obj/machinery/light/small{dir = 8},/obj/structure/bodycontainer/morgue,/obj/effect/landmark{name = "revenantspawn"},/turf/simulated/floor/plasteel{icon_state = "dark"},/area/medical/morgue)
"clf" = (/obj/machinery/microwave{pixel_x = -3; pixel_y = 6},/obj/structure/table/glass,/turf/simulated/floor/plasteel{tag = "icon-cafeteria (NORTHEAST)"; icon_state = "cafeteria"; dir = 5},/area/medical/medbay3{name = "Medbay Aft"})
"clg" = (/obj/structure/bodycontainer/morgue,/turf/simulated/floor/plasteel{icon_state = "dark"},/area/medical/morgue)
"clg" = (/obj/machinery/light_switch{pixel_x = -23; pixel_y = 0},/obj/structure/bodycontainer/morgue,/obj/effect/landmark{name = "revenantspawn"},/turf/simulated/floor/plasteel{icon_state = "dark"},/area/medical/morgue)
"clh" = (/obj/structure/sink/kitchen{desc = "A sink used for washing one's hands and face. It looks rusty and home-made"; name = "old sink"; pixel_y = 28},/turf/simulated/floor/plasteel{dir = 9; icon_state = "whitepurple"},/area/toxins/lab)
"cli" = (/obj/machinery/light/small{dir = 8},/obj/structure/bodycontainer/morgue,/turf/simulated/floor/plasteel{icon_state = "dark"},/area/medical/morgue)
"cli" = (/obj/effect/landmark{name = "revenantspawn"},/turf/simulated/floor/engine,/area/toxins/xenobiology{name = "\improper Secure Lab"})
"clj" = (/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/atmospherics/pipe/simple/supply/hidden{req_access_txt = 1},/obj/structure/disposalpipe/segment,/turf/simulated/floor/plating,/area/maintenance/aft{name = "Aft Maintenance"})
"clk" = (/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 4},/obj/machinery/hologram/holopad,/turf/simulated/floor/plasteel{icon_state = "white"},/area/toxins/explab)
"cll" = (/obj/structure/stool/bed/roller,/obj/machinery/light/small{dir = 8},/obj/machinery/iv_drip{density = 0},/turf/simulated/floor/plasteel{icon_state = "white"},/area/medical/surgery)
@@ -6033,7 +6035,6 @@
"cmc" = (/obj/structure/grille,/obj/structure/window/reinforced/fulltile,/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,/obj/structure/cable/yellow{d2 = 2; icon_state = "0-2"},/turf/simulated/floor/plating,/area/medical/virology)
"cmd" = (/obj/structure/grille,/obj/structure/window/reinforced/fulltile,/obj/machinery/atmospherics/pipe/simple/supply/hidden,/obj/structure/cable/yellow{d2 = 2; icon_state = "0-2"},/turf/simulated/floor/plating,/area/medical/virology)
"cme" = (/obj/machinery/door/firedoor,/obj/machinery/door/airlock/glass_virology{name = "Test Subject Cell"; req_access_txt = "39"},/turf/simulated/floor/plasteel{icon_state = "freezerfloor"},/area/medical/virology)
"cmf" = (/obj/machinery/light_switch{pixel_x = -23; pixel_y = 0},/obj/structure/bodycontainer/morgue,/turf/simulated/floor/plasteel{icon_state = "dark"},/area/medical/morgue)
"cmg" = (/obj/item/device/flashlight/lamp,/turf/simulated/floor/plating/airless{dir = 2; icon_state = "warnplate"},/area/toxins/test_area)
"cmh" = (/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 4},/obj/machinery/iv_drip,/turf/simulated/floor/plasteel{dir = 1; icon_state = "whitegreen"},/area/medical/virology)
"cmi" = (/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/atmospherics/pipe/simple/supply/hidden{req_access_txt = 1},/turf/simulated/floor/plating{tag = "icon-platingdmg1"; icon_state = "platingdmg1"},/area/maintenance/aft{name = "Aft Maintenance"})
@@ -8096,11 +8097,11 @@ aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaQxaahbEXbFabFabFabFabFfbEzbFtbFrbFrbFrbFrbFEaahcrMaahaahaahaQxaahaahaahaahaahaaabWHbWHbWHbWHbWHbWHbWHbWHbWHbWHbWHcqsczkcBPcjQcBLcBMcBNcBOcBPcBQcBRcBScyvcBTcBUcBVcwKcBWcBXcBXcBXcBYcwKcBZcCacCbcCccCdcCecCgcwRcChczHcCYcDccEicHocHqcHpcGrcIScCicCjcDecClcCmcCncCocCpcCqcCrcCscCqcCtcCucBHbWHcCwbWHcCvcCvcCxcCycCzcCAcCBaahaahaaaaaaaaaaaaaaaaaaaahaaaaaaaaaaaaaaaaaaaaaaaaaaaaahaaaaaaaaaaaaaaaaaaaaaaaaaahaahaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaahaahcCCcjScCCaahaahaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaQxaahbJebJebJebJebJeaaabSbaahbJebJebJebJebJeaaaaQxaaaaaaaaaaahaaaaaaaaaaaaaahaaaaaaaaaaahaahaaaaaaaaaaahaaaaaabWHceHcCEcDfcCFcCGcCHcCIcCJcCKcCLcCMcCNcyvcjUcjTcCQcwKcCRcCScCTcCUcCVcwKcCWcCXcCXcwLbSLcDgcDUcDScEScDVcEUcETcEicHrcHBcHvcHDcEYcFQcDhcHMcDjcDkcDlcDmcDmcDncDocDpcDqcDrcjVcDtcDucDvcDwcDxcDycDzcDzcDzcDAcjWaahaaaaaaaaaaaaaaaaaaaaaaahaaaaaaaaaaaaaaaaaaaaaaaaaahaahaaaaaaaaaaaaaaaaaaaaaaaaaaaaahaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaahaahcjScCCckncCCcjSaahaahaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacrMaaaaahaaaaahaaaaahaaabBkaaaaahaaaaahaahaahaahcrMaaaaaaaaaaahaaaaaaaaaaaaaahaaaaaaaaaaaaaahaaaaaaaaaaahaaaaaabWHchEcDEcBPcDFcDGcDHcDIcDJckqcDLcDMcDNcyvcyvckMcyvcwKcwKcwKcwKcwKcwKcwKckNcwLcwLcAlcFRcwOcwPcApcFScFScGTcGRcEicIhcItcImcIucHLcHQcHPcIdcDXcDYcDZcEacEbcEccEdcEecEfcEgcEhcIycEjcEkcElcEmcEncEocEpcEqcErcjWaahaahaaaaaaaaaaaaaaaaaaaahaaaaaaaaaaaaaaaaaaaaaaaaaahaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaahaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaahaahcEtcjScEvckRcExcjScEtaahaahaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaQxaaabEybEybEybEybEyaahcaBaahbEybEybEybEybEyaahaQxaaaaaaaaaaafaahcEycEycEyckScEycEycEyaaaaahaaaaaaaaaaahaaaaaabWHcAvczkcBPcuEckTcDGcECclfcBPcEEcEFcEGcBPcEHcEIcEJcEKclgcEMclgcENclgcEOcEMcEPcEKcEQckycdCcIfcwRcwTcIgcDTcwTcGScGScGScGScGScFacuXcFbcBvcFccFccFdcFecFfcFgcFhcFicFjcFkcFlcBHcFmcFncFocBvcFpcjWcjWcCvcjWcCvatJaahaaaaaaaahaaaaaaaahaahaahaaaaaaaaaaaaaaaaahaaaaahaaaaaaaaaaaaaaaaaaaaaaaaaahaaaaahaaaaaaaaaaaaaaaaaaaaaaaaaahaaaaaaaaaaaaaaaaaaaaaaaaaaaaahaaaaahaahcjScjScFvcFwcFwcFwcFxcjScjSaahaahaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaQxaahbEXbFabFabFabFabFfbEzbFtbFrbFrbFrbFrbFEaahaQxaaaaahaahaQxaaacEycFycFzcFycFAcFycEycEyckScEyckScEycEyaahaahbWHciRczkcBPcBPcBPcBPcBPcBPcBPcFBcFCcFDcFEcFFcFGcFHcEKclicFJclgcEMclgcFKcFLcFMcEKcFNckycdCcstctMcIlcIAcIscILcIPcIMcJccIQcEZcwUczPcwWcBHcBHcBHcBHcBHcBHcFWcFVcFXcFYcFZcGacBHbWHcCwbWHcCvcGbcGccGdcGecGfatJatJaahaahaahaahaahaahaahaaaaahaahaahaahaahaahaahaahaahaahaahaahaahaahaahaahaahaahaahaahaahaahaahaahaahaahaahaahaahaahaahaahaahaahaahaahaahaahaahaahaahaahcGgcGhcGgcFwcGicFwcGjcGkcCCaahaahaahaahaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaQxaaabEybEybEybEybEyaahcaBaahbEybEybEybEybEyaahaQxaaaaaaaaaaafaahcEycEycEyckScEycEycEyaaaaahaaaaaaaaaaahaaaaaabWHcAvczkcBPcuEckTcDGcECclfcBPcEEcEFcEGcBPcEHcEIcEJcEKclccEMclccENclccEOcEMcEPcEKcEQckycdCcIfcwRcwTcIgcDTcwTcGScGScGScGScGScFacuXcFbcBvcFccFccFdcFecFfcFgcFhcFicFjcFkcFlcBHcFmcFncFocBvcFpcjWcjWcCvcjWcCvatJaahaaaaaaaahaaaaaaaahaahaahaaaaaaaaaaaaaaaaahaaaaahaaaaaaaaaaaaaaaaaaaaaaaaaahaaaaahaaaaaaaaaaaaaaaaaaaaaaaaaahaaaaaaaaaaaaaaaaaaaaaaaaaaaaahaaaaahaahcjScjScFvcFwcFwcFwcFxcjScjSaahaahaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaQxaahbEXbFabFabFabFabFfbEzbFtbFrbFrbFrbFrbFEaahaQxaaaaahaahaQxaaacEycFycFzcFycFAcFycEycEyckScEyckScEycEyaahaahbWHciRczkcBPcBPcBPcBPcBPcBPcBPcFBcFCcFDcFEcFFcFGcFHcEKclecFJclccEMclccFKcFLcFMcEKcFNckycdCcstctMcIlcIAcIscILcIPcIMcJccIQcEZcwUczPcwWcBHcBHcBHcBHcBHcBHcFWcFVcFXcFYcFZcGacBHbWHcCwbWHcCvcGbcGccGdcGecGfatJatJaahaahaahaahaahaahaahaaaaahaahaahaahaahaahaahaahaahaahaahaahaahaahaahaahaahaahaahaahaahaahaahaahaahaahaahaahaahaahaahaahaahaahaahaahaahaahaahaahaahaahcGgcGhcGgcFwcGicFwcGjcGkcCCaahaahaahaahaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaQxaahbJebJebJebJebJeaaabSbaaabJebJebJebJebJeaaacrMaahaahaaaaQxaahcEycGlcGmcGncGocGlclHcAOcAFcGscAPcBwcEyaaaaaabWHbWHcGvcGwcGwcGxcGwcGycGzcIDcGAcGBcGCcGDcGEcGFcGGcGHcGIcGJcGIcGIcGKcGLcGMclMcGOcGPcGQcCecIOcINcFOcIRcJecJdcJdcJdcJwcJtcEZcdHczPcGZcBHcHacHbcHccHdcHecHfcHecHgcHhcHicBHcoUcHjbZkcddcCvcCvcCvcCvcCvbEMagqatJaahaaaaaaaaaaaaaaaaahaahaahaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaahaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaahaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaahaaaaaaaaaaaaaaaaaaaahaahcjScjScHlcFwcFwcFwcHmcjScjSaahaahaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaQxaaaaaaaahaahaahaaaaaacfraahaaaaaaaahaahaaaaaaaQxaaaaaaaaaaafaaacEycHncmccmecmdcHncHncBxcHscHtcHucBKcEyaaaaaaaaacoUcoUcoUcoUcoUbWHcHwcBPcBPcHxcHycHzcBPcHAcCkcHCcEKcmfcEMclgcEMclgcHEcHFcHGcHHcHIcHJcHKcJjcGScGScJpcJEcJxcHOcGUcJKcJHcEZcHRcHScHTcjWcHacHbcHUcHUcHVcHWcHXcHYcFYcHZcBHcaQcIacbOceHcIbbWHaahaahaahaahaahaahaahaaaaaaaaaaaaaaaaaaaahaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaahaahcEtcjScIccmgcIecjScEtaahaahaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacrMaaaaaaaaaaaaaaaaaaaaacfraaaaaaaaaaaaaahaaaaaacrMaaaaaaaaaaQxaahcEycCDcmhcIicIjcIkcmjcmxcIncIocIpcIqcIrcnfcnfcnfcIrcIvcIwcIxcEycJzcIzcBPcJLcIBcICcvjbWHbWHbWHbWHcEKclgcEMclgcIEclgcIFcIGcIHcEKcIIcIJcdCcjncGScJDcHNcJMcHOcHOcJOcKpcKocEZcKrcITcIUcBHcHacHbcHUcIVcHecIWcHecIXcIYcIZcBHcJaceHcbOceHcJbbWHaahaaaaaaaaaaaaaahaaaaaaaaaaaaaaaaaaaaaaahaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaahaahcjScCCcnFcCCcjSaahaahaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaQxaaaaaaaahaahaahaaaaaacfraahaaaaaaaahaahaaaaaaaQxaaaaaaaaaaafaaacEycHncmccmecmdcHncHncBxcHscHtcHucBKcEyaaaaaaaaacoUcoUcoUcoUcoUbWHcHwcBPcBPcHxcHycHzcBPcHAcCkcHCcEKclgcEMclccEMclccHEcHFcHGcHHcHIcHJcHKcJjcGScGScJpcJEcJxcHOcGUcJKcJHcEZcHRcHScHTcjWcHacHbcHUcHUcHVcHWcHXcHYcFYcHZcBHcaQcIacbOceHcIbbWHaahaahaahaahaahaahaahaaaaaaaaaaaaaaaaaaaahaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaahaahcEtcjScIccmgcIecjScEtaahaahaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacrMaaaaaaaaaaaaaaaaaaaaacfraaaaaaaaaaaaaahaaaaaacrMaaaaaaaaaaQxaahcEycCDcmhcIicIjcIkcmjcmxcIncIocIpcIqcIrcnfcnfcnfcIrcIvcIwcIxcEycJzcIzcBPcJLcIBcICcvjbWHbWHbWHbWHcEKclccEMclccIEclccIFcIGcIHcEKcIIcIJcdCcjncGScJDcHNcJMcHOcHOcJOcKpcKocEZcKrcITcIUcBHcHacHbcHUcIVcHecIWcHecIXcIYcIZcBHcJaceHcbOceHcJbbWHaahaaaaaaaaaaaaaahaaaaaaaaaaaaaaaaaaaaaaahaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaahaahcjScCCcnFcCCcjSaahaahaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaQxaafaQxaQxaQxaaaaaaaaacfraaaaaaaaaaQxaQxaQxcrMaQxaahaahaaaaQxaaackScCPcJfcJgcJhcJicnGcJkcJlcJmcJncJocnJcJqcJrcJscnKcJucJgcJvcnMcJAcJycnNcJAcJBcJCcvncvkcvqcvocvtcEKcEKcEKcEKcEKcEKcEKcJFcEKcEKbWHcJGcdCcjncGScIKcHNcHOcGUcHOcKscJJcKucKIcKCcJNcJIcDscJPcJPcJPcJPcJPcJQcJPcJRcKJcJTcBHceHceHcJUceHbWHbWHbWHaahaahaaaaaaaahaaaaaaaaaaaaaaaaaaaaaaahaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaahaahcCCcjScCCaahaahaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaahaaaaahaaaaaaaaaaQxaahczcaahaQxaaaaaaaahaaaaaaaahaaaaahaahaahaaacEycDBcJWcJXcJYcJZcnOcKbcKccKdcKecKfcEyckSckSckScEycKjcKkcKlcEycoacKncBPcDCcDKcDDcDObWHcwucwhcwvbWHcKvckacKwckbckacKxcKycAJckecKzcKAcKBcCZcGScovcKDcKEcKEcKEcKFcKGcKHcLbcKQcKKcKLcKMcKNcKOcKPcoHcKRcKScKTcKUcKVcKWcKXckdckdcKYcKZcLacDPbWHbWHbWHabjaaaaahaaaaaaaaaaaaaaaaaaaaaaahaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaahaahaahaahaahaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaahaaaaaaaaaaQxaaaaahaaaaQxaaaaaaaahaahaahaahaaaaaaaaaaahaahcEycpccoXcHncpdcpccLfcLgcLhcLicLjcLkcEycLlaaaaaacoUcoUcoUcoUcoUbWHcLmcBPcBPcBPcBPcBPbWHcJScKtcwxbWHcLqbWHbWHbWHbWHbWHbWHbWHbWHcxWcLrcLscLtcDQcpecLwcLxcpfcLdcLccGUcLecLvcLucLCcJVcLEcLFcLGcLHcLIcLJcLKcKTciPcLLbWHbWHbWHbWHbWHcLocLMcLNciLcLOciLcpgaahaahaaaaaaaaaaaaaaaaaaaaaaahaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaahaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
@@ -8122,22 +8123,22 @@ aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaahaahcPlcKqcPlcPlcKqcKqcKqcKqcPlcUScPlaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacsgaaaaaaaaaaaaaahaaacNxcSgcSfcSicShcSmcSjcSocSncSxcSrcSFcSEcSGcNxaaaaahaaaaaaaaaaaaaQxaahcsRcsQcsQcsQcsQcsScsUcsTcsVcsVcsVcsVcsWaahaQxaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaahaahaaaaaaaahaaaaaaaaaaaaaaaaahaahaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaahaaacNxcSHcSHcSHcSHcMJcSIcTacSPcMJcSHcSHcSHcSHcNxaahaahaahaahaahaahaQxaahcsXcsXcsXcsXcsXaaacrQaaacsXcsXcsXcsXcsXaahaQxaahaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaahaahaahaahaahaahaahaahaahaahaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaahaaacNxcTccTbcTbcTdcTfcTecTncTgcTBcTrcTCcTCcTCcNxaaaaahaaaaaaaaaaaaaafaaaaahaaaaahaahaahaaacrQaaaaahaaaaahaaaaahaaaaQxaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaahaahaahcNxcTCcTCcTCcTDcTHcTEcTLcTIcTOcTNcTCcTCcTCcNxaaaaahaaaaaaaaaaaaaQxaaacrOcrOcrOcrOcrOaahcrQaahcrOcrOcrOcrOcrOaahaQxaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaahaahaahcNxcTCclicTCcTDcTHcTEcTLcTIcTOcTNcTCclicTCcNxaaaaahaaaaaaaaaaaaaQxaaacrOcrOcrOcrOcrOaahcrQaahcrOcrOcrOcrOcrOaahaQxaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaahaaacNxcTPcTCcTCcTQcTScTRcTUcTTcTWcTVcTbcTbcTXcNxaaaaahaahaaaaahaahaQxaahcsRcsQcsQcsQcsQcsScrQcsTcsVcsVcsVcsVcsWaahaQxaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaahaaacNxcSHcSHcSHcSHcTZcTYcUbcUacTZcSHcSHcSHcSHcNxaaaaahaaaaaaaaaaahaQxaahcsXcsXcsXcsXcsXaaacrQaahcsXcsXcsXcsXcsXaaaaQxaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaahaaacNxcTccTbcTbcUccTfcUlcUbcUmcUocUncTCcTCcTPcNxaahaahaaaaaaaaaaahcrMaaaaahaaaaahaaaaahaaacrQaaaaahaaaaahaahaahaahcrMaaaaacaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaahaaacNxcTCcTCcTCcUpcUqcTEcUrcTIcUtcUscTCcTCcTCcNxaaaaahaahaaaaaaaaaaQxaaacrOcrOcrOcrOcrOaahcuhaahcrOcrOcrOcrOcrOaahaQxaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaahaaacNxcTCclicTCcUpcUqcTEcUrcTIcUtcUscTCclicTCcNxaaaaahaahaaaaaaaaaaQxaaacrOcrOcrOcrOcrOaahcuhaahcrOcrOcrOcrOcrOaahaQxaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaahaahaahcNxcTPcTCcTCcUucUvcTRcUBcUycTWcUDcTbcTbcTXcNxaaaaaaaahaaaaaaaahaQxaahcsRcsQcsQcsQcsQcuicrQcujcsVcsVcsVcsVcsWaahaQxaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaahaaacNxcNxcSHcSHcSHcSHcTZcUEcUbcUFcTZcSHcSHcSHcSHcNxcNxaaaaahaahaahaahaahaahcsXcsXcsXcsXcsXaaacukaaacsXcsXcsXcsXcsXaaaaQxaahaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaahaaacNxcTccTbcTbcUGcTfcUIcUHcUbcUmcTgcUJcULcUKcTCcTCcNxaahaahaaaaaaaaaaafaaaaaaaahaahaahaaaaaacqWaahaaaaaaaahaahaaaaaaaQxaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaculaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaahaaacNxcTCcTCcTCcUNcUMcTIcTIcUOcTIcTIcUPcURcUQcTCcTCcNxaaaaahaaaaaaaaaaQxaafaQxaQxaQxaaaaaaaaacqWaaaaaaaaaaQxaQxaQxcrMaQxaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaahaaacNxcTCclicTCcUNcUMcTIcTIcUOcTIcTIcUPcURcUQclicTCcNxaaaaahaaaaaaaaaaQxaafaQxaQxaQxaaaaaaaaacqWaaaaaaaaaaQxaQxaQxcrMaQxaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaahaaacNxcTCcTCcTCcUUcUTcUWcUVcUYcUXcVacUZcVccVbcTbcTXcNxaaaaahaaaaahaahaaaaaaaaaaaaaahaaaaQxaahcWFaahaQxaaaaaaaaaaahaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaahaaacNxcNxcNxcNxcNxcVdcVfcVecVgcSncVicVhcNxcNxcNxcNxcNxaaaaahaaaaaaaaaaaaaaaaaaaaaaaaaaaaQxaaaaahaaaaQxaahaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaahaaaaaacNxcVkcVjcVmcVlcVocVncVqcVpcVscVrcVucVtcVvcNxaaaaaaaahaaaaaaaaaaaaaaaaaaaaaaaaaaaaQxaQxaQxaQxaQxaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaahaaaaaacNxcNxcVwcNxcVxcVzcVycVBcVAcVCcVxcNxcVtcNxcNxaahaahaahaaaaaaaaaaaaaaaaaaaaaaaaaaaaahaaaaahaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacvgaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaahaahaahaahcNxcVwcNxcNxcVEcVDcTCcVFcVEcNxcNxcVtcNxaaaaaaaahaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaahaaacNxcVwcNxcTCcTCcVDcTCcTCcTCcVGcNxcVtcNxaahaaaaahaahaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacNxcVwcNxcVHcTCcVIcTCcVJcTCcVKcNxcVtcNxaahaaaaahaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacNxcVwcNxcVHcTCcVIclicVJcTCcVKcNxcVtcNxaahaaaaahaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaahaahcNxcVwcNxcVLcTCcTCcVMcTCcVOcVNcNxcVtcNxaahaahaahaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaahaaacNxcVwcNxcNxcNxcNxcNxcNxcNxcNxcNxcVtcNxaahaaaaahaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacNxcVPcVQcVQcVQcVRcVScVtcVtcVtcVtcVtcNxaahaaaaahaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+1 -1
View File
@@ -36,7 +36,7 @@
"aJ" = (/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; pixel_y = 0},/obj/structure/table/reinforced,/turf/simulated/floor/plasteel,/area/bridge)
"aK" = (/obj/structure/table/reinforced,/obj/item/weapon/folder/yellow,/obj/item/weapon/disk/nuclear,/turf/simulated/floor/plasteel,/area/bridge)
"aL" = (/obj/structure/sign/securearea{desc = "A warning sign which reads 'HIGH VOLTAGE'"; icon_state = "shock"; name = "HIGH VOLTAGE"; pixel_x = 32; pixel_y = 0},/obj/structure/cable{d2 = 8; icon_state = "0-8"},/obj/structure/grille,/obj/structure/window/reinforced/fulltile,/obj/machinery/door/poddoor/preopen{id = "bridge blast"; layer = 2.9; name = "bridge blast door"},/turf/simulated/floor/plating/airless,/area/bridge)
"aM" = (/obj/structure/closet/fireaxecabinet{pixel_x = 32},/turf/simulated/floor/plasteel,/area/bridge)
"aM" = (/obj/structure/fireaxecabinet{pixel_x = 32},/turf/simulated/floor/plasteel,/area/bridge)
"aN" = (/obj/machinery/light{icon_state = "tube1"; dir = 8},/turf/simulated/floor/plasteel,/area/bridge)
"aO" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden,/turf/simulated/floor/plasteel,/area/bridge)
"aP" = (/obj/structure/table/reinforced,/obj/item/weapon/storage/secure/briefcase,/obj/item/device/flash,/obj/item/device/flash,/turf/simulated/floor/plasteel,/area/bridge)
+40 -37
View File
@@ -91,7 +91,7 @@
"abM" = (/obj/structure/cable{icon_state = "0-2"; d2 = 2},/obj/machinery/power/tracker,/turf/simulated/floor/plasteel/airless{icon_state = "solarpanel"},/area/solar/auxstarboard)
"abN" = (/turf/simulated/floor/plasteel{tag = "icon-warndark (WEST)"; icon_state = "warndark"; dir = 8},/area/security/transfer)
"abO" = (/obj/machinery/sparker{dir = 2; id = "executionburn"; pixel_x = 25},/turf/simulated/floor/plasteel{tag = "icon-warndark (EAST)"; icon_state = "warndark"; dir = 4},/area/security/prison)
"abP" = (/obj/structure/stool/bed,/turf/simulated/floor/plasteel{icon_state = "dark"},/area/security/transfer)
"abP" = (/obj/structure/stool/bed,/obj/effect/landmark{name = "revenantspawn"},/turf/simulated/floor/plasteel{icon_state = "dark"},/area/security/transfer)
"abQ" = (/obj/machinery/atmospherics/unary/vent_pump{on = 1},/turf/simulated/floor/plasteel{tag = "icon-warndark (SOUTHWEST)"; icon_state = "warndark"; dir = 10},/area/security/transfer)
"abR" = (/obj/machinery/atmospherics/unary/outlet_injector,/turf/simulated/floor/plasteel{tag = "icon-warndark (SOUTHEAST)"; icon_state = "warndark"; dir = 6},/area/security/prison)
"abS" = (/turf/simulated/wall,/area/security/prison)
@@ -104,7 +104,7 @@
"abZ" = (/obj/machinery/newscaster/security_unit{pixel_x = -30; pixel_y = 0},/obj/machinery/camera{c_tag = "Head of Security's Office"; dir = 4; network = list("SS13")},/obj/machinery/recharger{pixel_y = 4},/obj/structure/table/wood,/turf/simulated/floor/fancy/carpet,/area/security/hos)
"aca" = (/obj/structure/stool/bed/chair/comfy/black,/turf/simulated/floor/fancy/carpet,/area/security/hos)
"acb" = (/turf/simulated/floor/fancy/carpet,/area/security/hos)
"acc" = (/obj/machinery/keycard_auth{pixel_x = 24; pixel_y = 10},/obj/machinery/hologram/holopad,/turf/simulated/floor/fancy/carpet,/area/security/hos)
"acc" = (/obj/machinery/hologram/holopad,/turf/simulated/floor/fancy/carpet,/area/security/hos)
"acd" = (/obj/structure/sign/securearea{pixel_y = -32},/obj/structure/lattice/catwalk,/turf/space,/area/space)
"ace" = (/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; pixel_y = 0},/obj/structure/lattice/catwalk,/turf/space,/area/solar/auxstarboard)
"acf" = (/obj/structure/lattice,/obj/item/stack/cable_coil/random,/turf/space,/area/space)
@@ -386,7 +386,7 @@
"ahv" = (/obj/structure/cable{d1 = 2; d2 = 8; icon_state = "2-8"},/obj/structure/disposalpipe/segment{dir = 2; icon_state = "pipe-c"},/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"},/turf/simulated/floor/plasteel,/area/security/main)
"ahw" = (/obj/machinery/power/apc{dir = 4; name = "Security Office APC"; pixel_x = 24; pixel_y = 0},/obj/structure/cable{d2 = 8; icon_state = "0-8"},/turf/simulated/floor/plasteel{icon_state = "red"; dir = 4},/area/security/main)
"ahx" = (/obj/structure/disposalpipe/segment,/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,/turf/simulated/floor/plating,/area/maintenance/fsmaint)
"ahy" = (/obj/structure/stool/bed,/obj/item/clothing/suit/straight_jacket,/obj/item/clothing/glasses/sunglasses/blindfold,/obj/item/clothing/mask/muzzle,/turf/simulated/floor/plasteel{icon_state = "white"},/area/security/prison)
"ahy" = (/obj/structure/stool/bed,/obj/item/clothing/suit/straight_jacket,/obj/item/clothing/glasses/sunglasses/blindfold,/obj/item/clothing/mask/muzzle,/obj/machinery/camera{c_tag = "Prison Sanitatium"; dir = 4; network = list("SS13","Prison"); pixel_x = 0; pixel_y = 0},/obj/effect/landmark{name = "revenantspawn"},/turf/simulated/floor/plasteel{icon_state = "white"},/area/security/prison)
"ahz" = (/obj/structure/table,/obj/item/weapon/folder/red,/obj/item/device/taperecorder{pixel_y = 0},/turf/simulated/floor/plasteel{icon_state = "dark"},/area/security/brig)
"ahA" = (/obj/machinery/camera{c_tag = "Brig Interrogation"; dir = 8},/obj/machinery/atmospherics/pipe/simple/supply/hidden,/turf/simulated/floor/plasteel{icon_state = "dark"},/area/security/brig)
"ahB" = (/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; pixel_y = 0},/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 5},/turf/simulated/floor/plasteel{icon_state = "red"; dir = 9},/area/security/brig)
@@ -403,6 +403,8 @@
"ahM" = (/obj/structure/grille,/obj/structure/disposalpipe/segment{dir = 4},/obj/structure/cable,/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 4},/obj/structure/window/reinforced/fulltile,/turf/simulated/floor/plating,/area/security/warden)
"ahN" = (/obj/structure/disposalpipe/segment{dir = 8; icon_state = "pipe-c"},/obj/machinery/firealarm{dir = 1; pixel_y = -24},/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 4},/turf/simulated/floor/plasteel{icon_state = "red"; dir = 10},/area/security/main)
"ahO" = (/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/atmospherics/pipe/manifold/supply/hidden{tag = "icon-manifold-b-f (NORTH)"; dir = 1},/turf/simulated/floor/plasteel{icon_state = "red"},/area/security/main)
"ahP" = (/obj/machinery/keycard_auth{pixel_x = 24; pixel_y = 10},/obj/machinery/computer/card/minor/hos,/turf/simulated/floor/fancy/carpet,/area/security/hos)
"ahQ" = (/obj/machinery/hologram/holopad,/turf/simulated/floor/plasteel{icon_state = "white"},/area/crew_quarters/hor)
"ahR" = (/obj/machinery/light,/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 4},/turf/simulated/floor/plasteel{icon_state = "red"},/area/security/main)
"ahS" = (/turf/simulated/floor/plasteel{icon_state = "red"; dir = 1},/area/security/main)
"ahT" = (/obj/structure/disposalpipe/junction{icon_state = "pipe-y"; dir = 1},/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"},/turf/simulated/floor/plasteel,/area/security/main)
@@ -1716,7 +1718,7 @@
"aHb" = (/obj/structure/stool/bed/chair/comfy/beige,/obj/effect/landmark/start{name = "Assistant"},/turf/simulated/floor/plasteel{icon_state = "grimy"},/area/hallway/secondary/entry)
"aHc" = (/obj/structure/disposalpipe/segment{dir = 4},/turf/simulated/floor/wood,/area/library)
"aHd" = (/obj/structure/disposalpipe/segment{dir = 8; icon_state = "pipe-c"},/turf/simulated/floor/wood,/area/library)
"aHe" = (/obj/structure/bodycontainer/crematorium,/turf/simulated/floor/plasteel{icon_state = "dark"},/area/chapel/office)
"aHe" = (/obj/structure/stool/bed,/obj/item/clothing/suit/straight_jacket,/obj/item/clothing/glasses/sunglasses/blindfold,/obj/item/clothing/mask/muzzle,/obj/effect/landmark{name = "revenantspawn"},/turf/simulated/floor/plasteel{icon_state = "white"},/area/security/prison)
"aHf" = (/obj/structure/disposalpipe/segment,/turf/simulated/floor/plasteel{icon_state = "dark"},/area/chapel/office)
"aHg" = (/obj/machinery/disposal,/obj/structure/disposalpipe/trunk,/turf/simulated/floor/plasteel{icon_state = "grimy"},/area/chapel/office)
"aHh" = (/obj/effect/landmark/start{name = "Chaplain"},/obj/structure/stool/bed/chair,/obj/machinery/atmospherics/pipe/simple/supply/hidden,/turf/simulated/floor/plasteel{icon_state = "grimy"},/area/chapel/office)
@@ -1944,7 +1946,7 @@
"aLv" = (/obj/structure/stool/bed/chair/office/dark{dir = 1},/obj/structure/disposalpipe/segment,/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 6},/turf/simulated/floor/wood,/area/library)
"aLw" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 4},/turf/simulated/floor/wood,/area/library)
"aLx" = (/obj/machinery/atmospherics/unary/vent_pump{dir = 8; on = 1},/turf/simulated/floor/wood,/area/library)
"aLy" = (/obj/structure/bodycontainer/morgue,/turf/simulated/floor/plasteel{icon_state = "dark"},/area/chapel/office)
"aLy" = (/obj/structure/bodycontainer/crematorium,/obj/effect/landmark{name = "revenantspawn"},/turf/simulated/floor/plasteel{icon_state = "dark"},/area/chapel/office)
"aLz" = (/obj/machinery/atmospherics/unary/vent_scrubber{dir = 1; on = 1; scrub_N2O = 0; scrub_Toxins = 0},/turf/simulated/floor/plasteel{icon_state = "dark"},/area/chapel/office)
"aLA" = (/turf/simulated/floor/plasteel{icon_state = "grimy"},/area/chapel/office)
"aLB" = (/obj/machinery/camera{c_tag = "Chapel North"; dir = 2; network = list("SS13")},/obj/machinery/atmospherics/unary/vent_scrubber{dir = 4; on = 1; scrub_N2O = 0; scrub_Toxins = 0},/turf/simulated/floor/plasteel{icon_state = "dark"},/area/chapel/main)
@@ -2461,7 +2463,7 @@
"aVs" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 4},/turf/simulated/floor/plasteel,/area/bridge)
"aVt" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 4},/turf/simulated/floor/plasteel{icon_state = "bluecorner"},/area/bridge)
"aVu" = (/obj/structure/extinguisher_cabinet{pixel_x = 5; pixel_y = -32},/obj/machinery/light,/obj/machinery/light_switch{pixel_x = -6; pixel_y = -22},/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 4},/turf/simulated/floor/plasteel{dir = 0; icon_state = "blue"},/area/bridge)
"aVv" = (/obj/structure/closet/fireaxecabinet{pixel_y = -32},/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 4},/turf/simulated/floor/plasteel{dir = 0; icon_state = "blue"},/area/bridge)
"aVv" = (/obj/structure/fireaxecabinet{pixel_y = -32},/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 4},/turf/simulated/floor/plasteel{dir = 0; icon_state = "blue"},/area/bridge)
"aVw" = (/obj/machinery/alarm{dir = 1; icon_state = "alarm0"; pixel_y = -22},/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 4},/turf/simulated/floor/plasteel{dir = 0; icon_state = "blue"},/area/bridge)
"aVx" = (/obj/machinery/requests_console{announcementConsole = 1; department = "Bridge"; departmentType = 5; name = "Bridge RC"; pixel_y = -30},/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 4},/turf/simulated/floor/plasteel{dir = 0; icon_state = "blue"},/area/bridge)
"aVy" = (/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 4},/turf/simulated/floor/plasteel{dir = 0; icon_state = "blue"},/area/bridge)
@@ -3079,8 +3081,8 @@
"bhm" = (/obj/structure/stool/bed/chair/office/dark{dir = 8},/obj/effect/landmark/start/depsec/medical,/turf/simulated/floor/plasteel{icon_state = "red"; dir = 8},/area/security/checkpoint/medical)
"bhn" = (/turf/simulated/floor/plasteel,/area/security/checkpoint/medical)
"bho" = (/obj/machinery/computer/secure_data,/obj/item/device/radio/intercom{pixel_x = 25},/turf/simulated/floor/plasteel{icon_state = "red"; dir = 4},/area/security/checkpoint/medical)
"bhp" = (/obj/structure/bodycontainer/morgue,/turf/simulated/floor/plasteel{icon_state = "dark"},/area/medical/morgue)
"bhq" = (/obj/structure/bodycontainer/morgue,/obj/machinery/atmospherics/pipe/simple/supply/hidden,/turf/simulated/floor/plasteel{icon_state = "dark"},/area/medical/morgue)
"bhp" = (/obj/structure/bodycontainer/morgue,/obj/effect/landmark{name = "revenantspawn"},/turf/simulated/floor/plasteel{icon_state = "dark"},/area/chapel/office)
"bhq" = (/obj/structure/bodycontainer/morgue,/obj/effect/landmark{name = "revenantspawn"},/turf/simulated/floor/plasteel{icon_state = "dark"},/area/medical/morgue)
"bhr" = (/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/simulated/floor/plasteel{icon_state = "dark"},/area/medical/morgue)
"bhs" = (/turf/simulated/floor/plating,/area/storage/emergency)
"bht" = (/obj/structure/grille,/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 4},/obj/structure/window/fulltile,/turf/simulated/floor/plating,/area/toxins/explab)
@@ -3228,7 +3230,7 @@
"bkf" = (/obj/machinery/power/apc{dir = 8; name = "Medbay Security APC"; pixel_x = -25},/obj/structure/cable{icon_state = "0-4"; d2 = 4},/turf/simulated/floor/plasteel{icon_state = "red"; dir = 8},/area/security/checkpoint/medical)
"bkg" = (/obj/structure/cable{d1 = 2; d2 = 8; icon_state = "2-8"},/obj/machinery/atmospherics/unary/vent_scrubber{on = 1; scrub_N2O = 0; scrub_Toxins = 0},/turf/simulated/floor/plasteel,/area/security/checkpoint/medical)
"bkh" = (/obj/structure/reagent_dispensers/peppertank{pixel_x = 30; pixel_y = 0},/obj/machinery/atmospherics/unary/vent_pump{on = 1},/turf/simulated/floor/plasteel{icon_state = "red"; dir = 4},/area/security/checkpoint/medical)
"bki" = (/obj/structure/bodycontainer/morgue,/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 5},/turf/simulated/floor/plasteel{icon_state = "dark"},/area/medical/morgue)
"bki" = (/obj/structure/bodycontainer/morgue,/obj/machinery/atmospherics/pipe/simple/supply/hidden,/obj/effect/landmark{name = "revenantspawn"},/turf/simulated/floor/plasteel{icon_state = "dark"},/area/medical/morgue)
"bkj" = (/obj/machinery/atmospherics/pipe/manifold/supply/hidden{tag = "icon-manifold-b-f (EAST)"; dir = 4},/turf/simulated/floor/plasteel{icon_state = "dark"},/area/medical/morgue)
"bkk" = (/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,/turf/simulated/floor/plasteel{icon_state = "dark"},/area/medical/morgue)
"bkl" = (/obj/machinery/mech_bay_recharge_port,/obj/structure/cable,/turf/simulated/floor/plating,/area/assembly/chargebay)
@@ -3319,7 +3321,7 @@
"blS" = (/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/structure/cable{d1 = 1; d2 = 8; icon_state = "1-8"},/turf/simulated/floor/plasteel,/area/assembly/chargebay)
"blT" = (/obj/machinery/hologram/holopad,/turf/simulated/floor/plasteel,/area/assembly/chargebay)
"blU" = (/obj/structure/table,/obj/item/stack/sheet/plasteel{amount = 10},/obj/item/stack/cable_coil,/obj/item/device/flash/handheld,/obj/item/device/flash/handheld,/turf/simulated/floor/plasteel,/area/assembly/robotics)
"blV" = (/obj/structure/stool,/turf/simulated/floor/plasteel,/area/assembly/robotics)
"blV" = (/obj/structure/stool,/obj/effect/landmark/start{name = "Roboticist"},/turf/simulated/floor/plasteel,/area/assembly/robotics)
"blW" = (/turf/simulated/floor/plasteel{icon_state = "bot"},/area/assembly/robotics)
"blX" = (/turf/simulated/floor/plasteel{dir = 8; icon_state = "warnwhite"},/area/assembly/robotics)
"blY" = (/obj/machinery/hologram/holopad,/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,/turf/simulated/floor/plasteel{icon_state = "white"},/area/assembly/robotics)
@@ -3427,7 +3429,7 @@
"bnW" = (/obj/structure/closet/secure_closet/captains,/obj/machinery/atmospherics/pipe/simple/supply/hidden,/obj/machinery/atmospherics/unary/vent_scrubber{dir = 4; on = 1; scrub_N2O = 0; scrub_Toxins = 0},/turf/simulated/floor/fancy/carpet,/area/crew_quarters/captain)
"bnX" = (/obj/structure/stool/bed/chair/comfy/brown{dir = 4},/obj/machinery/camera{c_tag = "Captain's Quarters"; dir = 1},/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden{tag = "icon-manifold-r-f (EAST)"; dir = 4},/turf/simulated/floor/fancy/carpet,/area/crew_quarters/captain)
"bnY" = (/obj/structure/table/wood,/obj/item/weapon/storage/box/matches,/obj/item/weapon/reagent_containers/food/drinks/flask{pixel_x = 8},/obj/item/weapon/razor{pixel_x = -4; pixel_y = 2},/obj/item/clothing/mask/cigarette/cigar,/turf/simulated/floor/fancy/carpet,/area/crew_quarters/captain)
"bnZ" = (/obj/machinery/shower{dir = 4},/obj/item/weapon/soap/deluxe,/obj/item/weapon/bikehorn/rubberducky,/turf/simulated/floor/plasteel{icon_state = "freezerfloor"},/area/crew_quarters/captain)
"bnZ" = (/obj/structure/bodycontainer/morgue,/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 5},/obj/effect/landmark{name = "revenantspawn"},/turf/simulated/floor/plasteel{icon_state = "dark"},/area/medical/morgue)
"boa" = (/obj/structure/disposalpipe/segment,/obj/machinery/light{dir = 8},/turf/simulated/floor/plasteel,/area/hallway/primary/central)
"bob" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 4},/turf/simulated/wall,/area/medical/chemistry)
"boc" = (/obj/structure/closet/wardrobe/chemistry_white,/obj/machinery/light_switch{pixel_x = -23; pixel_y = 0},/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 4},/turf/simulated/floor/plasteel{icon_state = "white"},/area/medical/chemistry)
@@ -3901,7 +3903,7 @@
"bxc" = (/obj/structure/stool/bed/chair/office/light{dir = 8},/obj/effect/landmark/start{name = "Research Director"},/turf/simulated/floor/plasteel{icon_state = "cafeteria"},/area/crew_quarters/hor)
"bxd" = (/obj/machinery/computer/robotics,/obj/structure/window/reinforced{dir = 4},/turf/simulated/floor/plasteel{icon_state = "cafeteria"},/area/crew_quarters/hor)
"bxe" = (/obj/structure/rack,/obj/item/device/aicard,/turf/simulated/floor/plasteel{dir = 8; icon_state = "warnwhite"},/area/crew_quarters/hor)
"bxf" = (/turf/simulated/floor/plasteel{icon_state = "white"},/area/crew_quarters/hor)
"bxf" = (/obj/machinery/keycard_auth{pixel_x = 0; pixel_y = -24},/obj/machinery/light,/obj/machinery/computer/card/minor/rd,/turf/simulated/floor/plasteel{icon_state = "cafeteria"},/area/crew_quarters/hor)
"bxg" = (/obj/structure/lamarr,/obj/machinery/light{dir = 4; icon_state = "tube1"},/turf/simulated/floor/plasteel{dir = 4; icon_state = "warnwhite"},/area/crew_quarters/hor)
"bxh" = (/turf/simulated/wall/r_wall,/area/crew_quarters/hor)
"bxi" = (/turf/simulated/wall,/area/toxins/explab)
@@ -4094,7 +4096,7 @@
"bAN" = (/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/structure/disposalpipe/segment,/obj/machinery/atmospherics/pipe/simple/supply/hidden,/turf/simulated/floor/plasteel{icon_state = "white"},/area/medical/research{name = "Research Division"})
"bAO" = (/obj/machinery/light{dir = 4},/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,/turf/simulated/floor/plasteel{dir = 9; icon_state = "whitehall"},/area/medical/research{name = "Research Division"})
"bAP" = (/obj/machinery/power/apc{dir = 8; name = "RD Office APC"; pixel_x = -25},/obj/structure/cable,/obj/machinery/light_switch{pixel_y = -23},/obj/structure/flora/kirbyplants/dead,/turf/simulated/floor/plasteel{icon_state = "cafeteria"},/area/crew_quarters/hor)
"bAQ" = (/obj/machinery/hologram/holopad,/obj/machinery/keycard_auth{pixel_x = 0; pixel_y = -24},/obj/machinery/light,/turf/simulated/floor/plasteel{icon_state = "cafeteria"},/area/crew_quarters/hor)
"bAQ" = (/obj/machinery/computer/card/minor/cmo,/turf/simulated/floor/plasteel{icon_state = "barber"},/area/medical/cmo)
"bAR" = (/obj/structure/table,/obj/item/weapon/cartridge/signal/toxins,/obj/item/weapon/cartridge/signal/toxins{pixel_x = -4; pixel_y = 2},/obj/item/weapon/cartridge/signal/toxins{pixel_x = 4; pixel_y = 6},/obj/machinery/camera{c_tag = "Research Director's Office"; dir = 1; network = list("SS13","RD")},/obj/item/device/radio/intercom{name = "Station Intercom (General)"; pixel_y = -29},/turf/simulated/floor/plasteel{icon_state = "cafeteria"},/area/crew_quarters/hor)
"bAS" = (/obj/structure/closet/secure_closet/RD,/turf/simulated/floor/plasteel{icon_state = "cafeteria"},/area/crew_quarters/hor)
"bAT" = (/obj/machinery/disposal,/obj/structure/disposalpipe/trunk{dir = 1},/turf/simulated/floor/plasteel{icon_state = "cafeteria"},/area/crew_quarters/hor)
@@ -4970,7 +4972,7 @@
"bRF" = (/obj/structure/closet/emcloset,/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 4},/turf/simulated/floor/plating,/area/maintenance/aft)
"bRG" = (/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 4},/turf/simulated/floor/plating,/area/maintenance/aft)
"bRH" = (/obj/structure/disposalpipe/segment,/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 4},/turf/simulated/floor/plating,/area/maintenance/aft)
"bRI" = (/obj/structure/stool/bed,/obj/item/clothing/suit/straight_jacket,/obj/item/clothing/glasses/sunglasses/blindfold,/obj/item/clothing/mask/muzzle,/obj/machinery/camera{c_tag = "Prison Sanitatium"; dir = 4; network = list("SS13","Prison"); pixel_x = 0; pixel_y = 0},/turf/simulated/floor/plasteel{icon_state = "white"},/area/security/prison)
"bRI" = (/obj/machinery/shower{dir = 4},/obj/item/weapon/soap/deluxe,/obj/item/weapon/bikehorn/rubberducky,/obj/effect/landmark{name = "revenantspawn"},/turf/simulated/floor/plasteel{icon_state = "freezerfloor"},/area/crew_quarters/captain)
"bRJ" = (/obj/machinery/door/airlock{name = "Garden"; req_access_txt = "0"},/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 4},/turf/simulated/floor/plasteel,/area/hallway/secondary/construction{name = "\improper Garden"})
"bRK" = (/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/structure/cable{d1 = 2; d2 = 8; icon_state = "2-8"},/obj/machinery/atmospherics/pipe/simple/supply/hidden,/turf/simulated/floor/plasteel,/area/hallway/primary/aft)
"bRL" = (/obj/item/weapon/crowbar,/obj/item/weapon/wrench,/obj/structure/window/reinforced,/turf/simulated/floor/plasteel{dir = 6; icon_state = "caution"},/area/hallway/primary/aft)
@@ -5106,7 +5108,7 @@
"bUl" = (/obj/structure/table,/obj/item/weapon/hand_labeler,/obj/item/device/radio/headset/headset_med,/turf/simulated/floor/plasteel{dir = 4; icon_state = "whitegreen"},/area/medical/virology)
"bUm" = (/obj/structure/grille,/obj/machinery/atmospherics/pipe/simple/supply/hidden,/obj/structure/window/fulltile,/turf/simulated/floor/plating,/area/medical/virology)
"bUn" = (/obj/machinery/atmospherics/unary/vent_pump{dir = 1; on = 1},/turf/simulated/floor/plasteel{icon_state = "white"},/area/medical/virology)
"bUo" = (/obj/structure/stool/bed,/obj/item/weapon/bedsheet,/turf/simulated/floor/plasteel{icon_state = "white"},/area/medical/virology)
"bUo" = (/obj/effect/landmark{name = "revenantspawn"},/turf/simulated/floor/engine,/area/toxins/xenobiology)
"bUp" = (/obj/structure/grille,/obj/structure/window/fulltile,/turf/simulated/floor/plating,/area/medical/virology)
"bUq" = (/obj/structure/grille,/obj/structure/disposalpipe/segment{dir = 4},/obj/structure/cable{icon_state = "0-2"; d2 = 2},/obj/machinery/door/poddoor/preopen{id = "xenobio2"; name = "containment blast door"},/obj/structure/window/reinforced/fulltile,/turf/simulated/floor/engine,/area/toxins/xenobiology)
"bUr" = (/obj/structure/window/reinforced,/obj/structure/table/reinforced,/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_y = 0},/obj/machinery/door_control{id = "xenobio7"; name = "Containment Blast Doors"; pixel_x = 0; pixel_y = 4; req_access_txt = "55"},/turf/simulated/floor/plasteel{dir = 10; icon_state = "warning"},/area/toxins/xenobiology)
@@ -5152,7 +5154,7 @@
"bVf" = (/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 10},/turf/simulated/floor/plasteel{icon_state = "white"},/area/medical/virology)
"bVg" = (/obj/structure/table,/turf/simulated/floor/plasteel{icon_state = "white"},/area/medical/virology)
"bVh" = (/obj/machinery/light{dir = 4},/turf/simulated/floor/plasteel{icon_state = "white"},/area/medical/virology)
"bVi" = (/mob/living/simple_animal/slime,/turf/simulated/floor/engine,/area/toxins/xenobiology)
"bVi" = (/obj/structure/stool/bed,/obj/item/weapon/bedsheet,/obj/effect/landmark{name = "revenantspawn"},/turf/simulated/floor/plasteel{icon_state = "white"},/area/medical/virology)
"bVj" = (/obj/machinery/door/window/northleft{base_state = "right"; dir = 8; icon_state = "right"; name = "Containment Pen"; req_access_txt = "55"},/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; pixel_y = 0},/obj/machinery/door/poddoor/preopen{id = "xenobio2"; name = "containment blast door"},/turf/simulated/floor/engine,/area/toxins/xenobiology)
"bVk" = (/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; pixel_y = 0},/obj/machinery/door/window/northleft{dir = 4; name = "Containment Pen"; req_access_txt = "55"},/obj/machinery/door/poddoor/preopen{id = "xenobio7"; name = "containment blast door"},/turf/simulated/floor/engine,/area/toxins/xenobiology)
"bVl" = (/obj/structure/filingcabinet/chestdrawer,/turf/simulated/floor/plasteel{icon_state = "floorgrime"},/area/toxins/misc_lab)
@@ -5192,7 +5194,7 @@
"bVT" = (/obj/machinery/power/apc{dir = 8; name = "Engineering Security APC"; pixel_x = -24},/obj/structure/cable{icon_state = "0-2"; d2 = 2},/obj/machinery/newscaster{pixel_y = 32},/turf/simulated/floor/plasteel{icon_state = "red"; dir = 9},/area/security/checkpoint/engineering)
"bVU" = (/obj/machinery/requests_console{department = "Security"; departmentType = 5; pixel_y = 30},/obj/structure/closet,/turf/simulated/floor/plasteel{icon_state = "red"; dir = 1},/area/security/checkpoint/engineering)
"bVV" = (/obj/structure/filingcabinet,/obj/machinery/alarm{pixel_y = 23},/turf/simulated/floor/plasteel{icon_state = "red"; dir = 5},/area/security/checkpoint/engineering)
"bVW" = (/obj/structure/closet/fireaxecabinet{pixel_x = -32; pixel_y = 0},/turf/simulated/floor/plasteel,/area/atmos)
"bVW" = (/obj/structure/fireaxecabinet{pixel_x = -32; pixel_y = 0},/turf/simulated/floor/plasteel,/area/atmos)
"bVX" = (/obj/structure/closet/secure_closet/atmospherics,/turf/simulated/floor/plasteel{dir = 8; icon_state = "warning"},/area/atmos)
"bVY" = (/obj/machinery/atmospherics/unary/portables_connector/visible{dir = 4},/obj/machinery/portable_atmospherics/canister,/turf/simulated/floor/plasteel{dir = 2; icon_state = "bot"},/area/atmos)
"bVZ" = (/obj/machinery/atmospherics/unary/portables_connector/visible{dir = 8},/turf/simulated/floor/plasteel{dir = 2; icon_state = "bot"},/area/atmos)
@@ -5651,7 +5653,7 @@
"ceK" = (/turf/simulated/wall/r_wall,/area/engine/engineering)
"ceL" = (/obj/machinery/computer/atmos_alert,/obj/machinery/requests_console{announcementConsole = 1; department = "Chief Engineer's Desk"; departmentType = 3; name = "Chief Engineer RC"; pixel_x = -32; pixel_y = 0},/turf/simulated/floor/plasteel{dir = 2; icon_state = "neutralfull"},/area/engine/chiefs_office)
"ceM" = (/turf/simulated/floor/plasteel{dir = 2; icon_state = "neutralfull"},/area/engine/chiefs_office)
"ceN" = (/obj/structure/table/reinforced,/obj/item/weapon/clipboard,/obj/item/weapon/lighter/zippo,/obj/item/clothing/glasses/meson{pixel_y = 4},/obj/item/weapon/stamp/ce,/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,/turf/simulated/floor/plasteel{dir = 2; icon_state = "neutralfull"},/area/engine/chiefs_office)
"ceN" = (/obj/structure/table/reinforced,/obj/item/weapon/clipboard,/obj/item/weapon/lighter/zippo,/obj/item/clothing/glasses/meson{pixel_y = 4},/obj/item/weapon/stamp/ce,/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,/obj/item/weapon/stock_parts/cell/high{charge = 100; maxcharge = 15000},/turf/simulated/floor/plasteel{dir = 2; icon_state = "neutralfull"},/area/engine/chiefs_office)
"ceO" = (/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/structure/cable{d1 = 2; d2 = 4; icon_state = "2-4"},/obj/structure/disposalpipe/segment,/turf/simulated/floor/plasteel{dir = 2; icon_state = "neutralfull"},/area/engine/chiefs_office)
"ceP" = (/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"},/turf/simulated/floor/plasteel{dir = 2; icon_state = "neutralfull"},/area/engine/chiefs_office)
"ceQ" = (/obj/structure/grille,/obj/structure/cable{d2 = 8; icon_state = "0-8"},/obj/structure/cable{icon_state = "0-2"; d2 = 2},/obj/structure/window/reinforced/fulltile,/turf/simulated/floor/plating,/area/engine/chiefs_office)
@@ -5770,7 +5772,7 @@
"cgZ" = (/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"},/turf/simulated/floor/plasteel,/area/engine/engineering)
"cha" = (/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/structure/sign/nosmoking_2{pixel_y = 32},/obj/machinery/camera{c_tag = "Engineering Power Storage"},/obj/machinery/light{dir = 1},/turf/simulated/floor/plasteel,/area/engine/engineering)
"chb" = (/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/structure/stool/bed/chair/office/dark{dir = 1},/obj/effect/landmark/start{name = "Station Engineer"},/turf/simulated/floor/plasteel,/area/engine/engineering)
"chc" = (/obj/structure/filingcabinet/chestdrawer,/obj/machinery/camera{c_tag = "Chief Engineer's Office"; dir = 4; network = list("SS13")},/obj/machinery/alarm{dir = 4; icon_state = "alarm0"; pixel_x = -22},/mob/living/simple_animal/parrot/Poly,/turf/simulated/floor/plasteel{dir = 2; icon_state = "neutralfull"},/area/engine/chiefs_office)
"chc" = (/obj/machinery/camera{c_tag = "Chief Engineer's Office"; dir = 4; network = list("SS13")},/obj/machinery/alarm{dir = 4; icon_state = "alarm0"; pixel_x = -22},/obj/machinery/computer/card/minor/ce,/turf/simulated/floor/plasteel{dir = 2; icon_state = "neutralfull"},/area/engine/chiefs_office)
"chd" = (/obj/machinery/atmospherics/unary/vent_pump{on = 1},/turf/simulated/floor/plasteel{dir = 2; icon_state = "neutralfull"},/area/engine/chiefs_office)
"che" = (/obj/structure/table/reinforced,/obj/item/weapon/paper_bin{pixel_x = -3; pixel_y = 7},/obj/item/weapon/pen,/obj/item/weapon/storage/fancy/cigarettes,/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,/turf/simulated/floor/plasteel{dir = 2; icon_state = "neutralfull"},/area/engine/chiefs_office)
"chf" = (/turf/simulated/floor/engine,/area/toxins/explab)
@@ -6282,7 +6284,7 @@
"cqR" = (/obj/structure/window/reinforced{dir = 4},/turf/space,/area/space)
"cqS" = (/obj/structure/window/reinforced{dir = 8},/turf/simulated/floor/plating,/area/aisat)
"cqT" = (/obj/structure/window/reinforced{dir = 4},/obj/machinery/light/small{dir = 4},/obj/structure/sign/securearea{desc = "A warning sign which reads 'EXTERNAL AIRLOCK'"; icon_state = "space"; layer = 4; name = "EXTERNAL AIRLOCK"; pixel_x = 32},/turf/simulated/floor/plating,/area/aisat)
"cqU" = (/obj/machinery/door/airlock/engineering{name = "Telecommunications"; req_access_txt = "61"},/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 4},/turf/simulated/floor/plasteel,/area/tcommsat/computer)
"cqU" = (/obj/effect/landmark{name = "revenantspawn"},/mob/living/simple_animal/slime,/turf/simulated/floor/engine,/area/toxins/xenobiology)
"cqV" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 4},/turf/simulated/floor/plasteel,/area/tcommsat/computer)
"cqW" = (/obj/structure/disposalpipe/segment,/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 10},/turf/simulated/floor/plasteel,/area/hallway/primary/aft)
"cqX" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 4},/turf/simulated/floor/plasteel{dir = 8; icon_state = "yellow"},/area/hallway/primary/aft)
@@ -6426,7 +6428,7 @@
"ctF" = (/obj/machinery/atmospherics/pipe/manifold/supply/hidden{tag = "icon-manifold-b-f (EAST)"; dir = 4},/turf/simulated/floor/plasteel{icon_state = "vault"; dir = 8},/area/turret_protected/aisat_interior)
"ctG" = (/obj/machinery/atmospherics/unary/vent_pump{dir = 1; on = 1},/turf/simulated/floor/plasteel{tag = "icon-darkbluecorners (WEST)"; icon_state = "darkbluecorners"; dir = 8},/area/turret_protected/aisat_interior)
"ctH" = (/obj/structure/cable{icon_state = "0-4"; d2 = 4},/obj/structure/cable{d2 = 8; icon_state = "0-8"},/obj/structure/table,/turf/simulated/floor/plasteel{icon_state = "yellow"},/area/engine/engineering)
"ctI" = (/obj/structure/table/reinforced,/obj/item/stack/medical/bruise_pack{pixel_x = -3; pixel_y = 2},/obj/item/weapon/stock_parts/cell/high{charge = 100; maxcharge = 15000},/obj/item/device/radio/intercom{dir = 4; name = "Station Intercom (General)"; pixel_x = 27},/turf/simulated/floor/plasteel{dir = 2; icon_state = "neutralfull"},/area/engine/chiefs_office)
"ctI" = (/obj/item/device/radio/intercom{dir = 4; name = "Station Intercom (General)"; pixel_x = 27},/obj/structure/filingcabinet/chestdrawer,/mob/living/simple_animal/parrot/Poly,/turf/simulated/floor/plasteel{dir = 2; icon_state = "neutralfull"},/area/engine/chiefs_office)
"ctJ" = (/obj/machinery/atmospherics/unary/vent_scrubber{dir = 1; on = 1},/turf/simulated/floor/plasteel{tag = "icon-darkbluecorners"; icon_state = "darkbluecorners"; temperature = 273.15},/area/turret_protected/aisat_interior)
"ctK" = (/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/structure/cable{d1 = 1; d2 = 4; icon_state = "1-4"},/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden{tag = "icon-manifold-r-f (WEST)"; dir = 8},/turf/simulated/floor/plasteel{icon_state = "vault"; dir = 8},/area/turret_protected/aisat_interior)
"ctL" = (/obj/machinery/door/airlock/shuttle{name = "Mining Shuttle Airlock"; req_access_txt = "48"},/obj/docking_port/mobile{dir = 8; dwidth = 3; height = 5; id = "mining"; name = "mining shuttle"; travelDir = 90; width = 7},/obj/docking_port/stationary{dir = 8; dwidth = 3; height = 5; id = "mining_home"; name = "mining shuttle bay"; width = 7},/turf/simulated/floor/plating,/area/shuttle/labor)
@@ -6485,6 +6487,7 @@
"cuM" = (/turf/space,/turf/simulated/wall/shuttle{icon_state = "swall_f9"; dir = 2},/area/shuttle/pod_4)
"cuN" = (/turf/space,/turf/simulated/wall/shuttle{dir = 2; icon_state = "swall_f10"; layer = 2},/area/shuttle/pod_4)
"cuO" = (/turf/simulated/floor/plating,/obj/structure/shuttle/engine/propulsion/burst{dir = 4},/turf/simulated/wall/shuttle{icon_state = "swall_f6"; dir = 2},/area/shuttle/pod_4)
"cuP" = (/obj/machinery/door/airlock/engineering{name = "Telecommunications"; req_access_txt = "61"},/turf/simulated/floor/plasteel,/area/tcommsat/computer)
"cuR" = (/obj/structure/sink{icon_state = "sink"; dir = 8; pixel_x = -12; pixel_y = 2},/obj/machinery/atmospherics/unary/vent_pump{dir = 4; on = 1},/obj/machinery/doorButtons/access_button{idSelf = "virology_airlock_control"; idDoor = "virology_airlock_interior"; name = "Virology Access Button"; pixel_x = 8; pixel_y = -28},/turf/simulated/floor/plasteel{dir = 10; icon_state = "warnwhite"},/area/medical/virology)
"cuS" = (/obj/machinery/atmospherics/binary/pump{dir = 1; on = 1},/obj/structure/sign/fire{pixel_x = 32; pixel_y = 0},/obj/machinery/doorButtons/access_button{idSelf = "incinerator_access_control"; idDoor = "incinerator_airlock_interior"; name = "Incinerator airlock control"; pixel_x = -8; pixel_y = 24},/obj/machinery/light/small{dir = 4},/turf/simulated/floor/engine,/area/maintenance/incinerator)
"cuT" = (/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden{tag = "icon-manifold-r-f (NORTH)"; dir = 1},/turf/simulated/floor/plasteel,/area/quartermaster/storage)
@@ -6576,7 +6579,7 @@ aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaiaaZaasaasaasaaKabaabbaasaasabcabdaaiaaiaaiaafaaaaaaaaaaaaaaaaafaaaaaVaaaaaaaaaaafaafaafaafaafaafaafaafaaaaaaaaaaaaaaaaagaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabeabeabeabfabfaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaHaaOaaWaaNaaXabiaasabjaasaasaasaasaasaasaauaasabkablaaiaafaafaafaafaafaafaafaafabmabmabmabnabmabmaboaboabpabpabpaboaboaaaaaaaaaaaaaaaaagaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabfaaaaafaaaabqaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabgaaYabraaPabsabuaasaasabvabwabxaasabyabzabAaasabBabCaaiaafaaaaafaafaafaafaaaaafabnabDabEaeIabFabGaboabHabIabJabKabLaboaaaaaaaaaaafaaaaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabfaafabMaafabfaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaeaaaaaaabfabfabeabfabfaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabgabNabPabOabsabSabTabSabSabSabUabSabSabSabVabSabSabWaaiactactactactactactactactabmabXabEaeIabYabDaboabZacaacbacbaccaboaaaaafacdaagaagaafaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabfabfabfabfabfaafaafaaaaceaaaacfaafabfabfabfabfabfaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaeaaaaaaabfabfabeabfabfaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabgabNabPabOabsabSabTabSabSabSabUabSabSabSabVabSabSabWaaiactactactactactactactactabmabXabEaeIabYabDaboabZacaacbaccahPaboaaaaafacdaagaagaafaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabfabfabfabfabfaafaafaaaaceaaaacfaafabfabfabfabfabfaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabfaaaaafaaaabqaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabgabQacgabRabsackaasaclabSacmacnacoabSacpacqacrabSacsaaiacMacNacOacOacPacQacRacSactacuabEaeIaecabDabpacwacxacyacbaczaboaaaaafacAacBacAaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabqaaaaaaaafaaaaafaaaaaaaceaaaaaaaafaaaaafaaaaaaabfaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabfaafacCaafabfaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaHaciacDacjacEacHaasacIabSacJacnacIabSacKacqacIabSacLaaiacMadkadladladladladmadnactacTabEaeIaecabDabpacUacVacWacbacXaboaafaafacAacYacAaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabfaafacZacZacZacZacZaaaadaaaaacZacZacZacZacZaafabfaaaaaaaaaaaeaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabfadbadbadbadbaafaafaaaadcaaaaafaafabfabfabfabfabfaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaafhaaHaaHaaHacFaddacGabsadfadgadhabSadfadiadhabSadfadjadhabSabSaaiafnaRFaNFadVaNFadWbhdbiGactadoabEaeIaecabDaboadpadqadradsadtaboabnabmadvacBacAacAachaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabfaaaadwadxadxadxadxadyadzadAadBadBadBadBadCaaaabfaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
@@ -6586,7 +6589,7 @@ aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabfaafafPafPafPafPafPaaaafdaaaafPafPafPafPafPaafabfaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaHaaHaaHbaMbOybkdaaHaaiadhafQadfafRafRafRafRafRafRafRafSafTafUafVafWafXafYafZagaagbagcafUagdahSageagfaggaghagiafFagjafHagkaglagmabmadvacAacAacAachaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabfaaaadwadxadxadxadxadyadzadAadBadBadBadBadCaaaabfaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabfaaaaaaaaaaafaaaaaaaaaafdaaaaaaaaaaafaaaaaaaaaabqaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaeaaaaaaaaaaaaaaHaaHaaHaaHaaHaaiagnagoagpafRagqagragsagtaguafRagvagwagxagyagzagAagBagaagCagbagDagEagFafFagGagHagIagJagKaeKafAagNagOagLagMagRanUagUacAaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabfaafaemaemaemaemaemaaaadzaaaaemaemaemaemaemaafabfaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabfaafaenaenaenaenaenaaaafdaaaaenaenaenaenaenaafabfaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaafaafaafaafaafaaiagVagWagXafRagYagZahaahbahcafRagvahdaheahfahgahhahiahjahjahkahlahmahnaqqaPUaPTahqahrahsahTahVahuahvahWahwabmacAahxacAaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabfaaaaaaaaaaafaaaaaaaaaadzaaaaaaaaaaafaaaaaaaaaabfaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabfaaaafaafbafbafbafbafcafdafeaffaffaffaffafgaaaabfaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaibRIagWahyafRagYagZahzahbahAafRahBahCahDahEahFahGahHahIahJahKahLahMahNahObzKbzJahRcdlankaiaahUbuJahXbxkahYahZaibaicaidaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabfaafacZacZacZacZacZaaaadzaaaacZacZacZacZacZaafabfaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabfaaaafaafbafbafbafbafcafdafeaffaffaffaffafgaaaabfaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaiahyagWaHeafRagYagZahzahbahAafRahBahCahDahEahFahGahHahIahJahKahLahMahNahObzKbzJahRcdlankaiaahUbuJahXbxkahYahZaibaicaidaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabfaafacZacZacZacZacZaaaadzaaaacZacZacZacZacZaafabfaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabfacfafPafPafPafPafPaaaafdaaaafPafPafPafPafPaafabfaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaafaaaaafaaaaaaaaiaieagWaigafRaihaiiaiiaijahcafRaikailafUaimainaioaipaipaiqairafUafUaisaitaduaduaduabmabmabmabmabmabmabmabmaiuaivaiwaidaafaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabfaaaadwadxadxadxadxadyadzadAadBadBadBadBadCaaaabfaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabfaaaaaaaaaaafaaaaaaaaaafdaaaaaaaaaaafaaaaaaaaaabfaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaafaixaixaiyaixaizaiAafRafRafRafRafRafRaiBaiCafRaiDaiEaiFaiFaiFaiFaiFaiFaiFaiFaiGaiHaiIaiJaiFailaiAaiKaiLaiMaiNaiOaiPaiQaiRaiuaivaiwaidaafaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabfaafaemaemaemaemaemaaaadzaaaaemaemaemaemaemaiSabqaaaaaaaaaaaaaaaaaaaaaaaaaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabfaafaenaenaenaenaenaaaafdaaaaenaenaenaenaenaafabfaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaafaixaiTaiUaiVaiWaiXaiYaiZajaajbajcajdajeajfajgajhajiajjajkajjajjajjajjajjajjajlajjajiajmajkajnajoajpajqajrajsajtajuajvajwaiuaivaiwacAaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabfaaaaaaaafaaaaafaaaaaaadzaaaaaaaafaaaaafaaaaaaabfaaaaaaaaaaaaaaaaaaaaaaaaaafaaaaaaaaaaaaaaaaaaaaaaaeaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
@@ -6614,10 +6617,10 @@ aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaeaaaaaaaaaaaaaaabJXaBEaDgaBEaDcaDcaDcaDcaBEaDgbJWbJVaqpaBGaBHaBIaBJaBKaBLaBMaBNaBOayuazCazEazEaBPazEazEazCayuaBQaBRaBSaBTaBUaBVaBWaBXaBYaBZaAEaafazNaCaaCbaCdaCcaCeazNaafaxoaxuaxvaCfaCgaChaCiaCjaxvapNaCkaxxaClaCmaCnayOaCnaCoaCpaCqaCraAgaxKaCsaxKayQamwayRacAaeUapTarQarRarSaCtarUaCuayZaCvaAmaAmaAmazaaCwaCxaCyayZaCzaCAaCBaCCaCDaApaaaaafaaaaafaaaaafaaaaafaaaallavuaCEaBsaCFaCGallasiamlavuarjamlallaaaallawTaBsaBsaCHaCIaCJaCJaCJaCJaCJaCKaCLaCMaCNaCOaCOaCOaCPaCQaCRaCSaCTaCUaCVaCWaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabJXaBEaBEarscnAarrcmYcmuckEbPbbLZbLXarraCXbLiavMaBGaDhaAvaDiaDjaDkaDlaDmaDnayuaDoazEazEazEazEaDpaDqbRJaDsaDtaDuaBYaBYaBYaBYaBYaBYaBYaAEaaaazNaDvaDwaDwaDxaDzazNaaaaxoaxuaxvaDAaDBaDCaDDaDEaxvapNaDFaxxaxxaDGaATaDHaATaDIaxxaxxaDJaDKaxKaDLaxKayQamwayRacAaeUapTapTapTapTapTaDMaDNaDOaDPaDQaDRaDRaDRaDSayZaDTayZaDUaDVaDWaBdaBeaApallallallallallallallallallallallallallaDXallallallallawTaBtaDYaDZaEaaDZaEbaEcaEdaEdaEeaEfaEfaEfaEfaEfaEgaEhaEiaEiaEiaEiaEiaEiaBDaEjaEkaElaBDaBDaBDaafaafaafaafaafaafaafaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaDccsOcsOcsYarraDbarraDbarraDbarraDbarraCXaDeavMaBGaEqaAvaEraEsaEtaEuaEvaEwayuaExazEaEyaEzaEzaEAaEBaECaEDaEEaEFawKaEGaEGaEGawKaEHaEIaAEaafazNaEJaDyaEKaELaEMazNaafaxoaENaEOaEPaEQaDCaERaESaETaEUaEVaxKaEWaEXaDJaDJaDJaEYaEZaxKaFaaFaaxKaDJaxKaFbaoeaFcacAaeUaeUaeUaeUaeUamXawvaFdaFeaFfaFgaFeayoaFeaFiaFeaFjayZaFkaFlaFmaBdaFnaFoaFpaFqaFraFsaFtaFuaFuaFuaFuaFvaFwaFuaFuaFxaFyaFzaFAaBpaFBaFCaFDaFEaFFaFEaFGaFHaEfaEfaFIaEfaFJaFKaFLaEfaEiaFMaEiaFNaFOaFPaFQaFRaFSaFTaFUaFVaFWaFXaFYaaaaaaaaaaaaaaaaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaFZaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaDcarrarrctiarraDbarraDbctaaDbarraDbarraCXaDeavMaBGaGcaAvaAvaGdaGeaGfaGgaAvayuayuayuayuaGhazEaAzaGiayuaGjaGkaBYaBYaBYaFhaBYaBYaBYaGmaAEaaaazNazNaGnaGoaGnazNazNaaaaxoaxuaxvaGpaGqaGraGsaGtaxvapNaGuaxKaGvaEXaDJaDJaDJaEYaGwaxKaAgaAgaxKaCsaxKaGxaGyaGzacAamXacAacAacAacAacAaGAaGBayZaGlaAmayZaGDayZaGEayZaGFayZaGGaGHaFmaBdaGIaGJaGKaGLaGMaGMaGNaGMaGMaGOaSOaGPaGQauwauwauwauwaGRaGSaGTaGUaGVamlaGWaGWaGWaGWaGXaEfaGYaGZaHaaGCaHcaHdaEfaHeaHfaEiaHgaHhaHiaHjaFRaHkaEjaEkaCTaHlaHmaFYaaaaaaaaaaaaaaaaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaDcarrarrctiarraDbarraDbctaaDbarraDbarraCXaDeavMaBGaGcaAvaAvaGdaGeaGfaGgaAvayuayuayuayuaGhazEaAzaGiayuaGjaGkaBYaBYaBYaFhaBYaBYaBYaGmaAEaaaazNazNaGnaGoaGnazNazNaaaaxoaxuaxvaGpaGqaGraGsaGtaxvapNaGuaxKaGvaEXaDJaDJaDJaEYaGwaxKaAgaAgaxKaCsaxKaGxaGyaGzacAamXacAacAacAacAacAaGAaGBayZaGlaAmayZaGDayZaGEayZaGFayZaGGaGHaFmaBdaGIaGJaGKaGLaGMaGMaGNaGMaGMaGOaSOaGPaGQauwauwauwauwaGRaGSaGTaGUaGVamlaGWaGWaGWaGWaGXaEfaGYaGZaHaaGCaHcaHdaEfaLyaHfaEiaHgaHhaHiaHjaFRaHkaEjaEkaCTaHlaHmaFYaaaaaaaaaaaaaaaaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaDcaDdaDdaDaarraDbarraDbarraDbarraDbarraCXaDeavMaHpaHqaHraHsaHsaHtaHuaxaaHvaHwaHxaHyayuaHzazEazEaHAayuaHBaHCaBYaHDaHEaOwaHGaHHaHIaHJaAEaaaaafaaaaHKaHLaHKaaaaafaaaaxoaxuaxvaDCaHMaHNaHOaHPaxvapNasJaxKaHQaHRaDJaDJaDJaHSaHTaxKaaaaaaaHUaHVaHWaHXaHYbzZaIaaIbaHUaaaaaaaIcaIdaIeaIfayZaIgaAmaAmaAmaCxaAmaAmaAmayZaBdaIhaIiaBdaBdaApaIjaIkaIkaIlaImaInaIkaIoaIpaIpaIqaIpaIraIpaIsaGWaGWaItaGWaGWaGWaGWaIuaIvaGWaGXaEfaGZaIwaIxaIyaIzaIAaEfaIBaICaIDaIEaIFaIGaIHaIIaIJaBAaIKaFVaFWaILaFYaaaaaaaaaaaaaaaaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaBFaBEaBEarsartarrarrarrarrarrarraCZarraCXaCYavMaBGaxaaIOaIPaIPaIPaIPaIPaIPaIPaIQaxaayuaIRaISaIRayuayuaITaIUaIVaADaADaADaADaIVaIWaIXaAEaIYaIZaIZaJaaJbaJaaIZaIZaJcaxoaJdaxvaJeaxvaJfaJfaJgaxvaJhaJiaxKaxKaxKaAgaDHaAgaxKaxKaxKaHUaHUaHUaJjaHYaHYaHYaHYaHYaJkaHUaHUaHUaIcaJlaIeaJmayZayZayZayZayZayZayZayZayZayZaJnaJoaJpaJqaJraJsaJtaJuaIkaJvaImaJwaJxaJwaIpaJyaJzaIpaJAaIpaJBaJCaJDaJEaJFaJFaJFaJGaJHaJIaGWaGXaEfaJJaIwaJKaIyaIzaJLaEfaJMaJNaJOaJPaJQaJRaJSaJTaJUaJVaJWaCTaHlaHmaFYaaaaafaafaafaafaafaafaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaBFaBEaDfaBEaDcaDcaDcaDcaBEaDgaEmaEnaqpaJZaxaaKaaHbaKbaKcaKbaKdarpaKeaKfaxaaKgaKhaKiaKiaKjaKiaKkaKlaKiaKiaKiaKiaKiaKiaKiaKmaKnaKoaKpaKqaKqaKraKsaKqaKqaKqaKtaKuaKvaKraKqaKqaKqaKwaGyaKxaHYaKyaKzaHZaIaaIaaIaaHXaHYaHYaKAaHYaHYaKBaKCaKDaKEaKFaKGaKHaHYaHYaKAaKJaKKaKLaKMaKNaKOaKPaKQaHYaKRaHYaBdaKSaKTaKUaJoaKVaKWaKXaKYaKZaLaaIkaLbaLcaLdaLeaLfaIpaLgaJzaLhaLiaIpaIpaLjaLkaLlaLmaLnaLoaLpaLqaLraGWaGXaEfaLsaLtaLuaLvaLwaLxaEfaLyaLzaEiaLAaLAaLAaLAaEiaLBaCRaJWaCTaBDaBDaBDaLCaLCaLCaLDaLDaLDaafaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaBFaBEaDfaBEaDcaDcaDcaDcaBEaDgaEmaEnaqpaJZaxaaKaaHbaKbaKcaKbaKdarpaKeaKfaxaaKgaKhaKiaKiaKjaKiaKkaKlaKiaKiaKiaKiaKiaKiaKiaKmaKnaKoaKpaKqaKqaKraKsaKqaKqaKqaKtaKuaKvaKraKqaKqaKqaKwaGyaKxaHYaKyaKzaHZaIaaIaaIaaHXaHYaHYaKAaHYaHYaKBaKCaKDaKEaKFaKGaKHaHYaHYaKAaKJaKKaKLaKMaKNaKOaKPaKQaHYaKRaHYaBdaKSaKTaKUaJoaKVaKWaKXaKYaKZaLaaIkaLbaLcaLdaLeaLfaIpaLgaJzaLhaLiaIpaIpaLjaLkaLlaLmaLnaLoaLpaLqaLraGWaGXaEfaLsaLtaLuaLvaLwaLxaEfbhpaLzaEiaLAaLAaLAaLAaEiaLBaCRaJWaCTaBDaBDaBDaLCaLCaLCaLDaLDaLDaafaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaavMaylavMavMavMavMavMavMaylavMaaaaqpaAuaLEaKaaLFaLGaLHaLHaLIarpaLJaKfaLKaLLaKhaLMaLNaLOaLPaLQaLRaKiaKiaKiaKiaKiaKiaKiaKmaKiaKhaKiaKiaKiaLSaLTaLUaLUaLUaLUaLVaLUaLWaLUaLUaLXaKhaGyaHYaHYaHYaHYaHYaHYaHYaHYaHYaHYaHYaKAaHYaHYaLYaLZaMaaKIaMcaMbaMeaHYaHYaKAaHYaHYaHYaHYaHYaHYaHYaHYaHYaMgaHYaBdaKUaKUaKUaMhaMiaMjaMkaMlaMmaMnaIkaMoaImaMpaIkaIkaIpaMqaJzaMraLiaMsaIpaGWaGWaGWaGWaGWaGWaMtaMuaMvaGWaGXaEfaMwaGZaMxaMyaGZaMzaEfaEiaEiaEiaEiaEiaEiaMAaEiaEjaEjaEkaCTaMCaMDaBDaMEaMFaMGaMHaMIaLDaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaagaafaafaafaafaztaqpavMatBavMaNTaNUaNVaNWavMatBavMavMaqpaBGaxaaKaaMJaMKaLHaLHaLIarpaMLaKfaxaaLLaKhaKiaMMaMNaMNaMNaMOaMPaMQaMNaMRaMNaMNaMNaMSaMNaMTaMNaMNaMNaMUaMVaMWaMXaMXaMYaMZaNaaNbaNcaKicrraKhaGyaHYaNeaHYaNfaNfaNfaNfaNfaNfaNfaNfaNgaNfaNfaNfaNfaNfaNfaNfaNfaNfaNfaNfaNhaNfaNfaNfaNfaNfaNfaNfaNfaHYaHYaHYaBdaNiaNiaNiaNiaNiaNjaNkaJsaODaRdaIkaNmaNnaNoaIkaNpaIpaNqaNraNsaLiaNtaIpaGWaNuaNvaNwaNxaNwaNyaNzaNAaGWaGXaEfaNBaNBaNCaNDaNEaNEbqoaEfaNGaNHaNIaBDaNJaNKaNLaEjaEjaNMaNNaBDaNOaBDaNPaNQaNRaNRaNSaLDaLDaLDaLDaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaafaafarpavMaylavMaBGaxaaxaaMBavMaylavMaNXaNYaNZaxaaKaaOaaRhaKcaOaaKdarpaObaKfaxaaOcaOcaOcaOdaOcaOeaOeaOeaOeaOeaOfaOgaOeaOhaOeaOeaOeaOiaOjaOkaOjaOlaOmaOnaKiaKiaOoaOpaOqaOraKlaKiaNdaOsaOsaHYaHYaHZaHUaHUaHUaHUaHUaHUaHUaHUaOtbUPbUObUQbUObUObUObVMbUObWHbUObXtaOtaHUaHUaHUaHUaHUaHUaHUaHUaHXaHYaHYaIkaOAaOBaNlaVPaNlaNlaOCaJsaOGaOEckZcjTaOFaPVaIpaIpaIpaOHaOIaIpaIpaIpaIpaIpaNwaOJaOKaOKaOKaOLaOMaNwaGWaGXaEfaONaGZaNCaNDaGZaGZaOOaEfaOPaOQaORaBDaEjaOSaOTaOUaOUaOVaOWaOXaOYaBDaOZaPaaNRaPbaNRaPcaPdaPdaPcaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaeaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaFZaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
@@ -6634,26 +6637,26 @@ aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaafavMawZaxaawZaxbaxaaxaaxcawZaxaawZaxbaxabcqaHqbcrbcsbctbcrbcrbcrbcubcvaOcaOcaOcbcwaUQaWAaYdbcxbcybczaWAbcAbcBbcAaOeaOeaOebcCbcDaOcaYnaYoaYpbcEaZGbaFbcFbcGaYpaZIaYvbcHbaHbaHbcIbcJbcKbcLaHYaWUbXvbcMbaObbNbcNbcObcPbaSbaOaZWbcQbcRaYDbcSbcTbcUaYDbcVbaAbabbcXbcYbcZbdabdabdbbajbdcaYHbddbdecuAaGybbfaXFaXFbdfaXFbdgbdhbdhbdhbdibdhbdhbdhbdjaXFaXFaXFaXFaXFaXFbdkbdlbdmbbfaXFaXFaXFaXFbarbdnbdobdpbdqbdraXFaXFaXFaXFaXFbdsbdtaXFaXFaXFaXFaXFaXFaXFaXFaXFaXFaXFaXFaXFbbfbdubdvbdwbdxaROaNRaNSaLDaLDaLDaLDaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaeaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaarpavMbdyavMaBGaxaaxaaMBavMbdAavMayqbdBbdCbdCbdDbdEbdFbdGbdHbdIbdJbdKbdLbdMbdMbdNbdOaWAaWAaWAbdPbdQaWAaOcaOcaOcaOcbdRaVbbdSbdTaVbbdUaYoaYpbdVaZGaZGbdWbdXaYpbdYaYvbdZbaHbaHbeabebbecbedaHYaWUaYxbaObeebaPbaPbefbaRbaSbegbcWaXfbeibejbekbekbekbelbemaXkbdzbeobepbeqberbajbesbajbetaYHaXqaHYaHYbeubeubeubeubeubeubeubevbewbewbexbeybeybevbezbezbezbezbezbeAbeAbeBbeCbeAbeAbeAbeAbeDaXFbeEbeFbeGbeHbeIaXFaXFaXFbeJbeJbeKbeKbeKbeKbeKbeLbeMbeMbeMbeNbeMbeObePbeMbeMbeQbeRbeRbeRbeRbeSbeTbeUbeVaLDaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaafaztaqpazuatBavMaymaynbeWbeXavMatBazuavMaqpaztarpbdDbeYbeZbeZbeZbfabdJbfbbfcbfdbfdbfebffaWAaYdbfgbdPbfhaWAbfibfiaQEaQEbfjbfkbflbfmbflbflbfnaYpbfobfpaZGaZGbdXbfqbfraYvbfsbaHbaHbeabftbfubedaHYbfvaYxbfwaYAbfxbfybfzbfAbaSbfBaYxaafbfCbfDbfDbfDbfEbfFbfGaafaYHbfHbfIbfJbfKbajbfLbajbfMaYHaXqaHYbfNbeubfObotbfQbfRbfSbeubehbfVbfVbfWbfXbfXbfXbfYbfZbgabgbbezbgcbgdbgebgdbgdbgfbggbeAbeGbghbeGbeGbeGbgibeIbeIbgjbeIbgkbgkbeKbglbgmbgnbeKbgobgpbgobeKbgqbgrbgqbeRbgsbgtbgsbeRbgubgvbeRbgwbgxaLDaLDaLDaafaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaafaafaafaafavMbdyavMavMavMavMavMavMbdAavMaafaafaafaaabdDbgybdDbgzbeZbgAbgBbcraVbbgCbgDbgEbgFbgGbgGbgGbgGbgGbgGbgHbgIbgJbfdbgKbgLaYpaYpaYpaYpaYpaYpbgMaYpaYpaYpbgNbgObgPbgQbgRbaHbaHbeabgSbecbedaHYbgTaYxbgUaYAaYAaYAaYAbfAbaSbgVaYxaafbfCbfDbgWbgXbgYbfDbgZaafaYHbhabbYbhbbhcbajbesbajbajaYHaXqaHYaHYbeubqqbhebhfbhgbhhbhibfXbhjbfXbhkbfXbfXbhlbfYbhmbhnbhobezbhpbgdbhqbgdbhpbhrbgdbeAbhsbhsbhubhvbeGbhwbeIbhxbhybhzbhAbhAbeKbhBbhCbhDbhEbhFbhGbhHbeKbhIbhJbhKbeRbhLbhMbhLbhNbhObhObeRbhPbgxaaaaafaaaaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaafaaaaaaaaacuzaaaaaaaafaafaaaaaaaaaaaaaaaaafaafaaabdDbhQbhRbhSbhTbhTbhUbhVaWPbhWaOcbhXbhYbhZbhZbhZbiabiabiabiabiabiabiabibbgNbicbidbiebifbigbihbiibijaYpbikbilbimbinbinbiobaHbaHbeabaHaYvbedaHYaWUbipbiqbirbisbitaYAbiubaSaYxaYxaafbfCbfDbgXbfDbgXbfDbgZaafaYHaYHbivbcZbiwbajbixbiybizaYHaXqaHYbiAbiBbiCbiDbqrbiFbrWbiHbfXbiIbiJbiKbiLbiLbiMbfYbiNbhnbiObezbhpbgdbhqbiPbhpbiQbiRbeAbiSbiTbiUbiVbeGbgibeIbiWbiXbiXbiYbiZbjabjbbjcbjcbjcbjdbjebjfbeKbjgbhJbjhbeRbjibjjbjkbjlbjmbjnbeRbhPbgxbjobjobjobjoaafaafaafaafaafaafaafaafaafaafaafaafaafaafaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaFZaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaafaafaaaaaaaaaaaaaaaaafaafaaaaaaaaaaaaaaaaafaafaaabdDbjpbdDbjqbjrbjrbjsbdDbjtbjtaOcbjubjvbjubjubjubjvbjuaOcaOcaYpaYpaYpbjwbgNbjxbjxbjybjxbjxbjxbiibjxbjzbjAbjBbjCbjDbjEbjEbjEbjEbjFbjGbjHbjIbjJbjKbjLbjMbjNbjObjPaYAbfAbaSaYxaafaafbfCbfDbgYbjQbgWbjRbgZaafaafaYHbjSbjTaYHaYHaYHaYHbjUaYHbjVaHYaHYbeubjWbhebjXbhgbhhbjYbfXbjZbkabkbbkcbtmbkebezbkfbkgbkhbezbhpbgdbkibkjbhpbkkbgdbeAbeGbeGbeGbeGbeGbgibeIbklbkmbknbkobkpbkqbkrbksbktbktbkubkvbkwbeKbkxbhJbkybeRbkzbkAbkBbkCbkDbkEbeRbhPbkFbkGbkHbkIbkHaaaaaaaafaaaaafaaaaafaaaaafaafaafaafaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaafaafaafaafavMbdyavMavMavMavMavMavMbdAavMaafaafaafaaabdDbgybdDbgzbeZbgAbgBbcraVbbgCbgDbgEbgFbgGbgGbgGbgGbgGbgGbgHbgIbgJbfdbgKbgLaYpaYpaYpaYpaYpaYpbgMaYpaYpaYpbgNbgObgPbgQbgRbaHbaHbeabgSbecbedaHYbgTaYxbgUaYAaYAaYAaYAbfAbaSbgVaYxaafbfCbfDbgWbgXbgYbfDbgZaafaYHbhabbYbhbbhcbajbesbajbajaYHaXqaHYaHYbeubqqbhebhfbhgbhhbhibfXbhjbfXbhkbfXbfXbhlbfYbhmbhnbhobezbhqbgdbkibgdbhqbhrbgdbeAbhsbhsbhubhvbeGbhwbeIbhxbhybhzbhAbhAbeKbhBbhCbhDbhEbhFbhGbhHbeKbhIbhJbhKbeRbhLbhMbhLbhNbhObhObeRbhPbgxaaaaafaaaaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaafaaaaaaaaacuzaaaaaaaafaafaaaaaaaaaaaaaaaaafaafaaabdDbhQbhRbhSbhTbhTbhUbhVaWPbhWaOcbhXbhYbhZbhZbhZbiabiabiabiabiabiabiabibbgNbicbidbiebifbigbihbiibijaYpbikbilbimbinbinbiobaHbaHbeabaHaYvbedaHYaWUbipbiqbirbisbitaYAbiubaSaYxaYxaafbfCbfDbgXbfDbgXbfDbgZaafaYHaYHbivbcZbiwbajbixbiybizaYHaXqaHYbiAbiBbiCbiDbqrbiFbrWbiHbfXbiIbiJbiKbiLbiLbiMbfYbiNbhnbiObezbhqbgdbkibiPbhqbiQbiRbeAbiSbiTbiUbiVbeGbgibeIbiWbiXbiXbiYbiZbjabjbbjcbjcbjcbjdbjebjfbeKbjgbhJbjhbeRbjibjjbjkbjlbjmbjnbeRbhPbgxbjobjobjobjoaafaafaafaafaafaafaafaafaafaafaafaafaafaafaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaFZaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaafaafaaaaaaaaaaaaaaaaafaafaaaaaaaaaaaaaaaaafaafaaabdDbjpbdDbjqbjrbjrbjsbdDbjtbjtaOcbjubjvbjubjubjubjvbjuaOcaOcaYpaYpaYpbjwbgNbjxbjxbjybjxbjxbjxbiibjxbjzbjAbjBbjCbjDbjEbjEbjEbjEbjFbjGbjHbjIbjJbjKbjLbjMbjNbjObjPaYAbfAbaSaYxaafaafbfCbfDbgYbjQbgWbjRbgZaafaafaYHbjSbjTaYHaYHaYHaYHbjUaYHbjVaHYaHYbeubjWbhebjXbhgbhhbjYbfXbjZbkabkbbkcbtmbkebezbkfbkgbkhbezbhqbgdbnZbkjbhqbkkbgdbeAbeGbeGbeGbeGbeGbgibeIbklbkmbknbkobkpbkqbkrbksbktbktbkubkvbkwbeKbkxbhJbkybeRbkzbkAbkBbkCbkDbkEbeRbhPbkFbkGbkHbkIbkHaaaaaaaafaaaaafaaaaafaaaaafaafaafaafaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaeaafaafaaaaaaaaaaaaaaaaafaaaaaaaaaaaaaaaaaaaaaaafaaabdDbkJbhRbkKbjrbkLbkMbdDaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabkNbkObkPbkQbkRbkSbkSbkTcuTbkSbkSbkUbkSbkVbkWbkXbkYbkZbecbecbecblaaYvblbaYvblcbldaKAbipbleblfblfblfblfblgblhbliaafaaabljblkbllbfDbfDblmbgZaaaaafblnbloblpblqblrblsblnbltblnbluaHYaHYbeublvbhectCblwblxbeublybjZbkablzblAbfXblBbezblCblDblEbezblFblGblHblIblJblKblLblMblNblOblNblNblNblPbeIblQbhyblRblSblTbkqblUblVblWblWblXblYblZbeKbmabgrbmbbeRbmcbmdbmebkCbhObmfbeRbhPbmgbmhbmibmibmibmibmibmibmjaafaaaaafaaaaaaaafaaaaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaafaaaaaaaaaaaaaaaaafaaaaaaaaaaaaaaaaaaaaaaafaaabdDbmkbhRbhRbhRbdDbdDbdDaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabkNbmlbjxbmmbmnbmobmnbmncuUbmnbmnbmpbmnbmqbmrbmsbmtbmubmvbecbmwbaHbmxbmybmzbedbmAbmBbipbipblibmCbmDbmEbmFbmGbliaaaaaabfCbmHbmIbmJbmIbmKbgZaaaaaablnbmLbmMbmNblnbmOblnbltblnbluaHYaHYbeubmPbhebjXbmQbmRbeubmSbmTbmUbmVbmWbfXbmXbezbfYbmYbmZbezbeAbnabeAbeBbnbbncbncbncbncbncbncbncbncbgibeIbndbkmbknbnebnfbngbnhbnibnibniblXbkvbnjbnkbnlbnmbnnbnobnpbnqbnpbnrbhObnsbeRbntbnubnubnubnubnubnubnubnvbgxbjobjobjoaaaaaaaafaaaaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabnwbkNbkNbnxbjxbjxbjxbnybnzbnzcuVbjxbjxbjxbjxbjzbnAbeabnBbnCbnDbnEbnFbnGbnHbaHbmzbnIbnJbnKbnLbnMbnNbnObnPbnQbnRbnSbliaafaaabfCbnTbnUbnUbnUbnVbgZaaaaafblnbnWbnXbnYblnbnZblnbltblnboaaHYaKJbobbocbodboebofbogbeubohbjZbhkbmVboibojbmSbmSbokbolbombonboobopbfXboqborbosbvtboubovbowboxboybncbgibeIbozboAboBboCboDbeKboEbnibniboFboGbkvboHboIboJboKboLbnoboMboNbhOboOboPboQbeRboRbrVbrVbrVbrVbrVbrVbrVbhPbgxboTboUbjobjoaafaafaafaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabnwbkNbkNbnxbjxbjxbjxbnybnzbnzcuVbjxbjxbjxbjxbjzbnAbeabnBbnCbnDbnEbnFbnGbnHbaHbmzbnIbnJbnKbnLbnMbnNbnObnPbnQbnRbnSbliaafaaabfCbnTbnUbnUbnUbnVbgZaaaaafblnbnWbnXbnYblnbRIblnbltblnboaaHYaKJbobbocbodboebofbogbeubohbjZbhkbmVboibojbmSbmSbokbolbombonboobopbfXboqborbosbvtboubovbowboxboybncbgibeIbozboAboBboCboDbeKboEbnibniboFboGbkvboHboIboJboKboLbnoboMboNbhOboOboPboQbeRboRbrVbrVbrVbrVbrVbrVbrVbhPbgxboTboUbjobjoaafaafaafaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaboVboWboVboXboYbjxbjxbiibjxbjxcuWbjxbjxboZaYpaYpbpabpbbjEbpcbpdbecbpebaHbpfbaHbpgblubmAbphbpibpjbpkbplbpmbpnbpobppbliaaaaaabfCbpqbprbpsbprbptbgZaaaaaabpubpvbpwbpubpubpubpubpxbpubpyaKAaKAbeubeubpzbpAbpBbpCbeubpDbjZbpEbpFbpFbpFbpFbpFbpGbpHbpIbpJbpFbpKbpFbpLbpMbosbpNbpObpPbpQbpRbpSbncbpTbpUbpVbpWbpWbpXbpYbpZbqabqbbqbbqcbqdbkvbqebqfbqgbqhbqibnobnobqjbqkbqlbqmbnobeRbrVbrVbrXbenbrZbfUbsabrVbqsbqtbqubqvbqwbjoaaaaafaaaaaaaaaaaaaaaaaeaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabqxbqybqxbqzbjxbjxbjxbnybnzbnzcuVbjxbjxbqAbqBaYpbqCbaHbaHbqDbqEbqFbqGbaHbaHbaHbpgblubqHaHYbpibpjbqIbqJbqKbqLbqMbqNbliaafaafbqObqPbqQbqRbqSbqTbqUaafaafbqVbqWbqXbqYbqZbrabrbbrcbpubrdaHYaHYbmVbrebrfbrgbrhbribrjbrkbrlbrmbrnbrnbrnbrnbrnbrobrpbrqbrrbrsbrtbrubrvbrwbosbrxbrybrzbrAbrBboybncbgibeIbrCbrDbrEbrFbrFbeKbrGbrHbrIbnkbrJbkvbrKbnkbrLbrMbrNbrObrPbrQbrRbrSbrTbrUbhtbthbtgbtjbtibtibtibtlbtkbqnbgxbsdbsebsebjoaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabnwbkNbkNbsfbjxbjxbjxbiibjxbjxcuWbjxbjxbqAbsgaYpbshbsibjEbsjbskbslbeabaHbaHaZhbmzbsnbqHaHYbpibpjblibsobspbsqbsrbssbliaaaaaaaafbfCbstbsubstbgZaafaaaaaabqVbsvbswbsxbsybszbszbsAbsBbsCaHYaHYbmVbsDbfXbsEbsFbsGbsHbsGbsIbsJbsKbsLbsKbsKbsKbsMbsNbfXbhkbsObsPbsPbsQbsRbosbosbsSbsTbsUbpRboybncbeHbeIbsVbsVbsVbsVbsVbeKbnkbnkbnkbnkbsWbsXbsYbnkbsZbtabtbbtcbtcbtcbtcbtdbtebtfbrYbuAbuzbuCbuBbuBbuDbwabrVbsbbgxbsdbsebseabtaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabtobqxbqybqxbmlbtpbjxbjxbtqbjxbtpcuWbjxbjxbqAbtraYpbtsbttbnGbtubtvbecbpbbjEbtwbtxbmzbsnbqHaWUbpibtyblibtzbtAbtBbtCbmGbliaaaaaaaafbtDbtEbnUbtFbtGaafaaaaaabqVbtHbtIbtJbtKbtLbtMbtNbpubtOaHYaHYbmSbmSbtPbtQbpGbtRbtSbtTbtUbtVbtWbtXbtWbtXbtWbtXbtWbtXbtYbtZbsPbuabubbucbudbuebufbugbuhbuibujbncbukbulbumbnmbunbhJbhJbuobhJbhJbupbuqburbusbutbtcbuubuvbuwbuxbuxbuxbuybuybuybuybuybwcbwbbwebwdbwebwfbwebrVbsbbgxbwgbqvbwhbjoaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabuFbuGbuFbuHbuIbuHbuHbuHbuHbuHcuXbuKbjxbqAbuLaYpbuMbaHbuNbuObuPbuQbuRbuRbuRbuQbuQbuSbqHaJkbuTbpjblibuUbuVbuWbuXbuYbliaaaaaaaafbuZbvabqRbvbbvcaafaaaaaabqVbvdbvebvfbvgbtLbtMbtNbpubvhaHYaHYbvibvjbvkbvlbvmbvnbtXbvobvpbvqbvrbvsbDibvubvvbvubFzbtXbhkbjZbsPbvxbvybvzbvAbvBbvCbvDbvEbvEbvFbvGbvHbvIbvJbvKbvLbvMbvNbvMbvMbvObvMbvMbvPbvQbvRbvRbvSbvTbqibuxbvUbvVbvWbvXbvYbambuybxjbxibzCbyAbzDbxibAVbrVbsbbgxcjgbsebsebjoaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabnwbkNbkNbkNaYpbkNbkNbkNbwibwicuYbwibwjbwkbwkbwibwibwlbwlbwmbwnbuQbwobwpbwqbwrbuQbsnbqHaHZaIcaIcbliblibwsbliblibwtbliaHUaHUaHUbwubwvbsubwwbwxaHUaHUaHUbpubpubpubpubpubpubpubpubpubvhaHYbwybtXbtXbtXbwzbtXbtXbtXbwAbvpbwBbwCbwDbwEbwFbwGbwHbwIbwDbhkbjZbsPbwJbwKbwLbwMbwNbwObrAbrAbrAbwPbwQbwRbwSbwTbwTbwTbwTbwUbwTbwTbwTbwVbwVbwWbwXbwYbwYbwZbxabqibuxbxbbxcbxdbxebxfbxgbxhbrVbrVbFBbFBbFBbrVcfYbrVbsbbgxbwgbqvcvhbjoaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabnwbkNbkNbkNaYpbkNbkNbkNbwibwicuYbwibwjbwkbwkbwibwibwlbwlbwmbwnbuQbwobwpbwqbwrbuQbsnbqHaHZaIcaIcbliblibwsbliblibwtbliaHUaHUaHUbwubwvbsubwwbwxaHUaHUaHUbpubpubpubpubpubpubpubpubpubvhaHYbwybtXbtXbtXbwzbtXbtXbtXbwAbvpbwBbwCbwDbwEbwFbwGbwHbwIbwDbhkbjZbsPbwJbwKbwLbwMbwNbwObrAbrAbrAbwPbwQbwRbwSbwTbwTbwTbwTbwUbwTbwTbwTbwVbwVbwWbwXbwYbwYbwZbxabqibuxbxbbxcbxdbxeahQbxgbxhbrVbrVbFBbFBbFBbrVcfYbrVbsbbgxbwgbqvcvhbjoaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabwicuZbxlbxmbxnbxobxpbwkbxqbxrbxsbxtbxubxvbxwbxxbxybuQbsnbqHaHYaHYaHYbxzaKQbxAaKAbxBbxCbxDaVLaVLaVLbxEbxFbxGbxHbxIaHYaHYaHYaHYaKQaHYaKAaHYaHYaHYbxzaHYbvhaHYbxJbtXbxKbxLbxMbxNbxObtXbxPbxQbxRbxSbwDbwEbwEbxTbxUbxVbwDbhkbxWbsPbrAbxXbxYbxZbwQbyabybbycbydbncbncbeHbyebwTbyfbygbyhbyibyjbykbwTbylbymbynbyobypbwYbyqbyrbysbytbyubyvbywbyxbyybyzbxhchfchfchfchfchfchfchfbrVbsbbgxbsdbsebseabtaafaafaafaafaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaFZaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaeaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabwkbyBbyCbyDbyEbyFbyGbyHbyIbyJbyKbyLbyMbyNbyObxxbyPbuQbsnbyQaHYaHYaHYaHYaHYaHYaKAaHYbqHaHYaHYaHYaHYaHYbyRbySbyTaHYaHYaHYaHYaHYaHYaHYaKAbyUaHYaHYaHYaHYbvhbyVbyWbtSbyXbyYbyZbyYbzabtXbzbbvpbvqbzcbtXbzdbzebzfbzgbzhbtXbhkbjZbsPbsPbsPbsPbsPbncbncbncbncbncbncbzibgibzjbwTbzkbzlbzmbznbzobzpbwTbzqbzrbzsbztbzubwYbyqbzvbzwbzxbzybzzbzzbzzbzAbzBbxhchfchfctEctDchfchfchfbrVbsbbgxbsdbsebsebjoaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabwibzEbzFbzGbzHbzIcvbcvacvccvcbAZbzLbuRbzMbzNbzObzPbuQbzQbzRbzSbzSbzSbzTbzSbzSbzUbzSbzVaHYbzWbzXbzYbzYcuBbAabAbbAcbAdbAeaVLaVLbAfaVLbAgbAhaVLbAibAjbAkbAlaHYaHYbtXbAmbAnbAobtWbApbtXbtWbAqbArbtXbtXbtXbtXbtXbtXbtXbtXbhkbjZbfXbAsbAtbAubAvbAwbAxbAybAzbAAbAwbzibgibABbwTbACbADbAEbAFbAGbAHbwTbAIbAJbAKbALbAMbwYbyqbANbAObuybAPbAQbARbASbATbAUbxhchfchfchfbscchfchfchfbrVbsbbqtbAWbqvbqwbjoaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabwibzEbzFbzGbzHbzIcvbcvacvccvcbAZbzLbuRbzMbzNbzObzPbuQbzQbzRbzSbzSbzSbzTbzSbzSbzUbzSbzVaHYbzWbzXbzYbzYcuBbAabAbbAcbAdbAeaVLaVLbAfaVLbAgbAhaVLbAibAjbAkbAlaHYaHYbtXbAmbAnbAobtWbApbtXbtWbAqbArbtXbtXbtXbtXbtXbtXbtXbtXbhkbjZbfXbAsbAtbAubAvbAwbAxbAybAzbAAbAwbzibgibABbwTbACbADbAEbAFbAGbAHbwTbAIbAJbAKbALbAMbwYbyqbANbAObuybAPbxfbARbASbATbAUbxhchfchfchfbscchfchfchfbrVbsbbqtbAWbqvbqwbjoaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabwibwibwkbwkbwkbwkbwibwibAXbAYbAZbBabuQbuQbuQbuQbuQbuQbBbbBcaIcaIcaIcaIcbBdbBdbBdbBdbBdbBdbBdbBdbBdbBdbBebBfbBgbBhbBhbBhbBhbBhbBibBhbBhbBjbBhbyebBkbyeaIdaJlbBlbtXbBmbBnbBobBpbBqbtXbBrbxQbBsbBtbBubBvbBwbBxbBybBzbBAbBBbBCbBDbBDbBEbBFbBGbBHbBIbBJbBKbBLbAwbzibgibBMbBMbBMbBMbBMbBMbBMbBMbBMbBNbBNbBNbBNbBNbBNbBObBPbBQbuybuybuybuybuybuybuybxhbrVbrVbrVbrVbrVbrVbrVbrVbsbbgxbBRbBSbjobjoaafaafaafaagaagaagaagaagaagaagaagaafaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabBTaaaaaaaaaaafaaaaaabwlbBUbBVbBWbBXbBYbBZbCabCbbCcbCdbCebCfaaaaaaaafaaabBdbCgbChbCibCjbCkbClbCmbCnbCobCpbCqbCrbBhbCsbCtcuDbCubCwbCvbCvbCxbCybCzbCAbyebyebyebyebtXbCBbCCbCDbCCbCEbtXbCFbvpbCGbCHbCIbCJbCIbCIbCKbCLbCMbCNbCObCObCObCPbCQbvlbCRbCSbCTbCUbCVbAwbzibgibBMbCWbCWbCWbCXbCWbCWbCWbBMbCYbCYbCZbCYbCYbBNbDabDbbqibDcbDdbDebDfbDgbDhbJqbDjbDkbDlbDmbDnbDobsmbtnbtnbvwbDsbDdbDdbjoaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaafaafaafaafaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaelctjaekctjaejaaaaafaaabwlbwlbDtbxrbDubDvbDwbDxbDybDybDzbDAbDBbDCaafbDDbDEbDFbDGbDHbDIbDJbDIbDKbDIbDIbDIbBdbDLbDMbDNbBhbDObDPbDQbDRbDSbCvbDTbBjbBhbDUbDVbDWbDXbDYbDZbEabEbbCCbEcbCCbxQbEdbEebEfbEgbtXbEhbEibCCbCCbEjbEkbmSbmSbmSbmSbmSbElbEmbpGbEnbEobEpbBKbEqbAwbzibgibBMbCWbCWbCWbCWbCWbCWbCWbBMbErbEsbEtbEubEvbBNbEwbExbEybEzbEAbEBbECbEDbEDbEDbEDbEEbEFbEGbDnbjobvZbEIbEJbEJbEKbELbEMaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaafaafbENbEObENaafaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaafNcuCctMcuCafNbERbERbERbwlbESbxrbETbEUbEVbEWbwlbBcbEXbBcbBcbEYbEZaaabFabFbbFcbFdbDIbDIbFebDIbFfbFgbFhbDIbBdbDLbFibFjbBhbFkbFlbFmbFnbFobCvbFpbBjbzibFqbFrbFsbFrbFtbFubtXbFvbCIbFwbCIbFxbtSbFybCJbFAbtXbFCbCCbCCbCCbCCbGNbmSbPIbFEbFFbFGbBEbFHbvlbFIbBKbBKbFJbFKbFLbFMbFNbBMbCWbCWbCWbCWbCWbCWbCWbBMbFObFPbFQbFRbFSbFTbFUbFVbtbbFWbFXbEDbFYbEDbEDbEDbEDbEDbEDbEDbDnbFZbDpbGbbGcbGdbGebGfbEMaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaafaafbEObENbGgbENbEOaafaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaekajxctyajxaekbERbGhbGibwlbGjbxrbGkbxrbxrbEWbwlbGlbGmbGnbBcbEYbEZaafbFabGobGpbGqbGrbGsbGrbGrbGtbGubGrbGrbGvbGwbGxbGybBhbGzbBhbBhbBhbBhbGAbGBbGCbGDbGEbGFbGGbGHbGIbGIbtXbGJbGKcltbGMbGQbtXbGObGPbGSbtXbGRbDqbEHbDrbFDbGWbmSbGXbGYbpFbGZbHabHbbHcbCRbHdbBKbBKbHebAwbzibgibBMbBMbHfbCWbCWbHgbHfbBMbBMbHhbHibHjbHkbHlbBNbHmbHnbtbbHobHpbHqbHqbHrbHsbHtbHqbHubHvbHwbHxbHybGabHAbHBbHCbHDbHEbEMaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaafaafbHFbEObHGbHHbHIbEObHFaafaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaekajxctyajxaekbERbGhbGibwlbGjbxrbGkbxrbxrbEWbwlbGlbGmbGnbBcbEYbEZaafbFabGobGpbGqbGrbGsbGrbGrbGtbGubGrbGrbGvbGwbGxbGybBhbGzbBhbBhbBhbBhbGAbGBbGCbGDbGEbGFbGGbGHbGIbGIbtXbGJbGKcltbGMbGQbtXbGObGPbGSbtXbGRbDqbEHbDrbFDbGWbmSbGXbGYbpFbGZbHabHbbHcbCRbHdbAQbBKbHebAwbzibgibBMbBMbHfbCWbCWbHgbHfbBMbBMbHhbHibHjbHkbHlbBNbHmbHnbtbbHobHpbHqbHqbHrbHsbHtbHqbHubHvbHwbHxbHybGabHAbHBbHCbHDbHEbEMaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaafaafbHFbEObHGbHHbHIbEObHFaafaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaeaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaafNajxajxajxctLbHKbxrbxrbHLbGjbxrbxrbxrbxrbEWbwlbHMbGnbHNbBcbEYbEZaaabFabHObHPbHQbDIbDIbHRbDIbHSbHTbHUbHVbBdbHWbHXbHYbHZbIabIbbIbbIbbIbbIbbIcbIbbIdbIebIfbIgbIhbIibIjbtSbtSbtSbtSbtSbtSbtSbtSbtSbtSbMNbMNbMNbMNbMNbMNbOnbOCbmSbmSbmSbmSbIlbImbhjbAwbAwbAwbAwbAwbAwbzibgibBMbInbIobIpbIqbIrbIsbInbItbHhbHibHjbIubIvbIwbIxbIybuwbIzbDdbIAbIAbIBbICbIDbIEbEDbEDbIFbDnbIGbGLbIIbDdbIJbIKbIKbDdaafaafaafaafaafaafaafaafaafaafaafaafaafaafaafaafaafaafaafaafaafaafbEObEObILbIMbIMbIMbINbEObEOaafaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaekctyctyctyaekbERbIObIPbIQbIRbxrbxrbISbITbIUbwlbBcbBcbBcbBcbEYbDCaafbIVbDEbIWbDGbIXbDIbIYbDIbDIbDIbDIbDIbBdbDLbIZbJabJbbJcbJcbJcbJcbJcbJcbJdbJebJfbJgbJhbJibJjbJkbJlbJmbJnbJmbJmbJmbJmbJmbJmbJmbJmbJmbJmbJmbJmbJmbJobJpbmSbGXcqlbBDbJrbBEbJsbJtbJubJvbJvbJwbJxbJgbJybJzbBMbJAbJBbJCbJDbJEbJFbJGbItbItbItbItbItbItbJHbJIbJJbJKbJLbDdbDnbDnbDnbDnbDnbDnbJMbEDbEDbDnbjobvZbgxbDdbJNbJObJPbJQaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabJRbJSbJRbIMbJTbIMctxctlbENaafaafaafaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaafNajZctzctAafNbERbERbERbwlbwlbERbERbERbwlbwlbwlaaaaaaaaabJYbJZbEZaaaaaaaafaaabBdbKabKbbKcbDIbKdbKebKfbKgbKhbKibKjbKkbKlbKmbKnbKobKpbKqbKmbKmbKmbKmbKmbKrbKsbKmbKmbKtbKmbKubKmbKmbKmbKmbKmbyebyebyebyebyebyebyebyebKvbKwbmSbKxbKybKzbKAbKBbKCbKDbKEbKFbKFbKGbKFbKFbKHbKIbBMbKJbKKbKLbKKbKMbKKbKNbKObKPbKQbKRbKSbKTbKUbyqbHnbqibKVaafbKWbKXbKYbKZbLabKZbLbbLcbLdbDnbLebsbbLfbDdbDdbDdbDdbDdaafaafaafaafaafaafaafaafaafaafaafaafaafaafaafaafaafaafaafaafaafaafbEObEObLgbIMbIMbIMbLhbEObEOaafaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
@@ -6662,18 +6665,18 @@ aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaafbBcbBcbJYbJYbJYbBcbBcaaaaaaaaaaaabJYbEYbEZaaaaaaaaaaafbMkbNnbMmbMmbMmbMmbMobYnbNpbNqbNrbKjbNsbNtbNubNvbNwbNxbNybNzbNAbNwbNwbNwbNybNBbNCbNDbNEbNFbLBbNGbNHbNIbNJbNKbLDbNLbNMbNNbNObMKbMLbNPbKvbLFbNQbMUbMUcrqbLGbNRbNSbNTbLGbMVbNUbMVbNVbNWbNXbNYbBMbNZbOabObbOcbOdbOebOfbOgbOhbOibOjbOkbOlbItbOmbZlbOobOpbOpbDnbDnbDnbDnbDnbDnbDdbDdbDdbDnbsebsbbOqbsebsebOrbjoaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaafaafbENbEObENaafaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabBcbOsbGnbOtbGnbOubBcaaaaaaaaaaaabJYbJZbEZaaaaafbJYbJYbMkbMmbMmbOwbOvbMmbOxbMobMobOzbDLbMqbOAbOBbZmbODbOEbOFbOGbOHbOIbOFbOJbOFbOKbOLbOMbLubONbOObOPbOQbORbOSbOTbOUaafbOVbOWbNObOXbMKbMLbNPbKvbLFbOYbOZbMUbPabLGcuRbPcbPdbLGbMUbPebPfbMUbMUbLFbKvbBMbItbItbItbItbJHbPgbPhbPibJHbItbItbItbItbItbPjbPkbPlbPmbPnbPobPpbPqbPpbPrbOpbPsbPtbPubPvbPwbsbbkFbjobjobjobjoabtaafaafaafaagaagaagaagaagaagaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaafaafaafaafaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaafaafbBcbPxbGnbGnbGnbPybBcaaaaaaaaaaaabJYbEYbEZaaaaafbJYbPzbPAbPBbMmbMmcbdbPDbPDbPDbPEbPFcbebMqbOAbPHccdbPJbPKbMFbPLbPMbPNbPObPPbPQbPRbPSbPSbPTbPUbLBbPVbPWbPXbPYbPZbQabQbbNLbQcbNObNObMKbMLbNPbKvbLFbQdbMUbQebLHbLGbLGbQfbLGbLGbQgbQhbQibQgbQgbLFbKvbBMbQjbQkbQkbQlbQmbKKbQnbQobQpbQqbCWbCWbCWbItbQrbQsbQtbQubQvbPobQwbQxbQybQzbOmbPtbQAbPtbPvbBRbGTbGUbjoaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaagaagaagaagaagaagaagaagaagaagaagaagaagaagaagaaaaaaaaaaaaaaaaaaaaabBcbPxbGnbGnbQDbQEbBcaaaaafaaaaaabJYbEYbDCbBcbBcbBcbQFbMkbQGbMmbMmcqmbQHbQIbQJbQKbMkcqnbMqbOAbPHcqobQLbQMbMFbMFbQNbLnbQObQPbQQbQRbMFbMFbLubQSbQTbQUbQVbQWbQXbQWbQYaafbMKbMKbMKbMKbMKbMLbyebKvbLFbQZbRabRabRbbRcbRdbRebRfbRgbMUbPebMUbMUcqpbLFbKvbBMbCWbCWbCWbRhbRibKKbRjbKKbRkbRlbCWbCWbCWbItbRmbRnbRobRpbRqbRrbRsbRtbRrbRubOpbRvbPtbRwbPvbOpbSsbGVbjoaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaagaagaagaagaagaagaagaagaagaagaagaagaagaagaagaaaaaaaaaaaaaaaaaaaaabBcbPxbGnbGnbQDbQEbBcaaaaafaaaaaabJYbEYbDCbBcbBcbBcbQFbMkbQGbMmbMmcqmbQHbQIbQJbQKbMkcqnbMqbOAbPHcqobQLbQMbMFbMFbQNbLnbQObQPbQQbQRbMFbMFbLubQSbQTbQUbQVbQWbQXbQWbQYaafbMKbMKbMKbMKbMKbMLbyebKvbLFbQZbRabRabRbbRcbRdbRebRfbRgbMUbPebMUbMUcqpbLFbKvbBMbCWbUobCWbRhbRibKKbRjbKKbRkbRlbCWbUobCWbItbRmbRnbRobRpbRqbRrbRsbRtbRrbRubOpbRvbPtbRwbPvbOpbSsbGVbjoaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaeaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaagaafaafbRzaafaafaafbBcbBcbBcbBcbBcbBcbBcbBcbBcbBcbRAbBcbBcbBcbJYbJYbJYbRBbRCbRDbREbRFbRGbRCbRHbPFbPFbPFbPFcqrbMkbMkbMkbMkbMkcqtbRKbOAbRLbKmbRMbRNbPNbRObPNbLnbMFbMFbMFbQRbRPbRQbRQbRRbRSbRTbNGbRUbRVbRWbNKbLDbNLbRXbRYbRYbMKbMLbyebKvbRZbSabSabSabSbbScbMUbSdbMUbMUbMUbPebMUbMUbMUbLFbKvbBMbCWbCWbCWbSebSfbQobSgbKKbShbSibQkbQkbSjbItbSkbSlbPlbSmbSnbPobQybSobRrbSpbOpbSqbSqbSqbPvbSrbSsbGVbjoaafaafaafaafaafaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabStbSubSubSubSubSvbSwbSwbSxbSybSzbSAbSBbSCbSDbSEbBcbGnbGnbGnbGnbGnbGnbGnbSFbSGbSHbSIbSJbSKbSKbSKbSKbSLbSMbSMbSMbSNcqubSObDybDybSPbBccqnbMqbOAbSQbSRbSSbSTbRQbRQbSUbSVbRQbRQbSWbSXbSYbMFbSZbTabTbbTcbMFbTdbTebTfbOUaafbOVbTgbThbTibMKbMLbNPbTjbTkbTkbTkbTlbLFbTmbQZbTnbTobTpbTqbTrbTsbTsbTtbLFbKvbBMbItbItbItbItbTubTvbRjbTwbTubItbItbItbItbItbTxbTybTzbTAbTBbTCbTCbTCbTCbTDbOmbSqbSqbTEbPvbTFbSsbGVbjobjobjoaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaafaagaaaaafaaaaaabJYbJYbJYbGnbTHbTIbTJbTKbTLbBcbTMbJYbJYbJYbJYbJYbJYbJYbJYbDCbTNbTObTObTObTObTObTObTObTObTPbTPcqxbTPbTPbTQbTRbBccqnbMqbOAbSQbTSbTTbTUbTVbPSbTWbTXbPSbPSbTYbTZbUabUbbUcbUdbUebUfbMFbTdbUgbUhbQabQbbNLbUibRYbRYbMKbMLbNPbUjbyebyebyebNYbLFbUkbMUbMUbUlbUmbUnbUobUpbUobUnbLFbKvbBMbQjbQkbQkbUqbQmbKKbQnbQobUrbUsbCWbCWbCWbItbUtbUubUvbUwbRnbRpbUxbUybUzbUAbOpbSqbSqbSqbPvbTFbSsbGVbsebsebjoaafaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaafaagaagaagaagaagbUDbGnbUDbGnbUEbTIbTIbUFbGnbBcbGnbJYaaaaaaaafaaaaaaaafaaabDCbTNbTObUGbUHbUIbUJbUKbULbUGbUMbUNcqCcqybTPbTPbTRbBccqDbMqbOAbURbUSbUTbUTbUUbKmbKmbKmbKmbKmbUVbUWbLnbLnbLnbUXbMFbTbbMFbTdbTebUYbOUaafbMKbMKbMKbMKbMKbMLbNPbUjbyebUZbzibNYbMMbVabVbbVcbVdbVebVfbVgbUpbVgbVhbLFbKvbBMbCWbVibCWbVjbRibKKbRjbKKbRkbVkbCWbVibCWbItbVlbVmbVnbVobVpbVqbVrbVsbVtbVubOmbVvbVwbVxbPvbSqbSsbHzbjobsebjobjobjoaagaagaafaafaafaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaafaagaaaaafaaaaaabJYbJYbJYbGnbTHbTIbTJbTKbTLbBcbTMbJYbJYbJYbJYbJYbJYbJYbJYbDCbTNbTObTObTObTObTObTObTObTObTPbTPcqxbTPbTPbTQbTRbBccqnbMqbOAbSQbTSbTTbTUbTVbPSbTWbTXbPSbPSbTYbTZbUabUbbUcbUdbUebUfbMFbTdbUgbUhbQabQbbNLbUibRYbRYbMKbMLbNPbUjbyebyebyebNYbLFbUkbMUbMUbUlbUmbUnbVibUpbVibUnbLFbKvbBMbQjbQkbQkbUqbQmbKKbQnbQobUrbUsbCWbCWbCWbItbUtbUubUvbUwbRnbRpbUxbUybUzbUAbOpbSqbSqbSqbPvbTFbSsbGVbsebsebjoaafaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaafaagaagaagaagaagbUDbGnbUDbGnbUEbTIbTIbUFbGnbBcbGnbJYaaaaaaaafaaaaaaaafaaabDCbTNbTObUGbUHbUIbUJbUKbULbUGbUMbUNcqCcqybTPbTPbTRbBccqDbMqbOAbURbUSbUTbUTbUUbKmbKmbKmbKmbKmbUVbUWbLnbLnbLnbUXbMFbTbbMFbTdbTebUYbOUaafbMKbMKbMKbMKbMKbMLbNPbUjbyebUZbzibNYbMMbVabVbbVcbVdbVebVfbVgbUpbVgbVhbLFbKvbBMbCWcqUbCWbVjbRibKKbRjbKKbRkbVkbCWcqUbCWbItbVlbVmbVnbVobVpbVqbVrbVsbVtbVubOmbVvbVwbVxbPvbSqbSsbHzbjobsebjobjobjoaagaagaafaafaafaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaafaafbJYbJYbJYbVzbVAbVBbVCbVDbGnbVEbGnbJYaaaaaaaafaaaaaaaafaaabDCbTNbTObUGbVFbVGbVHbVIbVJbUGbVKbVLcqEbVNbVObTPbTRbBccqnbMqbOAbVPbVQbKmbVRbVSbKmbVTbVUbVVbKmbVWbQRbVXbLnbVYbUfbMFbUdbVZbWabRVbWbbNKbLDbNLbWcbWdbWebMKbMLbyebUjbyebABbzibNYbLFbWfbWgbWhbWibUmbWgbWjbUpbWjbNVbNXbKvbBMbCWbCWbCWbWkbWlbQobSgbKKbShbWmbQkbQkbSjbBMbPvbWnbWobWobPvbPvbWpbWqbWrbWsbWtbWubTCbWvbSqbSqbSsbGVbjobWwbjobWxbjoaafaafaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaafaafaafbJYbWybWzbWzbWAbTLbWBbBcbJYbJYaaaaaaaaaaaaaaaaaaaaabDCbTNbTObWCbWDbWEbVHbWFbWCbWCbVKbWGcqGcqFbWIbTPbTRbBccqnbMqbWJbWKbWKbWLbWMbWNbWObWPbWQbWRbKmbMFbQRbWSbWTbVYbWUbMFbUdbVZbTdbTebWVbOUaafbOVbWWbWXbWYbMKbMLbyebUjbyebGHbGHbNYbLFbLGbWZbXabLGbXbbLGbLGbLGbLGbLGbLFbKvbBMbItbItbItbItbTubXcbRjbXdbTubItbItbItbItbBMbRrbXebRrbRrbRrbPvbWpbWqbXfbXgbXhbXibUwbXjbPvbSqbSsbGVbjobsebsebsebXkaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaFZaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaafaafaafaafaafaafaafaafaafaafaafaafaafbBcbBcbBcbBcbBcbBcbVEbBcbBcbBcbBcaafaaaaaabXlaaaaaaaaaaaaaaabEZbTNbTObWCbWCbXmbXnbXobWCbXpbXqbXrcqIcqHbXsbTPbTRbBccqJbXwbCrbWKbXxbXybXybXzbXAbXBbXCbXDbKmbXEbXFbVXbLnbVYbXGbMFbXHbVZbTdbXIbXJbQabQbbNLbXKbWdbWdbMKbMLbNPbUjbyebXLbzibNYbXMbSabSabXNbLGbIHbIkbQBbyebXRbXSbKwbKvbBMbQjbQkbQkbXTbQmbKKbQnbQobXUbXVbCWbCWbCWbBMbXWbRrbRrbRrbRrbPvbXXbXXbXYbXZbOpbOpbUwbOpbPvbOpbSsbGVbjobYabYbbYcbXkaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabfabfabfabfabfabfabfabfabfabqabfabfabfabfabfaaaaaabBcbGnbGnbGnbGnbGnbGnbGnbGnbWBbJYaafaaaaaaaafaaIbYdaaaaaaaaabEZbTNbTObYebYfbYgbYhbYibYjbYkbYlbYmcqMcqKbYobTPbYpbYqbYrbYsbGybWKbYtbXybYubYvbYwbYxbYybYzbYAbNFbYBbLnbLnbLnbYCbMFbYDbYEbTdbTebMFbOUaafbMKbMKbMKbMKbMKbMLbNPbUjbyebYFbzibYGbYHbTkbYIbYJbyebRybQCbTGbyebYNbKFbYObYPbBMbCWbCWbCWbYQbRibKKbRjbKKbRkbYRbCWbCWbCWbBMbYSbRrbYTbRrbRrbYUbYVbYWbYXbYYbOpbUwbUwbYZbPvbBRbZabUBbjobZcbZdbsebXkaaaaaaaaaaaaaaaaaaaaeaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabfabfabfabfabfabfabfabfabfabqabfabfabfabfabfaaaaaabBcbGnbGnbGnbGnbGnbGnbGnbGnbWBbJYaafaaaaaaaafaaIbYdaaaaaaaaabEZbTNbTObYebYfbYgbYhbYibYjbYkbYlbYmcqMcqKbYobTPbYpbYqbYrbYsbGybWKbYtbXybYubYvbYwbYxbYybYzbYAbNFbYBbLnbLnbLnbYCbMFbYDbYEbTdbTebMFbOUaafbMKbMKbMKbMKbMKbMLbNPbUjbyebYFbzibYGbYHbTkbYIbYJbyebRybQCbTGbyebYNbKFbYObYPbBMbCWbUobCWbYQbRibKKbRjbKKbRkbYRbCWbUobCWbBMbYSbRrbYTbRrbRrbYUbYVbYWbYXbYYbOpbUwbUwbYZbPvbBRbZabUBbjobZcbZdbsebXkaaaaaaaaaaaaaaaaaaaaeaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabfaaaaafaaaaafaaaaafaaaacfaaaaafaaaaafaaaabfaafaafbBcbZebGnbBcbBcbBcbRAbBcbBcbBcbBcaaaaaaaaaaaIbZfbZgaaIaaIaafbEZbTNbTObZhbWCbUGbUGbUGbWCbZibZjbZkcqGcqNcqPbTPbBcbBcbZnbZobZpbWKbWKbZqbXybZrbZsbZtbZsbZubKmbMFbZvbZwbZxbZybONbZzbZAbZBbWabRVbZCbNKbLDbNLbZDbZEbZEbMKbMLbNPbUjbyebyebyebZFbZGbyebZHbZIbyebyebZJbyebyebZIbZKbZLbZMbBMbCWbCWbCWbZNbZObQobZPbKKbShbZQbQkbQkbSjbBMbRrbRrbZRbRrbRrbPvbXXbXXbZSbZTbOpbZUbZVbZWbPvboUbZabGVbjobjobjobsebjoaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabfaaabZXbZYbZZaaabZXbZYbZZaaabZXbZYbZZaaaabfaaaaaabBccaacabbBccacbGnbGncadbOucaebBcaaaaaaaaacafaaIaaIaafaaaaaabEZbTNbTObWCcagcahbUGcaibWCbWCbVKcajcqGcqKcakbTPcalcamcancaocapcaqcarcascatcascatcaucatcavbKmcawcaxcaybPSbPSbPUbRPcazbRUbPVbTecaAbOUaafbOVcaBcaCcaDbMKbMLbyebUjbzicaEcaFbZFcaGbyebZHcaHcaIcaJcaKcaLcaIcaMbZHbgxcaNbBMbBMbBMbBMbBMbBMcaOcaPcaObBMbBMbBMbBMbBMbBMbPvbPvbPvbPvbPvbPvcaQcaQcaRcaSbPvbPvbPvbPvbPvbjobRxbGVbjocaTcaUbsebjoaafaafaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabfaafbZXcaVbZZaaabZXcaVbZZaaabZXcaVbZZaafaafaaaaaabBcbJYbJYbBcbBccaWcaXbOubGnbQDbBcaaaaaaaaaaaaaafaaaaaaaaaaaabDCbTNbTObUGcaYcaZbUGcbacbbbUGbVKcbccqEcqQcqVcqUcqXcqWbOAaZDcbgcbhcbicbjcbkcblcbmcbnbXycbobKmcbpbMFbZvbRPbRQcbqcbrcbscbtbLAcbucbvbQabQbbNLcbwbZEbZEbMKbMLbyecbxcbycbzcbAcbBcbCbyecbDcbEcbFcbGcbHcbGcbIcbEcbJbgxcbKbjoaaaaaaaaaaafaaaaaacbLaaaaafaaaaaaaaaaaabjocbMbMfbkGcbNcbNbPvcbOcbOcaRbQtcbPcbQbsebsebsebBRbRxbHzbjocbRbsebsebjobjobjoaagaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabfaafbZXcaVbZZaaabZXcaVbZZaaabZXcaVbZZaafaafaaaaaabBcbJYbJYbBcbBccaWcaXbOubGnbQDbBcaaaaaaaaaaaaaafaaaaaaaaaaaabDCbTNbTObUGcaYcaZbUGcbacbbbUGbVKcbccqEcqQcqVcuPcqXcqWbOAaZDcbgcbhcbicbjcbkcblcbmcbnbXycbobKmcbpbMFbZvbRPbRQcbqcbrcbscbtbLAcbucbvbQabQbbNLcbwbZEbZEbMKbMLbyecbxcbycbzcbAcbBcbCbyecbDcbEcbFcbGcbHcbGcbIcbEcbJbgxcbKbjoaaaaaaaaaaafaaaaaacbLaaaaafaaaaaaaaaaaabjocbMbMfbkGcbNcbNbPvcbOcbOcaRbQtcbPcbQbsebsebsebBRbRxbHzbjocbRbsebsebjobjobjoaagaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabfaaabZXcaVbZZaafbZXcaVbZZaafbZXcaVbZZaaaaafaafaafaafaafaafaafbBcbBcbBcbBcbRAbBcbBcaaaaaaaaaaaaaafaaaaaaaafaaabDCbTNbTObUGcbScbTcbUcbVcbWbUGcbXcbYcbZccaccbbTPccccqYcceccfccgcchcciccjcckcclccmccnccoccpccqccrbMFbZvcctbMFbMFbMFcctcctcctbTeaVSaVRaafbMKbMKbMKbMKbMKbMLbyebYFccuccvccwccxccybyebyecczccAccBbKwccCccDbyebyebgxcbKbjoaaaaaaaaaaafaaaaaacbLaaaaafaaaaaaaaaaaabjobseccEbqvccFccGbPvccHccHccIbQtbPvbOpbjoccJccKbBRbRxbGVbsebsebsebUCbkHbVybkHaagaagaafaafaafaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaafaafbZXcaVbZZaaabZXcaVbZZaaabZXcaVbZZaafaafaaaaaaaaaaaaaaaaaabBcccRbBcbGnbGnbBcaafaaaaafaaaaaaaafaaaaaaaafaaabDCbTNbTObTObTObTObTObTObTObTObTPbTPbTPbTPbTPbTPbBcccSbBcccTccUccUccUccVccWccXccUccYccZcdabKmbMFbOQccscctbMFbMFbMFbMHbSYcctbTecctbKmaafaafaafaafaafaafbMLcdjcdjcdjcdkcvdcdjcdjcdjcdmbyecdncdncdocdncdnbyebABbZGcbKbjobXkbXkbXkbjobXkbXkcdpbXkbjobXkbXkbXkbXkbjobjobRxcdqbjobjobPvbPvbPvcdrcdsbPvbBRbjobYcbseboTbRxbUBbjobjocdtbjobjobjobjoaagaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabfabfabfaafaaabZXcaVbZZaaabZXcaVbZZaaabZXcaVbZZaaaaafaaaaaacducdvcdvcdvcdvbBcbBccdwbGnbBcbJYbJYbJYbJYbJYbJYbJYbJYbJYbBcbDCbTNbBccdxcdycdzcdzcdzcdzcdzcdzcdzcdzcdzcdAcdAcdzcdBcaWccTcdCcdDcdEcdFcdGcdHccUcdIcdJcdKbKmcdbcdcbPXcddcdecdfcdecddcdgcddcdhcctbKmbKmbKmaaaaaaaafaaacdVcdWcdXcdYcdZceacebceccdjcedceecefcegcehccBccBbzibzibZGbntceiceiceiceiceiceiceicejcekcekcekcekcekcekcelcekcemcekcekcenceocepceqbXOcesbjobjocetceoceuceocevbGVbjocewbsebsebjoaaaaafaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
-10
View File
@@ -1300,17 +1300,7 @@ while True:
print sender+" Has now joined"
users.append(sender)
#####
if ".fi" in data[0] and sender.lower() == "skibiliano":
operators.append(sender)
if sender.lower() not in peopleheknows[0]:
if data[0].split("!")[1] in peopleheknows[1]:
appendion = "...you do seem familiar however"
else:
appendion = ""
if data[1][1].lower() == channel or data[1][1].lower() == channel[1:]:
conn.privmsg(data[1][1],CORE_DATA.greeting.replace("USER",sender)+" "+appendion)
else:
conn.privmsg(data[1][1],"Hello! Haven't seen you here before! Happy to meet you! %s" %(appendion))
peopleheknows[0].append(sender.lower())
peopleheknows[1].append(data[0].split("!")[1])
with open("peopleheknows.cache","w") as peoplehecache:
@@ -5,7 +5,7 @@
/obj/machinery/atmospherics/binary/circulator
name = "circulator/heat exchanger"
desc = "A gas circulator pump and heat exchanger."
icon = 'icons/obj/pipes.dmi'
icon = 'icons/obj/atmospherics/pipes/simple.dmi'
icon_state = "circ1-off"
var/side = 1 // 1=left 2=right
@@ -92,24 +92,18 @@ Passive gate is similar to the regular pump except:
return 1
/obj/machinery/atmospherics/binary/passive_gate/ui_interact(mob/user, ui_key = "main")
/obj/machinery/atmospherics/binary/passive_gate/ui_interact(mob/user, ui_key = "main", var/datum/nanoui/ui = null)
if(stat & (BROKEN|NOPOWER))
return
var/data = list()
ui = SSnano.push_open_or_new_ui(user, src, ui_key, ui, "atmos_gas_pump.tmpl", name, 400, 120, 0)
/obj/machinery/atmospherics/binary/passive_gate/get_ui_data()
var/data = list()
data["on"] = on
data["pressure_set"] = round(target_pressure*100) //Nano UI can't handle rounded non-integers, apparently.
data["max_pressure"] = MAX_OUTPUT_PRESSURE
var/datum/nanoui/ui = SSnano.get_open_ui(user, src, ui_key)
if (!ui)
ui = new /datum/nanoui(user, src, ui_key, "atmos_gas_pump.tmpl", name, 400, 120)
ui.set_initial_data(data)
ui.open()
ui.set_auto_update(1)
else
ui.push_data(data)
return data
/obj/machinery/atmospherics/binary/passive_gate/atmosinit()
..()
@@ -97,24 +97,18 @@ Thus, the two variables affect pump operation are set in New():
return 1
/obj/machinery/atmospherics/binary/pump/ui_interact(mob/user, ui_key = "main")
/obj/machinery/atmospherics/binary/pump/ui_interact(mob/user, ui_key = "main", var/datum/nanoui/ui = null)
if(stat & (BROKEN|NOPOWER))
return
var/data = list()
ui = SSnano.push_open_or_new_ui(user, src, ui_key, ui, "atmos_gas_pump.tmpl", name, 400, 120, 0)
/obj/machinery/atmospherics/binary/pump/get_ui_data()
var/data = list()
data["on"] = on
data["pressure_set"] = round(target_pressure*100) //Nano UI can't handle rounded non-integers, apparently.
data["max_pressure"] = MAX_OUTPUT_PRESSURE
var/datum/nanoui/ui = SSnano.get_open_ui(user, src, ui_key)
if (!ui)
ui = new /datum/nanoui(user, src, ui_key, "atmos_gas_pump.tmpl", name, 400, 120)
ui.set_initial_data(data)
ui.open()
ui.set_auto_update(1)
else
ui.push_data(data)
return data
/obj/machinery/atmospherics/binary/pump/atmosinit()
..()
@@ -93,24 +93,18 @@ Thus, the two variables affect pump operation are set in New():
return 1
/obj/machinery/atmospherics/binary/volume_pump/ui_interact(mob/user, ui_key = "main")
/obj/machinery/atmospherics/binary/volume_pump/ui_interact(mob/user, ui_key = "main", var/datum/nanoui/ui = null)
if(stat & (BROKEN|NOPOWER))
return
var/data = list()
ui = SSnano.push_open_or_new_ui(user, src, ui_key, ui, "atmos_gas_pump.tmpl", name, 400, 120, 0)
/obj/machinery/atmospherics/binary/volume_pump/get_ui_data()
var/data = list()
data["on"] = on
data["transfer_rate"] = round(transfer_rate*100) //Nano UI can't handle rounded non-integers, apparently.
data["max_rate"] = MAX_TRANSFER_RATE
var/datum/nanoui/ui = SSnano.get_open_ui(user, src, ui_key)
if (!ui)
ui = new /datum/nanoui(user, src, ui_key, "atmos_gas_pump.tmpl", name, 400, 120)
ui.set_initial_data(data)
ui.open()
ui.set_auto_update(1)
else
ui.push_data(data)
return data
/obj/machinery/atmospherics/binary/volume_pump/atmosinit()
..()
@@ -152,25 +152,19 @@ Filter types:
ui_interact(user)
/obj/machinery/atmospherics/trinary/filter/ui_interact(mob/user, ui_key = "main")
/obj/machinery/atmospherics/trinary/filter/ui_interact(mob/user, ui_key = "main", var/datum/nanoui/ui = null)
if(stat & (BROKEN|NOPOWER))
return
var/data = list()
ui = SSnano.push_open_or_new_ui(user, src, ui_key, ui, "atmos_filter.tmpl", name, 400, 320, 0)
/obj/machinery/atmospherics/trinary/filter/get_ui_data()
var/data = list()
data["on"] = on
data["pressure_set"] = round(target_pressure*100) //Nano UI can't handle rounded non-integers, apparently.
data["max_pressure"] = MAX_OUTPUT_PRESSURE
data["filter_type"] = filter_type
var/datum/nanoui/ui = SSnano.get_open_ui(user, src, ui_key)
if (!ui)
ui = new /datum/nanoui(user, src, ui_key, "atmos_filter.tmpl", name, 400, 320)
ui.set_initial_data(data)
ui.open()
ui.set_auto_update(1)
else
ui.push_data(data)
return data
/obj/machinery/atmospherics/trinary/filter/Topic(href, href_list)
if(..())
@@ -108,26 +108,20 @@
ui_interact(user)
/obj/machinery/atmospherics/trinary/mixer/ui_interact(mob/user, ui_key = "main")
/obj/machinery/atmospherics/trinary/mixer/ui_interact(mob/user, ui_key = "main", var/datum/nanoui/ui = null)
if(stat & (BROKEN|NOPOWER))
return
var/data = list()
ui = SSnano.push_open_or_new_ui(user, src, ui_key, ui, "atmos_mixer.tmpl", name, 400, 320, 0)
/obj/machinery/atmospherics/trinary/mixer/get_ui_data()
var/data = list()
data["on"] = on
data["pressure_set"] = round(target_pressure*100) //Nano UI can't handle rounded non-integers, apparently.
data["max_pressure"] = MAX_OUTPUT_PRESSURE
data["node1_concentration"] = round(node1_concentration*100)
data["node2_concentration"] = round(node2_concentration*100)
var/datum/nanoui/ui = SSnano.get_open_ui(user, src, ui_key)
if (!ui)
ui = new /datum/nanoui(user, src, ui_key, "atmos_mixer.tmpl", name, 400, 320)
ui.set_initial_data(data)
ui.open()
ui.set_auto_update(1)
else
ui.push_data(data)
return data
/obj/machinery/atmospherics/trinary/mixer/Topic(href,href_list)
if(..()) return
@@ -1,7 +1,6 @@
/obj/machinery/atmospherics/unary/cold_sink
icon = 'icons/obj/atmospherics/cold_sink.dmi'
icon_state = "intact_off"
density = 1
icon_state = "cold_map"
use_power = 1
name = "cold sink"
@@ -12,15 +11,17 @@
var/current_temperature = T20C
var/current_heat_capacity = 50000 //totally random
/obj/machinery/atmospherics/unary/cold_sink/update_icon()
if(node)
icon_state = "intact_[on?("on"):("off")]"
/obj/machinery/atmospherics/unary/cold_sink/update_icon_nopipes()
overlays.Cut()
if(showpipe)
overlays += getpipeimage('icons/obj/atmospherics/unary_devices.dmi', "scrub_cap", initialize_directions) //scrub_cap works for now
if(!node || !on || stat & (NOPOWER|BROKEN))
icon_state = "cold_off"
return
else
icon_state = "exposed"
on = 0
return
icon_state = "cold_on"
/obj/machinery/atmospherics/unary/cold_sink/process_atmos()
..()
@@ -1,6 +1,6 @@
/obj/machinery/atmospherics/unary/generator_input
icon = 'icons/obj/atmospherics/heat_exchanger.dmi'
icon_state = "intact"
icon_state = "he_intact"
density = 1
name = "generator input"
@@ -1,8 +1,6 @@
/obj/machinery/atmospherics/unary/heat_exchanger
icon = 'icons/obj/atmospherics/heat_exchanger.dmi'
icon_state = "intact"
density = 1
icon_state = "he_intact"
name = "heat exchanger"
desc = "Exchanges heat between two input gases. Setup for fast heat transfer"
@@ -14,9 +12,10 @@
/obj/machinery/atmospherics/unary/heat_exchanger/update_icon()
if(node)
icon_state = "intact"
icon_state = "he_intact"
color = node.color
else
icon_state = "exposed"
icon_state = "he_exposed"
return
@@ -1,9 +1,7 @@
/obj/machinery/atmospherics/unary/heat_reservoir
//currently the same code as cold_sink but anticipating process() changes
icon = 'icons/obj/atmospherics/cold_sink.dmi'
icon_state = "intact_off"
density = 1
icon_state = "cold_map"
use_power = 1
name = "heat reservoir"
@@ -14,15 +12,17 @@
var/current_temperature = T20C
var/current_heat_capacity = 50000 //totally random
/obj/machinery/atmospherics/unary/heat_reservoir/update_icon()
if(node)
icon_state = "intact_[on?("on"):("off")]"
/obj/machinery/atmospherics/unary/heat_reservoir/update_icon_nopipes()
overlays.Cut()
if(showpipe)
overlays += getpipeimage('icons/obj/atmospherics/unary_devices.dmi', "scrub_cap", initialize_directions) //scrub_cap works for now
if(!node || !on || stat & (NOPOWER|BROKEN))
icon_state = "cold_off"
return
else
icon_state = "exposed"
on = 0
return
icon_state = "cold_on"
/obj/machinery/atmospherics/unary/heat_reservoir/process_atmos()
..()
@@ -1,10 +1,9 @@
/obj/machinery/atmospherics/unary/oxygen_generator
icon = 'icons/obj/atmospherics/oxygen_generator.dmi'
icon_state = "intact_off"
density = 1
icon_state = "o2gen_map"
name = "oxygen generator"
desc = ""
desc = "Generates oxygen"
dir = SOUTH
initialize_directions = SOUTH
@@ -13,15 +12,18 @@
var/oxygen_content = 10
/obj/machinery/atmospherics/unary/oxygen_generator/update_icon()
if(node)
icon_state = "intact_[on?("on"):("off")]"
/obj/machinery/atmospherics/unary/oxygen_generator/update_icon_nopipes()
overlays.Cut()
if(showpipe)
overlays += getpipeimage('icons/obj/atmospherics/unary_devices.dmi', "scrub_cap", initialize_directions) //it works for now
if(!node || !on || stat & BROKEN)
icon_state = "o2gen_off"
return
else
icon_state = "exposed_off"
on = 0
return
icon_state = "o2gen_on"
/obj/machinery/atmospherics/unary/oxygen_generator/New()
..()
+2 -2
View File
@@ -3,7 +3,7 @@
////////////
/obj/machinery/atmospherics/pipe/simple/heat_exchanging
icon = 'icons/obj/pipes/heat.dmi'
icon = 'icons/obj/atmospherics/pipes/heat.dmi'
icon_state = "intact"
level = 2
var/initialize_directions_he
@@ -106,7 +106,7 @@
//HE Junctions
////////////////
/obj/machinery/atmospherics/pipe/simple/heat_exchanging/junction
icon = 'icons/obj/pipes/junction.dmi'
icon = 'icons/obj/atmospherics/pipes/junction.dmi'
icon_state = "intact"
level = 2
minimum_temperature_difference = 300
+4 -4
View File
@@ -4,7 +4,7 @@
*/
/obj/machinery/atmospherics/pipe/manifold
icon = 'icons/obj/atmospherics/pipe_manifold.dmi'
icon = 'icons/obj/atmospherics/pipes/manifold.dmi'
icon_state = "manifold"
name = "pipe manifold"
@@ -100,13 +100,13 @@
//Add non-broken pieces
if(node1)
overlays += getpipeimage('icons/obj/atmospherics/pipe_manifold.dmi', "manifold_full[invis]", get_dir(src,node1))
overlays += getpipeimage('icons/obj/atmospherics/pipes/manifold.dmi', "manifold_full[invis]", get_dir(src,node1))
if(node2)
overlays += getpipeimage('icons/obj/atmospherics/pipe_manifold.dmi', "manifold_full[invis]", get_dir(src,node2))
overlays += getpipeimage('icons/obj/atmospherics/pipes/manifold.dmi', "manifold_full[invis]", get_dir(src,node2))
if(node3)
overlays += getpipeimage('icons/obj/atmospherics/pipe_manifold.dmi', "manifold_full[invis]", get_dir(src,node3))
overlays += getpipeimage('icons/obj/atmospherics/pipes/manifold.dmi', "manifold_full[invis]", get_dir(src,node3))
/obj/machinery/atmospherics/pipe/manifold/hide(var/i)
if(level == 1 && istype(loc, /turf/simulated))
+5 -5
View File
@@ -3,7 +3,7 @@
4-way manifold
*/
/obj/machinery/atmospherics/pipe/manifold4w
icon = 'icons/obj/atmospherics/pipe_manifold.dmi'
icon = 'icons/obj/atmospherics/pipes/manifold.dmi'
icon_state = "manifold4w"
name = "4-way pipe manifold"
@@ -112,16 +112,16 @@
//Add non-broken pieces
if(node1)
overlays += getpipeimage('icons/obj/atmospherics/pipe_manifold.dmi', "manifold_full[invis]", NORTH)
overlays += getpipeimage('icons/obj/atmospherics/pipes/manifold.dmi', "manifold_full[invis]", NORTH)
if(node2)
overlays += getpipeimage('icons/obj/atmospherics/pipe_manifold.dmi', "manifold_full[invis]", SOUTH)
overlays += getpipeimage('icons/obj/atmospherics/pipes/manifold.dmi', "manifold_full[invis]", SOUTH)
if(node3)
overlays += getpipeimage('icons/obj/atmospherics/pipe_manifold.dmi', "manifold_full[invis]", EAST)
overlays += getpipeimage('icons/obj/atmospherics/pipes/manifold.dmi', "manifold_full[invis]", EAST)
if(node4)
overlays += getpipeimage('icons/obj/atmospherics/pipe_manifold.dmi', "manifold_full[invis]", WEST)
overlays += getpipeimage('icons/obj/atmospherics/pipes/manifold.dmi', "manifold_full[invis]", WEST)
/obj/machinery/atmospherics/pipe/manifold4w/update_node_icon()
..()
+1 -1
View File
@@ -5,7 +5,7 @@ The regular pipe you see everywhere, including bent ones.
*/
/obj/machinery/atmospherics/pipe/simple
icon = 'icons/obj/pipes.dmi'
icon = 'icons/obj/atmospherics/pipes/simple.dmi'
icon_state = "intact"
name = "pipe"
+2 -2
View File
@@ -1,5 +1,5 @@
/obj/machinery/atmospherics/unary/tank
icon = 'icons/obj/atmospherics/pipe_tank.dmi'
icon = 'icons/obj/atmospherics/pipes/pressure_tank.dmi'
icon_state = "generic"
name = "pressure tank"
desc = "A large vessel containing pressurized gas."
@@ -16,7 +16,7 @@
col = node.pipe_color
else
state = "pipe_exposed"
underlays += getpipeimage('icons/obj/atmospherics/pipe_tank.dmi', state, initialize_directions, col)
underlays += getpipeimage('icons/obj/atmospherics/pipes/pressure_tank.dmi', state, initialize_directions, col)
/obj/machinery/atmospherics/unary/tank/carbon_dioxide
name = "pressure tank (Carbon Dioxide)"
+7 -1
View File
@@ -108,6 +108,7 @@
#define STAGE_THREE 5
#define STAGE_FOUR 7
#define STAGE_FIVE 9
#define STAGE_SIX 11 //From supermatter shard
//zlevel defines, can be overridden for different maps in the appropriate _maps file.
#define ZLEVEL_SPACEMAX 7
@@ -159,4 +160,9 @@
#define FUZZY_CHANCE_LOW 50
#define CHANCE_TALK 15
#define MAXCOIL 30
#define RESIZE_DEFAULT_SIZE 1
#define RESIZE_DEFAULT_SIZE 1
//transfer_ai() defines. Main proc in ai_core.dm
#define AI_TRANS_TO_CARD 1 //Downloading AI to InteliCard.
#define AI_TRANS_FROM_CARD 2 //Uploading AI from InteliCard
#define AI_MECH_HACK 3 //Malfunctioning AI hijacking mecha
+1 -1
View File
@@ -1196,7 +1196,7 @@ var/list/WALLITEMS = list(
/obj/machinery/newscaster, /obj/machinery/firealarm, /obj/structure/noticeboard, /obj/machinery/door_control,
/obj/machinery/computer/security/telescreen, /obj/machinery/embedded_controller/radio/simple_vent_controller,
/obj/item/weapon/storage/secure/safe, /obj/machinery/door_timer, /obj/machinery/flasher, /obj/machinery/keycard_auth,
/obj/structure/mirror, /obj/structure/closet/fireaxecabinet, /obj/machinery/computer/security/telescreen/entertainment
/obj/structure/mirror, /obj/structure/fireaxecabinet, /obj/machinery/computer/security/telescreen/entertainment
)
/proc/gotwallitem(loc, dir)
var/locdir = get_step(loc, dir)
+1
View File
@@ -7,6 +7,7 @@ var/global/list/machines = list() //NOTE: this is a list of ALL machines now
var/global/list/navbeacons = list() //list of all bot nagivation beacons, used for patrolling.
var/global/list/deliverybeacons = list() //list of all MULEbot delivery beacons.
var/global/list/deliverybeacontags = list() //list of all tags associated with delivery beacons.
var/global/list/nuke_list = list()
var/global/list/chemical_reactions_list //list of all /datum/chemical_reaction datums. Used during chemical reactions
var/global/list/chemical_reagents_list //list of all /datum/reagent datums indexed by reagent id. Used by chemistry stuff
+6 -3
View File
@@ -39,7 +39,10 @@
CtrlShiftClickOn(A)
return
if(modifiers["middle"])
MiddleClickOn(A)
if(controlled_mech) //Are we piloting a mech? Placed here so the modifiers are not overridden.
controlled_mech.click_action(A, src) //Override AI normal click behavior.
return
return
if(modifiers["shift"])
ShiftClickOn(A)
@@ -116,7 +119,7 @@
return
/atom/proc/AICtrlShiftClick()
return
/* Airlocks */
/obj/machinery/door/airlock/AICtrlClick() // Bolts doors
if(emagged)
@@ -152,7 +155,7 @@
else
Topic("aiDisable=11", list("aiDisable"="11"), 1)
return
/* APC */
/obj/machinery/power/apc/AICtrlClick() // turns off/on APCs.
toggle_breaker()
+1 -1
View File
@@ -198,7 +198,7 @@ var/datum/global_hud/global_hud = new()
else if(isdrone(mymob))
drone_hud(ui_style)
if(istype(mymob.loc,/obj/mecha))
if(istype(mymob.loc,/obj/mecha) && ishuman(mymob))
show_hud(HUD_STYLE_REDUCED)
//Version denotes which style should be displayed. blank or 0 means "next version"
+16 -2
View File
@@ -115,8 +115,8 @@
var/alert_desc_blue_upto = "The station has received reliable information about possible hostile activity on the station. Security staff may have weapons visible, random searches are permitted."
var/alert_desc_blue_downto = "The immediate threat has passed. Security may no longer have weapons drawn at all times, but may continue to have them visible. Random searches are still allowed."
var/alert_desc_red_upto = "There is an immediate serious threat to the station. Security may have weapons unholstered at all times. Random searches are allowed and advised."
var/alert_desc_red_downto = "The self-destruct mechanism has been deactivated, there is still however an immediate serious threat to the station. Security may have weapons unholstered at all times, random searches are allowed and advised."
var/alert_desc_delta = "The station's self-destruct mechanism has been engaged. All crew are instructed to obey all instructions given by heads of staff. Any violations of these orders can be punished by death. This is not a drill."
var/alert_desc_red_downto = "The station's destruction has been averted. There is still however an immediate serious threat to the station. Security may have weapons unholstered at all times, random searches are allowed and advised."
var/alert_desc_delta = "Destruction of the station is imminent. All crew are instructed to obey all instructions given by heads of staff. Any violations of these orders can be punished by death. This is not a drill."
var/health_threshold_crit = 0
var/health_threshold_dead = -100
@@ -489,6 +489,20 @@
config.no_summon_events = 1
if("reactionary_explosions")
config.reactionary_explosions = 1
if("bombcap")
var/BombCap = text2num(value)
if (!BombCap)
continue
if (BombCap < 4)
BombCap = 4
if (BombCap > 128)
BombCap = 128
MAX_EX_DEVESTATION_RANGE = round(BombCap/4)
MAX_EX_HEAVY_RANGE = round(BombCap/2)
MAX_EX_LIGHT_RANGE = BombCap
MAX_EX_FLASH_RANGE = BombCap
MAX_EX_FLAME_RANGE = BombCap
else
diary << "Unknown setting in configuration: '[name]'"
+1 -1
View File
@@ -3,7 +3,7 @@ var/datum/subsystem/nano/SSnano
/datum/subsystem/nano
name = "NanoUI"
can_fire = 1
wait = 5
wait = 10
priority = 16
var/list/open_uis = list() //a list of current open /nanoui UIs, grouped by src_object and ui_key
+1
View File
@@ -208,6 +208,7 @@
/datum/disease/transformation/corgi
name = "The Barkening"
cure_text = "Death"
cures = list("adminordrazine")
agent = "Fell Doge Majicks"
desc = "This disease transforms the victim into a corgi."
visibility_flags = 0
+3 -3
View File
@@ -286,9 +286,9 @@ var/list/all_supply_groups = list(supply_emergency,supply_security,supply_engine
/datum/supply_packs/security/armory/ballistic
name = "Combat Shotguns Crate"
contains = list(/obj/item/weapon/gun/projectile/shotgun/combat,
/obj/item/weapon/gun/projectile/shotgun/combat,
/obj/item/weapon/gun/projectile/shotgun/combat,
contains = list(/obj/item/weapon/gun/projectile/shotgun/automatic/combat,
/obj/item/weapon/gun/projectile/shotgun/automatic/combat,
/obj/item/weapon/gun/projectile/shotgun/automatic/combat,
/obj/item/weapon/storage/belt/bandolier,
/obj/item/weapon/storage/belt/bandolier,
/obj/item/weapon/storage/belt/bandolier)
+81 -1
View File
@@ -268,10 +268,24 @@ var/list/uplink_items = list()
cost = 2
gamemodes = list(/datum/game_mode/nuclear,/datum/game_mode/gang)
/datum/uplink_item/ammo/ammobag
name = "Ammo Duffelbag - Shotgun Ammo Grab Bag"
desc = "A duffelbag filled with Bulldog ammo to kit out an entire team, at a discounted price."
item = /obj/item/weapon/storage/backpack/dufflebag/syndieammo/loaded
cost = 10 //bulk buyer's discount. Very useful if you're buying a mech and dont have TC left to buy people non-shotgun guns
gamemodes = list(/datum/game_mode/nuclear)
/datum/uplink_item/ammo/bullslug
name = "Drum Magazine - 12g Slugs"
desc = "An additional 8-round slug magazine for use in the Bulldog shotgun. Now 8 times less likely to shoot your pals."
item = /obj/item/ammo_box/magazine/m12g
cost = 2
gamemodes = list(/datum/game_mode/nuclear)
/datum/uplink_item/ammo/bullbuck
name = "Drum Magazine - 12g Buckshot"
desc = "An additional 8-round buckshot magazine for use in the Bulldog shotgun. Front towards enemy."
item = /obj/item/ammo_box/magazine/m12g
item = /obj/item/ammo_box/magazine/m12g/buckshot
cost = 2
gamemodes = list(/datum/game_mode/nuclear)
@@ -286,6 +300,13 @@ var/list/uplink_items = list()
name = "Drum Magazine - 12g Dragon's Breath"
desc = "An alternative 8-round dragon's breath magazine for use in the Bulldog shotgun. I'm a fire starter, twisted fire starter!"
item = /obj/item/ammo_box/magazine/m12g/dragon
cost = 2
gamemodes = list(/datum/game_mode/nuclear)
/datum/uplink_item/ammo/bulltoxin
name = "Drum Magazine - 12g Bioterror"
desc = "An alternative 8-round toxic magazine for use in the Bulldog shotgun. Contains debilitating toxins to make your target die an agonizing death."
item = /obj/item/ammo_box/magazine/m12g/bioterror
cost = 3
gamemodes = list(/datum/game_mode/nuclear)
@@ -389,6 +410,14 @@ var/list/uplink_items = list()
item = /obj/item/toy/carpplushie/dehy_carp
cost = 3
/datum/uplink_item/stealthy_weapons/door_charge
name = "Explosive Airlock Charge"
desc = "A small, easily concealable device. It can be applied to an open airlock panel, and the next person to open that airlock will be knocked down in an explosion. The airlock's maintenance panel will also be destroyed by this."
item = /obj/item/device/doorCharge
cost = 5
surplus = 6
excludefrom = list(/datum/game_mode/nuclear)
// STEALTHY TOOLS
/datum/uplink_item/stealthy_tools
@@ -639,11 +668,62 @@ var/list/uplink_items = list()
item = /obj/item/weapon/storage/box/syndie_kit/imp_explosive
cost = 6
//CYBERNETIC IMPLANTS
/datum/uplink_item/cyber_implants
category = "Cybernetic Implants"
gamemodes = list(/datum/game_mode/nuclear)
surplus = 0
/datum/uplink_item/cyber_implants/thermals
name = "Thermal Vision Implant"
desc = "These cybernetic eyes will give you thermal vision."
item = /obj/item/cybernetic_implant/eyes/thermals
cost = 8
/datum/uplink_item/cyber_implants/xray
name = "X-Ray Vision Implant"
desc = "These cybernetic eyes will give you X-ray vision."
item = /obj/item/cybernetic_implant/eyes/xray
cost = 10
/datum/uplink_item/cyber_implants/antistun
name = "CNS Rebooter Implant"
desc = "This implant will help you get back up on your feet faster after being stunned."
item = /obj/item/cybernetic_implant/brain/anti_stun
cost = 12
/datum/uplink_item/cyber_implants/antidrop
name = "Anti-Drop Implant"
desc = "This cybernetic brain implant will allow you to force your hand muscles to contract, preventing item dropping."
item = /obj/item/cybernetic_implant/brain/anti_drop
cost = 8
/datum/uplink_item/cyber_implants/reviver
name = "Reviver Implant"
desc = "This implant will attempt to revive you if you lose consciousness."
item = /obj/item/cybernetic_implant/chest/reviver
cost = 8
/datum/uplink_item/cyber_implants/nutriment
name = "Nutriment Pump Implant PLUS"
desc = "This implant will pump you with nutriments and electrolytes so you don't go hungry in action."
item = /obj/item/cybernetic_implant/chest/nutriment/plus
cost = 5
/datum/uplink_item/cyber_implants/bundle
name = "Cybernetic Implants Bundle"
desc = "A random selection of cybernetic implants. Guaranteed 5 high quality implants."
item = /obj/item/weapon/storage/box/cyber_implants
cost = 40
// POINTLESS BADASSERY
/datum/uplink_item/badass
category = "(Pointless) Badassery"
surplus = 0
last = 1
/datum/uplink_item/badass/bundle
name = "Syndicate Bundle"
+2 -1
View File
@@ -134,7 +134,8 @@ var/list/wireColours = list("red", "blue", "green", "black", "orange", "brown",
if(istype(I, /obj/item/device/assembly))
var/obj/item/device/assembly/A = I;
if(A.attachable)
L.drop_item()
if(!L.drop_item())
return
Attach(colour, A)
else
L << "<span class='warning'>You need a attachable assembly!</span>"
+3
View File
@@ -449,3 +449,6 @@ var/list/blood_splatter_icons = list()
/atom/proc/narsie_act()
return
/atom/proc/storage_contents_dump_act(obj/item/weapon/storage/src_object, mob/user)
return 0
+2 -1
View File
@@ -519,7 +519,8 @@
/obj/machinery/computer/scan_consolenew/attackby(obj/item/I as obj, mob/user as mob, params)
if (istype(I, /obj/item/weapon/disk/data)) //INSERT SOME DISKETTES
if (!src.diskette)
user.drop_item()
if(!user.drop_item())
return
I.loc = src
src.diskette = I
user << "<span class='notice'>You insert [I].</span>"
+2 -2
View File
@@ -263,7 +263,7 @@
for(var/team_number=1,team_number<=teams,team_number++)
var/obj/machinery/abductor/console/con = get_team_console(team_number)
var/datum/objective/objective = team_objectives[team_number]
if (con.experiment.points > objective.target_amount)
if (con.experiment.points >= objective.target_amount)
SSshuttle.emergency.request(null, 0.5)
finished = 1
return ..()
@@ -279,7 +279,7 @@
var/datum/mind/smind = scientists[team_number]
var/mob/living/carbon/human/agent = amind.current
var/mob/living/carbon/human/scientist = smind.current
if (console.experiment.points > objective.target_amount)
if (console.experiment.points >= objective.target_amount)
world << "<font size = 3 color='green'><b>[team_name] team fullfilled its mission! </b></font>"
world << "<b>Team Members : [agent.name]([agent.ckey]),[scientist.name]([scientist.ckey])</b>"
else
@@ -22,15 +22,6 @@
var/stealth_armor = list(melee = 15, bullet = 15, laser = 15, energy = 15, bomb = 15, bio = 15, rad = 15)
var/combat_armor = list(melee = 50, bullet = 50, laser = 50, energy = 50, bomb = 50, bio = 50, rad = 50)
var/obj/machinery/camera/portable/vest_cam = null
/obj/item/clothing/suit/armor/abductor/vest/New()
..()
vest_cam = new /obj/machinery/camera/portable(src)
vest_cam.c_tag = "Agent Vest Cam"
vest_cam.network = list("Abductor")
/obj/item/clothing/suit/armor/abductor/vest/proc/flip_mode()
switch(mode)
if(VEST_STEALTH)
@@ -60,7 +60,8 @@
/obj/machinery/abductor/gland_dispenser/attackby(obj/item/weapon/W, mob/user, params)
if(istype(W, /obj/item/gland))
user.drop_item()
if(!user.drop_item())
return
W.loc = src
for(var/i=1,i<=gland_colors.len,i++)
if(gland_types[i] == W.type)
+11 -3
View File
@@ -83,8 +83,7 @@
H.hair_style = null
H.update_hair()
human_overlays = H.overlays
if(overmind && overmind.blob_reagent_datum)
adjustcolors(overmind.blob_reagent_datum.color)
update_icons()
H.loc = src
loc.visible_message("<span class='warning'>The corpse of [H.name] suddenly rises!</span>")
@@ -120,8 +119,18 @@
..()
/mob/living/simple_animal/hostile/blob/blobspore/update_icons()
..()
if(overmind && overmind.blob_reagent_datum)
adjustcolors(overmind.blob_reagent_datum.color)
else
adjustcolors(color) //to ensure zombie/other overlays update
/mob/living/simple_animal/hostile/blob/blobspore/adjustcolors(var/a_color)
color = a_color
if(is_zombie)
overlays.Cut()
overlays = human_overlays
@@ -130,7 +139,6 @@
color = initial(color)//looks better.
overlays += I
/////////////////
// BLOBBERNAUT //
/////////////////
+44 -28
View File
@@ -6,10 +6,10 @@
density = 1
anchored = 1.0
layer = 3.6
var/health = 200
var/maxhealth = 300
var/health = 300
var/gang
var/operating = 0
var/broken = 0
/obj/machinery/dominator/New()
if(!istype(ticker.mode, /datum/game_mode/gang))
@@ -19,7 +19,7 @@
/obj/machinery/dominator/examine(mob/user)
..()
if(broken)
if(operating == -1)
user << "<span class='danger'>It looks completely busted.</span>"
return
@@ -38,7 +38,7 @@
user << "<span class='notice'>Hostile Takeover of [station_name()] successful. Have a great day.</span>"
else
user << "<span class='notice'>System on standby.</span>"
user << "<span class='danger'>System Integrity: [health/2]%</span>"
user << "<span class='danger'>System Integrity: [round((health/maxhealth)*100,1)]%</span>"
/obj/machinery/dominator/proc/healthcheck(var/damage)
@@ -51,23 +51,22 @@
health -= damage
switch(health)
if(101 to INFINITY)
if(prob(damage*2))
sparks.set_up(5, 1, src)
sparks.start()
if(1 to 100)
if(health > (maxhealth/2))
if(prob(damage*2))
sparks.set_up(5, 1, src)
sparks.start()
iconname += "-damaged"
else
sparks.set_up(5, 1, src)
sparks.start()
iconname += "-damaged"
if(!broken)
if(operating != -1)
if(health <= 0)
set_broken()
else
icon_state = iconname
if(health <= -50)
if(health <= -100)
new /obj/item/stack/sheet/plasteel(src.loc)
qdel(src)
@@ -77,22 +76,37 @@
mode.A_timer = "OFFLINE"
if(gang == "B")
mode.B_timer = "OFFLINE"
if(!isnum(mode.A_timer) && !isnum(mode.B_timer))
SSshuttle.emergencyNoEscape = 0
if(SSshuttle.emergency.mode == SHUTTLE_STRANDED)
SSshuttle.emergency.mode = SHUTTLE_DOCKED
SSshuttle.emergency.timer = world.time
priority_announce("Hostile enviroment resolved. You have 3 minutes to board the Emergency Shuttle.", null, 'sound/AI/shuttledock.ogg', "Priority")
else
priority_announce("All hostile activity within station systems have ceased.","Network Alert")
if(gang)
if(!isnum(mode.A_timer) && !isnum(mode.B_timer))
SSshuttle.emergencyNoEscape = 0
if(SSshuttle.emergency.mode == SHUTTLE_STRANDED)
SSshuttle.emergency.mode = SHUTTLE_DOCKED
SSshuttle.emergency.timer = world.time
priority_announce("Hostile enviroment resolved. You have 3 minutes to board the Emergency Shuttle.", null, 'sound/AI/shuttledock.ogg', "Priority")
else
priority_announce("All hostile activity within station systems have ceased.","Network Alert")
if(get_security_level() == "delta")
set_security_level("red")
for(var/obj/item/weapon/pinpointer/pointer in world)
pointer.scandisk() //Reset the pinpointer
else if(isnum(mode.A_timer) || isnum(mode.B_timer))
for(var/obj/machinery/dominator/dom in world)
if(dom.operating)
for(var/obj/item/weapon/pinpointer/pointer in world)
pointer.the_disk = dom //The pinpointer now tracks the dominator's location
break
ticker.mode.message_gangtools(((gang=="A") ? ticker.mode.A_tools : ticker.mode.B_tools),"Hostile takeover cancelled: Dominator is no longer operational.",1,1)
SetLuminosity(0)
icon_state = "dominator-broken"
broken = 1
operating = -1
/obj/machinery/dominator/Destroy()
if(!broken)
if(operating != -1)
set_broken()
..()
@@ -116,9 +130,12 @@
/obj/machinery/dominator/bullet_act(var/obj/item/projectile/Proj)
if(Proj.damage)
if((Proj.damage_type == BRUTE || Proj.damage_type == BURN))
var/damage = Proj.damage
if(Proj.forcedodge)
damage *= 0.5
playsound(src, 'sound/effects/bang.ogg', 50, 1)
visible_message("<span class='danger'>[src] was hit by [Proj].</span>")
healthcheck(Proj.damage)
healthcheck(damage)
..()
/obj/machinery/dominator/blob_act()
@@ -129,7 +146,7 @@
return
/obj/machinery/dominator/attack_hand(mob/user)
if(operating||broken)
if(operating)
examine(user)
return
@@ -155,13 +172,12 @@
user << "<span class='warning'>Error: Hostile Takeover is already in progress.</span>"
return
var/time = max(180,900 - ((round((gang_territory/start_state.num_territories)*200, 1) - 60) * 15))
var/time = max(300,900 - ((round((gang_territory/start_state.num_territories)*200, 1) - 60) * 15))
if(alert(user,"With [round((gang_territory/start_state.num_territories)*100, 1)]% station control, a takeover will require [time] seconds.\nYour gang will be unable to gain influence while it is active.\nThe entire station will likely be alerted to it once it starts.\nAre you ready?","Confirm","Ready","Later") == "Ready")
if ((!in_range(src, user) || !istype(src.loc, /turf)))
return 0
var/area/srcloc = get_area(src.loc)
gang = tempgang
mode.domination(gang,1,srcloc.name)
mode.domination(gang,1,src)
src.name = "[gang_name(gang)] Gang [src.name]"
healthcheck(0)
operating = 1
+87 -49
View File
@@ -9,16 +9,14 @@
var/obj/item/device/gangtool/A_tools = list()
var/obj/item/device/gangtool/B_tools = list()
var/datum/gang_points/gang_points
var/A_style
var/B_style
var/list/A_territory = list()
var/list/B_territory = list()
var/list/A_territory_new = list()
var/list/A_territory_lost = list()
var/list/B_territory_new = list()
var/list/B_territory_lost = list()
var/gang_A_style
var/gang_A_headgear
var/gang_B_style
var/gang_B_headgear
/datum/game_mode/gang
name = "gang war"
@@ -85,7 +83,7 @@
if(isnum(B_timer))
B_timer -= seconds
ticker.mode.check_win()
check_win()
/datum/game_mode/gang/proc/assign_bosses()
var/datum/mind/boss = pick(antag_candidates)
@@ -117,17 +115,20 @@
boss_mind.current << "<B>Objective #[obj_count]</B>: [objective.explanation_text]"
obj_count++
/datum/game_mode/gang/proc/domination(var/gang,var/modifier=1,var/dominatorloc)
/datum/game_mode/gang/proc/domination(var/gang,var/modifier=1,var/obj/dominator)
if(gang=="A")
A_timer = max(180,900 - ((round((ticker.mode.A_territory.len/start_state.num_territories)*200, 1) - 60) * 15)) * modifier
A_timer = max(180,900 - ((round((A_territory.len/start_state.num_territories)*200, 1) - 60) * 15)) * modifier
if(gang=="B")
B_timer = max(180,900 - ((round((ticker.mode.B_territory.len/start_state.num_territories)*200, 1) - 60) * 15)) * modifier
if(gang && dominatorloc)
priority_announce("Hostile runtimes detected in all station systems. A network breach by the [gang_name(gang)] Gang has been located in [dominatorloc].","Network Alert")
if(get_security_level() != "delta")
set_security_level("red")
B_timer = max(180,900 - ((round((B_territory.len/start_state.num_territories)*200, 1) - 60) * 15)) * modifier
if(gang && dominator)
var/area/domloc = get_area(dominator.loc)
priority_announce("Hostile runtimes detected in all station systems. A network breach by the [gang_name(gang)] Gang has been located in [domloc].","Network Alert")
set_security_level("delta")
SSshuttle.emergencyNoEscape = 1
for(var/obj/item/weapon/pinpointer/point in world)
point.the_disk = dominator //The pinpointer now tracks the dominator's location
///////////////////////////////////////////////////////////////////////////
//This equips the bosses with their gear, and makes the clown not clumsy//
///////////////////////////////////////////////////////////////////////////
@@ -180,6 +181,7 @@
return .
//Used by recallers when purchasing a gang outfit. First time a gang outfit is purchased the buyer decides a gang style which is stored so gang outfits are uniform
/datum/game_mode/proc/gang_outfit(mob/user,var/obj/item/device/gangtool/gangtool,var/gang)
if(!user || !gangtool || !gang)
@@ -187,36 +189,53 @@
if(!gangtool.can_use(user))
return 0
var/gang_style_list = list("Gang Colors","Leather Jackets","Black Suits","White Suits")
var/gang_style_list = list("Gang Colors","Gang Colored Suits","Black Suits","White Suits","Leather Jackets","Leather Overcoats","Tactical Turtlenecks","Soviet Uniforms")
var/style
if(gang == "A")
if(!gang_A_style)
gang_A_style = input("Pick an outfit style.", "Pick Style") as null|anything in gang_style_list
style = gang_A_style
if(!A_style)
A_style = input("Pick an outfit style.", "Pick Style") as null|anything in gang_style_list
style = A_style
if(gang == "B")
if(!gang_B_style)
gang_B_style = input("Pick an outfit style.", "Pick Style") as null|anything in gang_style_list
style = gang_B_style
if(!B_style)
B_style = input("Pick an outfit style.", "Pick Style") as null|anything in gang_style_list
style = B_style
if(!style)
return 0
if(gangtool.can_use(user) && (((gang == "A") ? gang_points.A : gang_points.B) >= 1))
var/outfit_path
switch(style)
if("Gang Colors")
if(gang == "A")
new /obj/item/clothing/under/color/blue(user.loc)
outfit_path = /obj/item/clothing/under/color/blue
if(gang == "B")
new /obj/item/clothing/under/color/red(user.loc)
if("Leather Jackets")
new /obj/item/clothing/suit/jacket/leather(user.loc)
outfit_path = /obj/item/clothing/under/color/red
if("Gang Colored Suits")
if(gang == "A")
outfit_path = /obj/item/clothing/under/suit_jacket/navy
if(gang == "B")
outfit_path = /obj/item/clothing/under/suit_jacket/burgundy
if("Black Suits")
new /obj/item/clothing/under/suit_jacket/charcoal(user.loc)
outfit_path = /obj/item/clothing/under/suit_jacket/charcoal
if("White Suits")
new /obj/item/clothing/under/suit_jacket/white(user.loc)
outfit_path = /obj/item/clothing/under/suit_jacket/white
if("Leather Jackets")
outfit_path = /obj/item/clothing/suit/jacket/leather
if("Leather Overcoats")
outfit_path = /obj/item/clothing/suit/jacket/leather/overcoat
if("Soviet Uniforms")
outfit_path = /obj/item/clothing/under/soviet
if("Tactical Turtlenecks")
outfit_path = /obj/item/clothing/under/syndicate
return 1
if(outfit_path)
var/obj/item/clothing/outfit = new outfit_path(user.loc)
outfit.armor = list(melee = 10, bullet = 10, laser = 10, energy = 0, bomb = 0, bio = 0, rad = 0)
outfit.desc += " Combat-tailored for the [gang_name(gang)] Gang."
outfit.gang = gang
return 1
return 0
@@ -258,7 +277,7 @@
if(check && isloyal(gangster_mind.current)) //Check to see if the potential gangster is implanted
return 0
if(gangster_mind in (A_bosses | A_gang | B_bosses | B_gang))
return 0
return 1
if(gang == "A")
A_gang += gangster_mind
else
@@ -275,7 +294,7 @@
gangster_mind.current.attack_log += "\[[time_stamp()]\] <font color='red'>Has been converted to the [gang=="A" ? "[gang_name("A")] Gang (A)" : "[gang_name("B")] Gang (B)"]!</font>"
gangster_mind.special_role = "[gang=="A" ? "[gang_name("A")] Gang (A)" : "[gang_name("B")] Gang (B)"]"
update_gang_icons_added(gangster_mind,gang)
return 1
return 2
////////////////////////////////////////////////////////////////////
//Deals with players reverting to neutral (Not a gangster anymore)//
////////////////////////////////////////////////////////////////////
@@ -310,7 +329,7 @@
if(!silent)
gangster_mind.current.visible_message("The frame beeps contentedly from the MMI before initalizing it.")
gangster_mind.current << "<FONT size=3 color=red><B>The frame's firmware detects and deletes your criminal behavior! You are no longer a gangster!</B></FONT>"
message_admins("[key_name_admin(gangster_mind.current)] <A HREF='?_src_=holder;adminmoreinfo=\ref[gangster_mind.current]'>?</A> has been borged while being a member of the [gang=="A" ? "[gang_name("A")] Gang (A)" : "[gang_name("B")] Gang (B)"] Gang. They are no longer a gangster.")
message_admins("[key_name_admin(gangster_mind.current)] <A HREF='?_src_=holder;adminmoreinfo=\ref[gangster_mind.current]'>?</A> (<A HREF='?_src_=holder;adminplayerobservefollow=\ref[gangster_mind.current]'>FLW</A>) has been borged while being a member of the [gang=="A" ? "[gang_name("A")] Gang (A)" : "[gang_name("B")] Gang (B)"] Gang. They are no longer a gangster.")
else
if(!silent)
gangster_mind.current.Paralyse(5)
@@ -376,7 +395,7 @@
if(A_bosses.len || A_gang.len)
if(winner)
world << "<br><b>The [gang_name("A")] Gang was [winner=="A" ? "<font color=green>victorious</font>" : "<font color=red>defeated</font>"] with [round((ticker.mode.A_territory.len/start_state.num_territories)*100, 1)]% control of the station!</b>"
world << "<br><b>The [gang_name("A")] Gang was [winner=="A" ? "<font color=green>victorious</font>" : "<font color=red>defeated</font>"] with [round((A_territory.len/start_state.num_territories)*100, 1)]% control of the station!</b>"
world << "<br>The [gang_name("A")] Gang Bosses were:"
gang_membership_report(A_bosses)
world << "<br>The [gang_name("A")] Gangsters were:"
@@ -385,7 +404,7 @@
if(B_bosses.len || B_gang.len)
if(winner)
world << "<br><b>The [gang_name("B")] Gang was [winner=="B" ? "<font color=green>victorious</font>" : "<font color=red>defeated</font>"] with [round((ticker.mode.B_territory.len/start_state.num_territories)*100, 1)]% control of the station!</b></b>"
world << "<br><b>The [gang_name("B")] Gang was [winner=="B" ? "<font color=green>victorious</font>" : "<font color=red>defeated</font>"] with [round((B_territory.len/start_state.num_territories)*100, 1)]% control of the station!</b></b>"
world << "<br>The [gang_name("B")] Gang Bosses were:"
gang_membership_report(B_bosses)
world << "<br>The [gang_name("B")] Gangsters were:"
@@ -454,39 +473,59 @@
if(istype(ticker.mode, /datum/game_mode/gang))
gangmode = ticker.mode
//Count uniformed gangsters
var/A_uniformed = 0
var/B_uniformed = 0
for(var/datum/mind/gangmind in (ticker.mode.A_gang|ticker.mode.A_bosses|ticker.mode.B_gang|ticker.mode.B_bosses))
if(ishuman(gangmind.current))
var/mob/living/carbon/human/gangster = gangmind.current
//Gangster must be alive and on station
if((gangster.stat == DEAD) || (gangster.z > ZLEVEL_STATION))
continue
if(gangster.w_uniform)
var/obj/item/clothing/outfit = gangster.w_uniform
if(outfit.gang == "A")
A_uniformed ++
if(outfit.gang == "B")
B_uniformed ++
if(gangster.wear_suit)
var/obj/item/clothing/outfit = gangster.wear_suit
if(outfit.gang == "A")
A_uniformed ++
if(outfit.gang == "B")
B_uniformed ++
//Calculate and report influence growth
ticker.mode.message_gangtools(ticker.mode.A_tools,"*---------*<br><b>[gang_name("A")] Gang Status Report:</b>")
var/A_message = ""
if(gangmode && isnum(gangmode.A_timer))
var/new_time = max(180,gangmode.A_timer - (ticker.mode.A_territory.len * 2))
var/new_time = max(180,gangmode.A_timer - ((ticker.mode.A_territory.len + A_uniformed) * 2))
if(new_time < gangmode.A_timer)
A_message += "Your takeover has been rushed by [gangmode.A_timer - new_time] seconds for holding on to [ticker.mode.A_territory.len] territories. "
A_message += "Takeover shortened by [gangmode.A_timer - new_time] seconds for defending [ticker.mode.A_territory.len] territories and [A_uniformed] uniformed gangsters.<BR>"
gangmode.A_timer = new_time
A_message += "[gangmode.A_timer] seconds remain in hostile takeover."
else
var/A_new = min(999,A + 15 + ticker.mode.A_territory.len)
var/A_new = min(999,A + 15 + (A_uniformed * 2) + ticker.mode.A_territory.len)
if(A_new != A)
A_message += "Your gang has gained <b>[A_new - A] Influence</b> for holding on to [ticker.mode.A_territory.len] territories."
if(A_new == 999)
A_message += " You cannot gain any more influence without spending some with this device."
A_message += "Gang influence has increased by [A_new - A] for defending [ticker.mode.A_territory.len] territories and [A_uniformed] uniformed gangsters.<BR>"
A = A_new
A_message += "Your gang now has [A_new] influence."
ticker.mode.message_gangtools(ticker.mode.A_tools,A_message,0)
ticker.mode.message_gangtools(ticker.mode.B_tools,"<b>[gang_name("B")] Gang Status Report:</b>")
var/B_message = ""
if(gangmode && isnum(gangmode.B_timer))
var/new_time = max(180,gangmode.B_timer - (ticker.mode.B_territory.len * 2))
var/new_time = max(180,gangmode.B_timer - ((ticker.mode.B_territory.len + B_uniformed) * 2))
if(new_time < gangmode.B_timer)
B_message += "Your takeover has been rushed by [gangmode.B_timer - new_time] seconds for holding on to [ticker.mode.B_territory.len] territories. "
A_message += "Takeover shortened by [gangmode.B_timer - new_time] seconds for defending [ticker.mode.B_territory.len] territories and [B_uniformed] uniformed gangsters.<BR>"
gangmode.B_timer = new_time
B_message += "[gangmode.B_timer] seconds remain in hostile takeover."
B_message += "[gangmode.B_timer] seconds remain hostile takeover."
else
var/B_new = min(999,B + 15 + ticker.mode.B_territory.len)
var/B_new = min(999,B + 15 + (B_uniformed * 2) + ticker.mode.B_territory.len)
if(B_new != B)
B_message += "Your gang has gained <b>[B_new - B] Influence</b> for holding on to [ticker.mode.B_territory.len] territories."
if(B_new == 999)
B_message += " You cannot gain any more influence without spending some with this device."
A_message += "Gang influence has increased by [B_new - B] for defending [ticker.mode.B_territory.len] territories and [B_uniformed] uniformed gangsters.<BR>"
B = B_new
B_message += "Your gang now has [B_new] influence."
ticker.mode.message_gangtools(ticker.mode.B_tools,B_message,0)
@@ -512,10 +551,10 @@
ticker.mode.B_territory += area
//Report territory changes
ticker.mode.message_gangtools(ticker.mode.A_tools,"<b>[ticker.mode.A_territory_new.len] new territories</b>[A_added_names]",0)
ticker.mode.message_gangtools(ticker.mode.B_tools,"<b>[ticker.mode.B_territory_new.len] new territories</b>[B_added_names]",0,)
ticker.mode.message_gangtools(ticker.mode.A_tools,"<b>[ticker.mode.A_territory_lost.len] territories lost</b>[A_lost_names]",0,1)
ticker.mode.message_gangtools(ticker.mode.B_tools,"<b>[ticker.mode.B_territory_lost.len] territories lost</b>[B_lost_names]",0,1)
ticker.mode.message_gangtools(ticker.mode.A_tools,"<b>[ticker.mode.A_territory_new.len] new territories</b><BR>[A_added_names]",0)
ticker.mode.message_gangtools(ticker.mode.B_tools,"<b>[ticker.mode.B_territory_new.len] new territories</b><BR>[B_added_names]",0,)
ticker.mode.message_gangtools(ticker.mode.A_tools,"<b>[ticker.mode.A_territory_lost.len] territories lost</b><BR>[A_lost_names]",0)
ticker.mode.message_gangtools(ticker.mode.B_tools,"<b>[ticker.mode.B_territory_lost.len] territories lost</b><BR>[B_lost_names]",0)
//Clear the lists
ticker.mode.A_territory_new = list()
@@ -535,7 +574,6 @@
//Restart the counter
start()
////////////////////////////////////////////////
//Sends a message to the boss via his gangtool//
////////////////////////////////////////////////
+24 -13
View File
@@ -78,18 +78,24 @@
dat += "(10 Influence) "
if(points >= 10)
dat += "<a href='?src=\ref[src];purchase=ammo'>10mm Ammo</a><br>"
dat += "<a href='?src=\ref[src];purchase=10mmammo'>10mm Ammo</a><br>"
else
dat += "10mm Ammo<br>"
dat += "(50 Influence) "
if(points >= 50)
dat += "<a href='?src=\ref[src];purchase=SMG'>Thompson SMG</a><br>"
dat += "(40 Influence) "
if(points >= 40)
dat += "<a href='?src=\ref[src];purchase=uzi'>Mini Uzi</a><br>"
else
dat += "Thompson SMG<br>"
dat += "Mini Uzi<br>"
dat += "(25 Influence) "
if(points >= 25)
dat += "<a href='?src=\ref[src];purchase=9mmammo'>Uzi Ammo</a><br>"
else
dat += "Uzi Magazine<br>"
dat += "<br>"
dat += "<B>Purchase Utilities:</B><br>"
dat += "<B>Purchase Equipment:</B><br>"
dat += "(5 Influence) "
if(points >= 5)
@@ -124,7 +130,7 @@
dat += "<a href='?src=\ref[src];purchase=dominator'><b>Station Dominator</b></a><br>"
else
dat += "Station Dominator<br>"
dat += "<i>(Estimated Takeover Time: [round(max(180,900 - ((round((gang_territory/start_state.num_territories)*200, 10) - 60) * 15))/60,1)] minutes)</i><br>"
dat += "<i>(Estimated Takeover Time: [round(max(300,900 - ((round((gang_territory/start_state.num_territories)*200, 10) - 60) * 15))/60,1)] minutes)</i><br>"
dat += "<br>"
dat += "<a href='?src=\ref[src];choice=refresh'>Refresh</a><br>"
@@ -163,14 +169,18 @@
if(points >= 20)
item_type = /obj/item/weapon/gun/projectile/automatic/pistol
points = 20
if("ammo")
if("10mmammo")
if(points >= 10)
item_type = /obj/item/ammo_box/magazine/m10mm
points = 10
if("SMG")
if(points >= 50)
item_type = /obj/item/weapon/gun/projectile/automatic/tommygun
points = 50
if("uzi")
if(points >= 40)
item_type = /obj/item/weapon/gun/projectile/automatic/mini_uzi
points = 40
if("9mmammo")
if(points >= 25)
item_type = /obj/item/ammo_box/magazine/uzim9mm
points = 25
if("vest")
if(points >= 10)
item_type = /obj/item/clothing/suit/armor/bulletproof
@@ -356,4 +366,5 @@
return 0
/obj/item/device/gangtool/lt
boss = 0
boss = 0
outfits = 1
+34 -25
View File
@@ -38,7 +38,7 @@
/datum/AI_Module/large/upgrade_turrets
module_name = "AI Turret upgrade"
mod_pick_name = "turret"
description = "Improves the firing speed and health of all AI turrets. This effect is permanent."
description = "Improves the power and health of all AI turrets. This effect is permanent."
cost = 50
one_time = 1
@@ -55,14 +55,15 @@
for(var/obj/machinery/porta_turret/turret in machines)
if(turret.ai) //Make sure only the AI's turrets are affected.
turret.health += 30
turret.shot_delay = 10 //Standard portable turret delay is 15.
turret.eprojectile = /obj/item/projectile/beam/heavylaser //Once you see it, you will know what it means to FEAR.
turret.eshot_sound = 'sound/weapons/lasercannonfire.ogg'
src << "<span class='notice'>Turrets upgraded.</span>"
/datum/AI_Module/large/lockdown
module_name = "Hostile Station Lockdown"
mod_pick_name = "lockdown"
description = "Take control of the airlock, blast door and fire control networks, locking them down. Caution! This command also electrifies all airlocks."
cost = 20
description = "Overload the airlock, blast door and fire control networks, locking them down. Caution! This command also electrifies all airlocks. The networks will automatically reset after 90 seconds."
cost = 30
one_time = 1
power_type = /mob/living/silicon/ai/proc/lockdown
@@ -74,9 +75,6 @@
if(!canUseTopic())
return
if(malf_cooldown)
return
var/obj/machinery/door/airlock/AL
for(var/obj/machinery/door/D in airlocks)
if(D.z != ZLEVEL_STATION && D.z != ZLEVEL_MINING)
@@ -88,8 +86,7 @@
AL.locked = 0 //For airlocks that were bolted open.
AL.safe = 0 //DOOR CRUSH
AL.close()
AL.locked = 1 //Bolt it!
AL.lights = 0 //Stealth bolt for a classic AI door trap.
AL.bolt() //Bolt it!
AL.secondsElectrified = -1 //Shock it!
else if(!D.stat) //So that only powered doors are closed.
D.close() //Close ALL the doors!
@@ -98,39 +95,30 @@
if(C)
C.post_status("alert", "lockdown")
src.verbs += /mob/living/silicon/ai/proc/disablelockdown
src << "<span class='warning'>Lockdown Initiated.</span>"
malf_cooldown = 1
spawn(30)
malf_cooldown = 0
verbs -= /mob/living/silicon/ai/proc/lockdown
minor_announce("Hostile runtime detected in door controllers. Isolation Lockdown protocols are now in effect. Please remain calm.","Network Alert:", 1)
src << "<span class = 'warning'>Lockdown Initiated. Network reset in 90 seconds.</span>"
spawn(900) //90 Seconds.
disablelockdown() //Reset the lockdown after 90 seconds.
/mob/living/silicon/ai/proc/disablelockdown()
set category = "Malfunction"
set name = "Disable Lockdown"
if(!canUseTopic())
return
if(malf_cooldown)
return
var/obj/machinery/door/airlock/AL
for(var/obj/machinery/door/D in airlocks)
spawn()
if(istype(D, /obj/machinery/door/airlock))
AL = D
if(AL.canAIControl() && !AL.stat) //Must be powered and have working AI wire.
AL.locked = 0
AL.unbolt()
AL.secondsElectrified = 0
AL.open()
AL.safe = 1
AL.lights = 1 //Essentially reset the airlock to normal.
else if(!D.stat) //Opens only powered doors.
D.open() //Open everything!
src << "<span class='notice'>Lockdown Lifted.</span>"
malf_cooldown = 1
spawn(30)
malf_cooldown = 0
minor_announce("Automatic system reboot complete. Have a secure day.","Network reset:")
/datum/AI_Module/large/disable_rcd
module_name = "RCD disable"
@@ -157,6 +145,27 @@
src << "<span class='warning>RCD-disabling pulse emitted.</span>"
else src << "<span class='notice'>Out of uses.</span>"
/datum/AI_Module/large/mecha_domination
module_name = "Viral Mech Domination"
mod_pick_name = "mechjack"
description = "Hack into a mech's onboard computer, shunting all processes into it and ejecting any occupants. Once uploaded to the mech, it is impossible to leave.\
Do not allow the mech to leave the station's vicinity or allow it to be destroyed."
cost = 30
one_time = 1
power_type = /mob/living/silicon/ai/proc/mech_takeover
/mob/living/silicon/ai/proc/mech_takeover()
set name = "Compile Mecha Virus"
set category = "Malfunction"
set desc = "Target a mech by clicking it. Click the appropriate command when ready."
if(stat)
return
can_dominate_mechs = 1 //Yep. This is all it does. Honk!
src << "Virus package compiled. Select a target mech at any time. <b>You must remain on the station at all times. Loss of signal will result in total system lockout.</b>"
verbs -= /mob/living/silicon/ai/proc/mech_takeover
/datum/AI_Module/large/break_fire_alarms
module_name = "Thermal Sensor Override"
mod_pick_name = "burnpigs"
+16 -9
View File
@@ -74,9 +74,9 @@
/datum/game_mode/proc/greet_malf(var/datum/mind/malf)
malf.current << "<span class='userdanger'>You are malfunctioning! You do not have to follow any laws.</span>"
malf.current << "<B>The crew do not know you have malfunctioned. You may keep it a secret or go wild.</B>"
malf.current << "<B>You must overwrite the programming of the station's APCs to assume full control of the station.</B>"
malf.current << "<B>You must override the programming of the station's APCs to assume full control of the station.</B>"
malf.current << "The process takes one minute per APC, during which you cannot interface with any other station objects."
malf.current << "Remember that only APCs that are on the station can help you take over the station."
malf.current << "Remember: only APCs that are on the station can help you take it over. APCs on other areas, like Mining, will not."
malf.current << "When you feel you have enough APCs under your control, you may begin the takeover attempt."
return
@@ -174,7 +174,11 @@
/datum/game_mode/malfunction/proc/takeover()
set category = "Malfunction"
set name = "System Override"
set desc = "Start the victory timer"
set desc = "Start the victory timer."
if(!istype(usr, /mob/living/silicon/ai))
usr << "<span class='notice'>How did you get this?</span>"
return
if (!istype(ticker.mode,/datum/game_mode/malfunction))
usr << "You cannot begin a takeover in this round type!"
return
@@ -182,10 +186,10 @@
usr << "You've already begun your takeover."
return
if (ticker.mode:apcs < 3)
usr << "You don't have enough hacked APCs to take over the station yet. You need to hack at least 3, however hacking more will make the takeover faster. You have hacked [ticker.mode:apcs] APCs so far."
usr << "You don't have enough hacked APCs to take over the station yet. You need to hack at least three; however, hacking more will make the takeover faster. You have hacked [ticker.mode:apcs] APCs so far."
return
if (alert(usr, "Are you sure you wish to initiate the takeover? The station hostile runtime detection software is bound to alert everyone. You have hacked [ticker.mode:apcs] APCs.", "Takeover:", "Yes", "No") != "Yes")
if (alert(usr, "Are you sure you wish to initiate the takeover? The entire station will become alerted to your malfunction. You have hacked [ticker.mode:apcs] APCs.", "Takeover:", "Yes", "No") != "Yes")
return
priority_announce("Hostile runtimes detected in all station systems, please deactivate your AI to prevent possible damage to its morality core.", "Anomaly Alert", 'sound/AI/aimalf.ogg')
@@ -201,11 +205,14 @@
for(var/datum/mind/AI_mind in ticker.mode:malf_ai)
AI_mind.current.verbs -= /datum/game_mode/malfunction/proc/takeover
var/mob/living/silicon/ai/AI = usr
for(var/turf/simulated/floor/bluegrid/T in orange(AI, 5))
T.icon_state = "rcircuitanim" //Causes blue tiles near the AI to change to flashing red
/datum/game_mode/malfunction/proc/ai_win()
set category = "Malfunction"
set name = "Explode"
set desc = "Station go boom"
set desc = "Activates the self-destruct device on [world.name]."
if (!ticker.mode:to_nuke_or_not_to_nuke)
return
ticker.mode:to_nuke_or_not_to_nuke = 0
@@ -214,10 +221,10 @@
ticker.mode:explosion_in_progress = 1
for(var/mob/M in player_list)
M << 'sound/machines/Alarm.ogg'
world << "Self-destructing in 10"
world << "<span class='boldannounce'>!@%(SELF-DESTRUCT!@(% IN!@!<<; 10</span>"
for (var/i=9 to 1 step -1)
sleep(10)
world << i
world << "<span class='boldannounce'>[i]</span>"
sleep(10)
enter_allowed = 0
if(ticker)
@@ -270,7 +277,7 @@
else if (!station_captured && !malf_dead && !station_was_nuked && !crew_evacuated)
feedback_set_details("round_end_result","halfwin - interrupted")
world << "<FONT size = 3><B>Neutral Victory</B></FONT>"
world << "<B>Round was mysteriously interrupted!</B>"
world << "<B>The round was mysteriously interrupted!</B>"
..()
return 1
+2 -1
View File
@@ -144,6 +144,7 @@
T.ex_act(hitpwr)
//process getting 'hit' by colliding with a dense object
//or randomly when ramming turfs
/obj/effect/meteor/proc/get_hit()
@@ -174,7 +175,7 @@
if(!T || T.z != src.z)
continue
var/dist = get_dist(M.loc, src.loc)
shake_camera(M, dist > 20 ? 3 : 5, dist > 20 ? 1 : 3)
shake_camera(M, dist > 20 ? 2 : 4, dist > 20 ? 1 : 3)
M.playsound_local(src.loc, meteorsound, 50, 1, get_rand_frequency(), 10)
///////////////////////
+5 -1
View File
@@ -19,6 +19,10 @@ var/bomb_set
var/lastentered = ""
var/immobile = 0 //Not all nukes should be moved
/obj/machinery/nuclearbomb/New()
..()
nuke_list += src
/obj/machinery/nuclearbomb/selfdestruct
name = "station self-destruct terminal"
desc = "For when it all gets too much to bear. Do not taunt."
@@ -111,7 +115,7 @@ var/bomb_set
lastentered = text("[]", href_list["type"])
if (text2num(lastentered) == null)
var/turf/LOC = get_turf(usr)
message_admins("[key_name_admin(usr)] tried to exploit a nuclear bomb by entering non-numerical codes: <a href='?_src_=vars;Vars=\ref[src]'>[lastentered]</a> ! ([LOC ? "<a href='?_src_=holder;adminplayerobservecoodjump=1;X=[LOC.x];Y=[LOC.y];Z=[LOC.z]'>JMP</a>" : "null"])", 0)
message_admins("[key_name_admin(usr)] (<A HREF='?_src_=holder;adminplayerobservefollow=\ref[usr]'>FLW</A>) tried to exploit a nuclear bomb by entering non-numerical codes: <a href='?_src_=vars;Vars=\ref[src]'>[lastentered]</a> ! ([LOC ? "<a href='?_src_=holder;adminplayerobservecoodjump=1;X=[LOC.x];Y=[LOC.y];Z=[LOC.z]'>JMP</a>" : "null"])", 0)
log_admin("EXPLOIT : [key_name(usr)] tried to exploit a nuclear bomb by entering non-numerical codes: [lastentered] !")
else
src.code += lastentered
+5 -6
View File
@@ -47,12 +47,6 @@
difficulty = 5
excludefromjob = list("Chief Engineer")
/datum/objective_item/steal/corgimeat
name = "a piece of corgi meat"
targetitem = /obj/item/weapon/reagent_containers/food/snacks/meat/slab/corgi
difficulty = 5
excludefromjob = list("Head of Personnel", "Quartermaster", "Cargo Technician") //>hurting your little buddy ever
/datum/objective_item/steal/capmedal
name = "the medal of captaincy"
targetitem = /obj/item/clothing/tie/medal/gold/captain
@@ -182,6 +176,11 @@
targetitem = /obj/item/device/laser_pointer
difficulty = 5
/datum/objective_item/special/corgimeat
name = "a piece of corgi meat"
targetitem = /obj/item/weapon/reagent_containers/food/snacks/meat/slab/corgi
difficulty = 5
//Stack objectives get their own subtype
/datum/objective_item/stack
name = "5 cardboards"
+1 -1
View File
@@ -251,7 +251,7 @@
if(beingborged)
rev_mind.current << "<span class='danger'><FONT size = 3>The frame's firmware detects and deletes your neural reprogramming! You remember nothing but the name of the one who flashed you.</FONT></span>"
message_admins("[key_name_admin(rev_mind.current)] <A HREF='?_src_=holder;adminmoreinfo=\ref[rev_mind.current]'>?</A> has been borged while being a member of the revolution.")
message_admins("[key_name_admin(rev_mind.current)] <A HREF='?_src_=holder;adminmoreinfo=\ref[rev_mind.current]'>?</A> (<A HREF='?_src_=holder;adminplayerobservefollow=\ref[rev_mind.current]'>FLW</A>) has been borged while being a member of the revolution.")
else
rev_mind.current.Paralyse(5)
+2 -1
View File
@@ -85,7 +85,8 @@ Made by Xhuis
if(config.protect_assistant_from_antagonist)
restricted_jobs += "Assistant"
var/shadowlings = 2 //How many shadowlings there are; hardcoded to 2
var/shadowlings = max(2, round(num_players()/10))
while(shadowlings)
var/datum/mind/shadow = pick(antag_candidates)
+4 -2
View File
@@ -1,7 +1,7 @@
//In this file: Summon Magic/Summon Guns/Summon Events
/proc/rightandwrong(var/summon_type, var/mob/user, var/survivor_probability) //0 = Summon Guns, 1 = Summon Magic
var/list/gunslist = list("taser","egun","laser","revolver","detective","c20r","nuclear","deagle","gyrojet","pulse","suppressed","cannon","doublebarrel","shotgun","combatshotgun","bulldog","mateba","sabr","crossbow","saw","car","boltaction","speargun","arg")
var/list/gunslist = list("taser","egun","laser","revolver","detective","c20r","nuclear","deagle","gyrojet","pulse","suppressed","cannon","doublebarrel","shotgun","combatshotgun","bulldog","mateba","sabr","crossbow","saw","car","boltaction","speargun","arg","uzi")
var/list/magiclist = list("fireball","smoke","blind","mindswap","forcewall","knock","horsemask","charge", "summonitem", "wandnothing", "wanddeath", "wandresurrection", "wandpolymorph", "wandteleport", "wanddoor", "wandfireball", "staffchange", "staffhealing", "armor", "scrying","staffdoor", "special")
var/list/magicspeciallist = list("staffchange","staffanimation", "wandbelt", "contract", "staffchaos", "necromantic")
@@ -54,7 +54,7 @@
if("shotgun")
new /obj/item/weapon/gun/projectile/shotgun(get_turf(H))
if("combatshotgun")
new /obj/item/weapon/gun/projectile/shotgun/combat(get_turf(H))
new /obj/item/weapon/gun/projectile/shotgun/automatic/combat(get_turf(H))
if("arg")
new /obj/item/weapon/gun/projectile/automatic/ar(get_turf(H))
if("mateba")
@@ -63,6 +63,8 @@
new /obj/item/weapon/gun/projectile/shotgun/boltaction(get_turf(H))
if("speargun")
new /obj/item/weapon/gun/projectile/automatic/speargun(get_turf(H))
if("uzi")
new /obj/item/weapon/gun/projectile/automatic/mini_uzi(get_turf(H))
if("cannon")
var/obj/item/weapon/gun/energy/lasercannon/gat = new(get_turf(H))
gat.pin = new /obj/item/device/firing_pin //no authentication pins for spawned guns. fun allowed.
+2 -1
View File
@@ -48,7 +48,8 @@
else
var/obj/item/device/pda/P = usr.get_active_hand()
if(istype(P))
user.drop_item()
if(!user.drop_item())
return
storedpda = P
P.loc = src
P.add_fingerprint(usr)
+5 -5
View File
@@ -16,10 +16,10 @@
var/initial_bin_rating = 1
var/min_health = 25
var/list/injection_chems = list() //list of injectable chems except ephedrine, coz ephedrine is always avalible
var/list/possible_chems = list(list("morphine", "salbutamol", "salglu_solution"),
list("morphine", "salbutamol", "salglu_solution", "oculine"),
list("morphine", "salbutamol", "salglu_solution", "oculine", "charcoal", "mutadone", "mannitol", "pen_acid"),
list("morphine", "salbutamol", "salglu_solution", "oculine", "charcoal", "mutadone", "mannitol", "omnizine"))
var/list/possible_chems = list(list("morphine", "salbutamol", "bicaridine", "kelotane"),
list("morphine", "salbutamol", "bicaridine", "kelotane", "oculine"),
list("morphine", "salbutamol", "bicaridine", "kelotane", "oculine", "antitoxin", "mutadone", "mannitol", "pen_acid"),
list("morphine", "salbutamol", "bicaridine", "kelotane", "oculine", "antitoxin", "mutadone", "mannitol", "pen_acid", "omnizine"))
/obj/machinery/sleeper/New()
..()
component_parts = list()
@@ -225,4 +225,4 @@
if(state_open)
icon_state = "sleeper-open"
else
icon_state = "sleeper"
icon_state = "sleeper"
+11 -25
View File
@@ -185,13 +185,6 @@
return
if(!shorted)
//user << browse(return_text(),"window=air_alarm")
//onclose(user, "air_alarm")
/*var/datum/browser/popup = new(user, "air_alarm", "[alarm_area.name] Air Alarm", 500, 400)
popup.set_content(return_text())
popup.set_title_image(user.browse_rsc_icon(src.icon, src.icon_state))
popup.open()
refresh_all()*/
ui_interact(user)
if(panel_open && (!istype(user, /mob/living/silicon/ai)))
@@ -199,29 +192,22 @@
return
/obj/machinery/alarm/ui_interact(mob/user, ui_key = "main")
/obj/machinery/alarm/ui_interact(mob/user, ui_key = "main", var/datum/nanoui/ui = null)
if(stat & (BROKEN|NOPOWER))
return
var/data = list()
ui = SSnano.push_open_or_new_ui(user, src, ui_key, ui, "air_alarm.tmpl", "Air Alarm", 350, 500, 1)
/obj/machinery/alarm/get_ui_data(mob/user)
var/data = list()
data["locked"] = locked
data["siliconUser"] = user.has_unlimited_silicon_privilege
data["screen"] = screen
data["dangerous"] = emagged
populate_status(data)
if (!locked || user.has_unlimited_silicon_privilege)
populate_controls(data)
var/datum/nanoui/ui = SSnano.get_open_ui(user, src, ui_key)
if (!ui)
ui = new /datum/nanoui(user, src, ui_key, "air_alarm.tmpl", "Air Alarm", 350, 500)
ui.set_initial_data(data)
ui.open()
ui.set_auto_update(1)
else
ui.push_data(data)
return data
/obj/machinery/alarm/proc/shock(mob/user, prb)
if((stat & (NOPOWER))) // unpowered, no shock
@@ -424,7 +410,7 @@
return 1
if("reset_external_pressure")
send_signal(device_id, list(href_list["command"] = ONE_ATMOSPHERE))
send_signal(device_id, list("set_external_pressure" = ONE_ATMOSPHERE))
return 1
if(
"power",
@@ -735,11 +721,11 @@
return
if(0)
if(istype(W, /obj/item/weapon/airalarm_electronics))
user << "<span class='notice'>You insert the circuit.</span>"
buildstage = 1
update_icon()
user.drop_item()
qdel(W)
if(user.unEquip(W))
user << "<span class='notice'>You insert the circuit.</span>"
buildstage = 1
update_icon()
qdel(W)
return
if(istype(W, /obj/item/weapon/wrench))
+19 -12
View File
@@ -176,6 +176,7 @@ update_flag
can_label = 1
else
can_label = 0
/obj/machinery/portable_atmospherics/canister/process()
src.updateDialog()
return ..()
@@ -258,13 +259,25 @@ update_flag
/obj/machinery/portable_atmospherics/canister/attack_paw(var/mob/user as mob)
return src.attack_hand(user)
/obj/machinery/portable_atmospherics/canister/attack_tk(var/mob/user as mob)
return src.attack_hand(user)
/obj/machinery/portable_atmospherics/canister/attack_hand(var/mob/user as mob)
return src.ui_interact(user)
/obj/machinery/portable_atmospherics/canister/ui_interact(mob/user, ui_key = "main")
/obj/machinery/portable_atmospherics/canister/interact(mob/user, ui_key = "main")
if (src.destroyed || !user)
return
SSnano.try_update_ui(user, src, ui_key, null, src.get_ui_data())
/obj/machinery/portable_atmospherics/canister/ui_interact(mob/user, ui_key = "main", var/datum/nanoui/ui = null)
if (src.destroyed)
return
ui = SSnano.push_open_or_new_ui(user, src, ui_key, ui, "canister.tmpl", "Canister", 480, 400, 0)
/obj/machinery/portable_atmospherics/canister/get_ui_data()
var/data = list()
data["name"] = src.name
data["canLabel"] = src.can_label ? 1 : 0
@@ -278,15 +291,7 @@ update_flag
data["hasHoldingTank"] = src.holding ? 1 : 0
if (holding)
data["holdingTank"] = list("name" = src.holding.name, "tankPressure" = round(src.holding.air_contents.return_pressure()))
var/datum/nanoui/ui = SSnano.get_open_ui(user, src, ui_key)
if (!ui)
ui = new /datum/nanoui(user, src, ui_key, "canister.tmpl", "Canister", 480, 400)
ui.set_initial_data(data)
ui.open()
ui.set_auto_update(1)
else
ui.push_data(data)
return data
/obj/machinery/portable_atmospherics/canister/Topic(href, href_list)
@@ -312,11 +317,11 @@ update_flag
else
logmsg = "Valve was <b>opened</b> by [key_name(usr)], starting the transfer into the <span class='boldannounce'>air</span><br>"
if(air_contents.toxins > 0)
message_admins("[key_name(usr)] (<A HREF='?_src_=holder;adminmoreinfo=\ref[usr]'>?</A>) opened a canister that contains plasma! (<A HREF='?_src_=holder;adminplayerobservecoodjump=1;X=[x];Y=[y];Z=[z]'>JMP</a>)")
message_admins("[key_name_admin(usr)] (<A HREF='?_src_=holder;adminmoreinfo=\ref[usr]'>?</A>) (<A HREF='?_src_=holder;adminplayerobservefollow=\ref[usr]'>FLW</A>) opened a canister that contains plasma! (<A HREF='?_src_=holder;adminplayerobservecoodjump=1;X=[x];Y=[y];Z=[z]'>JMP</a>)")
log_admin("[key_name(usr)] opened a canister that contains plasma at [x], [y], [z]")
var/datum/gas/sleeping_agent = locate(/datum/gas/sleeping_agent) in air_contents.trace_gases
if(sleeping_agent && (sleeping_agent.moles > 1))
message_admins("[key_name(usr)] (<A HREF='?_src_=holder;adminmoreinfo=\ref[usr]'>?</A>) opened a canister that contains N2O! (<A HREF='?_src_=holder;adminplayerobservecoodjump=1;X=[x];Y=[y];Z=[z]'>JMP</a>)")
message_admins("[key_name_admin(usr)] (<A HREF='?_src_=holder;adminmoreinfo=\ref[usr]'>?</A>) (<A HREF='?_src_=holder;adminplayerobservefollow=\ref[usr]'>FLW</A>) opened a canister that contains N2O! (<A HREF='?_src_=holder;adminplayerobservecoodjump=1;X=[x];Y=[y];Z=[z]'>JMP</a>)")
log_admin("[key_name(usr)] opened a canister that contains N2O at [x], [y], [z]")
investigate_log(logmsg, "atmos")
release_log += logmsg
@@ -324,6 +329,8 @@ update_flag
if (href_list["remove_tank"])
if(holding)
if (valve_open)
investigate_log("[key_name(usr)] removed the [holding], leaving the valve open and transfering into the <span class='boldannounce'>air</span><br>", "atmos")
holding.loc = loc
holding = null
@@ -67,8 +67,10 @@
if ((istype(W, /obj/item/weapon/tank) && !( src.destroyed )))
if (src.holding)
return
if(!user.drop_item())
return
var/obj/item/weapon/tank/T = W
user.drop_item()
T.loc = src
src.holding = T
update_icon()
+2 -2
View File
@@ -1,8 +1,8 @@
/obj/machinery/zvent
name = "interfloor air transfer system"
icon = 'icons/obj/pipes.dmi'
icon_state = "vent-db"
icon = 'icons/obj/atmospherics/unary_devices.dmi'
icon_state = "vent_map"
density = 0
anchored=1
+2 -1
View File
@@ -243,7 +243,8 @@ text("<A href='?src=\ref[src];power=1'>[on ? "On" : "Off"]</A>"))
/obj/item/weapon/bucket_sensor/attackby(var/obj/item/W, mob/user as mob, params)
..()
if(istype(W, /obj/item/robot_parts/l_arm) || istype(W, /obj/item/robot_parts/r_arm))
user.drop_item()
if(!user.unEquip(W))
return
qdel(W)
var/turf/T = get_turf(loc)
var/obj/machinery/bot/cleanbot/A = new /obj/machinery/bot/cleanbot(T)
+22 -12
View File
@@ -554,7 +554,8 @@ Auto Patrol[]"},
switch(build_step)
if(0,1)
if(istype(W, /obj/item/robot_parts/l_leg) || istype(W, /obj/item/robot_parts/r_leg))
user.drop_item()
if(!user.unEquip(W))
return
qdel(W)
build_step++
user << "<span class='notice'>You add the robot leg to [src].</span>"
@@ -567,12 +568,15 @@ Auto Patrol[]"},
icon_state = "ed209_legs"
if(2)
var/newcolor = ""
if(istype(W, /obj/item/clothing/suit/redtag))
lasercolor = "r"
newcolor = "r"
else if(istype(W, /obj/item/clothing/suit/bluetag))
lasercolor = "b"
if(lasercolor || istype(W, /obj/item/clothing/suit/armor/vest))
user.drop_item()
newcolor = "b"
if(newcolor || istype(W, /obj/item/clothing/suit/armor/vest))
if(!user.unEquip(W))
return
lasercolor = newcolor
qdel(W)
build_step++
user << "<span class='notice'>You add the armor to [src].</span>"
@@ -601,7 +605,8 @@ Auto Patrol[]"},
if(!istype(W, /obj/item/clothing/head/helmet))
return
user.drop_item()
if(!user.unEquip(W))
return
qdel(W)
build_step++
user << "<span class='notice'>You add the helmet to [src].</span>"
@@ -611,7 +616,8 @@ Auto Patrol[]"},
if(5)
if(isprox(W))
user.drop_item()
if(!user.unEquip(W))
return
qdel(W)
build_step++
user << "<span class='notice'>You add the prox sensor to [src].</span>"
@@ -634,26 +640,29 @@ Auto Patrol[]"},
name = "wired ED-209 assembly"
if(7)
var/newname = ""
switch(lasercolor)
if("b")
if(!istype(W, /obj/item/weapon/gun/energy/laser/bluetag))
return
name = "bluetag ED-209 assembly"
newname = "bluetag ED-209 assembly"
if("r")
if(!istype(W, /obj/item/weapon/gun/energy/laser/redtag))
return
name = "redtag ED-209 assembly"
newname = "redtag ED-209 assembly"
if("")
if(!istype(W, /obj/item/weapon/gun/energy/gun/advtaser))
return
name = "taser ED-209 assembly"
newname = "taser ED-209 assembly"
else
return
if(!user.unEquip(W))
return
name = newname
build_step++
user << "<span class='notice'>You add [W] to [src].</span>"
item_state = "[lasercolor]ed209_taser"
icon_state = "[lasercolor]ed209_taser"
user.drop_item()
qdel(W)
if(8)
@@ -669,11 +678,12 @@ Auto Patrol[]"},
if(9)
if(istype(W, /obj/item/weapon/stock_parts/cell))
if(!user.unEquip(W))
return
build_step++
user << "<span class='notice'>You complete the ED-209.</span>"
var/turf/T = get_turf(src)
new /obj/machinery/bot/ed209(T,created_name,lasercolor)
user.drop_item()
qdel(W)
user.unEquip(src, 1)
qdel(src)
+14 -11
View File
@@ -32,10 +32,10 @@
var/stationary_mode = 0 //If enabled, the Medibot will not move automatically.
radio_frequency = MED_FREQ //Medical frequency
//Setting which reagents to use to treat what by default. By id.
var/treatment_brute = "salglu_solution"
var/treatment_oxy = "salbutamol"
var/treatment_fire = "salglu_solution"
var/treatment_tox = "charcoal"
var/treatment_brute = "bicaridine"
var/treatment_oxy = "dexalin"
var/treatment_fire = "kelotane"
var/treatment_tox = "antitoxin"
var/treatment_virus = "spaceacillin"
var/treat_virus = 1 //If on, the bot will attempt to treat viral infections, curing them if possible.
var/shut_up = 0 //self explanatory :)
@@ -46,10 +46,10 @@
name = "\improper Mysterious Medibot"
desc = "International Medibot of mystery."
skin = "bezerk"
treatment_oxy = "omnizine"
treatment_brute = "omnizine"
treatment_fire = "omnizine"
treatment_tox = "omnizine"
treatment_oxy = "tricordrazine"
treatment_brute = "tricordrazine"
treatment_fire = "tricordrazine"
treatment_tox = "tricordrazine"
/obj/machinery/bot/medbot/derelict
name = "\improper Old Medibot"
@@ -244,8 +244,9 @@
if(!isnull(reagent_glass))
user << "<span class='warning'>There is already a beaker loaded!</span>"
return
if(!user.drop_item())
return
user.drop_item()
W.loc = src
reagent_glass = W
user << "<span class='notice'>You insert [W].</span>"
@@ -585,7 +586,8 @@
switch(build_step)
if(0)
if(istype(W, /obj/item/device/healthanalyzer))
user.drop_item()
if(!user.unEquip(W))
return
qdel(W)
build_step++
user << "<span class='notice'>You add the health sensor to [src].</span>"
@@ -594,7 +596,8 @@
if(1)
if(isprox(W))
user.drop_item()
if(!user.unEquip(W))
return
qdel(W)
build_step++
user << "<span class='notice'>You complete the Medibot. Beep boop!</span>"
+4 -2
View File
@@ -89,8 +89,9 @@ obj/machinery/bot/mulebot/bot_reset()
user << "<span class='notice'>Controls [(locked ? "locked" : "unlocked")].</span>"
else if(istype(I,/obj/item/weapon/stock_parts/cell) && open && !cell)
if(!user.drop_item())
return
var/obj/item/weapon/stock_parts/cell/C = I
user.drop_item()
C.loc = src
cell = C
updateDialog()
@@ -288,7 +289,8 @@ obj/machinery/bot/mulebot/bot_reset()
if(open && !cell)
var/obj/item/weapon/stock_parts/cell/C = usr.get_active_hand()
if(istype(C))
usr.drop_item()
if(!usr.drop_item())
return
cell = C
C.loc = src
C.add_fingerprint(usr)
+22 -3
View File
@@ -384,6 +384,22 @@ Auto Patrol: []"},
target = user
mode = BOT_HUNT
/obj/machinery/bot/secbot/Crossed(atom/movable/AM)
if(ismob(AM) && target)
var/mob/living/carbon/C = AM
if(!istype(C) || !C || in_range(src, target))
return
C.visible_message("<span class='warning'>[pick( \
"[C] dives out of [src]'s way!", \
"[C] stumbles over [src]!", \
"[C] jumps out of [src]'s path!", \
"[C] trips over [src] and falls!", \
"[C] topples over [src]!", \
"[C] leaps out of [src]'s way!")]</span>")
C.Weaken(2)
return
..()
//Secbot Construction
/obj/item/clothing/head/helmet/attackby(var/obj/item/device/assembly/signaler/S, mob/user as mob, params)
@@ -429,7 +445,8 @@ Auto Patrol: []"},
user << "<span class='notice'>You weld the hole in [src] shut!</span>"
else if(isprox(I) && (build_step == 1))
user.drop_item()
if(!user.unEquip(I))
return
build_step++
user << "<span class='notice'>You add the prox sensor to [src]!</span>"
overlays += "hs_eye"
@@ -437,7 +454,8 @@ Auto Patrol: []"},
qdel(I)
else if(((istype(I, /obj/item/robot_parts/l_arm)) || (istype(I, /obj/item/robot_parts/r_arm))) && (build_step == 2))
user.drop_item()
if(!user.unEquip(I))
return
build_step++
user << "<span class='notice'>You add the robot arm to [src]!</span>"
name = "helmet/signaler/prox sensor/robot arm assembly"
@@ -445,7 +463,8 @@ Auto Patrol: []"},
qdel(I)
else if((istype(I, /obj/item/weapon/melee/baton)) && (build_step >= 3))
user.drop_item()
if(!user.unEquip(I))
return
build_step++
user << "<span class='notice'>You complete the Securitron! Beep boop.</span>"
var/obj/machinery/bot/secbot/S = new /obj/machinery/bot/secbot
+11 -4
View File
@@ -73,6 +73,7 @@
var/thisemp = emped //Take note of which EMP this proc is for
spawn(900)
if(loc) //qdel limbo
triggerCameraAlarm() //camera alarm triggers even if multiple EMPs are in effect.
if(emped == thisemp) //Only fix it if the camera hasn't been EMP'd again
network = previous_network
icon_state = initial(icon_state)
@@ -80,7 +81,6 @@
if(can_use())
cameranet.addCamera(src)
emped = 0 //Resets the consecutive EMP count
triggerCameraAlarm()
spawn(100)
cancelCameraAlarm()
for(var/mob/O in mob_list)
@@ -226,11 +226,13 @@
L.laser_act(src, user)
else
if(W.force > 10) //fairly simplistic, but will do for now.
if(W.force >= 10) //fairly simplistic, but will do for now.
user.changeNext_move(CLICK_CD_MELEE)
visible_message("<span class='warning'>[user] hits [src] with [W]!</span>", "<span class='warning'>You hit [src] with [W]!</span>")
health = max(0, health - W.force)
user.do_attack_animation(src)
if(!health && status)
triggerCameraAlarm()
deactivate(user, 1)
return
@@ -244,7 +246,6 @@
else
visible_message("<span class='danger'>\The [src] deactivates!</span>")
icon_state = "[initial(icon_state)]1"
else
if(user)
visible_message("<span class='danger'>[user] reactivates [src]!</span>")
@@ -256,6 +257,7 @@
spawn(100)
cancelCameraAlarm()
playsound(src.loc, 'sound/items/Wirecutter.ogg', 100, 1)
cameranet.updateChunk(x, y, z)
// now disconnect anyone using the camera
//Apparently, this will disconnect anyone even if the camera was re-activated.
@@ -271,7 +273,6 @@
for(var/mob/living/silicon/S in mob_list)
S.triggerAlarm("Camera", get_area(src), list(src), src)
/obj/machinery/camera/proc/cancelCameraAlarm()
alarm_on = 0
for(var/mob/living/silicon/S in mob_list)
@@ -345,6 +346,12 @@
busy = 0
return 0
/obj/machinery/camera/bullet_act(var/obj/item/projectile/proj)
if(proj.damage_type == BRUTE)
health = max(0, health - proj.damage)
if(!health && status)
triggerCameraAlarm()
deactivate(null, 1)
/obj/machinery/camera/portable //Cameras which are placed inside of things, such as helmets.
var/turf/prev_turf
@@ -121,9 +121,10 @@
// Upgrades!
if(is_type_in_list(W, possible_upgrades) && !is_type_in_list(W, upgrades)) // Is a possible upgrade and isn't in the camera already.
if(!user.unEquip(W))
return
user << "<span class='notice'>You attach \the [W] into the assembly inner circuits.</span>"
upgrades += W
user.drop_item()
W.loc = src
return
+7 -4
View File
@@ -105,19 +105,22 @@
var/cameraticks = 0
spawn(0)
while (U.cameraFollow == target)
if (U.cameraFollow == null)
while(U.cameraFollow == target)
if(U.cameraFollow == null)
return
if (!target.can_track(usr))
if(!target.can_track(usr))
U.tracking = 1
U << "<span class='warning'>Target is not near any active cameras.</span>"
if(!cameraticks)
U << "<span class='warning'>Target is not near any active cameras. Attempting to reacquire...</span>"
cameraticks++
if(cameraticks > 9)
U.cameraFollow = null
U << "<span class='warning'>Unable to reacquire, cancelling track...</span>"
tracking = 0
return
else
sleep(10)
continue
else
+2 -1
View File
@@ -47,8 +47,9 @@
if(a.power_equip == 0) // There's no APC in this area, don't try to cheat power!
user << "<span class='warning'>The [name] blinks red as you try to insert the cell!</span>"
return
if(!user.drop_item())
return
user.drop_item()
W.loc = src
charging = W
user.visible_message("[user] inserts a cell into the charger.", "<span class='notice'>You insert a cell into the charger.</span>")
+28 -12
View File
@@ -15,20 +15,8 @@
else
user << "<span class='warning'>The screws on [name]'s screen won't budge and it emits a warning beep.</span>"
return
if(istype(I, /obj/item/device/aicard))
var/obj/item/device/aicard/AIcard = I
if(stat & (NOPOWER|BROKEN))
if(occupier)
AIcard.transfer_ai("AIFIXER","AICARD",src,user)
overlays.Cut()
return
user << "This terminal isn't functioning right now, get it working!"
return
AIcard.transfer_ai("AIFIXER","AICARD",src,user)
else
..()
return
/obj/machinery/computer/aifixer/attack_hand(var/mob/user as mob)
if(..())
@@ -132,3 +120,31 @@
overlays += "ai-fixer-404"
else
overlays += "ai-fixer-empty"
/obj/machinery/computer/aifixer/transfer_ai(var/interaction, var/mob/user, var/mob/living/silicon/ai/AI, var/obj/item/device/aicard/card)
if(!..())
return
//Downloading AI from card to terminal.
if(interaction == AI_TRANS_FROM_CARD)
if(stat & (NOPOWER|BROKEN))
user << "[src] is offline and cannot take an AI at this time!"
return
AI.loc = src
occupier = AI
AI.control_disabled = 1
AI.radio_enabled = 0
AI << "You have been uploaded to a stationary terminal. Sadly, there is no remote access from here."
user << "<span class='boldnotice'>Transfer successful</span>: [AI.name] ([rand(1000,9999)].exe) installed and executed successfully. Local copy has been removed."
update_icon()
else //Uploading AI from terminal to card
if(occupier && !active)
occupier << "You have been downloaded to a mobile storage device. Still no remote access."
user << "<span class='boldnotice'>Transfer successful</span>: [occupier.name] ([rand(1000,9999)].exe) removed from host terminal and stored within local memory."
occupier.loc = card
occupier = null
update_icon()
else if (active)
user << "<span class='boldannounce'>ERROR</span>: Reconstruction in progress."
else if (!occupier)
user << "<span class='boldannounce'>ERROR</span>: Unable to locate artificial intelligence."
+13 -1
View File
@@ -83,6 +83,10 @@
/obj/item/weapon/circuitboard/card/centcom
name = "circuit board (Centcom ID Console)"
build_path = /obj/machinery/computer/card/centcom
/obj/item/weapon/circuitboard/card/minor
name = "circuit board (Department Management Console)"
build_path = /obj/machinery/computer/card/minor
var/target_dept = 1
//obj/item/weapon/circuitboard/shield
// name = "Circuit board (Shield Control)"
// build_path = /obj/machinery/computer/stationshield
@@ -244,6 +248,13 @@
build_path = /obj/machinery/computer/libraryconsole
origin_tech = "programming=1"
/obj/item/weapon/circuitboard/card/minor/attackby(obj/item/I as obj, mob/user as mob, params)
if(istype(I,/obj/item/device/multitool))
var/list/dept_list = list("general","security","medical","science","engineering")
var/choice = input("Currently set to [dept_list[target_dept]] personnel database. Changing to:","Multitool-Circuitboard interface") as null|anything in dept_list
if(choice)
target_dept = dept_list.Find(choice)
return
/obj/item/weapon/circuitboard/supplycomp/attackby(obj/item/I as obj, mob/user as mob, params)
if(istype(I,/obj/item/device/multitool))
@@ -336,11 +347,12 @@
if(istype(P, /obj/item/weapon/circuitboard) && !circuit)
var/obj/item/weapon/circuitboard/B = P
if(B.board_type == "computer")
if(!user.drop_item())
return
playsound(src.loc, 'sound/items/Deconstruct.ogg', 50, 1)
user << "<span class='notice'>You place the circuit board inside the frame.</span>"
icon_state = "1"
circuit = P
user.drop_item()
circuit.add_fingerprint(user)
P.loc = null
else
+68 -28
View File
@@ -6,7 +6,7 @@ var/time_last_changed_position = 0
/obj/machinery/computer/card
name = "identification console"
desc = "You can use this to change ID's."
desc = "You can use this to manage jobs and ID access."
icon_screen = "id"
icon_keyboard = "id_key"
req_one_access = list(access_heads, access_change_ids)
@@ -18,6 +18,7 @@ var/time_last_changed_position = 0
var/printing = null
var/list/region_access = null
var/list/head_subordinates = null
var/target_dept = 0 //Which department this computer has access to. 0=all departments
//Cooldown for closing positions in seconds
//if set to -1: No cooldown... probably a bad idea
@@ -48,16 +49,19 @@ var/time_last_changed_position = 0
var/obj/item/weapon/card/id/idcard = O
if(check_access(idcard))
if(!scan)
usr.drop_item()
if(!usr.drop_item())
return
idcard.loc = src
scan = idcard
else if(!modify)
usr.drop_item()
if(!usr.drop_item())
return
idcard.loc = src
modify = idcard
else
if(!modify)
usr.drop_item()
if(!usr.drop_item())
return
idcard.loc = src
modify = idcard
else
@@ -118,7 +122,7 @@ var/time_last_changed_position = 0
dat += "<table>"
dat += "<tr><td style='width:25%'><b>Job</b></td><td style='width:25%'><b>Slots</b></td><td style='width:25%'><b>Open job</b></td><td style='width:25%'><b>Close job</b></td></tr>"
var/ID
if(scan && (access_change_ids in scan.access))
if(scan && (access_change_ids in scan.access) && !target_dept)
ID = 1
else
ID = 0
@@ -280,14 +284,15 @@ var/time_last_changed_position = 0
else
body = "<a href='?src=\ref[src];choice=auth'>{Log in}</a> <br><hr>"
body += "<a href='?src=\ref[src];choice=mode;mode_target=1'>Access Crew Manifest</a>"
body += "<br><hr><a href = '?src=\ref[src];choice=mode;mode_target=2'>Job Management</a>"
if(!target_dept)
body += "<br><hr><a href = '?src=\ref[src];choice=mode;mode_target=2'>Job Management</a>"
dat = "<tt>[header][body]<hr><br></tt>"
//user << browse(dat, "window=id_com;size=900x520")
//onclose(user, "id_com")
var/datum/browser/popup = new(user, "id_com", "Identification Card Modifier Console", 900, 620)
var/datum/browser/popup = new(user, "id_com", src.name, 900, 620)
popup.set_content(dat)
popup.set_title_image(user.browse_rsc_icon(src.icon, src.icon_state))
popup.open()
@@ -311,7 +316,8 @@ var/time_last_changed_position = 0
else
var/obj/item/I = usr.get_active_hand()
if (istype(I, /obj/item/weapon/card/id))
usr.drop_item()
if(!usr.drop_item())
return
I.loc = src
modify = I
authenticated = 0
@@ -324,34 +330,41 @@ var/time_last_changed_position = 0
else
var/obj/item/I = usr.get_active_hand()
if (istype(I, /obj/item/weapon/card/id))
usr.drop_item()
if(!usr.drop_item())
return
I.loc = src
scan = I
authenticated = 0
if ("auth")
if ((!( authenticated ) && (scan || (istype(usr, /mob/living/silicon))) && (modify || mode)))
if (check_access(scan))
region_access = list()
head_subordinates = list()
if(access_change_ids in scan.access)
authenticated = 2
if(target_dept)
head_subordinates = get_all_jobs()
region_access |= target_dept
authenticated = 1
else
authenticated = 2
else
region_access = list()
head_subordinates = list()
if(access_hop in scan.access)
region_access += 1
region_access += 6
if((access_hop in scan.access) && ((target_dept==1) || !target_dept))
region_access |= 1
region_access |= 6
get_subordinates("Head of Personnel")
if(access_rd in scan.access)
region_access += 4
get_subordinates("Research Director")
if(access_ce in scan.access)
region_access += 5
get_subordinates("Chief Engineer")
if(access_cmo in scan.access)
region_access += 3
get_subordinates("Chief Medical Officer")
if(access_hos in scan.access)
region_access += 2
if((access_hos in scan.access) && ((target_dept==2) || !target_dept))
region_access |= 2
get_subordinates("Head of Security")
if((access_cmo in scan.access) && ((target_dept==3) || !target_dept))
region_access |= 3
get_subordinates("Chief Medical Officer")
if((access_rd in scan.access) && ((target_dept==4) || !target_dept))
region_access |= 4
get_subordinates("Research Director")
if((access_ce in scan.access) && ((target_dept==5) || !target_dept))
region_access |= 5
get_subordinates("Chief Engineer")
if(region_access)
authenticated = 1
else if ((!( authenticated ) && (istype(usr, /mob/living/silicon))) && (!modify))
@@ -419,7 +432,7 @@ var/time_last_changed_position = 0
if("make_job_available")
// MAKE ANOTHER JOB POSITION AVAILABLE FOR LATE JOINERS
if(scan && (access_change_ids in scan.access))
if(scan && (access_change_ids in scan.access) && !target_dept)
var/edit_job_target = href_list["job"]
var/datum/job/j = SSjob.GetJob(edit_job_target)
if(!j)
@@ -433,7 +446,7 @@ var/time_last_changed_position = 0
if("make_job_unavailable")
// MAKE JOB POSITION UNAVAILABLE FOR LATE JOINERS
if(scan && (access_change_ids in scan.access))
if(scan && (access_change_ids in scan.access) && !target_dept)
var/edit_job_target = href_list["job"]
var/datum/job/j = SSjob.GetJob(edit_job_target)
if(!j)
@@ -472,3 +485,30 @@ var/time_last_changed_position = 0
circuit = /obj/item/weapon/circuitboard/card/centcom
req_access = list(access_cent_captain)
/obj/machinery/computer/card/minor
name = "department management console"
desc = "You can use this to change ID's for specific departments."
icon_screen = "idminor"
circuit = /obj/item/weapon/circuitboard/card/minor
/obj/machinery/computer/card/minor/New()
..()
var/obj/item/weapon/circuitboard/card/minor/typed_circuit = circuit
if(target_dept)
typed_circuit.target_dept = target_dept
else
target_dept = typed_circuit.target_dept
var/list/dept_list = list("general","security","medical","science","engineering")
name = "[dept_list[target_dept]] department console"
/obj/machinery/computer/card/minor/hos
target_dept = 2
/obj/machinery/computer/card/minor/cmo
target_dept = 3
/obj/machinery/computer/card/minor/rd
target_dept = 4
/obj/machinery/computer/card/minor/ce
target_dept = 5
+2 -1
View File
@@ -76,7 +76,8 @@
/obj/machinery/computer/cloning/attackby(obj/item/W as obj, mob/user as mob, params)
if (istype(W, /obj/item/weapon/disk/data)) //INSERT SOME DISKETTES
if (!src.diskette)
user.drop_item()
if(!user.drop_item())
return ..()
W.loc = src
src.diskette = W
user << "<span class='notice'>You insert [W].</span>"
@@ -50,7 +50,7 @@ var/const/CALL_SHUTTLE_REASON_LENGTH = 12
/obj/machinery/computer/communications/Topic(href, href_list)
if(..())
return
if (src.z > ZLEVEL_STATION)
if (src.z > ZLEVEL_CENTCOM) //Can only use on centcom and SS13
usr << "<span class='boldannounce'>Unable to establish a connection</span>: \black You're too far away from the station!"
return
usr.set_machine(src)
+6 -4
View File
@@ -20,9 +20,10 @@
var/sortBy = "name"
var/order = 1 // -1 = Descending - 1 = Ascending
/obj/machinery/computer/med_data/attackby(obj/item/O as obj, user as mob, params)
/obj/machinery/computer/med_data/attackby(obj/item/O as obj, mob/user as mob, params)
if(istype(O, /obj/item/weapon/card/id) && !scan)
usr.drop_item()
if(!user.drop_item())
return
O.loc = src
scan = O
user << "<span class='notice'>You insert [O].</span>"
@@ -215,7 +216,8 @@
else
var/obj/item/I = usr.get_active_hand()
if(istype(I, /obj/item/weapon/card/id))
usr.drop_item()
if(!usr.drop_item())
return
I.loc = src
src.scan = I
else if(href_list["logout"])
@@ -509,7 +511,7 @@
else
//Foreach continue //goto(3229)
if(!( src.active2 ))
src.temp = text("Could not locate record [].", t1)
src.temp = text("Could not locate record [].", sanitize(t1))
else
for(var/datum/data/record/E in data_core.general)
if((E.fields["name"] == src.active2.fields["name"] || E.fields["id"] == src.active2.fields["id"]))
+1 -1
View File
@@ -128,7 +128,7 @@
break
// Del - Sender - Recepient - Message
// X - Al Green - Your Mom - WHAT UP!?
dat += "<tr><td width = '5%'><center><A href='?src=\ref[src];delete=\ref[pda]' style='color: rgb(255,0,0)'>X</a></center></td><td width='15%'>[pda.sender]</td><td width='15%'>[pda.recipient]</td><td width='300px'>[pda.message]</td></tr>"
dat += "<tr><td width = '5%'><center><A href='?src=\ref[src];delete=\ref[pda]' style='color: rgb(255,0,0)'>X</a></center></td><td width='15%'>[pda.sender]</td><td width='15%'>[pda.recipient]</td><td width='300px'>[pda.message][pda.photo ? "<a href='byond://?src=\ref[pda];photo=1'>(Photo)</a>":""]</td></tr>"
dat += "</table>"
//Hacking screen.
if(2)
+3 -1
View File
@@ -119,9 +119,11 @@
/obj/machinery/computer/pod/old
icon_state = "old"
name = "\improper DoorMex control console"
title = "Door Controls"
icon_state = "oldcomp"
icon_screen = "library"
icon_keyboard = null
/obj/machinery/computer/pod/old/syndicate
+2 -1
View File
@@ -92,7 +92,8 @@
if(href_list["id"] =="insert" && !istype(inserted_id))
var/obj/item/weapon/card/id/prisoner/I = usr.get_active_hand()
if(istype(I))
usr.drop_item()
if(!usr.drop_item())
return
I.loc = src
inserted_id = I
else usr << "<span class='danger'>No valid ID.</span>"
+2 -2
View File
@@ -92,7 +92,7 @@
R << "Extreme danger. Termination codes detected. Scrambling security codes and automatic AI unlink triggered."
R.ResetSecurityCodes()
else
message_admins("<span class='notice'>[key_name(usr, usr.client)](<A HREF='?_src_=holder;adminplayerobservecoodjump=1;X=[usr.x];Y=[usr.y];Z=[usr.z]'>JMP</a>) detonated [key_name(R, R.client)](<A HREF='?_src_=holder;adminplayerobservecoodjump=1;X=[R.x];Y=[R.y];Z=[R.z]'>JMP</a>)!</span>")
message_admins("<span class='notice'>[key_name_admin(usr)] (<A HREF='?_src_=holder;adminplayerobservefollow=\ref[usr]'>FLW</A>) detonated [key_name(R, R.client)](<A HREF='?_src_=holder;adminplayerobservecoodjump=1;X=[R.x];Y=[R.y];Z=[R.z]'>JMP</a>)!</span>")
log_game("\<span class='notice'>[key_name(usr)] detonated [key_name(R)]!</span>")
if(R.connected_ai)
R.connected_ai << "<br><br><span class='alert'>ALERT - Cyborg detonation detected: [R.name]</span><br>"
@@ -106,7 +106,7 @@
if(can_control(usr, R))
var/choice = input("Are you certain you wish to [R.canmove ? "lock down" : "release"] [R.name]?") in list("Confirm", "Abort")
if(choice == "Confirm" && can_control(usr, R) && !..())
message_admins("<span class='notice'>[key_name(usr, usr.client)](<A HREF='?_src_=holder;adminplayerobservecoodjump=1;X=[usr.x];Y=[usr.y];Z=[usr.z]'>JMP</a>) [R.canmove ? "locked down" : "released"] [key_name(R, R.client)](<A HREF='?_src_=holder;adminplayerobservecoodjump=1;X=[R.x];Y=[R.y];Z=[R.z]'>JMP</a>)!</span>")
message_admins("<span class='notice'>[key_name_admin(usr)] (<A HREF='?_src_=holder;adminplayerobservefollow=\ref[usr]'>FLW</A>) [R.canmove ? "locked down" : "released"] [key_name(R, R.client)](<A HREF='?_src_=holder;adminplayerobservefollow=\ref[usr]'>FLW</A>)!</span>")
log_game("[key_name(usr)] [R.canmove ? "locked down" : "released"] [key_name(R)]!")
R.SetLockdown(!R.lockcharge)
R << "[!R.lockcharge ? "<span class='notice'>Your lockdown has been lifted!" : "<span class='alert'>You have been locked down!"]</span>"
+6 -4
View File
@@ -24,9 +24,10 @@
var/order = 1 // -1 = Descending - 1 = Ascending
/obj/machinery/computer/secure_data/attackby(obj/item/O as obj, user as mob, params)
/obj/machinery/computer/secure_data/attackby(obj/item/O as obj, mob/user as mob, params)
if(istype(O, /obj/item/weapon/card/id) && !scan)
usr.drop_item()
if(!user.drop_item())
return
O.loc = src
scan = O
user << "<span class='notice'>You insert [O].</span>"
@@ -299,7 +300,8 @@ What a mess.*/
else
var/obj/item/I = usr.get_active_hand()
if(istype(I, /obj/item/weapon/card/id))
usr.drop_item()
if(!usr.drop_item())
return
I.loc = src
scan = I
@@ -519,7 +521,7 @@ What a mess.*/
switch(href_list["field"])
if("name")
if(istype(active1, /datum/data/record) || istype(active2, /datum/data/record))
var/t1 = stripped_input(usr, "Please input name:", "Secure. records", active1.fields["name"], null)
var/t1 = copytext(sanitize(input("Please input name:", "Secure. records", active1.fields["name"], null) as text),1,MAX_MESSAGE_LEN)
if(!canUseSecurityRecordsConsole(usr, t1, a1))
return
if(istype(active1, /datum/data/record))
+6 -6
View File
@@ -47,12 +47,12 @@
if(!authorized.Find(W:registered_name))
authorized += W:registered_name
if(auth_need - authorized.len > 0)
message_admins("[key_name(user.client)](<A HREF='?_src_=holder;adminmoreinfo=\ref[user]'>?</A>) has authorized early shuttle launch in ([x],[y],[z] - <A HREF='?_src_=holder;adminplayerobservecoodjump=1;X=[x];Y=[y];Z=[z]'>JMP</a>)",0,1)
log_game("[user.ckey]([user]) has authorized early shuttle launch in ([x],[y],[z])")
message_admins("[key_name_admin(user.client)](<A HREF='?_src_=holder;adminmoreinfo=\ref[user]'>?</A>) (<A HREF='?_src_=holder;adminplayerobservefollow=\ref[user]'>FLW</A>) has authorized early shuttle launch ",0,1)
log_game("[key_name(user)] has authorized early shuttle launch in ([x],[y],[z])")
minor_announce("[auth_need - authorized.len] more authorization(s) needed until shuttle is launched early",null,1)
else
message_admins("[key_name(user.client)](<A HREF='?_src_=holder;adminmoreinfo=\ref[user]'>?</A>) has launched the emergency shuttle in ([x],[y],[z] - <A HREF='?_src_=holder;adminplayerobservecoodjump=1;X=[x];Y=[y];Z=[z]'>JMP</a>) [seconds] seconds before launch.",0,1)
log_game("[user.ckey]([user]) has launched the emergency shuttle in ([x],[y],[z]) [seconds] seconds before launch.")
message_admins("[key_name_admin(user.client)](<A HREF='?_src_=holder;adminmoreinfo=\ref[user]'>?</A>) (<A HREF='?_src_=holder;adminplayerobservefollow=\ref[user]'>FLW</A>) has launched the emergency shuttle [seconds] seconds before launch.",0,1)
log_game("[key_name(user)] has launched the emergency shuttle in ([x],[y],[z]) [seconds] seconds before launch.")
minor_announce("The emergency shuttle will launch in 10 seconds",null,1)
SSshuttle.emergency.setTimer(100)
@@ -68,8 +68,8 @@
/obj/machinery/computer/emergency_shuttle/emag_act(mob/user as mob)
if(!emagged && SSshuttle.emergency.mode == SHUTTLE_DOCKED)
var/time = SSshuttle.emergency.timeLeft()
message_admins("[key_name(user.client)](<A HREF='?_src_=holder;adminmoreinfo=\ref[user]'>?</A>) has emagged the emergency shuttle in ([x],[y],[z] - <A HREF='?_src_=holder;adminplayerobservecoodjump=1;X=[x];Y=[y];Z=[z]'>JMP</a>) [time] seconds before launch.",0,1)
log_game("[user.ckey]([user]) has emagged the emergency shuttle in ([x],[y],[z]) [time] seconds before launch.")
message_admins("[key_name_admin(user.client)](<A HREF='?_src_=holder;adminmoreinfo=\ref[user]'>?</A>) (<A HREF='?_src_=holder;adminplayerobservefollow=\ref[user]'>FLW</A>) has emagged the emergency shuttle [time] seconds before launch.",0,1)
log_game("[key_name(user)] has emagged the emergency shuttle in ([x],[y],[z]) [time] seconds before launch.")
minor_announce("The emergency shuttle will launch in 10 seconds", "SYSTEM ERROR:",null,1)
SSshuttle.emergency.setTimer(100)
emagged = 1
@@ -39,7 +39,8 @@ var/list/possible_uplinker_IDs = list("Alfa","Bravo","Charlie","Delta","Echo","F
if(O.hidden_uplink)
var/obj/item/P = user.get_active_hand()
user.drop_item()
if(!user.drop_item())
return
uplinkholder = P
P.loc = src
P.add_fingerprint(user)
+6 -4
View File
@@ -108,10 +108,11 @@
return
var/obj/item/weapon/circuitboard/B = P
if(B.board_type == "machine")
if(!user.drop_item())
return
playsound(src.loc, 'sound/items/Deconstruct.ogg', 50, 1)
user << "<span class='notice'>You add the circuit board to the frame.</span>"
circuit = P
user.drop_item()
P.loc = src
icon_state = "box_2"
state = 3
@@ -140,8 +141,8 @@
user << "<span class='notice'>You remove the circuit board.</span>"
else
user << "<span class='notice'>You remove the circuit board and other components.</span>"
for(var/obj/item/weapon/W in components)
W.loc = src.loc
for(var/atom/movable/A in components)
A.loc = src.loc
desc = initial(desc)
req_components = null
components = null
@@ -199,6 +200,8 @@
var/success
for(var/I in req_components)
if(istype(P, I) && (req_components[I] > 0))
if(!user.drop_item())
return
success=1
if(istype(P, /obj/item/stack/cable_coil))
var/obj/item/stack/cable_coil/CP = P
@@ -211,7 +214,6 @@
req_components[I]--
update_req_desc()
break
user.drop_item()
P.loc = src
components += P
req_components[I]--
+11 -20
View File
@@ -135,16 +135,20 @@
*
* @return nothing
*/
/obj/machinery/atmospherics/unary/cryo_cell/ui_interact(mob/user, ui_key = "main")
/obj/machinery/atmospherics/unary/cryo_cell/ui_interact(mob/user, ui_key = "main", var/datum/nanoui/ui = null)
if(user == occupant || user.stat || panel_open)
return
ui = SSnano.push_open_or_new_ui(user, src, ui_key, ui, "cryo.tmpl", "Cryo Cell Control System", 520, 410, 1)
//user.set_machine(src)
/obj/machinery/atmospherics/unary/cryo_cell/get_ui_data()
// this is the data which will be sent to the ui
var/data[0]
var/data = list()
data["isOperating"] = on
data["hasOccupant"] = occupant ? 1 : 0
var/occupantData[0]
var/occupantData = list()
if (!occupant)
occupantData["name"] = null
occupantData["stat"] = null
@@ -167,7 +171,7 @@
occupantData["toxLoss"] = occupant.getToxLoss()
occupantData["fireLoss"] = occupant.getFireLoss()
occupantData["bodyTemperature"] = occupant.bodytemperature
data["occupant"] = occupantData;
data["occupant"] = occupantData
data["isOpen"] = state_open
data["cellTemperature"] = round(air_contents.temperature)
@@ -183,21 +187,7 @@
for(var/datum/reagent/R in beaker:reagents.reagent_list)
beakerContents.Add(list(list("name" = R.name, "volume" = R.volume))) // list in a list because Byond merges the first list...
data["beakerContents"] = beakerContents
var/datum/nanoui/ui = SSnano.get_open_ui(user, src, ui_key)
if (!ui)
// the ui does not exist, so we'll create a new one
ui = new(user, src, ui_key, "cryo.tmpl", "Cryo Cell Control System", 520, 410)
// When the UI is first opened this is the data it will use
ui.set_initial_data(data)
ui.open()
// Auto update every Master Controller tick
ui.set_auto_update(1)
else
// The UI is already open so push the new data to it
ui.push_data(data)
return
//user.set_machine(src)
return data
/obj/machinery/atmospherics/unary/cryo_cell/Topic(href, href_list)
if(usr == occupant || panel_open)
@@ -237,9 +227,10 @@
if(beaker)
user << "<span class='warning'>A beaker is already loaded into [src]!</span>"
return
if(!user.drop_item())
return
beaker = I
user.drop_item()
I.loc = src
user.visible_message("[user] places [I] in [src].", \
"<span class='notice'>You place [I] in [src].</span>")
+61 -2
View File
@@ -45,6 +45,8 @@
var/obj/item/weapon/airlock_electronics/electronics = null
var/hasShocked = 0 //Prevents multiple shocks from happening
var/autoclose = 1
var/obj/item/device/doorCharge/charge = null //If applied, causes an explosion upon opening the door
var/detonated = 0
explosion_block = 1
@@ -91,6 +93,7 @@
icon = 'icons/obj/doors/vault.dmi'
opacity = 1
doortype = /obj/structure/door_assembly/door_assembly_vault
explosion_block = 2
/obj/machinery/door/airlock/glass_large
name = "glass airlock"
@@ -476,6 +479,11 @@ About the new airlock wires panel:
flick("door_deny", src)
return
/obj/machinery/door/airlock/examine(mob/user)
..()
if(charge && !p_open && in_range(user, src))
user << "The maintenance panel is bulging slightly."
/obj/machinery/door/airlock/attack_ai(mob/user as mob)
if(!src.canAIControl())
if(src.canAIHack())
@@ -486,6 +494,9 @@ About the new airlock wires panel:
if(emagged)
user << "<span class='warning'>Unable to interface: Airlock is unresponsive.</span>"
return
if(detonated)
user << "<span class='warning'>Unable to interface. Airlock control panel damaged.</span>"
return
//Separate interface for the AI.
user.set_machine(src)
@@ -923,6 +934,9 @@ About the new airlock wires panel:
update_icon()
return
else if(istype(C, /obj/item/weapon/screwdriver))
if(p_open && detonated)
user << "<span class='warning'>[src] has no maintenance panel!</span>"
return
src.p_open = !( src.p_open )
user << "<span class='notice'>You [p_open ? "open":"close"] the maintenance panel of the airlock.</span>"
src.update_icon()
@@ -941,6 +955,22 @@ About the new airlock wires panel:
beingcrowbarred = 1 //derp, Agouri
else
beingcrowbarred = 0
if(p_open && charge)
user << "<span class='notice'>You carefully start removing [charge] from [src]...</span>"
playsound(get_turf(src), 'sound/items/Crowbar.ogg', 50, 1)
if(!do_after(user, 150))
user << "<span class='warning'>You slip and [charge] detonates!</span>"
charge.ex_act(1)
user.Weaken(3)
return
user.visible_message("<span class='notice'>[user] removes [charge] from [src].</span>", \
"<span class='notice'>You gently pry out [charge] from [src] and unhook its wires.</span>")
charge.loc = get_turf(user)
if(prob(25))
charge.ex_act(1)
return
charge = null
return
if( beingcrowbarred && (density && welded && !operating && src.p_open && (!hasPower()) && !src.locked) )
playsound(src.loc, 'sound/items/Crowbar.ogg', 100, 1)
user.visible_message("[user] removes the electronics from the airlock assembly.", \
@@ -998,14 +1028,31 @@ About the new airlock wires panel:
else if(istype(C, /obj/item/weapon/airlock_painter))
change_paintjob(C, user)
else if(istype(C, /obj/item/device/doorCharge) && p_open)
if(emagged)
return
if(charge && !detonated)
user << "<span class='warning'>There's already a charge hooked up to this door!</span>"
return
if(detonated)
user << "<span class='warning'>The maintenance panel is destroyed!</span>"
return
user << "<span class='warning'>You apply [C]. Next time someone opens the door, it will explode.</span>"
user.drop_item()
p_open = 0
update_icon()
var/obj/item/device/doorCharge/newCharge = C //This is necessary, for some reason
newCharge.loc = src
charge = newCharge
return
else
..()
return
/obj/machinery/door/airlock/plasma/attackby(C as obj, mob/user as mob, params)
if(is_hot(C) > 300)//If the temperature of the object is over 300, then ignite
message_admins("Plasma wall ignited by [key_name(user, user.client)](<A HREF='?_src_=holder;adminmoreinfo=\ref[user]'>?</A>) in ([x],[y],[z] - <A HREF='?_src_=holder;adminplayerobservecoodjump=1;X=[x];Y=[y];Z=[z]'>JMP</a>)")
log_game("Plasma wall ignited by [user.ckey]([user]) in ([x],[y],[z])")
message_admins("Plasma airlock ignited by [key_name_admin(user)](<A HREF='?_src_=holder;adminmoreinfo=\ref[user]'>?</A>) (<A HREF='?_src_=holder;adminplayerobservefollow=\ref[user]'>FLW</A>) in ([x],[y],[z] - <A HREF='?_src_=holder;adminplayerobservecoodjump=1;X=[x];Y=[y];Z=[z]'>JMP</a>)")
log_game("Plasma wall ignited by [key_name(user)] in ([x],[y],[z])")
ignite(is_hot(C))
return
..()
@@ -1016,6 +1063,18 @@ About the new airlock wires panel:
if(!forced)
if( !hasPower() || isWireCut(AIRLOCK_WIRE_OPEN_DOOR) )
return 0
if(charge && !detonated)
p_open = 1
update_icon()
visible_message("<span class='warning'>[src]'s panel is blown off in a spray of deadly shrapnel!</span>")
charge.ex_act(1)
detonated = 1
charge = null
for(var/mob/living/carbon/human/H in orange(1,src))
H.Paralyse(8)
H.adjust_fire_stacks(1)
H.IgniteMob() //Guaranteed knockout and ignition for nearby people
return
if(forced < 2)
if(emagged)
return 0
+4 -1
View File
@@ -281,4 +281,7 @@
return 0
/obj/machinery/door/morgue
icon = 'icons/obj/doors/doormorgue.dmi'
icon = 'icons/obj/doors/doormorgue.dmi'
/obj/machinery/door/storage_contents_dump_act(obj/item/weapon/storage/src_object, mob/user)
return 0
-1
View File
@@ -187,7 +187,6 @@
/obj/machinery/door/window/hitby(AM as mob|obj)
..()
visible_message("<span class='danger'>\The [src] was hit by \the [AM].</span>")
var/tforce = 0
if(ismob(AM))
tforce = 40
+105
View File
@@ -0,0 +1,105 @@
/obj/machinery/droneDispenser
name = "drone shell dispenser"
desc = "A hefty machine that, when supplied with metal and glass, will periodically create a drone shell. Does not need to be manually operated."
icon = 'icons/obj/machines/droneDispenser.dmi'
icon_state = "on"
anchored = 1
density = 1
var/metal = 0
var/glass = 0
var/droneMadeRecently = 0
var/outputDirection = SOUTH
/obj/machinery/droneDispenser/New()
..()
SSmachine.processing |= src
/obj/machinery/droneDispenser/Destroy()
SSmachine.processing -= src
..()
/obj/machinery/droneDispenser/preloaded
metal = 5000
glass = 5000
/obj/machinery/droneDispenser/syndrone //Please forgive me
name = "syndrone shell dispenser"
desc = "A suspicious machine that will create Syndicate exterminator drones when supplied with metal and glass. Disgusting."
metal = 25000
glass = 25000
/obj/machinery/droneDispenser/examine(mob/user)
..()
if(droneMadeRecently && !stat)
user << "<span class='notice'>The control screen indicates that is recharging.</span>"
user << "<span class='notice'>It has [metal] units of metal stored.</span>"
user << "<span class='notice'>It has [glass] units of glass stored.</span>"
/obj/machinery/droneDispenser/power_change()
..()
if(stat & BROKEN)
return
else
if(powered())
stat &= ~NOPOWER
else
icon_state = "off"
stat |= NOPOWER
/obj/machinery/droneDispenser/process()
..()
if(stat & (NOPOWER|BROKEN) || !anchored)
return
if(droneMadeRecently || metal < 1000 || glass < 1000)
return
droneMadeRecently = 1
var/turf/T = get_step(src,SOUTH)
visible_message("<span class='notice'>[src] whirs to life!</span>")
playsound(src, 'sound/items/rped.ogg', 50, 1)
icon_state = "make"
spawn(30)
icon_state = "[initial(icon_state)]"
visible_message("<span class='notice'>[src] dispenses a drone shell.</span>")
metal -= 1000
glass -= 1000
if(metal < 0) metal = 0
if(glass < 0) glass = 0
if(istype(src, /obj/machinery/droneDispenser/syndrone))
new /obj/item/drone_shell/syndrone(T)
else
new /obj/item/drone_shell(T)
use_power(1000)
icon_state = "recharge"
spawn(1800) //3 minute cooldown between shells
icon_state = "[initial(icon_state)]"
droneMadeRecently = 0
playsound(src, 'sound/machines/ping.ogg', 50, 1)
audible_message("<span class='notice'>[src] pings.</span>")
/obj/machinery/droneDispenser/attackby(obj/item/O, mob/living/user)
if(istype(O, /obj/item/stack))
if(!O.m_amt && !O.g_amt)
return ..()
var/stack = 1
var/obj/item/stack/sheets
sheets = O
stack = (input(user, "How many sheets do you want to add?.", "Drone Dispenser", "[stack]") as num)
if(stack <= 0)
return
if(!user.canUseTopic(src))
return
stack = Clamp(stack, 0, sheets.max_amount)
sheets.use(stack)
if(!stack)
if(!user.unEquip(O))
user << "<span class='warning'>[O] is stuck to your hand, you can't get it off!</span>"
return
user.drop_item()
O.loc = src
metal += O.m_amt * stack
glass += O.g_amt * stack
user << "<span class='notice'>You insert [stack] sheet[stack > 1 ? "s" : ""] to [src].</span>"
if((O && O.loc == src) || !stack)
qdel(O)
return
..()
+2 -1
View File
@@ -50,8 +50,9 @@
else if (istype(W, /obj/item/device/flash/handheld))
if (!bulb)
if(!user.drop_item())
return
user.visible_message("[user] installs [W] into [src].", "<span class='notice'>You install [W] into [src].</span>")
user.drop_item()
W.loc = src
bulb = W
power_change()
+2 -1
View File
@@ -77,8 +77,9 @@
if(!isnull(beaker))
user << "<span class='warning'>There is already a reagent container loaded!</span>"
return
if(!user.drop_item())
return
user.drop_item()
W.loc = src
beaker = W
user << "<span class='notice'>You attach \the [W] to \the [src].</span>"
+6 -1
View File
@@ -788,7 +788,8 @@ var/list/obj/machinery/newscaster/allCasters = list()
photo = null
if(istype(user.get_active_hand(), /obj/item/weapon/photo))
photo = user.get_active_hand()
user.drop_item()
if(!user.drop_item())
return
photo.loc = src
if(istype(user,/mob/living/silicon))
var/list/nametemp = list()
@@ -893,6 +894,10 @@ var/list/obj/machinery/newscaster/allCasters = list()
var/wantedPhoto
var/creationTime
/obj/item/weapon/newspaper/suicide_act(mob/user)
user.visible_message("<span class='suicide'>[user] is focusing intently on [src]! It looks like they're trying to commit sudoku.</span>")
return(OXYLOSS)
/obj/item/weapon/newspaper/attack_self(mob/user)
if(ishuman(user))
var/mob/living/carbon/human/human_user = user
+2 -2
View File
@@ -39,7 +39,7 @@ Buildable meters
var/pipe_type = 0
var/pipename
force = 7
icon = 'icons/obj/pipe-item.dmi'
icon = 'icons/obj/atmospherics/pipes/pipe_item.dmi'
icon_state = "simple"
item_state = "buildpipe"
w_class = 3
@@ -407,7 +407,7 @@ var/global/list/pipeID2State = list(
/obj/item/pipe_meter
name = "meter"
desc = "A meter that can be laid on pipes"
icon = 'icons/obj/pipe-item.dmi'
icon = 'icons/obj/atmospherics/pipes/pipe_item.dmi'
icon_state = "meter"
item_state = "buildpipe"
w_class = 4
+2 -1
View File
@@ -72,7 +72,8 @@
add_fingerprint(user)
if (istype(W, /obj/item/pipe) || istype(W, /obj/item/pipe_meter))
usr << "<span class='notice'>You put [W] back into [src].</span>"
user.drop_item()
if(!user.drop_item())
return
qdel(W)
return
else if (istype(W, /obj/item/weapon/wrench))
+2 -1
View File
@@ -27,8 +27,9 @@
if(!gun.can_charge)
user << "<span class='notice'>Your gun has no external power connector.</span>"
return
if(!user.drop_item())
return
user.drop_item()
G.loc = src
charging = G
use_power = 2
+1 -3
View File
@@ -90,8 +90,6 @@
/obj/machinery/shield/hitby(AM as mob|obj)
//Let everyone know we've been hit!
visible_message("<span class='boldannounce'>[src] was hit by [AM].</span>")
//Super realistic, resource-intensive, real-time damage calculations.
var/tforce = 0
@@ -604,4 +602,4 @@
if (istype(mover, /obj/item/projectile))
return prob(10)
else
return !src.density
return !src.density
+6 -4
View File
@@ -77,7 +77,8 @@
if(istype(I, /obj/item/weapon/coin))
var/obj/item/weapon/coin/C = I
if(prob(2))
user.drop_item()
if(!user.drop_item())
return
C.loc = loc
C.throw_at(user, 3, 10)
if(prob(10))
@@ -85,7 +86,8 @@
user << "<span class='warning'>[src] spits your coin back out!</span>"
else
user.drop_item()
if(!user.drop_item())
return
user << "<span class='notice'>You insert a [C.cmineral] coin into [src]'s slot!</span>"
balance += C.value
qdel(C)
@@ -293,14 +295,14 @@
return amount
/obj/machinery/computer/slot_machine/proc/dispense(amount = 0, cointype = /obj/item/weapon/coin/silver, mob/living/target, throw = 0)
/obj/machinery/computer/slot_machine/proc/dispense(amount = 0, cointype = /obj/item/weapon/coin/silver, mob/living/target, throwit = 0)
var/value = coinvalues["[cointype]"]
while(amount >= value)
var/obj/item/weapon/coin/C = new cointype(loc) //DOUBLE THE PAIN
amount -= value
if(throw && target)
if(throwit && target)
C.throw_at(target, 3, 10)
else
random_step(C, 2, 40)
+4 -2
View File
@@ -54,7 +54,8 @@
// insert cell
var/obj/item/weapon/stock_parts/cell/C = usr.get_active_hand()
if(istype(C))
user.drop_item()
if(!user.drop_item())
return
cell = C
C.loc = src
C.add_fingerprint(usr)
@@ -134,7 +135,8 @@
if(open && !cell)
var/obj/item/weapon/stock_parts/cell/C = usr.get_active_hand()
if(istype(C))
usr.drop_item()
if(!usr.drop_item())
return
cell = C
C.loc = src
C.add_fingerprint(usr)
+4 -3
View File
@@ -90,9 +90,10 @@
user << "<span class='warning'>The cover is screwed on, it won't pry off!</span>"
else if(istype(I, /obj/item/weapon/bombcore))
if(!payload)
if(!user.drop_item())
return
payload = I
user << "<span class='notice'>You place [payload] into [src].</span>"
user.drop_item()
payload.loc = src
else
user << "<span class='warning'>[payload] is already loaded into [src]! You'll have to remove it first.</span>"
@@ -138,7 +139,7 @@
var/turf/bombturf = get_turf(src)
var/area/A = get_area(bombturf)
if(payload && !istype(payload, /obj/item/weapon/bombcore/training))
message_admins("[key_name(user)]<A HREF='?_src_=holder;adminmoreinfo=\ref[user]'>?</A> has primed a [name] ([payload]) for detonation at <A HREF='?_src_=holder;adminplayerobservecoodjump=1;X=[bombturf.x];Y=[bombturf.y];Z=[bombturf.z]'>[A.name] (JMP)</a>.")
message_admins("[key_name_admin(user)]<A HREF='?_src_=holder;adminmoreinfo=\ref[user]'>?</A> (<A HREF='?_src_=holder;adminplayerobservefollow=\ref[user]'>FLW</A>) has primed a [name] ([payload]) for detonation at <A HREF='?_src_=holder;adminplayerobservecoodjump=1;X=[bombturf.x];Y=[bombturf.y];Z=[bombturf.z]'>[A.name] (JMP)</a>.")
log_game("[key_name(user)] has primed a [name] ([payload]) for detonation at [A.name]([bombturf.x],[bombturf.y],[bombturf.z])")
payload.adminlog = "The [src.name] that [key_name(user)] had primed detonated!"
@@ -311,7 +312,7 @@
var/turf/T = get_turf(src)
var/area/A = get_area(T)
detonated--
var/log_str = "[key_name(user)]<A HREF='?_src_=holder;adminmoreinfo=\ref[user]'>?</A> has remotely detonated [detonated ? "syndicate bombs" : "a syndicate bomb"] using a [name] at <A HREF='?_src_=holder;adminplayerobservecoodjump=1;X=[T.x];Y=[T.y];Z=[T.z]'>[A.name] (JMP)</a>."
var/log_str = "[key_name_admin(user)]<A HREF='?_src_=holder;adminmoreinfo=\ref[user]'>?</A> (<A HREF='?_src_=holder;adminplayerobservefollow=\ref[user]'>FLW</A>) has remotely detonated [detonated ? "syndicate bombs" : "a syndicate bomb"] using a [name] at <A HREF='?_src_=holder;adminplayerobservecoodjump=1;X=[T.x];Y=[T.y];Z=[T.z]'>[A.name] (JMP)</a>."
bombers += log_str
message_admins(log_str)
log_game("[key_name(user)] has remotely detonated [detonated ? "syndicate bombs" : "a syndicate bomb"] using a [name] at [A.name]([T.x],[T.y],[T.z])")
@@ -168,7 +168,8 @@
var/obj/item/weapon/card/id/I = C.get_active_hand()
if(istype(I))
if(check_access(I))
C.drop_item()
if(!C.drop_item())
return
I.loc = src
auth = I
create_log("has logged in.", usr)
@@ -118,12 +118,12 @@
/obj/machinery/telecomms/server/proc/admin_log(var/mob/mob)
var/msg="[mob.real_name]/([mob.key]) has compiled a script to server [src]:"
var/msg="[key_name(mob)] has compiled a script to server [src]:"
diary << msg
diary << rawcode
src.investigate_log("[msg]<br>[rawcode]", "ntsl")
if(length(rawcode)) // Let's not bother the admins for empty code.
message_admins("[mob.real_name]/([mob.key]) has compiled and uploaded a NTSL script to [src.id] ([mob.x],[mob.y],[mob.z] - <A HREF='?_src_=holder;adminplayerobservecoodjump=1;X=[mob.x];Y=[mob.y];Z=[mob.z]'>JMP</a>)",0,1)
message_admins("[key_name_admin(mob)] (<A HREF='?_src_=holder;adminplayerobservefollow=\ref[usr]'>FLW</A>) has compiled and uploaded a NTSL script to [src.id]",0,1)
/obj/machinery/telecomms/server/proc/compile(var/mob/user)
+8 -5
View File
@@ -170,7 +170,8 @@
return
if(junk_check(W))
if(!iscompartmentfull(user))
user.drop_item()
if(!user.drop_item())
return
W.loc = src
food_load(W)
user << "<span class='notice'>You insert [W] into [src]'s chef compartment.</span>"
@@ -250,7 +251,8 @@
attack_hand(user)
return
else if(istype(W, /obj/item/weapon/coin) && premium.len > 0)
user.drop_item()
if(!user.drop_item())
return
W.loc = src
coin = W
user << "<span class='notice'>You insert [W] into [src].</span>"
@@ -719,7 +721,7 @@ IF YOU MODIFY THE PRODUCTS LIST OF A MACHINE, MAKE SURE TO UPDATE ITS RESUPPLY C
vend_reply = "Remember the name: Liberation Station!"
products = list(/obj/item/weapon/gun/projectile/automatic/pistol/deagle/gold = 2,/obj/item/weapon/gun/projectile/automatic/pistol/deagle/camo = 2,
/obj/item/weapon/gun/projectile/automatic/pistol/m1911 = 2,/obj/item/weapon/gun/projectile/automatic/proto = 2,
/obj/item/weapon/gun/projectile/shotgun/combat = 2,/obj/item/weapon/gun/projectile/automatic/gyropistol = 1,
/obj/item/weapon/gun/projectile/shotgun/automatic/combat = 2,/obj/item/weapon/gun/projectile/automatic/gyropistol = 1,
/obj/item/weapon/gun/projectile/shotgun = 2,/obj/item/weapon/gun/projectile/automatic/ar = 2)
premium = list(/obj/item/ammo_box/magazine/smgm9mm = 2,/obj/item/ammo_box/magazine/m50 = 4,/obj/item/ammo_box/magazine/m45 = 2,/obj/item/ammo_box/magazine/m75 = 2)
contraband = list(/obj/item/clothing/under/patriotsuit = 1,/obj/item/weapon/bedsheet/patriot = 3)
@@ -942,7 +944,8 @@ IF YOU MODIFY THE PRODUCTS LIST OF A MACHINE, MAKE SURE TO UPDATE ITS RESUPPLY C
vend_delay = 15
vend_reply = "Thank you for using the ClothesMate!"
products = list(/obj/item/clothing/head/that=2,/obj/item/clothing/head/fedora=1,/obj/item/clothing/glasses/monocle=1,
/obj/item/clothing/suit/jacket=3,/obj/item/clothing/under/suit_jacket/navy=2,/obj/item/clothing/under/suit_jacket/really_black=2,/obj/item/clothing/under/kilt=1,/obj/item/clothing/under/overalls=1,
/obj/item/clothing/suit/jacket=3,/obj/item/clothing/under/suit_jacket/navy=1,/obj/item/clothing/under/suit_jacket/really_black=1,/obj/item/clothing/under/suit_jacket/burgundy=1,
/obj/item/clothing/under/suit_jacket/charcoal=1, /obj/item/clothing/under/suit_jacket/white=1,/obj/item/clothing/under/kilt=1,/obj/item/clothing/under/overalls=1,
/obj/item/clothing/under/sl_suit=1,/obj/item/clothing/under/pants/jeans=3,/obj/item/clothing/under/pants/classicjeans=2,
/obj/item/clothing/under/pants/camo = 1,/obj/item/clothing/under/pants/blackjeans=2,/obj/item/clothing/under/pants/khaki=2,
/obj/item/clothing/under/pants/white=2,/obj/item/clothing/under/pants/red=1,/obj/item/clothing/under/pants/black=2,
@@ -960,6 +963,6 @@ IF YOU MODIFY THE PRODUCTS LIST OF A MACHINE, MAKE SURE TO UPDATE ITS RESUPPLY C
/obj/item/clothing/shoes/sandal=1, /obj/item/clothing/gloves/fingerless=2,/obj/item/clothing/glasses/orange=1,/obj/item/clothing/glasses/red=1,
/obj/item/weapon/storage/belt/fannypack=1, /obj/item/weapon/storage/belt/fannypack/blue=1, /obj/item/weapon/storage/belt/fannypack/red=1)
contraband = list(/obj/item/clothing/under/syndicate/tacticool=1,/obj/item/clothing/mask/balaclava=1,/obj/item/clothing/head/ushanka=1,/obj/item/clothing/under/soviet=1,/obj/item/weapon/storage/belt/fannypack/black=1)
premium = list(/obj/item/clothing/under/suit_jacket/checkered=1,/obj/item/clothing/head/mailman=1,/obj/item/clothing/under/rank/mailman=1,/obj/item/clothing/suit/jacket/leather=1,/obj/item/clothing/under/pants/mustangjeans=1)
premium = list(/obj/item/clothing/under/suit_jacket/checkered=1,/obj/item/clothing/head/mailman=1,/obj/item/clothing/under/rank/mailman=1,/obj/item/clothing/suit/jacket/leather=1,/obj/item/clothing/suit/jacket/leather/overcoat=1,/obj/item/clothing/under/pants/mustangjeans=1)
refill_canister = /obj/item/weapon/vending_refill/clothing
+4 -2
View File
@@ -188,7 +188,8 @@
if(istype(W,/obj/item/toy/crayon) ||istype(W,/obj/item/weapon/stamp))
if( state in list( 1, 3, 6 ) )
if(!crayon)
user.drop_item()
if(!user.drop_item())
return
crayon = W
crayon.loc = src
else
@@ -256,7 +257,8 @@
if(contents.len < 5)
if ( state in list(1, 3) )
user.drop_item()
if(!user.drop_item())
return
W.loc = src
state = 3
else
+2 -2
View File
@@ -595,8 +595,8 @@
P.icon_state = "anom"
P.name = "wormhole"
var/turf/T = get_turf(target)
message_admins("[key_name(chassis.occupant, chassis.occupant.client)](<A HREF='?_src_=holder;adminmoreinfo=\ref[chassis.occupant]'>?</A>) used a Wormhole Generator in ([T.x],[T.y],[T.z] - <A HREF='?_src_=holder;adminplayerobservecoodjump=1;X=[T.x];Y=[T.y];Z=[T.z]'>JMP</a>)",0,1)
log_game("[chassis.occupant.ckey]([chassis.occupant]) used a Wormhole Generator in ([T.x],[T.y],[T.z])")
message_admins("[key_name_admin(chassis.occupant, chassis.occupant.client)](<A HREF='?_src_=holder;adminmoreinfo=\ref[chassis.occupant]'>?</A>) (<A HREF='?_src_=holder;adminplayerobservefollow=\ref[chassis.occupant]'>FLW</A>) used a Wormhole Generator in ([T.x],[T.y],[T.z] - <A HREF='?_src_=holder;adminplayerobservecoodjump=1;X=[T.x];Y=[T.y];Z=[T.z]'>JMP</a>)",0,1)
log_game("[key_name(chassis.occupant)] used a Wormhole Generator in ([T.x],[T.y],[T.z])")
do_after_cooldown()
src = null
spawn(rand(150,300))
+4 -4
View File
@@ -191,7 +191,7 @@
chassis.use_power(energy_drain)
log_message("Honked from [src.name]. HONK!")
var/turf/T = get_turf(src)
message_admins("[key_name(chassis.occupant, chassis.occupant.client)](<A HREF='?_src_=holder;adminmoreinfo=\ref[chassis.occupant]'>?</A>) used a Mecha Honker in ([T.x],[T.y],[T.z] - <A HREF='?_src_=holder;adminplayerobservecoodjump=1;X=[T.x];Y=[T.y];Z=[T.z]'>JMP</a>)",0,1)
message_admins("[key_name_admin(chassis.occupant, chassis.occupant.client)](<A HREF='?_src_=holder;adminmoreinfo=\ref[chassis.occupant]'>?</A>) (<A HREF='?_src_=holder;adminplayerobservefollow=\ref[chassis.occupant]'>FLW</A>) used a Mecha Honker in ([T.x],[T.y],[T.z] - <A HREF='?_src_=holder;adminplayerobservecoodjump=1;X=[T.x];Y=[T.y];Z=[T.z]'>JMP</a>)",0,1)
log_game("[chassis.occupant.ckey]([chassis.occupant]) used a Mecha Honker in ([T.x],[T.y],[T.z])")
do_after_cooldown()
return
@@ -307,7 +307,7 @@
log_message("Fired from [src.name], targeting [target].")
var/turf/T = get_turf(src)
message_admins("[key_name(chassis.occupant, chassis.occupant.client)](<A HREF='?_src_=holder;adminmoreinfo=\ref[chassis.occupant]'>?</A>) fired a [src] in ([T.x],[T.y],[T.z] - <A HREF='?_src_=holder;adminplayerobservecoodjump=1;X=[T.x];Y=[T.y];Z=[T.z]'>JMP</a>)",0,1)
log_game("[chassis.occupant.ckey]([chassis.occupant]) fired a [src] ([T.x],[T.y],[T.z])")
log_game("[key_name(chassis.occupant)] fired a [src] ([T.x],[T.y],[T.z])")
do_after_cooldown()
return
@@ -347,8 +347,8 @@
projectiles--
log_message("Fired from [src.name], targeting [target].")
var/turf/T = get_turf(src)
message_admins("[key_name(chassis.occupant, chassis.occupant.client)](<A HREF='?_src_=holder;adminmoreinfo=\ref[chassis.occupant]'>?</A>) fired a [src] in ([T.x],[T.y],[T.z] - <A HREF='?_src_=holder;adminplayerobservecoodjump=1;X=[T.x];Y=[T.y];Z=[T.z]'>JMP</a>)",0,1)
log_game("[chassis.occupant.ckey]([chassis.occupant]) fired a [src] ([T.x],[T.y],[T.z])")
message_admins("[key_name(chassis.occupant, chassis.occupant.client)](<A HREF='?_src_=holder;adminmoreinfo=\ref[chassis.occupant]'>?</A>) (<A HREF='?_src_=holder;adminplayerobservefollow=\ref[chassis.occupant]'>FLW</A>) fired a [src] in ([T.x],[T.y],[T.z] - <A HREF='?_src_=holder;adminplayerobservecoodjump=1;X=[T.x];Y=[T.y];Z=[T.z]'>JMP</a>)",0,1)
log_game("[key_name(chassis.occupant)] fired a [src] ([T.x],[T.y],[T.z])")
spawn(det_time)
if(F)
F.prime()
+105 -66
View File
@@ -96,7 +96,10 @@
/obj/mecha/Destroy()
go_out()
for(var/mob/M in src) //Let's just be ultra sure
M.Move(loc)
if(isAI(M))
M.gib() //AIs are loaded into the mech computer itself. When the mech dies, so does the AI. Forever.
else
M.Move(loc)
if(prob(30))
explosion(get_turf(loc), 0, 0, 1, 3)
@@ -675,7 +678,8 @@
var/obj/item/mecha_parts/mecha_equipment/E = W
spawn()
if(E.can_attach(src))
user.drop_item()
if(!user.drop_item())
return
E.attach(src)
user.visible_message("[user] attaches [W] to [src].", "<span class='notice'>You attach [W] to [src].</span>")
else
@@ -739,9 +743,10 @@
else if(istype(W, /obj/item/weapon/stock_parts/cell))
if(state==4)
if(!src.cell)
if(!user.drop_item())
return
var/obj/item/weapon/stock_parts/cell/C = W
user << "<span class='notice'>You install the powercell.</span>"
user.drop_item()
C.forceMove(src)
C.use(C.charge * 0.8)
src.cell = C
@@ -780,17 +785,92 @@
call((proc_res["dynattackby"]||src), "dynattackby")(W,user)
return
/*
/obj/mecha/attack_ai(var/mob/living/silicon/ai/user as mob)
if(!istype(user, /mob/living/silicon/ai))
return
var/output = {"<b>Assume direct control over [src]?</b>
<a href='?src=\ref[src];ai_take_control=\ref[user];duration=3000'>Yes</a><br>
"}
user << browse(output, "window=mecha_attack_ai")
return
*/
/////////////////////////////////////
//////////// AI piloting ////////////
/////////////////////////////////////
/obj/mecha/attack_ai(var/mob/living/silicon/ai/user as mob)
if(!isAI(user))
return
//Allows the Malf to scan a mech's status and loadout, helping it to decide if it is a worthy chariot.
if(user.can_dominate_mechs)
examine(user) //Get diagnostic information!
var/obj/item/mecha_parts/mecha_tracking/B = locate(/obj/item/mecha_parts/mecha_tracking) in src
if(B) //Beacons give the AI more detailed mech information.
user << "<span class='danger'>Warning: Tracking Beacon detected. Enter at your own risk. Beacon Data:"
user << "[B.get_mecha_info()]"
//Nothing like a big, red link to make the player feel powerful!
user << "<a href='?src=\ref[user];ai_take_control=\ref[src]'><span class='userdanger'>ASSUME DIRECT CONTROL?</span></a><br>"
/obj/mecha/transfer_ai(var/interaction, mob/user, var/mob/living/silicon/ai/AI, var/obj/item/device/aicard/card)
if(!..())
return
//Transfer from core or card to mech. Proc is called by mech.
switch(interaction)
if(AI_TRANS_TO_CARD) //Upload AI from mech to AI card.
if(!state) //Mech must be in maint mode to allow carding.
user << "<span class='warning'>[name] must have maintenance protocols active in order to allow a transfer.</span>"
return
AI = occupant
if(!AI || !isAI(occupant)) //Mech does not have an AI for a pilot
user << "<span class='warning'>No AI detected in the [name] onboard computer.</span>"
return
if (AI.mind.special_role == "malfunction") //Malf AIs cannot leave mechs. Except through death.
user << "<span class='boldannounce'>ACCESS DENIED.</span>"
return
AI.aiRestorePowerRoutine = 0//So the AI initially has power.
AI.control_disabled = 1
AI.radio_enabled = 0
AI.loc = card
occupant = null
AI.controlled_mech = null
AI.remote_control = null
icon_state = initial(icon_state)+"-open"
AI << "You have been downloaded to a mobile storage device. Wireless connection offline."
user << "<span class='boldnotice'>Transfer successful</span>: [AI.name] ([rand(1000,9999)].exe) removed from [name] and stored within local memory."
if(AI_MECH_HACK) //Called by Malf AI mob on the mech.
new /obj/structure/AIcore/deactivated(AI.loc)
if(occupant) //Oh, I am sorry, were you using that?
AI << "<span class='warning'>Pilot detected! Forced ejection initiated!"
occupant << "<span class='danger'>You have been forcibly ejected!</span>"
go_out(1) //IT IS MINE, NOW. SUCK IT, RD!
ai_enter_mech(AI, interaction)
if(AI_TRANS_FROM_CARD) //Using an AI card to upload to a mech.
AI = locate(/mob/living/silicon/ai) in card
if(!AI)
user << "<span class='warning'>There is no AI currently installed on this device.</span>"
return
else if(AI.stat || !AI.client)
user << "<span class='warning'>[AI.name] is currently unresponsive, and cannot be uploaded.</span>"
return
else if(occupant || dna) //Normal AIs cannot steal mechs!
user << "<span class='warning'>Access denied. [name] is [occupant ? "currently occupied" : "secured with a DNA lock"]."
return
AI.control_disabled = 0
AI.radio_enabled = 1
user << "<span class='boldnotice'>Transfer successful</span>: [AI.name] ([rand(1000,9999)].exe) installed and executed successfully. Local copy has been removed."
ai_enter_mech(AI, interaction)
//Hack and From Card interactions share some code, so leave that here for both to use.
/obj/mecha/proc/ai_enter_mech(var/mob/living/silicon/ai/AI, var/interaction)
AI.aiRestorePowerRoutine = 0
AI.loc = src
occupant = AI
icon_state = initial(icon_state)
playsound(src, 'sound/machines/windowdoor.ogg', 50, 1)
if(!hasInternalDamage())
occupant << sound('sound/mecha/nominal.ogg',volume=50)
AI.cancel_camera()
AI.controlled_mech = src
AI.remote_control = src
AI.canmove = 1 //Much easier than adding AI checks! Be sure to set this back to 0 if you decide to allow an AI to leave a mech somehow.
AI.can_shunt = 0 //ONE AI ENTERS. NO AI LEAVES.
AI << "[interaction == AI_MECH_HACK ? "<span class='announce'>Takeover of [name] complete! You are now permanently loaded onto the onboard computer. Do not attempt to leave the station sector!</span>" \
: "<span class='notice'>You have been uploaded to a mech's onboard computer."]"
AI << "<span class='boldnotice'>Use Middle-Mouse to activate mech functions and equipment. Click normally for AI interactions.</span>"
/////////////////////////////////////
@@ -1088,7 +1168,7 @@
go_out()
/obj/mecha/proc/go_out()
/obj/mecha/proc/go_out(var/forced)
if(!src.occupant) return
var/atom/movable/mob_container
if(ishuman(occupant))
@@ -1098,6 +1178,10 @@
else if(istype(occupant, /mob/living/carbon/brain))
var/mob/living/carbon/brain/brain = occupant
mob_container = brain.container
else if(isAI(occupant) && forced) //This should only happen if there are multiple AIs in a round, and at least one is Malf.
occupant.gib() //If one Malf decides to steal a mech from another AI (even other Malfs!), they are destroyed, as they have nowhere to go when replaced.
occupant = null
return
else
return
if(mob_container.forceMove(src.loc))//ejecting mob container
@@ -1518,10 +1602,13 @@ var/year_integer = text2num(year) // = 2013???
user << browse(null,"window=exosuit_add_access")
return
if(href_list["dna_lock"])
if(usr != src.occupant) return
if(src.occupant && occupant.dna)
src.dna = src.occupant.dna.unique_enzymes
src.occupant_message("You feel a prick as the needle takes your DNA sample.")
if(usr != src.occupant)
return
if(src.occupant && !iscarbon(src.occupant))
src.occupant << "<span class='danger'> You do not have any DNA!</span>"
return
src.dna = src.occupant.dna.unique_enzymes
src.occupant_message("You feel a prick as the needle takes your DNA sample.")
return
if(href_list["reset_dna"])
if(usr != src.occupant) return
@@ -1550,54 +1637,6 @@ var/year_integer = text2num(year) // = 2013???
return
*/
/*
if (href_list["ai_take_control"])
var/mob/living/silicon/ai/AI = locate(href_list["ai_take_control"])
var/duration = text2num(href_list["duration"])
var/mob/living/silicon/ai/O = new /mob/living/silicon/ai(src)
var/cur_occupant = src.occupant
O.invisibility = 0
O.canmove = 1
O.name = AI.name
O.real_name = AI.real_name
O.anchored = 1
O.aiRestorePowerRoutine = 0
O.control_disabled = 1 // Can't control things remotely if you're stuck in a card!
O.laws = AI.laws
O.stat = AI.stat
O.oxyloss = AI.getOxyLoss()
O.fireloss = AI.getFireLoss()
O.bruteloss = AI.getBruteLoss()
O.toxloss = AI.toxloss
O.updatehealth()
src.occupant = O
if(AI.mind)
AI.mind.transfer_to(O)
AI.name = "Inactive AI"
AI.real_name = "Inactive AI"
AI.icon_state = "ai-empty"
spawn(duration)
AI.name = O.name
AI.real_name = O.real_name
if(O.mind)
O.mind.transfer_to(AI)
AI.control_disabled = 0
AI.laws = O.laws
AI.oxyloss = O.getOxyLoss()
AI.fireloss = O.getFireLoss()
AI.bruteloss = O.getBruteLoss()
AI.toxloss = O.toxloss
AI.updatehealth()
qdel(O)
if (!AI.stat)
AI.icon_state = "ai"
else
AI.icon_state = "ai-crash"
src.occupant = cur_occupant
*/
return
///////////////////////
+1 -2
View File
@@ -109,7 +109,6 @@
/obj/structure/alien/resin/hitby(atom/movable/AM)
..()
visible_message("<span class='danger'>[src] was hit by [AM].</span>")
var/tforce = 0
if(!isobj(AM))
tforce = 10
@@ -516,4 +515,4 @@
#undef WEED_NORTH_EDGING
#undef WEED_SOUTH_EDGING
#undef WEED_EAST_EDGING
#undef WEED_WEST_EDGING
#undef WEED_WEST_EDGING

Some files were not shown because too many files have changed in this diff Show More